{"version":3,"file":"main.e1a3aa78da93c603.js","mappings":"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AAIH,IAAQmR,EAAWi1E,OAAQjmF,IAC/DgR,EAAWrhC,KAAK0nF,EAAMr3D,IAE1BgR,EAAWnhC,+BCJf,OACA,aACA,gBACA,WACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,YACA,eACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,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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,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,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,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,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,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,UAEd,YAA2B/6R,IAEvB,OAAOA,GAAKj/E,QAAQ,oBADL+1D,IAAMikT,GAAWjkT,KAAMA,GACGn+B,CAG7C,SACIh5B,YAAYq7W,GAAWC,IACnBv6W,KAAKs6W,UAAYA,GACjBt6W,KAAKu6W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","names":["constructor","transformResult","url","response","processor","getBaseUrl","deafultUrl","AppSettingsService","AUTH_API_URL","InjectionToken","AuthClient","ApiClientBase","http","baseUrl","super","this","undefined","register","body","url_","replace","options_","JSON","stringify","observe","responseType","headers","HttpHeaders","Accept","request","pipe","_observableMergeMap","response_","r","processRegister","_observableCatch","HttpResponseBase","_observableThrow","e","status","responseBlob","HttpResponse","error","Blob","_headers","key","keys","get","blobToText","_responseText","result200","parse","jsonParseReviver","_observableOf","throwException","verifyEmail","code","Error","encodeURIComponent","processVerifyEmail","requestNewConfirmation","lang","processRequestNewConfirmation","requestPasswordReset","processRequestPasswordReset","resetPassword","processResetPassword","changePassword","processChangePassword","claimOwnership","userId","profileId","processClaimOwnership","registrationCodeRequired","processRegistrationCodeRequired","changeLanguage","processChangeLanguage","i0","HttpClient","factory","BusinessRolesClient","getRoles","processGetRoles","getAcceptedNonViewerRoles","processGetAcceptedNonViewerRoles","addRole","processAddRole","result404","result409","revokeRole","processRevokeRole","ChangeState","message","result","obj","isApiException","ApiException","blob","Observable","observer","reader","FileReader","onload","event","next","target","complete","readAsText","PORTAL_API_URL","BusinessClient","createBusiness","processCreateBusiness","updateBusiness","processUpdateBusiness","getBusiness","id","processGetBusiness","createStore","processCreateStore","updateStore","processUpdateStore","deleteStore","businessId","storeId","processDeleteStore","getStores","processGetStores","publishStore","processPublishStore","unpublishStore","processUnpublishStore","getStoreOpeningHours","processGetStoreOpeningHours","updateStoreAddress","processUpdateStoreAddress","updateStoreOpeningHours","processUpdateStoreOpeningHours","checkout","subscriptionDefinitionId","processCheckout","checkoutV2","processCheckoutV2","link4payCheckOutGET","actionLink","payload","processLink4payCheckOutGET","link4payCheckOutPOST","processLink4payCheckOutPOST","voucherCheckout","processVoucherCheckout","createEcsPaymentRequest","processCreateEcsPaymentRequest","validateVat","vat","processValidateVat","getBlocktradeDetails","processGetBlocktradeDetails","instantTradeOptIn","processInstantTradeOptIn","instantTradeOptOut","processInstantTradeOptOut","ConsumerClient","addConsumerDetails","processAddConsumerDetails","getConsumerDetails","processGetConsumerDetails","DashboardClient","getMerchantDashboard","period","utcOffsetInMinutes","processGetMerchantDashboard","GoogleServicesClient","getMeasurementId","processGetMeasurementId","getConfigurations","processGetConfigurations","InvitationClient","getInvitationUrlDetails","invitationShortId","processGetInvitationUrlDetails","getAmbassadorGraphData","numberOfDays","processGetAmbassadorGraphData","getInvitationProposals","processGetInvitationProposals","decideOnProposal","accept","processDecideOnProposal","InvoiceClient","getInvoices","processGetInvoices","getInvoiceStatus","invoiceId","processGetInvoiceStatus","downloadInvoiceAndMemo","docGenerationRequestId","processDownloadInvoiceAndMemo","contentDisposition","fileNameMatch","exec","fileName","length","decodeURIComponent","data","PromotionPopupsClient","showScePromotion","processShowScePromotion","promotionPopups","processPromotionPopups","SceDocumentsClient","sceDocuments","globalSettingId","processSceDocuments","governancedocsAll","processGovernancedocsAll","governancedocs","processGovernancedocs","SceGovernanceClient","announcements","processAnnouncements","activedelegates","processActivedelegates","SceMembershipClient","getNewsTickers","pageNumber","pageSize","processGetNewsTickers","downloadSceCertificate","processDownloadSceCertificate","uploadPassport","file","content_","FormData","append","toString","processUploadPassport","sceDelegate","sceMemberId","motivation","biography","cryptoKnowledge","linkedInUrl","twitterUrl","telegramUrl","resumeFile","photo_Id","photo_Payload","photo_MediaType","criminalRecordFile","utilityBillFile","processSceDelegate","sceDelegateStatus","votingConfigurationId","processSceDelegateStatus","getSceDelegateDetails","processGetSceDelegateDetails","getValidatedSceDelegate","processGetValidatedSceDelegate","getSceDelegates","processGetSceDelegates","downloadSceDelegateResume","processDownloadSceDelegateResume","downloadSceDelegateFile","sceDelegateFileType","processDownloadSceDelegateFile","cancelSceDelegateRequest","processCancelSceDelegateRequest","getLatestVotingResults","count","processGetLatestVotingResults","getUncompletedVotings","processGetUncompletedVotings","SubscriptionClient","getOfferedSubscriptions","processGetOfferedSubscriptions","getOfferedAmbassadorSubscriptions","processGetOfferedAmbassadorSubscriptions","getOfferedSceMembershipSubscriptions","processGetOfferedSceMembershipSubscriptions","getActiveSubscriptions","processGetActiveSubscriptions","getProfileAvailableSubscriptions","processGetProfileAvailableSubscriptions","getProfileSubscriptionLimits","processGetProfileSubscriptionLimits","getSubsriptionPriceSummary","subscriptionDefinitonId","paymentOption","processGetSubsriptionPriceSummary","createBasicBusinessSubscription","processCreateBasicBusinessSubscription","requestSceMembership","processRequestSceMembership","getSceMembershipStatus","processGetSceMembershipStatus","getSceMembershipDetails","processGetSceMembershipDetails","getAllProfileSubscriptions","processGetAllProfileSubscriptions","UserClient","getUserLang","processGetUserLang","WebWidgetClient","getRecentAttempts","webHookId","processGetRecentAttempts","getWebHooks","processGetWebHooks","createWebhook","processCreateWebhook","updateWebhook","processUpdateWebhook","getWebHook","processGetWebHook","deleteWebHook","processDeleteWebHook","createApiKey","processCreateApiKey","getApiKeys","processGetApiKeys","deleteApiKey","keyId","processDeleteApiKey","DashboardPeriods","DayOfWeek","DiscountType","InvoiceStatus","Kpis","MediaType","PaymentOption","PersonalSubscriptionType","PromotionPopupDecisionType","SceDelegateFileType","SceDelegateStatus","SceMemberStatus","SubscriptionType","WALLET_API_URL","AirdropsClient","createMarketerBalance","processCreateMarketerBalance","getAirdropAmount","number","processGetAirdropAmount","triggerAirdrop","processTriggerAirdrop","BlockExplorerClient","getBalances","processGetBalances","getTransaction","txHash","targetCurrency","processGetTransaction","getAllRecent","tokenAddress","processGetAllRecent","getAmbassadorTransactionsPagination","processGetAmbassadorTransactionsPagination","searchTransactionsPagination","processSearchTransactionsPagination","getTransactions","address","startingFromBlock","processGetTransactions","getTransactionCount","processGetTransactionCount","getRecentTransactions","processGetRecentTransactions","getLastTransactions","watermarkBlock","watermarkIndex","processGetLastTransactions","getProfileUpdatesV2","watermark","toISOString","processGetProfileUpdatesV2","getClaimsForFrozenAmount","blockNumber","processGetClaimsForFrozenAmount","getTotalFrozenAmount","processGetTotalFrozenAmount","getVaultTransactions","processGetVaultTransactions","getVaultTransaction","processGetVaultTransaction","getMinedTransactions","processGetMinedTransactions","getActSwapStatus","processGetActSwapStatus","getTemplateRequestPayments","templateId","processGetTemplateRequestPayments","getNewTemplateRequestPayments","processGetNewTemplateRequestPayments","getOldTemplateRequestPayments","processGetOldTemplateRequestPayments","DealsClient","getUpdatedDeals","updatedSince","processGetUpdatedDeals","getDealsByBusiness","processGetDealsByBusiness","createDeal","processCreateDeal","updateDeal","dealId","processUpdateDeal","deleteDeal","hard","processDeleteDeal","getLocalDeals","latitude","longitude","skip","take","processGetLocalDeals","getOnlineDeals","countryId","processGetOnlineDeals","getStoreDeals","activeOnly","processGetStoreDeals","getDealDetails","processGetDealDetails","InvitationsClient","createV2","processCreateV2","getSentNonAmbassadorInvitationsV2","processGetSentNonAmbassadorInvitationsV2","getSentAmbassadorInvitationsV2","processGetSentAmbassadorInvitationsV2","getSentInvitation","invitee","processGetSentInvitation","acceptInvitationV2","invitationId","processAcceptInvitationV2","revokeV2","processRevokeV2","createInvitationLink","processCreateInvitationLink","getAmbassadorInvitationsCountsV2","processGetAmbassadorInvitationsCountsV2","MyWorldClient","createDealerLoginUrl","originator","processCreateDealerLoginUrl","createShopperLoginUrl","processCreateShopperLoginUrl","createMarketerLoginUrl","processCreateMarketerLoginUrl","createMarketerAirdropLoginUrl","processCreateMarketerAirdropLoginUrl","PaymentRequestTemplateClient","createPaymentRequestTemplate","processCreatePaymentRequestTemplate","updatePaymentRequestTemplate","processUpdatePaymentRequestTemplate","deletePaymentRequestTemplates","paymentRequestTemplateId","processDeletePaymentRequestTemplates","getPaymentRequestTemplates","processGetPaymentRequestTemplates","getPaymentRequestTemplateDetails","processGetPaymentRequestTemplateDetails","PaymentsClient","createPaymentRequest","processCreatePaymentRequest","createPaymentRequestV2","processCreatePaymentRequestV2","createCryptoPaymentRequest","processCreateCryptoPaymentRequest","getSegments","processGetSegments","getSegmentsV2","processGetSegmentsV2","getPaymentInfo","requestId","payerProfileId","processGetPaymentInfo","getRequestPayments","processGetRequestPayments","getRequestPaymentsV2","processGetRequestPaymentsV2","getMatchedTransactions","processGetMatchedTransactions","isRequestPaid","processIsRequestPaid","confirmEthRequest","processConfirmEthRequest","isPaymentSettled","processIsPaymentSettled","searchPayments","processSearchPayments","getRefunds","processGetRefunds","createRefundRequest","processCreateRefundRequest","getAllRefunds","processGetAllRefunds","getOpenRefundRequests","processGetOpenRefundRequests","lockRefundRequest","binaryRefundId","processLockRefundRequest","unlockRefundRequest","processUnlockRefundRequest","rejectRefundRequest","processRejectRefundRequest","isAddressPayable","processIsAddressPayable","selfCreatePaymentRequest","processSelfCreatePaymentRequest","createPaymentRequestByTemplate","amount","processCreatePaymentRequestByTemplate","getEcsAmount","eurAmount","processGetEcsAmount","convertFromFiat","fiatAmount","fiatCurrencyCode","cryptoCurrencyCode","useOrderBook","processConvertFromFiat","convertToFiat","cryptoAmount","processConvertToFiat","getExchangedFiatToEcs","processGetExchangedFiatToEcs","getExchangedEcsToFiat","ecsAmount","targetFiatCurrencyCode","processGetExchangedEcsToFiat","ProfilesClient","createProfile","processCreateProfile","getProfiles","forApp","processGetProfiles","getProfilesV2","processGetProfilesV2","getProfile","processGetProfile","updateProfile","processUpdateProfile","deleteProfile","processDeleteProfile","getNextAddressIndex","processGetNextAddressIndex","addAddress","processAddAddress","updateAddressV2","newName","isMerchantAccount","defaultSegmentId","assignedTo","processUpdateAddressV2","updateAddressV3","processUpdateAddressV3","deleteAddress","addressId","addressTargetCurrency","processDeleteAddress","getNotificationSettings","processGetNotificationSettings","updateNotificationSettings","processUpdateNotificationSettings","getBlocktradeBalances","assetIds","forEach","item","processGetBlocktradeBalances","addBlocktradeKey","processAddBlocktradeKey","dropBlocktradeKey","processDropBlocktradeKey","ambassador","processAmbassador","requestProfileReset","processRequestProfileReset","isProfileResetRequested","processIsProfileResetRequested","resetProfile","processResetProfile","approveInstantTrade","processApproveInstantTrade","unlinkMWShopperId","processUnlinkMWShopperId","SettingsClient","clientAppSettings2","processClientAppSettings2","clientAppSettings","processClientAppSettings","getCountries","all","processGetCountries","getCountries2","processGetCountries2","getStoreCategories","processGetStoreCategories","getStoreCategories2","processGetStoreCategories2","getUserCurrencySettings","processGetUserCurrencySettings","updateUserCurrencySettings","processUpdateUserCurrencySettings","SimplexClient","getPublicKey","processGetPublicKey","getQuote","fiatCurrency","crypto","processGetQuote","getBuyCryptoUrl","processGetBuyCryptoUrl","SwipeluxClient","getSwipeluxPublicKey","processGetSwipeluxPublicKey","getSwipeluxQuote","processGetSwipeluxQuote","getSwipeluxBuyCryptoUrl","processGetSwipeluxBuyCryptoUrl","TokensClient","getTokensInUse","processGetTokensInUse","getTokensMetadata","processGetTokensMetadata","createCustomTokensMetadata","processCreateCustomTokensMetadata","updateCustomTokensMetadata","processUpdateCustomTokensMetadata","deleteCustomTokensMetadata","processDeleteCustomTokensMetadata","UsersClient","registerHookCall","processRegisterHookCall","getCoownedProfiles","processGetCoownedProfiles","requestAccountDeletion","processRequestAccountDeletion","isAccountDeletionRequested","processIsAccountDeletionRequested","deleteAccount","processDeleteAccount","getCurrencySettings","processGetCurrencySettings","updateCurrencySettings","processUpdateCurrencySettings","getAddressBookEntries","processGetAddressBookEntries","createAddressBookEntry","processCreateAddressBookEntry","updateAddressBookEntry","processUpdateAddressBookEntry","requestEmailChange","processRequestEmailChange","isEmailChangeRequested","processIsEmailChangeRequested","changeEmail","processChangeEmail","cancelEmailChange","processCancelEmailChange","Apps","Currency","DealStatus","ProfileState","TransactionDirection","TransactionErrorType","TransactionStatus","TransactionType","VaultSubscriptionType","configureAuth","oidcConfigService","settingsClient","configurationService","setupAction$","map","cfg","stsServer","authIssuerUrl","redirectUrl","window","location","origin","clientId","scope","postLogoutRedirectUri","startCheckSession","silentRenew","postLoginRoute","forbiddenRoute","unauthorizedRoute","logLevel","LogLevel","maxIdTokenIatOffsetAllowedInSeconds","historyCleanupOff","useRefreshToken","renewTimeBeforeTokenExpiresInSeconds","switchMap","config","withConfig","toPromise","AuthState","AuthService","oidcSecurityService","tokenHelper","localStorageService","userData$","authState$","isAuthenticated$","val","mapToAuthState","checkSessionChanged$","isLoggedIn","getToken","getTokenPayload","getPayloadFromToken","userData","checkAuth","logoff","write","LOGOUT_MARKER","remove","REDIRECT","DISMISSED_BANNER_KEY","authorize","authOptions","refreshSession","forceRefreshSession","logoffLocal","isAuthenticated","incomplete","incompleteRegistration","authenticated","notAuthenticated","SidebarService","environment","containerClassnames","menuClickCount","selectedMenuHasSubItems","BehaviorSubject","initialSidebar","strCurrentClasses","before","sidebar","getValue","currentClasses","split","filter","x","nextClasses","includes","join","Object","showSidebar","isSidebarVisible","value","getSidebar","asObservable","changeVal","str","setContainerClassnames","clickIndex","W","he","read","SIDEBAR_CLOSED_STATE","addContainerClassname","classname","newClasses","Z","indexOf","changeDefaultClassnames","changeSelectedMenuHasSubItems","hasSubMenu","collapse","hide","BusinessSettingsService","businessClient","paymentsClient","toastrMessageServiceService","hideTabsValue","hideTabs","newState","getBusinessDetails","updateBusinessDetails","newBusinessDto","updateStoreDetails","newStoreDto","addressDto","catchError","throwError","SelectStoreTypeComponent","businessSettingsService","router","route","ngOnInit","selectStore","isOnlineStore","navigate","ApplicationRouteSegments","relativeTo","parent","state","selectors","ctx","ProfileImagesModule","CommonModule","SharedModule","ProfilesResolver","profilesService","resolve","profiles","Ee","profilesSubject","_a","of","Boolean","ProfilesService","authService","profilesClient","tokensClient","inviterDataSubject","tokensMetadata$","tokensMetadataSubject","tokensMetadata","inviterData","getInviterData","tap","reloadProfiles","subscribe","err","retrieveSelectedProfile","De","selectProfile","profile","renameAddress","onImgError","src","defaultImgPath","getImageUrl","image","profileImageBasePath","mediaType","getAmbassadorStatus","getSelectedProfile","find","initTokensMetadata","profiles$","$e","inviterLegalName","inviterEmail","GlobalConstants","geolocationFailed","_","geolocationNotSupported","ImageCropperPopupComponent","translate","EventEmitter","maxFileSizeInMegabytes","setAspectRatio","setImageType","HTMLCanvasElement","prototype","toBlob","defineProperty","callback","type","quality","dataURL","toDataURL","setTimeout","binStr","atob","len","arr","Uint8Array","i","charCodeAt","ngOnChanges","imageCropped","croppedImage","base64","croppedImageSizeInMegabytes","base64ToFile","size","byteToMbConversionRate","imageLoaded","isLoading","cropperReady","loadImageFailed","loadImageFailMsg","rotateLeft","rotationDegree","transform","rotate","rotateRight","flipHorizontal","flipH","flipVertical","flipV","save","warningNoTranslate","instant","cancel","cancelEvent","emit","emitValue","submitImage","aspectRatio","roundCropper","resultImageType","match","blobToFile","theBlob","lastModified","b","lastModifiedDate","Date","name","ImageCropperComponent","ctx_r16","oxw","_r21","MAs","ctx_r24","ctx_r26","ImageUploadComponent","maxFileSize","imageSelected","files","mimeType","showCropper","warning","validImageFormatsMsg","removeImage","newImageRemoved","uploadDraftImage","croppedFile","newImageAdded","fileElement","nativeElement","LoaderComponent","NoTransactionComponent","ctx_r2","ProfileCardComponent","profileSelected","profileDelete","onProfileClick","onDeleteClick","stopPropagation","preventDefault","EnterpriseSubscriptionType","SubscriptionStatus","ctx_r4","ctx_r6","ctx_r9","TimePickerComponent","parseInput","parseValue","input","regexPatterns","hoursAndMinutesCompleted","pattern","test","syncValue","moment","timeFormat","format","timeFormatWithSeconds","valueIsValid","add","changeValue","arrowChangeValue","reduce","addMinutes","parsedValue","isValid","propagateValue","initialValue","valueChange$","TimeParseDirective","ctx_r14","YesNoDialogBoxComponent","actionComplete","confirm","YesNoDialogBoxModule","ECREDITS_GUIDE_LINK","GA_ENDPOINT","SUBSCRIPTION_TERMS","BUY_ECS_TERMS_AND_CONDITIONS","DEALS_TERMS_AND_CONDITIONS","EWALLET_TERMS_OF_SERVICE","AUTH_ATTEMPT","PATH_AUTOLOGIN","UNAUTHORIZED","MY_WORLD_REDIRECT_URL","SKIP_AMBASSADOR_AD","ACTIVE","INCOMPLETE","CONFIRMED","FAILED","ECREDITS_IN","ECREDITS_OUT","EACTIVITY_IN","EACTIVITY_OUT","CASHBACK_IN","ETHEREUM_IN","ETHEREUM_OUT","TOKEN_IN","TOKEN_OUT","ALLOW_ALL_FEATURES","COMPANY_NAME","DEFAULT_FRACTION_DIGITS","DEFAULT_ETH_FRACTION_DIGITS","MAX_FRACTION_DIGITS","BLOCKTRADE","ACTIVE_SETTINGS_TAB","BACK_SETTINGS_REDIRECT","ENTERPRISE","PREMIUMWHITE","PREMIUMBLUE","BASICGRAY","BASICBLUE","BASICWHITE","AMBASSADOR","SCE_MEMBERSHIP","EMPTY","REGULAR","PERSONAL_GOLD","PERSONAL_PLATINUM","BUSINESS","INVITATIONS","BUYECS","PRICETAGS","STORES","TOTAL_BUSINESS_PROFILES","TOTAL_CONSUMER_PROFILES","DEFAULT_GRAPH_DAYS","IMAGE_JPEG","IMAGE_PNG","APPLICATION_PDF","UNACCEPTED_INVITATION","THEME_LANG","MONTH_IN_MILISECONDS","DAY_IN_MILISECONDS","REDEEM_VOUCHER","SUBSCRIPTION_DEFINITION","COMPANY","CURRENT_DEALS","EXPIRED_DEALS","EDIT_DEAL","CREATE_DEAL","ALL_STORES","INVALID_DATE","EDIT_MULTI_PAYMENT","DEFAULT_PAYMENT_TEMPLATE_TRANSACTIONS","DEFAULT_TOKEN_DECIMALS","BusinessLimitationDirective","templateRef","viewContainer","subscriptionsService","getBusinessPremiumSubscriptionExistance","snapshot","params","createEmbeddedView","clear","ControllableProfileDirective","userRoleService","controllableProfile","el","isDigit","RegExp","hours","hoursAndMinutes","previousValue","parseTime","setValue","slice","p","BalanceTypes","UserRoles","InvitationStatuses","CashbackTypes","PaymentMethods","RefundRequestStatuses","TransactionsStatuses","MaxFractionDigits","SupportedLanguagesCodes","SupportedLocalesCodes","ExportTypes","ProcessedAuthCodes","ApplicationFeatures","InvitationStatus","handle","interpolateParams","default","MapperModule","usersClient","walletSettingsClient","walletApiUrl","currencySettings$","currencysettings","currencySettings","agreementsUrl","businessTermsOfServiceFile","consumerPrivacyPolicyFile","consumerTermsOfServiceFile","profileImagesLocation","publicImagesLocation","authServiceUrl","googlePlacesApiKey","googlePlacesPublicKey","stripePublicKey","settingsLoaded","eActivityContractAddress","learningCenterUrl","disabledFeatures","blocktradeConfig","disabledFeaturesList","blocktradeDomain","affiliateTermsOfServiceFile","currencyRateSource","simplexUrl","swipeluxUrl","supportedFiatCurrencyCodes","disabledTokens","getCountries$","countires","getStoreCategories$","storeCategories","shareReplay","bufferSize","refCount","ConfigurationService","walletApiUrl$","disabledFeaturesList$","list","checkForDisabledFeature","featureToCheck","I","checkForDisabledFeatures","featuresToCheck","some","feature","checkIfAllFeaturesDisabled","every","disabledFeature","DestroyService","subscriber","life$","Subject","ngOnDestroy","SessionStorageService","storage","getItem","setItem","removeItem","sessionStorage","SESSION_STORAGE","LangService","rendererFactory","navigator","sessionStorageService","direction","label","shorthand","renderer","createRenderer","language","currentLang","languageShorthand","supportedLanguages","languageLabel","isSupportedLanguage","getDefaultLanguage","use","init","setTranslation","en","de","it","setDefaultLang","isSingleLang","checkForDirectionChange","removeClass","document","addClass","setAttribute","documentElement","getTranslation","options","resolveToSupportedLanguages","mainLangSegment","We","setLanguage","languageCode","supportedLanguage","NAVIGATOR","ModalService","lockBodyScroll","unlockBodyScroll","DOCUMENT","LocalStorageService","localStorage","LOCAL_STORAGE","SubscriptionsService","activeSubscriptionsList","activeSubscriptions","setActiveSubscriptions","subs","mergeSubscriptions","U","sub","setOfferedSubscriptions","offeredSubscriptions","setExpiredSubscriptions","expiredSubscriptions","getExpiredSubscriptions","isCardMatchingDefinition","card","subscriptionDefinition","subscriptionType","title","subType","personalSubscriptionType","mapActiveSubscriptions","cards","offeredSubs","activeSubs","filteredCards","subDefinition","re","definition","targetActiveSub","targetOfferedSub","targetExpiredSub","_b","Re","_c","zt","_d","startedAt","endsDate","endsAt","setUTCHours","active","activated","notStarted","price","priceNetto","inactivePrice","getSubscriptionPrice","nonTaxableFees","disabled","canSubscribe","disabledReason","referenceAddress","icon","checkForUpgradableSubs","priceBrutto","goldSub","platinumSub","upgradable","forbidden","basicSub","premiumSub","normalizedEndsDate","DateUtils","normalizedBasicEndsDate","resetedTodayDate","upgradableTo","basicIsActive","available","getSubscriptionStatus","mergedSubs","existingSubIndex","findIndex","mergedSub","push","ToastrMessageServiceService","toastrService","messageKey","success","showTranslatedError","roles","UserRoleService","businessRolesClient","parseRoleClaims","tokenPayload","parseRoles","profileRoles","parseRoleFunc","role","values","Array","isArray","isOnlyViewer","isOnlyOwner","isDeveloper","getFeatureRoles","applicationFeatures","featureRoles","LoaderModule","RouterModule","FormsModule","ReactiveFormsModule","TranslateModule","PerfectScrollbarModule","ImageCropperModule","AngularSvgIconModule","QRCodeModule","inject","WINDOW","defaultView","date","offset","getTimezoneOffset","getTime","tzDate","newDate","setDate","getDate","setHours","mins","sec","milisec","production","version","baseApiUrl","securedApis","googleStoreUrl","appleStoreUrl","adminRoot","defaultMenuType","subHiddenBreakpoint","menuHiddenBreakpoint","themeColorStorageKey","isMultiColorActive","defaultColor","isDarkSwitchActive","defaultDirection","themeRadiusStorageKey","isAuthGuardActive","defaultConsumerLogoId","defaultBusinessLogoId","defaultConsumerName","cashbackWorldName","maxImageSize","regex","website","email","tax","phone","amountRegex","noOfDashoboardTransactions","noOfTransactionsForScrolling","paymentReferenceValidation","minLength","maxLength","minimumAmount","qrCodeWidth","sm","md","timeToSleep","invitationMessageMaxLength","hideWebWidget","maxTxExport","sceMembershipFormUrl","ambassadorTrainingPage","resolveOtherLanguagesToEnglish","NG_DEV_MODE$1","exp","ɵRuntimeError","process","call","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","driver","normalizer","element","keyframes","preStyles","postStyles","errors","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","prop","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","LINE_START","animationFailed","player","eventName","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","totalTime","makeAnimationEvent","triggerName","fromState","toState","_data","defaultValue","Map","set","command","separatorPos","substring","substr","action","_contains","elm1","elm2","_query","selector","multi","_documentElement","parentNode","host","isNode","Element","isBrowser","getParentElement","contains","from","querySelectorAll","elem","querySelector","_CACHED_BODY","_IS_WEBKIT","getBodyNode","style","containsVendorPrefix","camelProp","charAt","toUpperCase","containsElement","invokeQuery","NoopAnimationDriver","validateStyleProperty","matchesElement","_element","_selector","query","computeStyle","animate","duration","delay","easing","previousPlayers","scrubberAccessRequested","ɵfac","ɵprov","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","matches","_convertTimeValueToMS","parseFloat","unit","timings","allowNegativeValues","hasOwnProperty","invalidTimingValue","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","splice","parseTimeExpression","destination","styles","readPrototype","copyObj","styleAttrValue","getStyleAttributeString","getPropertyValue","startsWith","camelCaseToDashCase","formerStyles","dashCaseToCamelCase","writeStyleAttribute","steps","sequence","PARAM_REGEX","lastIndex","original","varName","localVal","invalidParamValue","iterator","done","DASH_CASE_REGEXP","m","toLowerCase","visitor","node","context","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","nodeType","invalidNodeType","getComputedStyle","transitionValue","expressions","eventStr","alias","invalidTransitionAlias","parseAnimationAlias","expr","invalidExpression","separator","makeLambdaFromStates","parseInnerTransitionStr","TRUE_BOOLEAN_VALUES","Set","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","has","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","metadata","warnings","AnimationAstBuilderVisitor","build","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","ast","visitDslNode","normalizeAnimationEntry","unsupportedCSSPropertiesFound","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","invalidTrigger","definitions","def","stateDef","n","transition","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","isObject","stylesObj","extractStyleParams","iteratorToArray","metadataName","invalidState","missingSubsArr","animation","matchers","parseTransitionExpr","normalizeAnimationOptions","s","furthestTime","step","innerAst","Math","max","timingAst","makeTimingAst","resolveTiming","strValue","v","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","isEmpty","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","Gt","invalidStyleValue","collectedEasing","styleData","styleMap","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","firstStart","firstEnd","secondStart","secondEnd","invalidParallelAnimation","invalidStyleParams","validateStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","limit","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","hasAmpersand","token","normalizeSelector","getOrSetAsInMap","optional","originalSelector","invalidStagger","currentTransition","normalizeParams","preStyleProps","postStyleProps","subTimeline","_map","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","ElementInstructionMap","AnimationTimelineContext","currentTimeline","setStyles","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","createTimelineInstruction","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","resolveTimingValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","abs","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","time","results","elements","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","create","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","allStyles","allProperties","copyStyles","flattenStyles","props","getFinalKeyframe","properties","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","pow","round","AnimationStyleNormalizer","propertyName","userProvidedProperty","normalizedProperty","strVal","trim","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","invalidCssUnitValue","makeBooleanMap","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","_triggerName","_stateStyles","currentState","nextState","matchFns","fn","oneOrMoreTransitionsMatch","buildStyles","stateName","backupStateStyler","stateStyler","backupStyles","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","assign","buildAnimationTimelines","createTransitionInstruction","elm","queriedElementsList","defaultParams","combinedParams","styleObj","_normalizer","transitionFactories","AnimationStateStyles","balanceProperties","AnimationTransitionFactory","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","entry","f","matchStyles","key1","key2","EMPTY_INSTRUCTION_MAP","bodyNode","_animations","_playersById","buildAnimationAst","registerFailed","_buildPlayer","normalizeKeyframes","autoStylesMap","pt","inst","missingOrDestroyedAnimation","createAnimationFailed","optimizeGroupPlayer","destroy","_getPlayer","index","missingPlayer","listen","baseEvent","listenOnPlayer","args","play","pause","reset","restart","finish","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","StateValue","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","listeners","triggersWithStates","statesByElement","afterFlush","_getTrigger","trigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","a","k1","k2","objEquals","reportError","eraseStyles","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","deregister","stateMap","clearElementCache","delete","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","listener","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","destroyed","Le","markedForDestroy","sort","d0","d1","elementContainsData","containsData","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","AnimationTransitionNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","unshift","registerTrigger","_fetchNamespace","nsId","isElementNode","insertBefore","details","markElementAsDisabled","isHostElement","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","Promise","classList","flush","cleanupFns","_flushAnimations","quietFns","P","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","nodes","root","className","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","Br","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","post","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","j","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","finalPlayers","_flattenGroupPlayersRecur","flattenGroupPlayers","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","triggerCallback","_queueEvent","hasStarted","getPosition","oldValue","display","valuesMap","elementPropsMap","defaultStyle","cloakVals","cloakElement","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","_triggerCache","_transitionEngine","TransitionAnimationEngine","_timelineEngine","TimelineAnimationEngine","componentId","cacheKey","triggerBuildFailed","AnimationTrigger","buildTrigger","onInsert","onRemove","disableAnimations","disable","property","parseTimelineCommand","eventPhase","concat","SpecialCasedStyles","_startStyles","_endStyles","_state","initialStyles","initialStylesByElement","_initialStyles","start","WeakMap","isNonAnimatableStyle","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_destroyed","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","addEventListener","_resetDomPlayerState","methods","playerOptions","fill","previousStyles","previousWebAnimationPlayers","WebAnimationsPlayer","allowPreviousPlayerStylesMerge","previousStyleProps","startingKeyframe","missingStyleProps","balancePreviousStylesIntoKeyframes","specialStyles","startStyles","endStyles","filterNonAnimatableStyles","packageNonAnimatableStyles","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","doc","_nextAnimationId","_renderer","encapsulation","ViewEncapsulation","typeData","issueAnimationCommand","BrowserAnimationFactory","AnimationFactory","_id","RendererAnimationPlayer","_command","_listen","setProperty","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","promise","removeChild","BaseAnimationRenderer","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","then","scheduleListenerCallback","run","end","runOutsideAngular","i1","destroyNode","createElement","namespace","createComment","createText","appendChild","newChild","refChild","isMove","oldChild","selectRootElement","selectorOrNode","preserveContent","nextSibling","removeAttribute","setStyle","flags","removeStyle","resolveElementFromTarget","dotIndex","parseTriggerCallbackName","InjectableAnimationEngine","ɵAnimationEngine","ANIMATION_MODULE_TYPE","SHARED_ANIMATION_PROVIDERS","provide","useClass","ɵAnimationStyleNormalizer","useFactory","ɵWebAnimationsStyleNormalizer","RendererFactory2","zone","deps","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","useValue","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","static","ngModule","providers","ɵmod","ɵinj","imports","BrowserModule","u","fo","AUD","BRL","CAD","CNY","ESP","EUR","GBP","HKD","ILS","INR","KRW","MXN","NZD","PHP","TWD","VND","XAF","XCD","XOF","no","ATS","BGM","BGO","CUC","DEM","FKP","GHS","GNF","KMF","RON","RWF","SYP","THB","XXX","ZMW","floor","go","BYN","EGP","JPY","NOK","USD","LayoutContainersModule","CollapseModule","useScript","flag","content","async","script","getThemeColor","color","console","log","setThemeColor","ctx_r3","ctx_r7","ctx_r10","ctx_r11","TopnavComponent","sidebarService","activatedRoute","langService","destroy$","authState","createEvent","initEvent","dispatchEvent","Vr","saveSidebarState","clickOnMobileMenu","events","NavigationEnd","takeUntil","firstChild","showSidebarMenuBurger","showProfileMenu","hideDownloadWalletBanner","Cr","toggleButton","menu","isSettingsOpened","handleDocumentClick","searchKey","handleFullscreen","isFullScreen","fullscreenElement","onDarkModeChange","reload","fullScreenClick","exitFullscreen","requestFullscreen","displayName$","sidebarSubscription","res","unsubscribe","onSignOut","outlets","popup","searchKeyUp","search","searchAreaClick","searchClick","innerWidth","parentElement","q","queryParams","onCogClick","saveRedirectUrl","path","Location","LocationStrategy","PathLocationStrategy","decls","AppComponent","cd","modalService","googleServicesClient","userClient","platformLocation","href","resetsession","sidebar$","ngAfterViewInit","ngAfterContentChecked","detectChanges","__awaiter","pathname","routeName","extractRouteFromPathname","bypassAutoLogin","showPage","notAuthorized","authAttempt","qn","initGoogleServices","initLang","navigateToStoredEndpoint","currentUrl","navigateByUrl","analyticsMeasurementId","siteKey","initGoogleAnalytics","buildGAScript","initRouterEvents","sendAnalyticsEvent","gtag","page_path","page_referrer","urlBeforeRedirect","page_location","AuthInterceptor","intercept","req","clone","AutoLoginComponent","ForbiddenComponent","SettingsTabsComponent","onSelectLink","currentTab","tabSelected","activeTab","GeneralSettingsComponent","transalateService","authClient","languages","currentLanguage","maxFractionDigitsKeys","maxFractionDigits","initCurrencySettings","mapDropDownList","fractionDigits","dropDownItemList","currencyItem","onLanguageChange","onChangePassword","changePasswordUrl","onCurrencyChange","currency","selectedMaxFractionDigits","onMaxFractionDigitChange","currencySettingDto","currencySettingId","currencies","selectedCurrency","Number","updateMaxFractionDigitsFailMsg","selectedCurrencyIndex","currencySetting","updateMaxFractionDigitsSuccessMsg","ctx_r5","ctx_r8","ctx_r13","ProfileNotificationsComponent","notificationSettings","settings","defaultSettings","onTypeChange","$event","edited","onSave","updateSettings","NotificationsSettingsComponent","translateService","loadNotiicationSettings","loadFailMsg","updatePofileNotificationSetting","newProfileNotificationSetting","updatedSuccessMsg","updatedFailMsg","SettingsComponent","getFullYear","collapsSidebarMenu","onTabSelectHandler","moveBack","UnauthorizedComponent","timer","redirectTimer$","ExpiredSessionComponent","logOut","InvitationComponent","invitationClient","paramMap","changeToAuthIfV3$","createMerchantProfile","ScePromotionComponent","promotionClient","decision","close","navigateToSceMembership","AuthGuard","canActivate","routes","redirectTo","pathMatch","loadChildren","ProfilesModule","OnboardingModule","component","children","outlet","AppRoutingModule","relativeLinkResolution","paramsInheritanceStrategy","HttpErrorInterceptor","createUrlTree","CustomTranslateCompiler","TranslateCompiler","compile","compileTranslations","translations","enrichTranslations","newObject","t","registerLocaleData","usLocale","deLocale","itLocale","defineLocale","de_Locale","enGbLocale","it_Locale","DEFAULT_SWIPER_CONFIG","slidesPerView","freeMode","mousewheel","keyboard","scrollbar","navigation","pagination","centeredSlides","AppModule","bootstrap","OidcConfigService","APP_INITIALIZER","HTTP_INTERCEPTORS","DatePipe","SWIPER_CONFIG","AuthModule","appId","HttpClientModule","compiler","missingTranslationHandler","MissingTranslationHandler","MissingTranslationHelper","useDefaultLang","BsDropdownModule","BsDatepickerModule","ToastrModule","ToastContainerModule","InfiniteScrollModule","TagInputModule","AccordionModule","NgSelectModule","SwiperModule","NgxEchartsModule","echarts","w","__NgCli_bootstrap_1","bootstrapModule","catch","getElementsByTagName","shell","getElementById","overflow","canPromise","require","QRCode","CanvasRenderer","SvgRenderer","renderFunc","canvas","text","opts","cb","arguments","argsNum","isLastArgCb","getContext","reject","exports","renderCanvas","bind","render","renderToDataURL","module","getSymbolSize","posCount","intervals","ceil","positions","reverse","coords","pos","getRowColCoords","posLength","Mode","ALPHA_NUM_CHARS","mode","ALPHANUMERIC","AlphanumericData","getBitsLength","getLength","bitBuffer","put","buffer","BitBuffer","bufIndex","num","putBit","getLengthInBits","bit","reservedBit","BitMatrix","row","col","reserved","xor","isReserved","encodeUtf8","BYTE","ByteData","l","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","errorCorrectionLevel","L","M","Q","H","level","string","fromString","FINDER_PATTERN_SIZE","Utils","G15_BCH","getBCHDigit","mask","d","G15_MASK","EXP_TABLE","LOG_TABLE","y","KANJI","KanjiData","toSJIS","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","maskPattern","Patterns","isNaN","parseInt","points","sameCountCol","sameCountRow","lastCol","lastRow","last","N2","bitsCol","bitsRow","N3","darkCount","modulesCount","k","N4","getMaskAt","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","Infinity","applyMask","penalty","getPenaltyN1","getPenaltyN2","getPenaltyN3","getPenaltyN4","VersionCheck","Regex","ccBits","dataStr","testNumeric","NUMERIC","testAlphanumeric","testKanji","NumericData","group","remainingNum","GF","p1","p2","coeff","mul","divident","divisor","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","matrix","bits","getEncodedBits","mod","Nt","segments","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","getCharCountIndicator","dataTotalCodewordsBits","getSymbolTotalCodewords","getTotalCodewordsCount","remainingByte","totalCodewords","dataTotalCodewords","ecTotalBlocks","getBlocksCount","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","encode","createCodewords","createData","moduleCount","modules","setupFinderPattern","getPositions","c","setupTimingPattern","setupAlignmentPattern","setupFormatInfo","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","getBestMask","toSJISFunc","setToSJISFunction","createSymbol","Polynomial","genPoly","initialize","generateECPolynomial","paddedData","remainder","buff","numeric","kanji","byte","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","dijkstra","unescape","numSegs","alphaNumSegs","byteSegs","kanjiSegs","isKanjiModeEnabled","BYTE_KANJI","segs","s1","s2","modesHint","bestMode","getBestModeForData","array","acc","seg","buildSingleSegment","getStringByteLength","buildNodes","getSegmentsFromString","graph","table","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","getSegmentBitsLength","buildGraph","find_path","optimizedSegs","curr","prevSeg","mergeSegments","toSJISFunction","CODEWORDS_COUNT","digit","G18_BCH","totalBits","reservedBits","MIXED","usableBits","getReservedBitsCount","ecl","currentVersion","getCapacity","getBestVersionForMixedData","getBestVersionForDataLength","qrData","canvasEl","getCanvasElement","getOptions","getImageWidth","createImageData","qrToImageData","clearRect","width","height","clearCanvas","putImageData","rendererOpts","attrib","alpha","hex","toFixed","cmd","qrcodesize","margin","bg","light","getColorAttrib","moveBy","newRow","lineLength","svgCmd","qrToPath","svgTag","hexCode","apply","hexValue","g","scale","hex2rgba","qrSize","getScale","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","notifier","source","lift","RetryWhenOperator","RetryWhenSubscriber","SimpleOuterSubscriber","isStopped","retries","retriesSubscription","innerSubscribe","SimpleInnerSubscriber","_unsubscribeAndRecycle","_unsubscribe","notifyNext","_createClass","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","defineProperties","_templateObject","strings","raw","freeze","_taggedTemplateLiteral","instance","TypeError","_this","_len","transformers","_key","_classCallCheck","TemplateTag","tag","_len2","_key2","interimTag","transformEndResult","transformString","processSubstitutions","transformer","previousTag","template","_len3","substitutions","_key3","resultSoFar","remainingPart","substitution","transformSubstitution","shift","onString","onSubstitution","endResult","onEndResult","defaults","conjunction","serial","arrayLength","indent","lr","separatorIndex","lastIndexOf","arr2","min","_toConsumableArray","regexp","fe","side","inlineArrayTransformer","stripIndentTransformer","trimResultTransformer","splitBy","isValidValue","splitStringTransformer","replaceWhat","replaceWith","replaceSubstitutionTransformer","replaceResultTransformer","PlatformProvider","platformId","isPlatformBrowser","ɵngcc0","PLATFORM_ID","None","Debug","Warn","DEFAULT_CONFIG","authWellknownEndpoint","hdParam","silentRenewUrl","silentRenewTimeoutInSeconds","usePushedAuthorisationRequests","ignoreNonceAfterRefresh","autoUserinfo","autoCleanStateAfterAuthentication","triggerAuthorizationResultEvent","issValidationOff","disableIatOffsetValidation","Storage","customParams","customParamsRefreshToken","customParamsEndSession","eagerLoadAuthWellKnownEndpoints","disableRefreshIdTokenAuthTimeValidation","tokenRefreshInSeconds","refreshTokenRetryInSeconds","ngswBypass","ConfigurationProvider","platformProvider","hasValidConfig","openIdConfigurationInternal","getOpenIDConfiguration","setConfig","configuration","warn","setSpecialCases","currentConfig","HttpBaseService","ɵngcc1","NGSW_CUSTOM_PARAM","DataService","httpClient","configurationProvider","prepareHeaders","HttpParams","headersParams","LoggerService","logError","loggingIsTurnedOff","logWarning","logLevelIsSet","currentLogLevelIsEqualOrSmallerThan","logDebug","logLevelToCompare","EventTypes","ConfigLoaded","ConfigLoadingFailed","CheckSessionReceived","UserDataChanged","NewAuthorizationResult","TokenExpired","IdTokenExpired","PublicEventsService","notify","ReplaySubject","fireEvent","registerForEvents","AbstractSecurityStorage","StoragePersistenceService","oidcSecurityStorage","keyToRead","createKeyWithPrefix","keyToStore","resetStorageFlowData","resetAuthStateInStorage","getAccessToken","getIdToken","id_token","getRefreshToken","refresh_token","TokenHelperService","loggerService","getTokenExpirationDate","dataIdToken","toUTCString","setUTCSeconds","getHeaderFromToken","encoded","tokenIsValid","getPartOfToken","getSignatureFromToken","partOfToken","extractPartOfToken","urlBase64Decode","output","decoded","Buffer","parts","TokenValidationService","tokenHelperService","keyAlgorithms","hasIdTokenExpired","offsetSeconds","validateIdTokenExpNotExpired","decodedIdToken","tokenExpirationDate","tokenExpirationValue","valueOf","nowWithOffset","tokenNotExpired","validateAccessTokenNotExpired","accessTokenExpiresAt","accessTokenExpirationValue","validateRequiredIdToken","validated","validateIdTokenIatMaxOffset","maxOffsetAllowedInSeconds","dateTimeIatIdToken","iat","diff","nowInUtc","maxOffsetAllowedInMilliseconds","validateIdTokenNonce","localNonce","nonce","refreshTokenNoncePlaceholder","validateIdTokenIss","authWellKnownEndpointsIssuer","iss","validateIdTokenAud","aud","validateIdTokenAzpExistsIfMoreThanOneAud","azp","validateIdTokenAzpValid","validateStateFromHashCallback","localState","validateSignatureIdToken","idToken","jwtkeys","headerData","kid","alg","jwtKtyToUse","keyToValidate","kty","amountOfMatchingKeys","KJUR","KEYUTIL","publicKey","validateIdTokenAtHash","accessToken","atHash","idTokenAlg","sha","testData","generateAtHash","testValue","generateCodeChallenge","codeVerifier","hash","hextob64u","first128bits","AuthStateService","storagePersistenceService","publicEventsService","tokenValidationService","authorizedInternal$","authorized$","distinctUntilChanged","isAuthorized","setAuthorizedAndFireEvent","setUnauthorizedAndFireEvent","updateAndPublishAuthState","authorizationResult","setAuthorizationData","authResult","persistAccessTokenExpirationTime","decodeURIComponentSafely","areAuthStorageTokensValid","hasAccessTokenExpiredIfExpiryExists","tokenToCheck","idTokenExpired","accessTokenExpiresIn","hasExpired","expires_in","accessTokenExpiryTime","STORAGE_KEY","AutoLoginService","getStoredRedirectRoute","saveStoredRedirectRoute","deleteStoredRedirectRoute","RandomService","createRandom","requiredLength","getCrypto","getRandomValues","toHex","randomString","dec","characters","Uint32Array","msCrypto","FlowsDataService","randomService","createNonce","setNonce","getAuthStateControl","setAuthStateControl","authStateControl","getExistingOrCreateAuthStateControl","setSessionState","sessionState","getCodeVerifier","createCodeVerifier","isSilentRenewRunning","storageObject","timeOutInMilliseconds","dateOfLaunchedProcessUtc","currentDateUtc","elapsedTimeInMilliseconds","resetSilentRenewRunning","setSilentRenewRunning","FlowHelper","isCurrentFlowCodeFlow","currentFlowIs","isCurrentFlowAnyImplicitFlow","isCurrentFlowImplicitFlowWithAccessToken","isCurrentFlowImplicitFlowWithoutAccessToken","isCurrentFlowCodeFlowWithRefreshTokens","flowTypes","encodeKey","encodeValue","decodeKey","decodeValue","CALLBACK_PARAMS_TO_CHECK","UrlService","flowsDataService","flowHelper","getUrlParameter","urlToCheck","isCallbackFromSts","getRefreshSessionSilentRenewUrl","createUrlCodeFlowWithSilentRenew","createUrlImplicitFlowWithSilentRenew","getAuthorizeParUrl","requestUri","authWellKnownEndPoints","authorizationEndpoint","urlParts","authorizationUrl","encoder","UriEncoder","getAuthorizeUrl","createUrlCodeFlowAuthorize","createUrlImplicitFlowAuthorize","createEndSessionUrl","idTokenHint","endSessionEndpoint","authorizationEndsessionUrl","entries","getPostLogoutRedirectUrl","createRevocationEndpointBodyAccessToken","getClientId","createRevocationEndpointBodyRefreshToken","getRevocationEndpointUrl","revocationEndpoint","createBodyForCodeFlowCodeRequest","customTokenParams","dataForBody","oneLineTrim","customParamText","composeCustomParams","getSilentRenewUrl","getRedirectUrl","createBodyForCodeFlowRefreshTokensRequest","refreshToken","customParamsRefresh","createBodyForParCodeFlowRequest","customParamsRequest","codeChallenge","createAuthorizeUrl","prompt","customRequestParams","CodeFlowCallbackHandlerService","urlService","dataService","codeFlowCallback","isRenewProcess","jwtKeys","validationResult","existingIdToken","initialCallbackContext","codeFlowCodeRequest","callbackContext","authWellKnown","tokenEndpoint","bodyForCodeFlow","session_state","retryWhen","handleRefreshRetry","errorMessage","mergeMap","HttpErrorResponse","ProgressEvent","AuthorizedState","Authorized","Unauthorized","Unknown","ValidationResult","NotSet","StatesDoNotMatch","SignatureFailed","IncorrectNonce","RequiredPropertyMissing","MaxOffsetExpired","IssDoesNotMatchIssuer","NoAuthWellKnownEndPoints","IncorrectAud","IncorrectIdTokenClaimsAfterRefresh","IncorrectAzp","IncorrectAtHash","Ok","LoginRequired","SecureTokenServerError","UserService","oidcDataService","eventService","userDataInternal$","getAndPersistUserDataInStore","existingUserDataFromStorage","getUserDataFromStore","haveUserData","setUserDataToStore","renewUserInfoAfterTokenRenew","getUserDataOidcFlowAndSave","publishUserDataIfExists","resetUserDataInStore","idTokenSub","getIdentityUserData","validateUserDataSubIdToken","userinfoEndpoint","retry","userdataSub","ResetAuthDataService","authStateService","userService","resetAuthorizationData","SigninKeyDataService","getSigningKeys","jwksUri","handleErrorGetSigningKeys","errorResponse","errMsg","statusText","JWT_KEYS","HistoryJwtKeysCallbackHandlerService","signInKeyDataService","resetAuthDataService","callbackHistoryAndResetJwtKeys","historyCleanUpTurnedOn","resetBrowserHistory","handleResultErrorFromCallback","storeSigningKeys","storedJwtKeys","readSigningKeys","authorizationState","history","replaceState","ImplicitFlowCallbackHandlerService","implicitFlowCallback","isRenewProcessData","resultData","RefreshSessionCallbackHandlerService","refreshSessionWithRefreshTokens","stateData","RefreshTokenCallbackHandlerService","refreshTokensRequestTokens","EqualityService","isStringEqualOrNonOrderedArrayEqual","value1","value2","isNullOrUndefined","oneValueIsStringAndTheOtherIsArray","bothValuesAreStrings","bothValuesAreArrays","arraysHaveEqualContent","areEqual","arraysStrictEqual","bothValuesAreObjects","valueIsString","valueIsObject","String","arr1","authResponseIsValid","StateValidationService","equalityService","getValidatedStateResult","StateValidationResult","validateState","toReturn","handleUnsuccessfulValidation","access_token","authNonce","issuer","isIdTokenAfterRefreshTokenRequestValid","handleSuccessfulValidation","idTokenHeader","at_hash","newIdToken","auth_time","StateValidationCallbackHandlerService","stateValidationService","callbackStateValidation","publishUnauthorizedState","stateValidationResult","UserCallbackHandlerService","callbackUser","publishAuthorizedState","FlowsService","codeFlowCallbackHandlerService","implicitFlowCallbackHandlerService","historyJwtKeysCallbackHandlerService","userHandlerService","stateValidationCallbackHandlerService","refreshSessionCallbackHandlerService","refreshTokenCallbackHandlerService","processCodeFlowCallback","processSilentRenewCodeFlowCallback","firstContext","processImplicitFlowCallback","processRefreshToken","IntervallService","runTokenValidationRunning","stopPeriodicallTokenCheck","startPeriodicTokenCheck","repeatAfterSeconds","millisecondsDelayBetweenTokenCheck","intervalId","setInterval","clearInterval","ɵɵdefineInjectable","ɵɵinject","providedIn","ImplicitFlowCallbackService","flowsService","intervalService","authorizedImplicitFlowCallback","ɵngcc2","Router","CodeFlowCallbackService","intervallService","authorizedCallbackWithCode","CallbackService","implicitFlowCallbackService","codeFlowCallbackService","stsCallbackInternal$","stsCallback$","isCallback","handleCallbackAndFireEvents","currentCallbackUrl","callback$","IFrameService","getExistingIFrame","identifier","iFrameOnParent","getIFrameFromParentWindow","isIFrameElement","iFrameOnSelf","getIFrameFromWindow","addIFrameToWindowBody","sessionIframe","iFrameElement","HTMLIFrameElement","IFRAME_FOR_SILENT_RENEW_IDENTIFIER","SilentRenewService","iFrameService","refreshSessionWithIFrameCompletedInternal$","refreshSessionWithIFrameCompleted$","getOrCreateIframe","getExistingIframe","isSilentRenewConfigured","codeFlowCallbackSilentRenewIframe","errorFromFlow","silentRenewEventHandler","detail","RefreshSessionIframeService","silentRenewService","refreshSessionWithIframe","sendAuthorizeRequestUsingSilentRenew","initSilentRenewRequest","onLoadHandler","removeEventListener","contentWindow","instanceId","random","initDestroyHandler","renewDestroyHandler","CustomEvent","RefreshSessionRefreshTokenService","PeriodicallyTokenCheckService","refreshSessionIframeService","refreshSessionRefreshTokenService","startTokenValidationPeriodically","periodicallyCheck$","userDataFromStore","idTokenHasExpired","accessTokenHasExpired","mergedParams","WELL_KNOWN_SUFFIX","AuthWellKnownDataService","getWellKnownEndPointsFromUrl","getWellKnownDocument","wellKnownEndpoints","jwks_uri","authorization_endpoint","token_endpoint","userinfo_endpoint","end_session_endpoint","checkSessionIframe","check_session_iframe","revocation_endpoint","introspectionEndpoint","introspection_endpoint","parEndpoint","pushed_authorization_request_endpoint","wellKnownEndpoint","AuthWellKnownService","getAuthWellKnownEndPoints","authWellknownEndpointUrl","alreadySavedWellKnownEndpoints","mappedWellKnownEndpoints","storeWellKnownEndpoints","RefreshSessionService","authWellKnownService","extraCustomParams","startRefreshSession","timeOutTime","forkJoin","timeout","timeoutRetryStrategy","errorAttempts","currentAttempt","TimeoutError","scalingDuration","IFRAME_FOR_CHECK_SESSION_IDENTIFIER","CheckSessionService","checkSessionReceived","lastIFrameRefresh","outstandingMessages","heartBeatInterval","iframeRefreshInterval","checkSessionChangedInternal$","isCheckSessionConfigured","scheduledHeartBeatRunning","pollServerSession","stop","clearScheduledHeartBeat","serverStateChanged","now","existingIframe","pollServerSessionRecur","iframeOrigin","URL","postMessage","clearTimeout","messageHandler","existingIFrame","B","bindMessageEventToIframe","iframeMessageEvent","frame","PopUpService","STORAGE_IDENTIFIER","resultInternal$","result$","isCurrentlyInPopup","opener","openPopUp","popupOptions","optionsToPass","popUp","open","userClosed","receivedUrl","cleanUp","closed","sendMessageToMainWindow","sendMessage","left","top","CheckAuthService","checkSessionService","callbackService","refreshSessionService","periodicallyTokenCheckService","popupService","autoLoginService","startCheckSessionAndValidation","savedRouteForRedirect","checkAuthIncludingServer","isAuth","POSITIVE_VALIDATION_RESULT","messages","allRules","passedConfig","hasRefreshToken","hasSilentRenew","hasOfflineScope","ConfigValidationService","validateConfig","allMessages","allValidationResults","rule","allErrorMessages","getAllMessagesOfType","allWarnings","configValidationService","passedAuthWellKnownEndpoints","usedConfig","alreadyExistingAuthWellKnownEndpoints","wellknown","jt","wellknownEndPoints","RedirectService","ResponseTypeValidationService","hasConfigValidResponseType","ParService","postParRequest","expiresIn","request_uri","ParLoginService","responseTypeValidationService","redirectService","checkAuthService","parService","loginPar","urlHandler","loginWithPopUpPar","PopUpLoginService","loginWithPopUpStandard","authUrl","StandardLoginService","loginStandard","LoginService","parLoginService","popUpLoginService","standardLoginService","login","loginWithPopUp","LogoffRevocationService","endSessionUrl","getEndSessionUrl","logoffAndRevokeTokens","revokeRefreshToken","revokeAccessToken","accessTok","refreshTok","OidcSecurityService","logoffRevocationService","loginService","getPayloadFromIdToken","setState","getState","authorizeWithPopUp","BrowserStorageService","configProvider","hasStorage","getStorage","single_source_shortest_paths","predecessors","costs","closest","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","PriorityQueue","make","empty","pop","cost","msg","extract_shortest_path_from_predecessor_list","T","queue","sorter","default_sorter","point","second","YAHOO","extend","h","superclass","userAgent","CryptoJS","lib","Base","o","mixIn","$super","WordArray","words","sigBytes","St","clamp","enc","Hex","Latin1","fromCharCode","Utf8","escape","BufferedBlockAlgorithm","_nDataBytes","_append","_process","blockSize","_minBufferSize","_doProcessBlock","Hasher","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","x64","Word","high","low","toX32","Base64","sqrt","SHA256","_hash","HmacSHA256","ea","SHA512","F","G","J","X","K","Y","$","N","aa","O","ba","ca","z","A","R","C","S","D","V","E","fa","da","HmacSHA512","SHA384","HmacSHA384","dbits","b64map","int2char","fromNumber","BigInteger","appName","am","DB","DM","DV","FV","F1","F2","rr","vv","BI_RC","nbi","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","divide","Classic","convert","compareTo","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","Montgomery","ZERO","subTo","copyTo","drShiftTo","fromRadix","intAt","ne","lShiftTo","rShiftTo","nbits","isEven","negate","toRadix","bitLength","modPowInt","nbv","NullExp","nNop","Barrett","multiplyUpperTo","multiplyLowerTo","dAddOffset","rng_state","rng_pool","rng_pptr","lowprimes","lplim","rng_psize","rng_seed_int","chunkSize","LN2","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","op_or","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","toByteArray","equals","and","op_and","or","op_xor","andNot","op_andnot","not","lbit","bitCount","cbit","setBit","clearBit","flipBit","multiply","divideAndRemainder","modInverse","gcd","square","Arcfour","ua","appVersion","rng_seed_time","prng_newstate","dmp1","dmq1","curve","zinv","fromBigInteger","infinity","ECPointFp","SecureRandom","rng_get_byte","RSAKey","doPublic","setPublic","isPublic","isPrivate","parseBigInt","encrypt","pkcs1pad2","encryptOAEP","MessageDigest","Util","getCanonicalAlgName","getHashLength","hextorstr","hashHex","rstrtohex","oaep_mgf1_arr","oaep_pad","ECFieldElementFp","toBigInteger","getX","getY","isInfinity","twice","getInfinity","multiplyTwo","ECCurveFp","getQ","getA","getB","decodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","decodeFrom","decodeFromHex","add2D","twice2D","multiply2D","isOnCurve","validate","jsonParse","Ze","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","getPEMStringFromHex","hextopem","DERBoolean","DERInteger","DERBitString","DEROctetString","DERNull","DERObjectIdentifier","DEREnumerated","DERUTF8String","DERNumericString","DERPrintableString","DERTeletexString","DERIA5String","DERUTCTime","DERGeneralizedTime","DERSequence","DERSet","DERTaggedObject","explicit","jsonToASN1HEX","getEncodedHex","oidHexToInt","oidIntToHex","ASN1Object","getLengthHexFromValue","hV","hTLV","isModified","getFreshValueHex","hL","hT","getValueHex","DERAbstractString","getString","setString","utf8tohex","setStringHex","DERAbstractTime","localDateToUTC","formatDate","zeroPadding","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","stohex","setByDateValue","UTC","setByDate","DERAbstractStructured","setByASN1ObjectArray","asn1Array","appendASN1Object","setByBigInteger","setByInteger","setValueHex","bigint","int","setHexValueIncludingUnusedBits","setUnusedBitsAndHexValue","setByBinaryString","setByBooleanArray","newFalseArray","bin","setValueOidString","setValueName","x509","OID","name2oid","oid","withMillis","millis","sortFlag","sortflag","isExplicit","asn1Object","setASN1Object","utf8tob64u","b64utoutf8","ASN1HEX","BAtohex","stoBA","b64tob64u","hex2b64","b64tohex","b64utob64","uricmptohex","encodeURIComponentAll","hextouricmp","hextob64","hextob64nl","b64nltohex","zulutomsec","hextoipv6","getLblen","getL","getVblen","getVidx","getV","getTLV","getNextSiblingIdx","getChildIdx","getNthChildIdx","getIdxbyList","getTLVbyList","getVbyList","hextooidstr","dump","ommit_long_octet","isASN1HEX","oid2name","hextoutf8","oidname","x509ExtName","isHex","b64utohex","isInteger","isBase64","isBase64URL","isIntegerArray","DIGESTINFOHEAD","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","MD5withRSA","SHA1withRSA","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","RIPEMD160withRSA","MD5withECDSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","RIPEMD160withECDSA","SHA1withDSA","SHA224withDSA","SHA256withDSA","MD5withRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","MD5","SHA1","SHA224","RIPEMD160","getDigestInfoHex","getPaddedDigestInfoHex","hashString","digestString","digestHex","prov","sha256Hex","sha512Hex","SECURERANDOMGEN","getRandomHexOfNbytes","getRandomBigIntegerOfNbytes","getRandomHexOfNbits","getRandomBigIntegerOfNbits","getRandomBigIntegerZeroToMax","getRandomBigIntegerMinToMax","setAlgAndProvider","updateString","updateHex","digest","sjcl","codec","toBits","fromBits","algName","provName","HASHLENGTH","Mac","algProv","mac","pass","doFinal","doFinalString","doFinalHex","setPassword","utf8","rstr","b64","b64u","Signature","_setAlgNames","mdAlgName","pubkeyAlgName","_zeroPaddingOfSignature","getKey","prvKey","pubKey","sign","sHashHex","ecprvhex","eccurvename","ECDSA","hSign","signHex","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","DSA","signString","verify","ecpubhex","verifyHex","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","initParams","psssaltlen","prvkeypem","prvkeypas","Cipher","getAlgByKeyAndName","decrypt","decryptOAEP","oidhex2name","ECParameterDB","getBigRandom","setNamedCurve","ecparams","getByName","prvKeyHex","pubKeyHex","curveName","setPrivateKeyHex","setPublicKeyHex","getPublicKeyXYHex","keylen","getShortNISTPCurveName","generateKeyPairHex","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","parseSigHex","verifyRaw","Bitcoin","parseSig","toByteArraySigned","parseSigCompact","readPKCS5PrvKeyHex","getName","readPKCS8PrvKeyHex","readPKCS8PubKeyHex","readCertPubKeyHex","prv","pub","parseSigHexInHexRS","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","regist","info","AES","iv","ciphertext","proc","eproc","ivlen","TripleDES","DES","cipher","ivsalt","keyhex","ivhex","parsePKCS5PEM","getKeyAndUnusedIvByPasscodeAndIvsalt","decryptKeyB64","getDecryptedKeyHex","getEncryptedPKCS5PEMFromPrvKeyHex","parseHexOfEncryptedPKCS8","encryptionSchemeAlg","encryptionSchemeIV","pbkdf2Salt","pbkdf2Iter","getPBKDF2KeyHexFromParam","PBKDF2","keySize","iterations","_getPlainPKCS8HexFromEncryptedPKCS8PEM","pemtohex","getKeyFromEncryptedPKCS8PEM","getKeyFromPlainPrivatePKCS8Hex","parsePlainPrivatePKCS8Hex","algoid","algparam","keyidx","getKeyFromPlainPrivatePKCS8PEM","_getKeyFromPublicPKCS8Hex","parsePublicRawRSAKeyHex","parsePublicPKCS8Hex","xy","dp","dq","co","qi","setPrivateEx","setPrivate","crv","X509","getPublicKeyFromCertHex","getPublicKeyFromCertPEM","generateKeypair","generate","prvKeyObj","pubKeyObj","getPEM","seq","octstr","bitstr","SubjectPublicKeyInfo","null","getKeyFromCSRPEM","getKeyFromCSRHex","parseCSRHex","p8pubkeyhex","getJWKFromKey","getPosArrayOfChildrenFromHex","getHexValueArrayOfChildrenFromHex","readPrivateKeyFromPEMString","readPKCS5PubKeyHex","readCertHex","getPublicKeyHex","_RE_HEXDECONLY","foffset","aExtInfo","getVersion","getSerialNumberHex","getSignatureAlgorithmField","getIssuerHex","getIssuerString","hex2dn","getSubjectHex","getSubjectString","getNotBefore","getNotAfter","getPublicKeyIdx","getPublicKeyContentIdx","getSignatureAlgorithmName","getSignatureValueHex","verifySignature","parseExt","critical","vidx","getExtInfo","getExtBasicConstraints","cA","pathLen","getExtKeyUsageBin","getExtKeyUsageString","KEYUSAGE_NAME","getExtSubjectKeyIdentifier","getExtAuthorityKeyIdentifier","getExtExtKeyUsageName","getExtSubjectAltName","getExtSubjectAltName2","hextoip","getExtCRLDistributionPointsURI","getExtAIAInfo","ocsp","caissuer","getExtCertificatePolicies","cps","unotice","readCertPEM","getInfo","hextoposhex","doPrivate","signPSS","pss_mgf1_str","_rsasign_getAlgNameAndHashFromHexDisgestInfo","verifyPSS","SALT_LEN_HLEN","SALT_LEN_MAX","SALT_LEN_RECOVER","hex2rdn","hex2attrTypeValue","oid2atype","getPublicKeyInfoPropOfCertPEM","jws","JWS","isSafeJSONString","parseJWS","parsedJWS","sigvalH","headB64U","payloadB64U","sigvalB64U","si","sigvalBI","headS","payloadS","readSafeJSONString","jwsalg2sigalg","hASN1Sig","headerObj","payloadObj","headerPP","payloadPP","sigHex","verifyJWT","inArray","includedArray","IntDate","getNow","verifyAt","gracePeriod","nbf","jti","HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","PS256","PS384","PS512","none","getEncodedSignatureValueFromJWS","getJWKthumbprint","getZulu","zulutosec","intDate2UTCString","intDate2Zulu","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","minutes","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","dayOfMonthOrdinalParse","ordinal","week","dow","doy","af","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","hour","minute","postformat","arDz","arKw","symbolMap","preparse","arLy","arMa","numberMap","arSa","arTn","ar","suffixes","az","word","forms","plural","standalone","isFormat","day","relativeTimeWithPlural","be","ww","lastDigit","last2Digits","bm","meridiemHour","bnBd","bn","monthsShortRegex","monthsParseExact","bo","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","relativeTimeWithMutation","br","bs","ll","lll","llll","cs","affix","cv","cy","processRelativeTime","deAt","deCh","dv","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","month","_monthsNominativeEl","calendarEl","mom","_calendarEl","Function","isFunction","enAu","enCa","enGb","enIe","enIl","enIn","enNz","enSg","eo","monthsShortDot","esDo","invalidDate","esMx","esUs","es","et","eu","numbersPast","numbersFuture","verbalNumber","fi","fil","frCa","frCh","fr","monthsShortWithDots","monthsShortWithoutDots","fy","ga","gd","gl","gomDeva","gomLatn","gu","hi","hr","weekEndings","hu","hyAm","is","itCh","eras","since","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","ja","jv","$0","$1","$2","ka","kk","km","kn","isUpper","ko","ku","ky","eifelerRegelAppliesToNumber","lb","lo","units","translateSingular","special","lt","relativeTimeWithSingular","lv","translator","correctGrammaticalCase","wordKey","me","mi","mk","ml","mn","relativeTimeMr","mr","msMy","ms","mt","my","nb","nlBe","nl","nn","ocLnc","paIn","monthsNominative","monthsSubjective","pl","ptBr","ro","ru","days","sd","se","sk","sl","sq","srCyrl","sr","sv","sw","ta","te","tet","tg","th","tk","tlPh","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun","tlh","tr","tzl","tzmLatn","tzm","hm","ugCn","nominative","accusative","genitive","processHoursFunction","uk","ur","uzLatn","uz","vi","xPseudo","yo","zhCn","zhHk","zhMo","zhTw","hookCallback","getOwnPropertyNames","hasOwnProp","arrLen","locale","strict","createLocalOrUTC","utc","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","_isValid","getParsingFlags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createUTC","NaN","fun","momentProperties","hooks","updateInProgress","to","momentPropertiesLen","isUndefined","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","copyConfig","updateOffset","Moment","suppressDeprecationWarnings","firstTime","deprecationHandler","arg","argLen","stack","deprecations","parentConfig","childConfig","targetLength","forceSign","absNumber","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","padded","func","zeroFill","localeData","expandFormat","removeFormattingTokens","makeFormatFunction","replaceLongDateFormatTokens","aliases","lowerCase","inputObject","normalizedInput","normalizeUnits","priorities","priority","year","argumentForCoercion","coercedNumber","isFinite","absFloor","keepTime","set$1","isLeapYear","toInt","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","strictRegex","isStrict","regexEscape","matched","p3","p4","unescapeFormat","tokens","tokenLen","isNumber","addParseToken","_w","modMonth","addFormatToken","addUnitAlias","addUnitPriority","addRegexToken","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","dayOfMonth","setMonth","shortPieces","longPieces","mixedPieces","cmpLenRev","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","parseTwoDigitYear","getSetYear","makeGetSet","setFullYear","setUTCFullYear","fwd","createUTCDate","getUTCDay","weekday","resYear","resDayOfYear","dayOfYear","firstWeekOffset","daysInYear","Pr","resWeek","weekOffset","weeksInYear","gt","weekOffsetNext","addWeekParseToken","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","lowercase","_meridiemParse","hFormat","seconds","matchMeridiem","kInput","_isPm","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","locales","localeFamilies","minl","oldLocale","isLocaleNameSane","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","deprecateSimple","_config","parentLocale","loadLocale","Locale","mergeConfigs","names","normalizeLocale","commonPrefix","chooseLocale","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","allowTime","dateFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","yearStr","parsedArray","preprocessRFC2822","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","extractFromRFC2822Strings","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","calculateOffset","setUTCMinutes","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","weekOfYear","createLocal","_week","gg","He","bi","dayOfYearFromWeeks","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","createDate","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","getParseRegexForToken","Wt","addTimeToArrayFromToken","isPm","meridiemFixWrap","erasConvertYear","configFromArray","checkOverflow","configFromRFC2822","configFromISO","createInvalid","isMoment","isDate","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","ye","createFromInputFallback","configFromString","normalizeObjectUnits","millisecond","configFromObject","configFromInput","isUTC","isObjectEmpty","prepareConfig","createFromConfig","deprecate","prototypeMin","other","prototypeMax","moments","ordering","years","quarters","quarter","weeks","isoWeek","milliseconds","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_bubble","Duration","utcOffset","offsetFromString","chunkOffset","matcher","model","setTime","local","aspNetRegex","isoRegex","ret","diffRes","isDuration","absRound","parseIso","base","cloneWithOffset","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","tmp","addSubtract","createDuration","isAdding","invalid","createAdder","isString","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","dividend","erasAbbrRegex","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","getter","weeksTarget","setWeekAll","dayOfYearData","matchEraAbbr","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","isoWeekYear","addWeekYearFormatToken","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","formats","xt","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","utcStartOfDate","localStartOfDate","isoWeekday","mod$1","inputString","isUtc","formatMoment","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","prioritizedLen","toArray","toObject","toDate","keepOffset","inspect","prefix","isLocal","suffix","Symbol","for","toJSON","unix","creationData","eraName","eraNarrow","eraAbbr","eraYear","dir","getSetWeekYearHelper","getSetMonth","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","getDateOffset","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","field","setter","get$1","out","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","preParsePostFormat","_relativeTime","pastFuture","_eras","computeErasParse","_monthsShort","_monthsParseExact","handleStrictParse","computeMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","shiftWeekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","handleStrictParse$1","_fullWeekdaysParse","computeWeekdaysParse","langData","mathAbs","as","asMilliseconds","makeAs","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","abs$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","addSubtract$1","daysToMonths","monthsToDays","monthsFromDays","absCeil","argWithSuffix","argThresholds","withSuffix","posNegDuration","substituteTimeAgo","relativeTime$1","toISOString$1","toIsoString","setHookCallback","pickBy","listMonthsImpl","listWeekdaysImpl","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","_c0","_c1","a0","rf","ctx_r0","isDisabled","heading","_c2","_c3","AccordionConfig","closeOthers","isAnimated","AccordionComponent","groups","closeOtherPanels","openGroup","isOpen","addGroup","removeGroup","ɵcmp","hostAttrs","hostVars","hostBindings","inputs","ngContentSelectors","vars","AccordionPanelComponent","accordion","panelClass","isOpenChange","_isOpen","isBs3","toggleOpen","outputs","consts","AccordionPanelComponent_button_4_Template","directives","_mapUnits","_unit","getUTCMilliseconds","date1","date2","isSameYear","isSameMonth","matchTimestamp","_token","defaultTimeUnit","daysInMonth$1","getNum","setUTCMonth","setUTCDate","_date","cloneDate","setMinutes","setSeconds","setUTCMilliseconds","setMilliseconds","getLocaleDayOfWeek","setLocaleDayOfWeek","setDayOfWeek","getDayOfWeek","setISODayOfWeek","getDayOfYear","Qt","defaultLongDateFormat","confKey","handleMonthStrictParse","_shortMonths","handleWeekStrictParse","formatLongDate","getWeekYear","getISOWeekYear","getUTCOffset","childProp","parentProp","getWeek","getISOWeek","initWeek","_getWeekYearFormatCb","_getISOWeekYearFormatCb","initWeekYear","getYear","initYear","initTimezone","initTimestamp","SECOND","initSecond","getQuarter","initQuarter","addOffsetFormatToken","chunk","_min","initOffset","initMonth","MINUTE","initMinute","initMillisecond","kFormat","_mm","_ss","initHour","initDayOfYear","getISODayOfWeek","initDayOfWeek","initDayOfMonth","setDefaultLocale","orderingHash","mem","order","durationKeys","dur","bubble","localeKey","_units","markInvalid","_format","isDateValid","formatArr","Er","Vn","inputLength","Ke","_hour","_arr","_input","daysDisabled","_other","offsetDiff","parseDate","convertDuration","_num","_weekDay","months$1","monthsShort$1","ɵ0$3","ɵ1$1","ɵ2","thBeLocale","COLLAPSE_ANIMATION_TIMING","expandAnimation","visibility","collapseAnimation","CollapseDirective","_el","_builder","collapsed","collapses","expanded","expands","isExpanded","collapseNewValue","isCollapsed","isCollapse","isCollapsing","_display","_stylesLoaded","_COLLAPSE_ACTION_NAME","_EXPAND_ACTION_NAME","_factoryCollapseAnimation","_factoryExpandAnimation","toggle","show","_isAnimationDone","ngAfterViewChecked","animationRun","factoryAnimation","ɵdir","exportAs","viewRef","componentRef","_viewContainerRef","_elementRef","_injector","_componentFactoryResolver","_ngZone","_applicationRef","_posService","onBeforeShow","onShown","onBeforeHide","onHidden","_providers","_isHiding","containerDefaultSelector","_listenOpts","_globalListener","isShown","_componentRef","attach","compType","_componentFactory","resolveComponentFactory","container","position","attachment","provider","_subscribePositioning","_innerComponent","_contentRef","_getContentRef","initialState","injector","Injector","attachView","hostView","ElementRef","selectedElement","changeDetectorRef","markForCheck","_registerOutsideClick","deletePositionElement","componentEl","_removeGlobalListener","dispose","_unsubscribePositioning","_unregisterListenersFn","listenOpts","triggers","outsideClick","outsideEsc","registerHide","listenToTriggersV2","attachInline","vRef","_inlineViewRef","registerOutsideClick","targets","registerEscClick","getInnerComponent","_zoneSubscription","appendToBody","onStable","calcPosition","ContentRef","TemplateRef","_viewRef","rootNodes","contentCmptFactory","modalContentInjector","ComponentLoaderFactory","createLoader","ComponentLoader","ComponentFactoryResolver","INJECTOR","PositioningService","ApplicationRef","_initialState","actionsDispatcher$","reducer","actionInQueue$","observeOn","queueScheduler","scan","_dispatcher","_reducer","state$","select","pathOrMapFn","mapped$","operator","store","MiniStore","dispatch","_r19","ctx_r18","changeMinutes","minuteStep","ctx_r1","canIncrementMinutes","isEditable","ctx_r20","changeSeconds","secondsStep","canIncrementSeconds","_r23","ctx_r22","prevDef","wheelSign","ctx_r25","updateMinutes","invalidMinutes","minutesPlaceholder","readonlyInput","labelMinutes","_r28","ctx_r27","ctx_r29","ctx_r30","ctx_r31","updateSeconds","invalidSeconds","secondsPlaceholder","labelSeconds","_r33","ctx_r32","toggleMeridian","canToggleMeridian","meridian","_r35","ctx_r34","canDecrementMinutes","_r37","ctx_r36","ctx_r15","canDecrementSeconds","TimepickerActions","writeValue","WRITE_VALUE","changeHours","CHANGE_HOURS","CHANGE_MINUTES","CHANGE_SECONDS","SET_TIME_UNIT","updateControls","UPDATE_CONTROLS","isValidDate","controls","dex","toNumber","changeTime","parseHours","parseMinutes","parseSeconds","newValue","_value","isHourInputValid","isMinuteInputValid","isSecondInputValid","arrowkeys","hourStep","showSpinners","showMeridian","showSeconds","meridians","TimepickerConfig","allowEmptyTime","showMinutes","hoursPlaceholder","ariaLabelHours","ariaLabelMinutes","ariaLabelSeconds","canIncrementHours","canDecrementHours","canChangeValue","canChangeHours","_newTime","isValidLimit","canChangeMinutes","canChangeSeconds","_newControlsState","_newHour","hoursPerDay","_newMinutes","_newSeconds","hoursPerDayHalf","timepickerControls","_newState","TimepickerStore","timepickerReducer","MiniState","TIMEPICKER_CONTROL_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","useExisting","forwardRef","TimepickerComponent","_cd","_store","_timepickerActions","meridianChange","invalidHours","labelHours","onChange","onTouched","timepickerSub","_renderTime","getControlsValue","controlsState","isTimepickerInputValid","isInputValid","isOneOfDatesIsEmpty","isSpinnersVisible","resetValidation","deltaY","updateHours","_updateTime","isInputLimitValid","isOneOfDatesEmpty","registerOnChange","registerOnTouched","setDisabledState","_hours","padNumber","features","TimepickerComponent_td_6_Template","TimepickerComponent_td_7_Template","TimepickerComponent_td_8_Template","TimepickerComponent_td_9_Template","TimepickerComponent_td_10_Template","TimepickerComponent_td_11_Template","TimepickerComponent_td_15_Template","TimepickerComponent_td_16_Template","TimepickerComponent_td_17_Template","TimepickerComponent_td_18_Template","TimepickerComponent_td_19_Template","TimepickerComponent_td_20_Template","TimepickerComponent_td_25_Template","TimepickerComponent_td_26_Template","TimepickerComponent_td_27_Template","TimepickerComponent_td_28_Template","TimepickerComponent_td_29_Template","TimepickerComponent_td_30_Template","changeDetection","TimepickerModule","TooltipConfig","adaptivePosition","placement","TooltipContainerComponent","_bsVersions","getBsVer","classMap","in","fade","isBs5","PlacementForBs5","containerClass","TooltipDirective","cis","_positionService","tooltipId","tooltipChange","tooltipAnimation","tooltipFadeDuration","tooltipStateChanged","_tooltip","htmlContent","warnOnce","tooltip","_placement","_enable","_appendToBody","_popupClass","_tooltipContext","_tooltipPopupDelay","_tooltipTrigger","setAriaDescribedBy","_ariaDescribedby","setOptions","modifiers","flip","enabled","preventOverflow","boundariesElement","_delayTimeoutId","showTooltip","cancelDelayedTooltipShowing","_tooltipCancelShowFn","_delaySubscription","parseTriggers","__decorate","OnChange","__metadata","TooltipModule","_r11","navigateTo","ctx_r12","setViewMode","dayHoverHandler","weekHoverHandler","daySelectHandler","calendar_r9","$implicit","multipleCalendars","options$","BsDatepickerContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template","isRangePicker","BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template","BsDatepickerContainerComponent_div_0_ng_container_4_div_4_Template","daysCalendar$","withTimepicker","_r22","ctx_r21","ctx_r23","monthHoverHandler","monthSelectHandler","calendar_r20","ctx_r19","BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template","monthsCalendar","_r29","ctx_r28","yearHoverHandler","yearSelectHandler","calendar_r27","BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template","yearsCalendar","_r36","ctx_r35","setToday","ctx_r33","todayPos","todayBtnLbl","_r38","ctx_r37","clearDate","clearPos","clearBtnLbl","BsDatepickerContainerComponent_div_0_div_8_div_1_Template","BsDatepickerContainerComponent_div_0_div_8_div_2_Template","showTodayBtn","showClearBtn","_r40","ctx_r39","setRangeOnCalendar","chosenRange","customRanges","customRangeBtnLbl","_r42","ctx_r41","positionServiceEnable","BsDatepickerContainerComponent_div_0_ng_container_4_Template","BsDatepickerContainerComponent_div_0_div_5_Template","BsDatepickerContainerComponent_div_0_div_6_Template","BsDatepickerContainerComponent_div_0_div_7_Template","BsDatepickerContainerComponent_div_0_div_8_Template","BsDatepickerContainerComponent_div_0_div_9_Template","animationState","viewMode","BsDaterangepickerContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template","BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template","BsDaterangepickerContainerComponent_div_0_ng_container_4_div_4_Template","BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template","BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template","BsDaterangepickerContainerComponent_div_0_div_8_div_1_Template","BsDaterangepickerContainerComponent_div_0_div_8_div_2_Template","BsDaterangepickerContainerComponent_div_0_ng_container_4_Template","BsDaterangepickerContainerComponent_div_0_div_5_Template","BsDaterangepickerContainerComponent_div_0_div_6_Template","BsDaterangepickerContainerComponent_div_0_div_7_Template","BsDaterangepickerContainerComponent_div_0_div_8_Template","BsDaterangepickerContainerComponent_div_0_div_9_Template","_r9","datePicker","move","_r13","_r15","labelz_r16","index_r18","weekNumbers","a1","a2","a3","a4","_c4","_r27","dtz_r23","customClass","isBs4","selected","isActive","secondary","current","DayPickerComponent_table_0_ng_template_17_tr_0_td_2_button_1_Template","uid","onlyCurrentMonth","DayPickerComponent_table_0_ng_template_17_tr_0_td_1_Template","DayPickerComponent_table_0_ng_template_17_tr_0_td_2_Template","rowz_r17","showWeeks","DayPickerComponent_table_0_ng_template_17_tr_0_Template","_c5","_r31","DayPickerComponent_table_0_button_4_Template","DayPickerComponent_table_0_button_5_Template","toggleMode","DayPickerComponent_table_0_button_11_Template","DayPickerComponent_table_0_button_12_Template","DayPickerComponent_table_0_th_14_Template","DayPickerComponent_table_0_th_15_Template","DayPickerComponent_table_0_ng_template_17_Template","uniqueId","datepickerMode","maxMode","labels","rows","_c6","_c7","_r6","dtz_r4","restoredCtx","MonthPickerComponent_table_0_tr_14_td_1_Template","rowz_r2","_r8","MonthPickerComponent_table_0_tr_14_Template","monthColLimit","YearPickerComponent_table_0_tr_14_td_1_Template","YearPickerComponent_table_0_tr_14_Template","yearColLimit","_c8","_c9","_r3","range_r1","selectFromRanges","selectedRange","_c10","_r2","view","monthTitle","i_r4","week_r5","selectWeek","i_r6","_r17","BsDaysCalendarViewComponent_tr_8_td_1_span_1_Template","BsDaysCalendarViewComponent_tr_8_td_1_span_2_Template","isWeekHovered","isiOS","day_r23","selectDay","hoverDay","tooltipText","ctx_r38","ctx_r40","_r45","ctx_r43","BsDaysCalendarViewComponent_tr_8_td_2_span_1_Template","BsDaysCalendarViewComponent_tr_8_td_2_span_2_Template","BsDaysCalendarViewComponent_tr_8_td_2_span_3_Template","isShowTooltip","BsDaysCalendarViewComponent_tr_8_td_1_Template","BsDaysCalendarViewComponent_tr_8_td_2_Template","showWeekNumbers","_r5","month_r3","viewMonth","hoverMonth","isHovered","isSelected","BsMonthCalendarViewComponent_tr_4_td_1_Template","row_r1","year_r3","viewYear","hoverYear","BsYearsCalendarViewComponent_tr_4_td_1_Template","BsDatepickerConfig","useUtc","startView","returnFocusToInput","displayMonths","dateInputFormat","rangeSeparator","rangeInputFormat","yearTitle","dayLabel","monthLabel","yearLabel","showTodayButton","showClearButton","todayPosition","clearPosition","todayButtonLabel","clearButtonLabel","customRangeButtonLabel","DATEPICKER_ANIMATION_TIMING","datepickerAnimation","_daysCalendarSub","Subscription","selectedTimeSub","minDate","_effects","setMinDate","maxDate","setMaxDate","setDaysDisabled","datesDisabled","setDatesDisabled","datesEnabled","setDatesEnabled","setDisabled","dateCustomClasses","setDateCustomClasses","dateTooltipTexts","setDateTooltipTexts","_daysCalendar$","timeSelectHandler","_stopPropagation","BsDatepickerActions","calculate","CALCULATE","FORMAT","FLAG","SELECT","selectTime","SELECT_TIME","changeViewMode","CHANGE_VIEWMODE","NAVIGATE_TO","navigateStep","NAVIGATE_OFFSET","SET_OPTIONS","selectRange","SELECT_RANGE","HOVER","cell","SET_MIN_DATE","SET_MAX_DATE","SET_DAYSDISABLED","SET_DATESDISABLED","SET_DATESENABLED","SET_IS_DISABLED","SET_DATE_CUSTOM_CLASSES","SET_DATE_TOOLTIP_TEXTS","setLocale","SET_LOCALE","BsLocaleService","_defaultLocale","_localeChange","localeChange","currentLocale","BsDatepickerEffects","_actions","_localeService","_subs","_bsDatepickerStore","setRangeValue","_options","setBindings","selectedTime","times","flaggedMonths","flaggedMonthsCalendar","yearsCalendarFlagged","combineLatest","latest","setEventHandlers","_cell","isOtherMonth","registerDatepickerSideEffects","monthsModel","monthModel","formattedMonths","selectedDate","yearsCalendarModel","hoveredDate","_initialView","initialDatepickerState","monthViewOptions","minBound","maxBound","dateDisabled","enabledDate","calendarIndex","ranges","compareDateWithMaxDateHelper","setCurrentTimeHelper","prevValue","initialDate","shiftDate","startingDate","firstDay","getFirstDayOfMonth","isFirstDayOfWeek","startingDayOffset","_startingDayOffset","calculateDateOffset","getStartingDayOfCalendar","daysMatrix","createMatrix","minMode","viewDate","formatOptions","hideRightArrow","hideLeftArrow","disableRightArrow","disableLeftArrow","initialYearShift","yearsPerCalendar","shift$1","previousInitialDate","height$1","calculateInitialDate","yearsMatrix","width$1","formatYearRangeTitle","sourceDate","displayOneMonthRange","isDisplayOneMonth","showPreviousMonth","monthIndex","calcDaysCalendar","preventChangeToNextMonth","formatMonthsCalendar","getFormatOptions","formatYearsCalendar","getYearsCalendarInitialDate","calculateReducer","daysCalendar","getWeekNumbers","getShiftedWeekdays","weekIndex","dayIndex","formatDaysCalendar","formatReducer","formattedMonth","isSameDay","isSelectionStart","isSelectionEnd","isInRange","isDateInRange","isDisabledDay","isDisabledDate","isEnabledDate","isToday","customClasses","dcc","classes","currentValue","tt","newDay","isMonthDisabled","flagDaysCalendar","monthCalendar","rowIndex","hoveredMonth","newMonth","isYearDisabled","flagMonthsCalendar","yearIndex","hoveredYear","flagYearsCalendar","flagReducer","middleDate","shiftViewDate","navigateOffsetReducer","setFullDate","canSwitchMode","_time","copyTime","getViewDate","dte","BsDatepickerStore","bsDatepickerReducer","BsDatepickerContainerComponent","BsDatepickerAbstractComponent","valueChange","allowedPositions","event$","isTopPosition","isOtherMonthsActive","selectFromOtherMonth","startTimepicker","enable","viewQuery","_t","first","BsDatepickerContainerComponent_div_0_Template","BsDaysCalendarViewComponent","ɵngcc3","BsMonthCalendarViewComponent","BsYearsCalendarViewComponent","BsCustomDatesViewComponent","pipes","BsDatepickerDirective","isDestroy$","bsValueChange","_dateInputFormat$","_datepicker","isOpen$","bsValue","_bsValue","bsConfig","initCurrentTime","setCurrentTimeOnDateSelect","dateInputFormat$","changes","_datepickerRef","focus","checkBsValue","ɵngcc4","BsDaterangepickerContainerComponent","_rangeStack","dateRange","endTimepicker","rangesProcessing","maxDateRange","setMaxDateRangeOnCalendar","currentSelection","maxDateValueInMilliseconds","maxDateRangeInMilliseconds","BsDaterangepickerContainerComponent_div_0_Template","BS_DATEPICKER_VALUE_ACCESSOR","BsDatepickerInputDirective","BS_DATEPICKER_VALIDATOR","NG_VALIDATORS","_picker","_elRef","_onChange","_onTouched","_validatorChange","setBsValue","_setInputValue","onKeydownEvent","keyCode","bsDate","registerOnValidatorChange","_localeKey","utcAsLocal","onBlur","blur","BsDaterangepickerConfig","ɵBsDaterangepickerConfig_BaseFactory","BsDaterangepickerDirective","_rangeInputFormat$","setDateRangesCurrentTimeOnDateSelect","rangeInputFormat$","range","checkRangesWithMaxDate","BS_DATERANGEPICKER_VALUE_ACCESSOR","BsDaterangepickerInputDirective","BS_DATERANGEPICKER_VALIDATOR","_isFirstDateValid","_isSecondDateValid","trimmedSeparator","_val","DatePickerInnerComponent","selectionDone","activeDateChange","stepDay","stepMonth","stepYear","modes","dateFormatter","DateFormatter","activeDate","_activeDate","initDate","refreshView","checkIfActiveDateGotUpdated","firstChange","setCompareHandler","handler","compareHandlerDay","compareHandlerMonth","compareHandlerYear","compare","setRefreshViewHandler","refreshViewHandlerDay","refreshViewHandlerMonth","refreshViewHandlerYear","dateFilter","dateObject","activeDateId","createDateObject","fixTimeZone","getCustomClassForDate","arrays","isManual","expectedStep","_direction","customClassObject","clazz","compareDateDisabled","date1Disabled","isDateDisabled","disabledDate","dayDisabled","startingDay","yearRange","formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","shortcutPropagation","DatePickerInnerComponent_div_0_Template","DatepickerConfig","DATEPICKER_CONTROL_VALUE_ACCESSOR","DatePickerComponent","_now","configureOptions","onUpdate","onSelectionDone","onActiveDateChange","_datePicker","DayPickerComponent","MonthPickerComponent","YearPickerComponent","self","firstDayOfMonth","difference","numDisplayedFromPreviousMonth","firstDate","getDates","_dateObject","full","thursdayIndex","numWeeks","getISO8601WeekNumber","d2","startDate","checkDate","DayPickerComponent_table_0_Template","MonthPickerComponent_table_0_Template","getStartingYear","YearPickerComponent_table_0_Template","BsCalendarLayoutComponent","BsCalendarLayoutComponent_bs_current_date_0_Template","BsCalendarLayoutComponent_bs_timepicker_5_Template","BsCurrentDateViewComponent","BsTimepickerViewComponent","onSelect","customRangeLabel","BsCustomDatesViewComponent_button_1_Template","BsDatepickerDayDecoratorComponent","customTodayClass","isOtherMonthHovered","attrs","BsNavigationDirection","UP","DOWN","BsDatepickerNavigationViewComponent","onNavigate","onViewMode","navTo","down","BsDatepickerNavigationViewComponent_ng_container_3_Template","onHover","onHoverWeek","platform","maxTouchPoints","selectWeekDateRange","selectedDay","lastDayOfRange","hasActiveDays","dateData","BsDaysCalendarViewComponent_th_5_Template","BsDaysCalendarViewComponent_th_6_Template","BsDaysCalendarViewComponent_tr_8_Template","ɵngcc5","BsMonthCalendarViewComponent_tr_4_Template","ampm","BsYearsCalendarViewComponent_tr_4_Template","DatepickerModule","dropdown","BsDropdownConfig","autoClose","insideClick","stopOnClickPropagation","BsDropdownState","isDisabledChange","toggleClick","counts","dropdownMenu","resolveDropdownMenu","dropdownAnimation","BsDropdownContainerComponent","_factoryDropDownAnimation","_subscription","BsDropdownDirective","_cis","dropup","_isInlineOpen","_isDisabled","_subscriptions","_isInited","_dropdown","_showInline","_inlinedMenu","addBs4Polyfills","playAnimation","_dropup","removeShowClass","removeDropupStyles","navigationClick","ref","firstActive","ownerDocument","activeElement","allRef","addShowClass","checkRightAlignment","addDropupStyles","isRightAligned","BsDropdownMenuDirective","_viewContainer","_templateRef","BsDropdownToggleDirective","_changeDetectorRef","rn","_documentClickListener","button","_escKeyUpListener","onClick","MapPlacementInToRL","bottom","right","auto","css","isIE11","MSInputMethodContext","documentMode","isIE10","noOffsetParent","isIE","sibling","offsetParent","nextElementSibling","nodeName","getStyleComputedProperty","getOffsetParent","element1","element2","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","isOffsetContainer","element1root","findCommonOffsetParent","axis","sideA","sideB","html","computedStyle","_html","_computedStyle","getSize","upperSide","scrollingElement","rect","getBoundingClientRect","scrollTop","getScroll","scrollLeft","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","overflowX","overflowY","getScrollParent","getParentNode","fixedPosition","_e","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","modifier","includeScroll","isFixed","padding","boundaries","getFixedPositionOffsetParent","excludeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","innerHeight","Xe","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","Xt","refRect","getBoundaries","rects","sortedAreas","area","getArea","filteredAreas","allowedPosition","computedPlacement","variation","marginBottom","marginRight","hostOffsets","targetRect","getOuterSizes","targetOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getOppositePlacement","modifierName","availablePositions","checkPosition","isNumeric","arrowElement","isVertical","sideCapitalized","altSide","opSide","arrowElementSize","placementVariation","targetMarginSide","targetBorderSide","center","targetBorderRadius","borderRadius","targetSideArrowOffset","sideValue","arrow","isModifierEnabled","getTargetOffsets","computeAutoPlacement","flipOrder","_g","_h","_j","_k","_m","_o","_p","_q","_r","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","getOppositeVariation","transformProp","targetStyles","check","primary","basePlacement","shiftVariation","shiftOffsets","positionService","targetElement","getReferenceOffsets","positionElements","chainOfModifiers","hostElPosition","placementAuto","positionFixed","initData","modifiedData","getOffsets","dataPlacement","checkPopoverMargin","checkMargins","updateContainerClass","ngZone","update$$","triggerEvent$","merge","fromEvent","passive","animationFrameScheduler","positionElement","_getHtmlElement","addPositionElement","elRef","DEFAULT_ALIASES","hover","trimmedTriggers","parsedTriggers","triggerPair","Trigger","manualTriggers","_registerHide","useToggle","showFn","_hide","unsubscribeFn","win","guessedVersion","spanEl","innerText","head","overflowStyle","__theme","_guessBsVersion","propertyKey","_messagesHash","_hideMsg","isDevMode","Qn","Ir","gn","wr","Dt","ve","ee","Ng2DropdownButton","onMenuToggled","showCaret","toggleMenu","Qe","ACTIONS","items","onBackspace","onSwitchPrev","onSwitchNext","selectedItem","click","onItemClicked","onItemSelected","onItemDestroyed","_selectedItem","unselect","DropdownStateService","menuState","isVisible","dropdownState","Ng2DropdownState","Ng2MenuItem","preventClose","Ng2DropdownMenu","focusFirstElement","zIndex","arrowHandler","handleKeypress","dc","wd","arrowKeysHandler","updatePosition","updateOnChange","getMenuElement","calcPositionOffset","supportPageOffset","pageXOffset","isCSS1Compat","compatMode","pageYOffset","applyOffset","marginFromBottom","marginFromRight","windowScrollWidth","scrollX","scrollY","ln","opacity","Ng2Dropdown","dynamicUpdate","onShow","onHide","newSelectedItem","scrollListener","Ye","Ng2DropdownModule","TagComponent_div_1_ng_template_1_Template","editing","disableEditMode","onBlurred","TagComponent_div_2_delete_icon_3_Template","getDisplayValue","isDeleteIconVisible","rippleState","item_r1","displayBy","tagInput","inputForm","TagInputDropdown_ng2_menu_item_2_2_ng_template_0_Template","index_r2","last_r3","templates","TagInputDropdown_ng2_menu_item_2_span_1_Template","TagInputDropdown_ng2_menu_item_2_2_Template","item_r3","selectItem","onRemoveRequested","handleKeydown","updateEditedTag","onTagBlurred","dragZone","onDragStarted","onTagDropped","onDragOver","dragProvider","onDragEnd","editable","isTagValid","animationMetadata","ripple","removable","identifyBy","hasCustomTemplate","error_r17","TagInputComponent_div_6_p_1_Template","theme","HighlightPipe","ɵpipe","pure","KEYDOWN","KEY_PRESS_ACTIONS","NEXT","PREV","DragProvider","dragging","dropping","setDraggedItem","dataTransfer","setData","getDraggedItem","getData","setSender","sender","setReceiver","receiver","indexDragged","indexDropped","onAddingRequested","separatorKeys","separatorKeyCodes","maxItems","placeholder","secondaryPlaceholder","validators","asyncValidators","onlyFromAutocomplete","errorMessages","onTextChangeDebounce","inputId","inputClass","clearOnBlur","hideForm","addOnBlur","addOnPaste","pasteSplitPattern","blinkIfDupe","allowDupes","modelAsStrings","trimTags","tabIndex","onRemoving","onAdding","animationDuration","enter","leave","showDropdownIfEmpty","minimumTextLength","limitItemsTo","keepOpen","matchingFn","targetValue","OptionsProvider","TagInputAccessor","_items","_onChangeCallback","_onTouchedCallback","getItemValue","fromDropdown","getItemDisplay","getItemsWithout","Input","listenerType","condition","TagInputForm","onSubmit","onFocus","onKeyup","onKeydown","inputTextChange","tabindex","FormControl","inputText","setValidators","setAsyncValidators","form","FormGroup","isInputFocused","getErrorMessages","hasError","hasErrors","dirty","valid","getElementPosition","onKeyDown","submit","onKeyUp","Output","ViewChild","TagRipple","vendor","isChrome","TagComponent","cdRef","onTagEdited","readonly","moving","keydown","blink","toggleEditMode","activateEditMode","isRippleVisible","hasRipple","getContentEditableText","storeNewValue","setContentEditableText","getContentEditable","exists","hasId","canAddTag","TagComponent_div_1_Template","TagComponent_div_2_Template","TagComponent_tag_ripple_3_Template","DeleteIconComponent","HostBinding","HostListener","animations","TagInputDropdown","TagInputComponent","_autocompleteItems","maxItemsReached","getFormValue","hasMinimumText","calculatePosition","getMatchingItems","hasItems","shouldShow","shouldHide","autocompleteObservable","getItemsFromObservable","setItems","Hr","requestAdding","createTagModel","resetItems","setLoadingState","populateItems","autocompleteItems","KEEP_OPEN","onTextChange","debounceTime","onWindowBlur","formValue","dupesAllowed","hasValue","tags","contentQueries","dirIndex","TagInputDropdown_ng2_menu_item_2_Template","ContentChildren","CUSTOM_ACCESSOR","onAdd","onPaste","onValidationError","inputTextValue","appendTag","createTag","fromAutocomplete","dupe","findDupe","assertions","onPasteCallback","getText","clipboardData","requests","setInputValue","resetInput","tabindexAttr","setUpKeypressListeners","setupSeparatorKeysListener","setUpInputKeydownListeners","observers","setUpTextChangeSubscriber","setUpOnBlurSubscriber","setUpOnPasteListener","statusChanges$","statusChanges","isProgressBarVisible$","hasReachedMaxItems","setAnimationMetadata","subscribeFn","giveupFocus","addItem","isReadonly","selectedTag","fireEvents","shiftKey","which","moveToTag","isFirstTag","isLastTag","onFormSubmit","emitEvent","getControl","applyFocus","displayAutocomplete","menuTemplate","isDropping","isReceiver","changedElement","trackBy","isLast","isFirst","getTagIndex","getTagAtIndex","appendItem","statusUpdate$","statusUpdate","hasKeyCode","hasKey","useSeparatorKeys","valueChanges","isFromAutocomplete","TagInputComponent_tag_2_Template","TagInputComponent_div_4_Template","TagInputComponent_div_6_Template","ContentChild","descendants","ViewChildren","optionsProvider","COMPOSITION_BUFFER_MODE","scrollWindow","defaultElement","fromRoot","hasWindow","containerIsString","customRoot","findElement","VerticalProps","scrollHeight","offsetTop","HorizontalProps","vertical","propsMap","clientHeightKey","offsetHeightKey","scrollHeightKey","pageYOffsetKey","offsetTopKey","scrollTopKey","topKey","windowElement","isContainerWindow","resolver","isWindow","extractHeightPropKeys","getElementHeight","extractHeightForElement","scrolled","getElementPageYOffset","getDocumentElement","nativeElementHeight","totalToScroll","getElementOffsetTop","calculatePointsForWindow","calculatePointsForElement","docElem","distance","scrollingDown","remaining","containerBreakpoint","scrolledUntilNow","up","lastScrollPosition","lastTotalToScroll","triggered","updateScrollPosition","updateTotalToScroll","updateScroll","updateTriggeredFlag","scroll","isScrollingDown","isTriggeredScroll","scrollContainer","createResolverWithContainer","isElementWindow","createResolver","AxisResolver","horizontal","resolveContainerElement","scrollState","ScrollState","calculatePoints","upDistance","downDistance","obs","throttle","throttleTime","attachScrollEvent","positionStats","stats","scrollDown","fire","isScrollingDownwards","shouldFireScrollEvent","getScrollStats","toInfiniteScrollParams","alwaysCallback","isTriggeredCurrentTotal","shouldTriggerEvents","toInfiniteScrollAction","currentScrollPosition","InfiniteScrollDirective","scrolledUp","infiniteScrollDistance","infiniteScrollUpDistance","infiniteScrollThrottle","infiniteScrollDisabled","infiniteScrollContainer","immediateCheck","setup","containerChanged","inputPropChanged","disabledChanged","distanceChanged","shouldSetup","destroyScroller","hasWindowDefined","disposeScroller","createScroller","handleOnScroll","MapToOperator","MapToSubscriber","Subscriber","_next","div","elMatches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","child","cls","scrollingClassTimeout","isAlive","scrollingThreshold","EventElement","handlers","prototypeAccessors","unbind","this$1","unbindAll","EventManager","eventElements","evt","initCustomEvent","useScrollingClass","forceFireReachEvent","fields","contentHeight","containerHeight","reach","ke","addScrollingClass","removeScrollingClass","setScrollingClassInstantly","processScrollDiff$1","eventElement","once","onceHandler","env","isWebKit","supportsTouch","DocumentTouch","supportsIePointer","msMaxTouchPoints","roundedScrollTop","containerWidth","contentWidth","scrollWidth","scrollbarXRail","queryChildren","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","ie","thumbSize","minScrollbarLength","maxScrollbarLength","pageY","startingScrollTop","startingMousePageY","scrollBy","touches","updateGeometry","mouseMoveHandler","touchMode","mouseUpHandler","bindMoves","positionTop","positionLeft","pageX","bindMouseScrollHandler","isDefaultPrevented","defaultPrevented","tagName","contentDocument","shadowRoot","deltaX","metaKey","altKey","wheelPropagation","shouldPreventDefault","wheel","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","cursor","maxScrollTop","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","isLeft","isRight","ctrlKey","onwheel","mousewheelHandler","onmousewheel","touch","startOffset","speed","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","differenceX","differenceY","targetTouches","pointerType","buttons","MSPOINTER_TYPE_MOUSE","shouldHandle","getTouch","currentOffset","applyTouchMove","timeGap","magnitudeX","magnitudeY","swipeEasing","isInitialized","PerfectScrollbar","userSettings","originalScrollLeft","isNegativeScroll","railXStyle","borderRightWidth","railYStyle","paddingLeft","paddingRight","outerWidth","borderBottomWidth","handlerName","lastScrollTop","lastScrollLeft","onScroll","processScrollDiff","removePsClasses","MapShim","__entries__","class_1","getIndex","global$1","global","requestAnimationFrame$1","requestAnimationFrame","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","proxy","resolvePending","timeStamp","timeoutCallback","REFRESH_DELAY","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","disconnect","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","bbox","getSVGContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","getHTMLElementContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","getContentRect","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","method","indicatorY","interaction","indicatorX","PERFECT_SCROLLBAR_CONFIG","PerfectScrollbarEvents","PerfectScrollbarDirective","differs","elementRef","configDiff","ngDestroy","psScrollY","psScrollX","psScrollUp","psScrollDown","psScrollLeft","psScrollRight","psYReachEnd","psYReachStart","psXReachEnd","psXReachStart","PerfectScrollbarConfig","eventType","auditTime","ngDoCheck","isFirstChange","ps","geometry","Geometry","absolute","Position","scrollable","scrollTo","animateScrolling","scrollToX","scrollToY","scrollToTop","scrollToLeft","scrollToRight","scrollToBottom","scrollToElement","elementPos","scrollerPos","cancelAnimationFrame","scrollCount","oldTimestamp","performance","cosParameter","newTimestamp","PI","cos","PerfectScrollbarComponent","scrollPositionX","scrollPositionY","scrollDirectionX","scrollDirectionY","usePropagationX","usePropagationY","allowPropagationX","allowPropagationY","stateTimeout","stateUpdate","usePSClass","autoPropagation","scrollIndicators","directiveRef","checkPropagation","scrollDeltaY","clientX","clientY","mapTo","PerfectScrollbarComponent_div_3_Template","ssrDocument","childNodes","createElementNS","importNode","hostname","protocol","pushState","back","Image","screen","matchMedia","Dom7","els","tempParent","toCreate","innerHTML","uniqueArray","Class","Methods","hasClass","toggleClass","attr","getAttribute","attrName","removeAttr","dom7ElementDataStorage","elStyle","webkitTransform","webkitTransitionDuration","transitionDuration","on","targetSelector","capture","eventData","dom7EventData","parents","dom7LiveListeners","proxyListener","handleLiveEvent","dom7Listeners","handleEvent","off","dom7proxy","bubbles","cancelable","dataIndex","transitionEnd","dom","fireCallBack","includeMargins","outerHeight","box","clientTop","clientLeft","each","textContent","compareWith","previousSibling","eq","returnIndex","tempDiv","prepend","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","unique","foundElements","matchedItems","toAdd","methodName","deleteProps","object","nextTick","getTranslate","curTransform","transformMatrix","curStyle","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","param","urlToParse","paramsPart","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","Support","document$1","pointerEvents","passiveListener","supportsPassive","gestures","eventsListeners","f7proxy","eventHandler","useModulesParams","instanceParams","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","components","install","installModule","updateSize","swiper","$el","isHorizontal","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","slidesPerColumn","slidesPerColumnFill","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingTop","paddingBottom","swiperSlideSize","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","slidesForMargin","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","slideTo","initialSlide","allowSlideNext","allowSlidePrev","transitionStart","rt","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalizedTranslate","normalize","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","slideChanged","loopDestroy","grabCursor","setGrabCursor","simulateTouch","isLocked","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","os","osVersion","webView","webview","pixelRatio","touchEventsData","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","currentY","startX","startY","edgeSwipeThreshold","iOSEdgeSwipeThreshold","edgeSwipeDetection","iOSEdgeSwipeDetection","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","formElements","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","touchAngle","atan2","touchMoveStopPropagation","nested","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","No","followFinger","velocities","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","velocityEvent","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","dn","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","nextEl","prevEl","breakpoints","setBreakpoint","autoplay","running","paused","preventClicks","preventClicksPropagation","stopImmediatePropagation","dummyEventAttached","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","attachEvents","touchEvents","onTouchStart","onTouchMove","onTouchEnd","dummyEventListener","onResize","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","At","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","minRatio","wasLocked","lastSlidePosition","addClasses","classNames","removeClasses","images","loadImage","imageEl","srcset","checkForComplete","onReady","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","SwiperClass","prototypeGroup","protoMethod","Swiper","moduleParamName","swiperParams","passedParams","swipers","containerEl","touchEventsTouch","touchEventsDesktop","clickTimeout","spv","breakLoop","translated","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isWebView","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","ObserverFunc","mutations","observerUpdate","observeParents","containerParents","observeSlideChildren","Observer$1","Virtual","force","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","renderSlide","offsetProp","slidesAfter","slidesBefore","lazy","load","renderExternal","slidesToRender","onRendered","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","kc","charCode","pageUpDown","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","isEventSupported","sX","sY","pX","pY","HORIZONTAL_AXIS","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","ignoreWheelEvents","sensitivity","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","animateSlider","releaseScroll","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","Pagination","paginationType","bullets","firstIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scaleX","scaleY","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","divider","moveDivider","getPointerPosition","setDragPosition","dragStartPos","positionRatio","onDragStart","dragTimeout","onDragMove","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","y1","y2","x2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","newPositionX","newPositionY","onTransitionEnd","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","initialImageLoaded","elIndex","slideExist","loadPrevNext","loadPrevNextAmount","maxIndex","minIndex","Controller","LinearSpline","binarySearch","guess","i3","interpolate","getInterpolateFunction","spline","controlled","control","controlledTranslate","by","inverse","setControlledTranslate","setControlledTransition","a11y","makeElFocusable","makeElNotFocusable","addElRole","addElLabel","disableEl","enableEl","onEnterKey","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","setHistory","slugify","slideHistory","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","swiperWidth","swiperHeight","cubeEffect","$cubeShadowEl","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","scale2","Flip","flipEffect","limitRotation","rotateY","rotateX","Coverflow","coverflowEffect","depth","offsetMultiplier","translateZ","stretch","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbs","thumbsParams","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","hideOnClick","toEdge","fromEdge","isHidden","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","doubleTap","slideChange","loadOnTransitionStart","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","SwiperEvents","HTMLElement","SwiperDirective","initialIndex","indexChange","S_INIT","S_BEFOREDESTROY","S_SCROLL","S_PROGRESS","S_KEYPRESS","S_RESIZE","S_BREAKPOINT","S_ZOOMCHANGE","S_AFTERRESIZE","S_BEFORERESIZE","S_LOOPFIX","S_BEFORELOOPFIX","S_SLIDERMOVE","S_SLIDECHANGE","S_SETTRANSLATE","S_SETTRANSITION","S_FROMEDGE","S_REACHEND","S_REACHBEGINNING","S_AUTOPLAY","S_AUTOPLAYSTART","S_AUTOPLAYSTOP","S_IMAGESREADY","S_LAZYIMAGELOAD","S_LAZYIMAGEREADY","S_SCROLLDRAGEND","S_SCROLLDRAGMOVE","S_SCROLLDRAGSTART","S_NAVIGATIONHIDE","S_NAVIGATIONSHOW","S_PAGINATIONRENDER","S_PAGINATIONUPDATE","S_PAGINATIONHIDE","S_PAGINATIONSHOW","S_TAP","S_CLICK","S_DOUBLETAP","S_TOUCHEND","S_TOUCHMOVE","S_TOUCHSTART","S_TOUCHMOVEOPPOSITE","S_TRANSITIONEND","S_TRANSITIONSTART","S_SLIDEPREVTRANSITIONEND","S_SLIDEPREVTRANSITIONSTART","S_SLIDENEXTTRANSITIONEND","S_SLIDENEXTTRANSITIONSTART","S_SLIDECHANGETRANSITIONEND","S_SLIDECHANGETRANSITIONSTART","setIndex","SwiperConfig","swiperEvent","emitter","real","silent","stopAutoplay","startAutoplay","__param","Inject","Optional","_subscribe","subscription","thrownError","ObjectUnsubscribedError","kind","do","nextOrObserver","toObservable","Notification","undefinedValueNotification","completeNotification","_isScalar","observable","observerOrNext","sink","rxSubscriberSymbol","emptyObserver","toSubscriber","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","promiseCtor","getPromiseCtor","Symbol_observable","operations","fns","identity","pipeFromArray","hostReportError","POSITIVE_INFINITY","windowTime","scheduler","_events","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","SubjectSubscription","ObserveOnSubscriber","eventsCount","spliceCount","SubjectSubscriber","subject","AnonymousSubject","copy","subscriberIndex","destinationOrNext","SafeSubscriber","_error","_complete","_parentOrParents","_parentSubscriber","_context","__tryOrSetError","__tryOrUnsub","useDeprecatedSynchronousErrorHandling","wrappedComplete","UnsubscriptionError","UnsubscriptionErrorImpl","_ctorUnsubscribe","flattenUnsubscriptionErrors","teardown","subscriptions","subscriptionIndex","errs","_enable_super_gross_mode_that_will_cause_bad_things","notifyError","notifyComplete","innerValue","innerSubscriber","subscribeTo","subjectFactory","_refCount","_isComplete","getSubject","_subject","connect","connection","_connection","ConnectableSubscriber","higherOrderRefCount","connectableObservableDescriptor","connectableProto","ConnectableObservable","connectable","outerValue","outerIndex","innerIndex","innerSub","outerSubscriber","InnerSubscriber","NONE","observables","resultSelector","isScheduler","CombineLatestOperator","CombineLatestSubscriber","OuterSubscriber","toRespond","subscribeToResult","unused","_outerValue","_tryResultSelector","mergeAll","concatAll","observableFactory","schedule","emptyScheduled","sources","forkJoinInternal","getPrototypeOf","completed","emitted","isInteropObservable","scheduleObservable","isPromise","schedulePromise","isArrayLike","scheduleArray","Symbol_iterator","isIterable","return","scheduleIterable","scheduled","subscribeToArray","setupSubscription","sourceObj","isEventTarget","isJQueryStyleEventEmitter","addListener","removeListener","isNodeStyleEventEmitter","concurrent","dueTime","periodOrScheduler","due","durationSelector","AuditSubscriber","throttled","innerSubscription","clearThrottle","AuditOperator","audit","CatchOperator","caught","CatchSubscriber","err2","project","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","predicate","thisArg","FilterOperator","FilterSubscriber","FinallyOperator","FinallySubscriber","hasDefaultValue","defaultIfEmpty","throwIfEmpty","EmptyError","MapOperator","MapSubscriber","MergeMapOperator","MergeMapSubscriber","hasCompleted","_tryNext","_innerSub","ish","ObserveOnOperator","scheduleMessage","ObserveOnMessage","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","RetryOperator","RetrySubscriber","accumulator","seed","hasSeed","ScanOperator","ScanSubscriber","_seed","subjectOrSubjectFactory","MulticastOperator","multicast","shareSubjectFactory","configOrBufferSize","useRefCount","isComplete","shareReplayOperator","SwitchMapOperator","SwitchMapSubscriber","TakeOperator","ArgumentOutOfRangeError","TakeSubscriber","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","DoOperator","TapSubscriber","_tapNext","noop","_tapError","_tapComplete","defaultThrottleConfig","leading","trailing","ThrottleTimeOperator","ThrottleTimeSubscriber","_hasTrailingValue","_trailingValue","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","waitFor","absoluteTimeout","withObservable","TimeoutWithSubscriber","scheduleTimeout","dispatchTimeout","TimeoutWithOperator","timeoutWith","work","Action","pending","recycleAsyncId","requestAsyncId","execute","_execute","errorValue","errored","actions","Scheduler","SchedulerAction","AsyncScheduler","AsyncAction","asyncScheduler","getSymbolIterator","rxSubscriber","ArgumentOutOfRangeErrorImpl","EmptyErrorImpl","ObjectUnsubscribedErrorImpl","TimeoutErrorImpl","subscribeToObservable","subscribeToPromise","iterable","subscribeToIterable","Mt","qe","Tt","wt","Fe","Ue","stateChangeExpr","_position","_onStart","triggerMicrotask","scheduleMicroTask","_players","doneCount","destroyCount","startCount","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","newPlayerIsLongest","_DOM","adapter","PlatformLocation","historyGo","relativePosition","BrowserPlatformLocation","useBrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_init","_history","getBaseHrefFromDOM","getDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","port","newPath","supportsState","forward","createBrowserPlatformLocation","slashes","endsWith","pathEndIdx","provideLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","joinWithSlash","includeHash","normalizeQueryParams","externalUrl","HashLocationStrategy","platformStrategy","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","ev","isCurrentPathEqualTo","baseHref","_stripBaseHref","_notifyUrlChangeListeners","onUrlChange","_urlChangeSubscription","onNext","onThrow","onReturn","createLocation","NumberFormatStyle","Decimal","Percent","Scientific","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","symbol","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","timezone","parsedNb","tzHour","tzMin","dateSetter","timeSetter","isoStringToDate","namedFormat","dateTimezoneOffset","timezoneToOffset","reverseValue","addDateMinutes","convertTimezoneToLocal","DATE_FORMATS","formatter","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","localeId","getLocaleId","formatValue","getLocaleDateFormat","getLocaleTimeFormat","shortTime","getNamedFormat","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","digits","minusSign","negWrap","neg","strNum","getDatePart","strMs","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","extended","formStyle","getLocaleMonthNames","getLocaleDayNames","currentHours","currentMinutes","rules","checkFullData","extractTime","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","amPm","getLocaleDayPeriods","getLocaleEraNames","unexpected","getDateTranslation","datetime","monthBased","nbDaysBefore1stDayOfMonth","today","thisThurs","getThursdayThisWeek","firstThurs","THURSDAY","getFirstThursdayOfYear","fallback","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","digitsInfo","groupSymbol","decimalSymbol","isPercent","formattedText","isZero","parsedNumber","integerLen","zeros","numStr","exponent","MAX_DIGITS","parseNumber","fractionLen","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","fractionSize","roundAt","dropTrailingZeros","minLen","carry","reduceRight","roundNumber","decimals","lgSize","gSize","negPre","negSuf","posPre","posSuf","formatNumberToLocaleString","patternParts","positive","negative","positiveParts","integer","fraction","ch","ei","trunkLen","parseNumberFormat","getLocaleNumberFormat","extraData","ɵregisterLocaleData","cookieStr","cookie","eqIndex","cookieName","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","klass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","record","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","ngForOf","even","odd","NgForOf","_template","_differs","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_trackByFn","ngForTemplate","_applyChanges","forEachOperation","adjustedPreviousIndex","NgForOfContext","applyViewChange","ilen","forEachIdentityChange","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","_created","enforceState","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","useDefault","NgSwitchCase","_view","SwitchView","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","NgTemplateOutlet","ngTemplateOutletContext","ngTemplateOutlet","viewContainerRef","createSubscription","updateLatestValue","_promiseStrategy","PromiseStrategy","_subscribableStrategy","SubscribableStrategy","AsyncPipe","_ref","_latestValue","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","unicodeWordMatch","TitleCasePipe","txt","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","defaultTimezone","LOCALE_ID","KeyValuePipe","keyValues","compareFn","defaultComparator","differ","differChanges","compareFnChanged","forEachItem","makeKeyValuePair","keyValueA","keyValueB","aString","bString","DecimalPipe","isValue","formatNumber","strToNumber","SlicePipe","supports","PLATFORM_BROWSER_ID","ViewportScroller","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","documentResult","getElementsByName","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","nextNode","findAnchorFromDocument","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","scrollRestorationDescriptor","getScrollRestorationProperty","normalizedNames","lazyUpdate","lazyInit","line","maybeSetNormalizedName","getAll","op","lcName","copyFrom","applyUpdate","toDelete","existing","standardEncoding","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","updates","cloneFrom","HttpUrlEncodingCodec","fromObject","rawParams","eqIdx","paramParser","appendAll","eKey","valueToString","idx","ArrayBuffer","third","fourth","reportProgress","withCredentials","ut","HttpContext","urlWithParams","qIdx","serializeBody","isArrayBuffer","isBlob","isFormData","URLSearchParams","isUrlSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpRequest","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","defaultStatus","defaultStatusText","ok","HttpHeaderResponse","events$","concatMap","res$","jsonp","callbackParam","patch","addBody","HttpHandler","interceptor","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","xhr","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","responseURL","getResponseHeader","getResponseUrl","onLoad","responseText","originalBody","onError","sentHeaders","onDownProgress","progressEvent","loaded","lengthComputable","partialText","onUpProgress","upload","send","readyState","DONE","abort","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","cookieString","ɵparseCookieValue","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpXsrfTokenExtractor","HttpInterceptingHandler","backend","chain","interceptors","HttpInterceptorHandler","HttpBackend","HttpClientXsrfModule","withOptions","XhrFactory$1","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","after","__forward_ref__","forwardRefFn","isForwardRef","formatRuntimeError","renderStringify","injectorName","injectorDetails","RuntimeError","stringifyForError","actual","expected","comparison","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","SkipSelf","_injectImplementation","impl","previous","notFoundValue","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","__globalThis","globalThis","__window","__self","WorkerGlobalScope","_global","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount","componentDefinition","noSideEffects","declaredInputs","providersResolver","onPush","directiveDefs","pipeDefs","setInput","schemas","tView","directiveTypes","pipeTypes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef$1","autoRegisterModuleById","declarations","transitiveCompileScopes","ngModuleDef","getNgModuleDef","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","throwNotFound","tNode","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","SimpleChange","ɵɵNgOnChangesFeature","ngInherit","domRendererFactory3","rendererType","getDocument","lView","unwrapRNode","nodeIndex","slotValue","isLView","HOST","lContainer","viewOrContainer","PARENT","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","viewToRestore","contextLView","CONTEXT","currentTNode","getCurrentTNodePlaceholderOk","isParent","bindingRootIndex","bindingStartIndex","bindingIndex","currentDirectiveIndex","setCurrentDirectiveIndex","tData","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","inI18n","currentLFrame","childLFrame","selectedIndex","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","getTNode","SVG_NAMESPACE","namespaceHTMLInternal","directiveStart","directiveEnd","lifecycleHooks","directiveDef","ngAfterContentInit","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","callHooks","initPhase","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","isInitHook","callHook","hook","directive","indexWithintInitPhase","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","native","isProc","isProceduralRenderer","namespaceURI","attrVal","setAttributeNS","isAnimationProp","marker","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","parentLocation","NO_PARENT_INJECTOR","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","parentIndex","getParentInjectorIndex","getParentInjectorView","parentData","footer","declarationViewOffset","lViewCursor","tViewType","bloomHash","BLOOM_SIZE","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","tokenId","createNodeInjector","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","ue","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","isComponentDef","NodeInjectorFactory","isFactory","depPath","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","PROP_METADATA","propName","parentClass","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","parameters","ngMetadataName","annotationCls","additionalProcessing","PropDecoratorFactory","decoratorInstance","meta","PropDecorator","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","makePropDecorator","isViewQuery","emitDistinctChangesOnly","Query","flatten","deepForEach","keyValueArray","keyValueArrayIndexOf","arrayInsert2","middle","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","USE_VALUE$1","_currentInjector","former","getInjectImplementation","injectInjectorOnly","types","getInjectFlag","decorator","attachInjectFlag","makeParamDecorator","policy$1","policy","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy$1","getPolicy","changingThisBreaksApplicationSecurity","SafeValueImpl","getTypeName","actualType","getSanitizationBypassType","trustedHtml","SafeHtmlImpl","trustedStyle","SafeStyleImpl","trustedScript","SafeScriptImpl","trustedUrl","SafeUrlImpl","trustedResourceUrl","SafeResourceUrlImpl","inertDocumentHelper","getInertBodyElement","DOMParser","parseFromString","trustedHTMLFromString","defaultDoc","inertDocument","implementation","createHTMLDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","childNode","ELEMENT_NODE","SAFE_URL_PATTERN","DATA_URL_PATTERN","sets","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","sanitizedSomething","buf","sanitizeChildren","traverseContent","startElement","TEXT_NODE","chars","nodeValue","endElement","checkClobberedElement","elAttr","lower","_sanitizeUrl","encodeEntities","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","unsafeHtmlInput","InertDocumentHelper","isDOMParserAvailable","DOMParserHelper","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","sanitizer","SanitizingHtmlSerializer","getTemplateContent","safeHtml","isTemplateElement","SecurityContext","HTML","STYLE","SCRIPT","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","sanitize","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","trustedScriptURLFromString","SANITIZER","MONKEY_PATCH_KEY_NAME","readPatchedData","ERROR_ORIGINAL_ERROR","_console","handleError","originalError","_findOriginalError","errorLogger","ERROR_LOGGER","defaultErrorLogger","getErrorLogger","getOriginalError","defaultScheduler","RendererStyleFlags2","Important","DashCase","tIcuContainerNode","_icuContainerIterate","isLContainer","getNearestLContainer","CHILD_HEAD","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeParent","nativeParentNode","nativeRemoveChild","nativeRemoveNode","parentRElement","applyToElementOrContainer","applyView","applyContainer","namespaceUri","getNamespaceUri","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeFromArray","removeViewFromContainer","lQueries","detachView","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","cleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","Ve","processCleanups","getNativeByTNode","getClosestRElement","_getInsertInFrontOfRNodeWithI18n","childRNode","childTNode","parentRNode","getParentRElement","anchorNode","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","projectionNodes","getProjectionNodes","getLViewParent","componentView","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","NATIVE","isProjection","rawSlotValue","attachPatchData","applyNodes","nextRNode","icuContainerIterate","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","componentNode","cssText","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","tagNameToCompare","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","tStylingRange","queryStartIdx","directiveDefIdx","setCurrentQueryIndex","tHostNode","resetPreOrderHookFlags","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","createTNodeAtIndex","isInI18nBlock","getCurrentParentTNode","setCurrentTNode","numSlotsToAlloc","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","hostLView","renderComponent$1","renderChildComponents","leaveView","incompleteFirstPass","isInCheckNoChangesPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","normalExecutionPath","creationModeIsActive","isCreationMode","renderView","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","queries","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","dataValue","inputData","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","mapPropName","Or","localRefs","hasDirectives","registry","isNodeMatchingSelectorList","diPublicInInjector","Mi","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","ngDevMode","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","addToViewTree","createLView","setElementAttribute","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","errorHandler","ErrorHandler","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","NullInjector","defType","additionalProviders","createInjectorWithoutInjectorInstances","_resolveInjectorDefTypes","R3Injector","getNullInjector","records","injectorDefTypes","dedupStack","processProvider","injectorDef","processInjectorType","makeRecord","assertNotDestroyed","service","previousInjector","setCurrentInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","catchInjectorError","defOrWrappedDef","getInjectorDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","injectArgs","hasOnDestroy","paramLength","newArray","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","createInjector","NULL","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isJsObject","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","elementAttributeInternal","getSelectedTNode","ɵɵattribute","v0","v1","getBindingIndex","incrementBindingIndex","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","comment","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","getContextLView","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","getNamespace$1","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","getElementDepthCount","increaseElementDepthCount","executeContentQueries","ɵɵelementStart","setCurrentTNodeAsNotParent","decreaseElementDepthCount","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementEnd","ɵɵelement","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","ɵɵelementContainer","isObservable","isSubscribable","listenerFn","useCapture","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","ɵɵlistener","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","nestingLevel","walkUpViews","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","interpolatedValue","interpolation1","interpolation2","ɵɵpropertyInterpolate2","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","isMap","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","consumeClassToken","consumeWhitespace","consumeStyleKey","consumeSeparator","ch1","ch2","ch3","lastChIndex","consumeQuotedText","consumeStyleValue","quoteCharCode","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","styleKeyValueArraySet","styleStringParser","resetParserState","parseStyleNext","parseStyle","getLastParsedKey","getLastParsedValue","keyValueArraySet","classStringParser","parseClassNameNext","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","newKey","setKey","Ut","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","bindings","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","staticKeyValueArray","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","removeProperty","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","createTextNode","ɵɵtextInterpolate1","ɵɵtextInterpolate","interpolated","textBindingInternal","ɵɵtextInterpolate2","v2","bindingUpdated3","interpolation3","ɵɵtextInterpolate3","currentDef","unwrapLView","RENDERER","loadComponentRenderer","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","LocaleDataIndex","LocaleId","ExtraData","normalizedLocale","getLocaleData","PluralCase","ng","common","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","Directionality","DEFAULT_LOCALE_ID","LOCALE_ID$1","lInjectablesBlueprint","resolveProvider","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","viewProviders","processProvidersFn","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver$1","_NullComponentFactoryResolver","createElementRef","injectElementRef","Renderer2","nodeAtIndex","getOrCreateRenderer2","injectRenderer2","Sanitizer","major","minor","VERSION","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","destroyLView","storeCleanupWithContext","detach","reattach","detectChangesInternal","checkNoChanges","setIsInCheckNoChangesMode","checkNoChangesInternal","attachToViewContainerRef","detachFromAppRef","renderDetachView","attachToAppRef","appRef","ViewRef$1","detectChangesInRootView","checkNoChangesInRootView","componentDef","ComponentFactory","nonMinified","templateName","ComponentFactory$1","componentType","selectorList","stringifyCSSSelector","stringifyCSSSelectorList","isBoundToModule","toRefArray","projectableNodes","rootSelectorOrNode","rootViewInjector","createChainedInjector","hostRenderer","elementName","hostRNode","elementOrSelector","rElement","locateHostElement","getNamespace","rootFlags","playerHandler","clean","createRootContext","rootTView","rootLView","tElementNode","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","nodesforSlot","hostFeatures","rootTNode","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef","_rootLView","RootViewRef","NgModuleRef$1","_parent","_bootstrapComponents","destroyCbs","componentFactoryResolver","maybeUnwrapFn","_r3Injector","injectFlags","NgModuleFactory$1","moduleType","visited","incoming","assertSameOrNotExisting","recurse","registerNgModuleType","parentInjector","NgModuleRef","slotOffset","pureFn","getBindingRoot","updateBinding","getBinding","pureFunction1Internal","pureFunction2Internal","pureFunction3Internal","pureFunction4Internal","exp5","bindingUpdated4","returnValueIndex","lastReturnValue","bindingRoot","getPureFunctionReturnValue","pipeName","getPipeDef","pipeFactory","pipeInstance","isPure","v3","v4","isAsync","__isAsync","nextFn","errorFn","completeFn","_wrapInTimeout","_results","_emitDistinctChangesOnly","_changesDetected","_changes","QueryList","symbolIterator","resultsTree","identityAccessor","newResultFlat","valueA","valueB","arrayEquals","notifyOnChanges","setDirty","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","createTemplateRef","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","CONTAINER_HEADER_OFFSET","insert","createComponent","componentFactoryOrType","indexOrOptions","ngModuleRef","isComponentFactory","isType","componentFactory","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","declaredComponentLView","insertedLContainer","trackMovedView","insertView","parentNativeNode","addViewToContainer","getOrCreateViewRefs","viewRefsArr","detachedView","wasDetached","VIEW_REFS","commentNode","nativeNextSibling","queryList","LQuery_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","LQueries_","dirtyQueriesWithMatches","getTQuery","queriesForTemplateRef","childQueryIndex","tqueryClone","TQueries_","track","tquery","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","TQuery_","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","createTQuery","TQueryMetadata_","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","loadQueryInternal","bindingPropertyName","hostPropertyName","ApplicationInitStatus","appInits","donePromise","rej","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_ID","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","$localize","getGlobalLocale","DEFAULT_CURRENCY_CODE","ngModuleFactory","componentFactories","Compiler","compileModuleSync","NgModuleFactory","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","ModuleWithComponentFactories","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","Zone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","invoke","delayChangeDetectionForEvents","isAngularZone","onInvokeTask","task","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","change","_hasPendingMicrotasks","microTask","macroTask","onHandleError","forkInnerZoneWithAngularBehavior","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","findProviders","using","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","registerApplication","testability","unregisterApplication","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platform","_NoopGetTestability","ALLOW_MULTIPLE_PLATFORMS","parentPlatformFactory","extraProviders","getPlatform","injectedProviders","PlatformRef","inits","createPlatform","requiredToken","assertPlatform","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","ngZoneOption","extra","NoopNgZone","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","assertDefined","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","objs","_exceptionHandler","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","tick","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","share","componentOrFactory","cf","compRef","testabilityRegistry","_loadComponent","viewCount","_runModeLocked","_devMode","ChangeDetectorRef","injectChangeDetectorRef","isPipe","createViewRef","isListLikeIterable","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","collection","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","_prevDup","_nextDup","_head","_tail","atOrAfterIndex","duplicates","_DuplicateItemRecordList","recordList","moveOffset","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","DefaultIterableDifferFactory","copied","defaultIterableDiffersFactory","KeyValueDiffers","DefaultKeyValueDifferFactory","defaultKeyValueDiffersFactory","kv","platformCore","createPlatformFactory","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","decl","BaseControlValueAccessor","BuiltInControlValueAccessor","ft","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","_compositionMode","_composing","ɵgetDOM","getUserAgent","_isAndroid","_handleInput","_compositionStart","_compositionEnd","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","required","requiredTrueValidator","isEmptyInputValue","emailValidator","minLengthValidator","maxLengthValidator","nullValidator","regexStr","requiredPattern","actualValue","patternValidator","compose","composeAsync","hasValidLength","minlength","actualLength","maxlength","ɵisObservable","arrayOfErrors","validator","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","_onDestroyCallbacks","pristine","touched","untouched","_setValidators","_composedValidatorFn","composeValidators","_setAsyncValidators","_composedAsyncValidatorFn","composeAsyncValidators","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","AbstractControlDirective","valueAccessor","formDirective","submitted","NgControlStatus","AbstractControlStatus","NgControl","NgControlStatusGroup","ControlContainer","setUpValidators","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpModelChangePipeline","_pendingTouched","markAsTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","validateControlPresenceOnChange","cleanUpValidators","_registerOnCollectionChange","getControlValidators","mergeValidators","getControlAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","emitModelToViewChange","viewModel","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","isFormControl","isFormGroup","getRawValue","isGroup","_forEachChild","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","addAsyncValidators","removeValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","delimiter","controlToFind","FormArray","Ct","at","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","AbstractControl","pickValidators","pickAsyncValidators","_applyFormState","initialValueIsDefault","emitViewToModelChange","patchValue","removeListItem","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","assertAllValuesPresent","assertControlPresent","_reduceChildren","subtreeUpdated","updated","_reduceValue","initValue","_registerControl","removeAt","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","setUpControl","addFormGroup","setUpFormContainer","removeFormGroup","getFormGroup","updateModel","syncPendingControls","onReset","resetForm","formControlBinding$1","NgModel","resolvedPromise","_registered","selectValueAccessor","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","isPropertyUpdated","_isStandalone","_setUpStandalone","_checkParentType","disabledValue","controlPath","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","cleanUpControl","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","controlNameBinding","FormControlName","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_optionMap","_idCounter","_compareWith","valueString","_buildValueString$1","_getOptionId","_getOptionValue","_registerOption","_extractId$1","NgSelectOption","_select","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","optionSelectedStateSetter","ids","opt","_setSelected","selectedOptions","_extractId","ɵNgSelectMultipleOption","_buildValueString","AbstractValidatorDirective","_validator","inputName","normalizeInput","_enabled","createValidator","MAX_VALIDATOR","MaxValidator","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","toBoolean","MIN_LENGTH_VALIDATOR","MinLengthValidator","toInteger","MAX_LENGTH_VALIDATOR","MaxLengthValidator","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","ɵDomAdapter","supportsDOMEvents","GenericBrowserDomAdapter","ɵsetRootDomAdapter","BrowserDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","baseElement","getBaseElementHref","urlParsingNode","pathName","relativePath","resetBaseElement","getCookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","setTestabilityGetter","BrowserGetTestability","ɵglobal","testabilities","didWork","decrement","didWork_","whenAllStable","BrowserXhr","XMLHttpRequest","EVENT_MANAGER_PLUGINS","plugins","_eventNameToPlugin","manager","_plugins","plugin","_findPluginFor","addGlobalEventListener","getZone","SharedStylesHost","_stylesSet","addStyles","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","svg","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","compId","allowDefaultBehavior","DomRendererFactory2","eventManager","sharedStylesHost","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","removeAttributeNS","decoratePreventDefault","contentAttr","componentShortId","shimContentAttribute","hostAttr","shimHostAttribute","hostEl","nodeOrShadowRoot","DomEventsPlugin","EventManagerPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","XhrFactory","parentModule","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","bypassSecurityTrustHtml","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","TakeLastOperator","TakeLastSubscriber","ring","RouterEvent","navigationTrigger","restoredState","urlAfterRedirects","reason","shouldActivate","routeConfig","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segmentGroup","hasChildren","posParams","segment","consumed","equalArraysOrString","aSorted","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","subset","containsSegmentGroup","paramCompareMap","shallowEqual","ignored","fragment","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","queryParamMap","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","serialize","serializePaths","parameterMap","_parameterMap","serializePath","UrlParser","UrlTree","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeURI","encodeUriFragment","DefaultUrlSerializer","childOutlet","mapChildrenIntoArray","encodeUriString","decode","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","UrlSegmentGroup","parseChildren","parseQueryParam","parseSegment","parseParens","matchSegments","UrlSegment","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","currentVal","allowPrimary","outletName","_root","pathFromRoot","findNode","siblings","findPath","cc","Tree","setRouterState","urlTree","ActivatedRouteSnapshot","RouterStateSnapshot","TreeNode","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","RouterState","futureSnapshot","_futureSnapshot","_routerState","_paramMap","inheritingStartingFrom","_resolvedData","flattenInherited","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","serializeNode","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","prevState","shouldReuseRoute","createNode","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","segmentPath","oldRoot","oldSegmentGroup","newSegmentGroup","qp","newRoot","replaceSegment","oldSegment","newSegment","isAbsolute","numberOfDoubleDots","commands","isMatrixParams","cmdWithOutlet","isCommandWithOutlets","toRoot","processChildren","updateSegmentGroupChildren","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","updateSegmentGroup","createNewSegmentChildren","futureState","currState","forwardEvent","activate","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","currNode","contexts","nodeChildrenAsMap","futureChild","childOutletName","deactivateRoutes","childName","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","deactivate","attachRef","activateRoutes","ActivationEnd","ChildActivationEnd","getOrCreateContext","stored","onOutletReAttached","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","INITIAL_VALUE","startWith","isPending","innerAcc","isUrlTree","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","OutletContext","RouterOutlet","changeDetector","_activatedRoute","activateEvents","deactivateEvents","isActivated","activatedRouteData","cmp","childContexts","OutletInjector","ɵEmptyOutletComponent","parentPath","validateNode","getFullPath","fullPath","currentRoute","standardizeConfig","sortedConfig","getOutlet","noMatch$1","consumedSegments","remainingSegments","positionalParamSegments","defaultUrlMatcher","slicedSegments","emptyPathMatch","containsEmptyPathMatchesWithNamedOutlets","primarySegment","_sourceSegment","_segmentIndexShift","createChildrenForEmptyPaths","containsEmptyPathMatches","ht","addEmptyPathsToChildrenIfNeeded","rawSegment","NoMatch$1","newTree","AbsoluteRedirect","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","urlTrees$","expandSegmentGroup","squashSegmentGroup","noMatchError","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","takeLast","last$1","expanded$","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","newSegments","rawSegmentGroup","childConfig$","getChildConfig","routerConfig","childModule","splitSegmentGroup","matchedOnOutlet","LoadedRouterConfig","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoad","canLoadObservables","injectionToken","guard","guardVal","isCanLoad","wrapIntoObservable","prioritizedGuardValue","applyRedirectCreatreUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","newChildren","childCandidate","mergeTrivialChildren","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","CanActivate","CanDeactivate","getRouteGuards","ze","rootComponentType","recognize","processSegmentGroup","rootNode","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","localeCompare","processSegmentAgainstRoute","getSourceSegmentGroup","getPathIndexShift","getResolve","mergedNodes","hasEmptyPathConfig","duplicateEmptyPathNode","resultNode","mergedNode","getOwnPropertySymbols","nextResult","detachedTree","ROUTES","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","moduleFactory$","loadModuleFactory","shouldProcessUrl","extract","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","defaultErrorHandler","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","DefaultUrlHandlingStrategy","DefaultRouteReuseStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","RouterConfigLoader","triggerEvent","RouteConfigLoadStart","RouteConfigLoadEnd","routerState","createEmptyState","targetPageId","currentRawUrl","extractedUrl","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","NavigationStart","serializeUrl","ApplyRedirects","applyRedirects$1","applyRedirects","finalUrl","serializer","Recognizer","newObservableError","NoMatch","recognize$1","skipLocationChange","setBrowserUrl","routesRecognized","RoutesRecognized","navStart","replaceUrl","switchTap","appliedUrlTree","guardsStart","GuardsCheckStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","isBoolean","ChildActivationStart","fireChildActivationStart","ActivationStart","fireActivationStart","futureARS","canActivateChildGuardsMapped","canActivateChildGuards","canActivateChild","getCanActivateChild","defer","guardsMapped","isCanActivateChild","runCanActivateChild","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","GuardsCheckEnd","restoreHistory","cancelNavigationTransition","resolveStart","ResolveStart","dataResolved","canActivateChecksResolved","getDataKeys","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","ResolveEnd","createRouterState","ActivateRoutes","isNavigationCancelingError","redirecting","navCancel","NavigationCancel","xn","mergedTree","scheduleNavigation","navError","NavigationError","resetRootComponentType","initialNavigation","setUpLocationChangeListener","locationSubscription","stateCopy","parseUrl","getCurrentNavigation","navigationExtras","queryParamsHandling","preserveFragment","removeEmptyProps","nav","cmdIdx","urlPart","partIndex","Zt","computeNavigation","startingPosition","ci","createPositionApplyingDoubleDots","findStartingPosition","validateCommands","matchOptions","Se","containsTree","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","onChanges","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","attrBoolValue","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","RouterLinkActive","cdr","link","linkWithHref","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","links","linksWithHrefs","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","hasActiveLinks","isActiveMatchOptions","isActiveCheckFn","preload","RouterPreloader","preloadingStrategy","loader","onEndLoad","setUpPreloading","processRoutes","preloadConfig","PreloadingStrategy","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","UrlSerializer","assignExtraOptionsToRouter","enableTracing","groupEnd","NoPreloading","NgProbeToken","provideRoutes","provideForRootGuard","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","provideRouterInitializer","scrollOffset","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","appInitializer","Yt","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","nextHandle","RESOLVED","activeHandles","Immediate","setImmediate","findAndClearHandle","clearImmediate","asapScheduler","ce","toggleItem","onItemHover","itemsList","selectTag","viewPortItems","scrollToEnd","unescapedHTMLExp","hasUnescapedHTMLExp","htmlEscapes","isDefined","NgItemLabelDirective","chr","escapeHTML","ngItemLabel","NgOptionTemplateDirective","NgOptgroupTemplateDirective","NgLabelTemplateDirective","NgMultiLabelTemplateDirective","NgHeaderTemplateDirective","NgFooterTemplateDirective","NgNotFoundTemplateDirective","NgTypeToSearchTemplateDirective","NgLoadingTextTemplateDirective","NgTagTemplateDirective","NgLoadingSpinnerTemplateDirective","diacritics","_ngSelect","_selectionModel","_filteredItems","_markedIndex","filteredItems","markedIndex","selectedItems","markedItem","noItemsToSelect","hideSelected","maxItemsSelected","multiple","maxSelectedItems","lastSelectedItem","mapItem","groupBy","_groups","_groupBy","_flatten","clearSelected","selectableGroupAsModel","_hideSelected","_showSelected","findItem","findBy","bindValue","resolveNested","bindLabel","option","keepDisabled","marked","resetFilteredItems","findByLabel","term","stripSpecialChars","searchFn","_defaultSearchFn","unmarkItem","markNextItem","_stepToItem","markPreviousItem","markItem","markSelectedOrDefault","markDefault","lastMarkedIndex","_getLastMarkedIndex","$ngOptionLabel","$ngOptionValue","htmlId","dropdownId","mapSelectedItems","parentExists","_getNextItemIndex","isFnKey","keyFn","isGroupByFn","withoutGroup","isObjectKey","selectableGroup","newId","groupKey","groupValue","KeyCode","Tab","Enter","Space","ArrowUp","ArrowDown","Backspace","NgDropdownPanelService","_dimensions","itemHeight","panelHeight","itemsPerViewport","dimensions","calculateItems","scrollPos","itemsLength","indexByScrollTop","maxStart","maxStartEnd","topPadding","setDimensions","getScrollTo","itemTop","lastScroll","itemBottom","CSS_POSITIONS","SCROLL_SCHEDULER","NgDropdownPanelComponent","_panelService","_document","virtualScroll","filterValue","_destroy$","_scrollToEndFired","_updateScrollHeight","_lastScrollPosition","currentPosition","_currentPosition","_itemsLength","_onItemsLengthChanged","_startOffset","_virtualPadding","paddingElementRef","_scrollablePanel","scrollElementRef","_contentPanel","contentElementRef","_handleScroll","_handleOutsideClick","_appendDropdown","_setupMousedownListener","_onItemsChange","appendTo","startFromOption","scrollToTag","panel","adjustPosition","_updateYPosition","_handleDropdownPosition","_calculateCurrentPosition","_updateDropdownClass","REMOVE_CSS_CLASS","ADD_CSS_CLASS","composedPath","_onContentScrolled","_checkToClose","_updateItemsRange","_setVirtualHeight","_updateItems","_measureDimensions","_renderItemsRange","_fireScrollToEnd","_updateVirtualHeight","bufferAmount","optionHeight","dropdownEl","selectRect","_updateXPosition","minWidth","Ht","an","Lt","bt","i4","NgOptionComponent","stateChange$","_disabled","_previousLabel","NgSelectConfig","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","disableVirtualScroll","openOnEnter","appearance","ConsoleService","SELECTION_MODEL_FACTORY","NgSelectComponent","autoFocus","newSelectionModel","markFirst","dropdownPosition","loading","closeOnSelect","selectOnTab","clearOnBackspace","labelForId","inputAttrs","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","addTag","searchable","clearable","blurEvent","focusEvent","changeEvent","openEvent","closeEvent","searchEvent","clearEvent","addEvent","removeEvent","useDefaultClass","searchTerm","_defaultLabel","_pressedKeys","_isComposing","_keyPress$","clearItem","trackByOption","_mergeGlobalConfig","ItemsList","_itemsAreUsed","clearSearchOnAdd","_clearSearchOnAdd","filtered","single","_editableSearchTerm","selectedValues","currentPanelPosition","dropdownPanel","_handleKeyPresses","_setInputAttributes","_setItems","_manualOpen","_setItemsFromNgOptions","handleKeyDown","handleKeyCode","_handleArrowDown","_handleArrowUp","_handleSpace","_handleEnter","_handleTab","_handleBackspace","handleMousedown","handleClearClick","handleArrowClick","focused","_updateNgModel","_clearSearch","_onSelectionChanged","clearModel","_handleWriteValue","_isTypeahead","_setSearchTermFromItems","searchInput","_primitive","handleTag","showClear","showAddTag","_validTerm","showNoItemsFound","showTypeToSearch","onCompositionStart","onCompositionEnd","typeahead","onInputFocus","onInputBlur","firstItem","mapNgOptions","handleOptionChange","changedOrDestroyed","ngOptions","_isValidWriteValue","validateBinding","ngModel","isValObject","isPrimitive","letter","_scrollToMarked","autocorrect","autocapitalize","autocomplete","_changeSearch","_scrollToTag","_nextItemIsTag","nextStep","ot","DefaultSelectionModel","_selected","groupAsModel","childrenCount","selectedCount","_setChildrenSelectedState","_removeChildren","_activeChildren","_removeParent","DefaultSelectionModelFactory","TranslateFakeLoader","TranslateLoader","nt","FakeMissingTranslationHandler","o1","o2","keySet","t1","mergeDeep","TranslateDefaultParser","TranslateParser","templateMatcher","interpolateString","interpolateFunction","TranslateFakeCompiler","defaultLang","langs","onTranslationChange","onLangChange","onDefaultLangChange","USE_STORE","USE_DEFAULT_LANG","DEFAULT_LANGUAGE","USE_EXTEND","TranslateService","currentLoader","parser","isolate","defaultLanguage","_onTranslationChange","_onLangChange","_onDefaultLangChange","_langs","_translations","_translationRequests","_defaultLang","_currentLang","retrieveTranslations","changeDefaultLang","getDefaultLang","changeLang","loadingTranslations","updateLangs","shouldMerge","getLangs","addLangs","getParsedResult","getStreamOnTranslationChange","stream","reloadLang","resetLang","getBrowserLang","browserLang","browserLanguage","userLanguage","getBrowserCultureLang","browserCultureLang","TranslateStore","TranslateDirective","onTranslationChangeSub","checkNodes","onLangChangeSub","onDefaultLangChangeSub","translateParams","currentParams","forceUpdate","setContent","lastKey","lookupKey","getContent","trimmedContent","originalContent","pe","updateValue","lastParams","onTranslation","TranslatePipe","validArgs","SyntaxError","SvgHttpLoader","SvgLoader","getSvg","SERVER_URL","SvgIconRegistryService","serverUrl","iconsByUrl","iconsLoadingByUrl","addSvg","loadSvg","getSvgByName","unloadSvg","SVG_ICON_REGISTRY_PROVIDER","parentRegistry","SvgIconComponent","iconReg","applyClass","applyCss","helper","SvgIconHelper","_svgStyle","svgStyle","changeRecord","elemSvg","stylize","setClass","svgClass","viewBox","svgAriaLabel","doAria","applyChanges","svgObs","icnSub","initSvg","setSvg","resetDiffer","copyNgContentAttribute","hasAttribute","hostElem","attribute","setNgContentAttribute","attributeName","klasses","QRCodeComponent","allowEmptyString","colorDark","colorLight","cssClass","elementType","qrdata","qrCodeURL","createQRCode","isValidQrCodeText","qrCodeConfig","toCanvas","toSVG","renderElement","qrcElement","centerImageSrc","imageSrc","centerImageHeight","centerImageWidth","canvasElement","ariaLabel","centerImage","drawImage","emitQRCodeURL","svgParentElement","svgString","svgElement","imgElement","dataUrl","SVGSVGElement","urlSvg","createObjectURL","urlSanitized","urlImage","HTMLImageElement","fetch","urlResponse","ChangeFilter","notEmpty","notFirst","notFirstAndEmpty","NGX_ECHARTS_CONFIG","NgxEchartsDirective","autoResize","loadingType","chartInit","optionsError","chartClick","createLazyEvent","chartDblClick","chartMouseDown","chartMouseMove","chartMouseUp","chartMouseOver","chartMouseOut","chartGlobalOut","chartContextMenu","chartLegendSelectChanged","chartLegendSelected","chartLegendUnselected","chartLegendScroll","chartDataZoom","chartDataRangeSelected","chartTimelineChanged","chartTimelinePlayChanged","chartRestore","chartDataViewChanged","chartMagicTypeChanged","chartPieSelectChanged","chartPieSelected","chartPieUnselected","chartMapSelectChanged","chartMapSelected","chartMapUnselected","chartAxisAreaSelected","chartFocusNodeAdjacency","chartUnfocusNodeAdjacency","chartBrush","chartBrushEnd","chartBrushSelected","chartRendered","chartFinished","animationFrameID","resize$","onOptionsChange","setOption","toggleLoading","refreshChart","resizeSub","resizeOb","initChartTimer","initChart","chart","isDisposed","showLoading","loadingOpts","hideLoading","createChart","initOpts","Ge","imageLoadedInView","keyboardAccess","maintainAspectRatio","resetCropOnAspectRatioChange","resizeToWidth","resizeToHeight","cropperMinWidth","cropperMinHeight","cropperMaxHeight","cropperMaxWidth","cropperStaticWidth","cropperStaticHeight","canvasRotation","initialStepSize","onlyScaleDown","imageQuality","autoCrop","backgroundColor","containWithinAspectRatio","hideResizeSquares","alignImage","cropperScaledMinWidth","cropperScaledMinHeight","cropperScaledMaxWidth","cropperScaledMaxHeight","stepSize","validateOptions","setOptionsFromChanges","MoveTypes","Drag","Move","Pinch","percent","totalValue","CropService","crop","sourceImage","loadedImage","cropper","imagePosition","getImagePosition","x1","cropCanvas","fillStyle","fillRect","translateH","translateV","getCanvasTranslate","transformedImage","transformed","cropperPosition","offsetImagePosition","getOffsetImagePosition","resizeRatio","getResizeRatio","width_source","height_source","ratio_w","ratio_h","ratio_w_half","ratio_h_half","img","getImageData","img2","data2","center_y","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","xx_start","yy_start","xx_stop","yy_stop","dy","center_x","w0","xx","dx","pos_x","resizeCanvas","getQuality","translateUnit","getRatio","percentage","exifTransform","ratioWidth","ratioHeight","ratios","CropperPositionService","resetCropperPosition","sourceImageElement","cropperWidth","cropperHeight","cropperHeightWithAspectRatio","cropperWidthWithAspectRatio","moveStart","getClientX","getClientY","maxSize","moveX","moveY","newWidth","checkAspectRatio","overflowX1","overflowX2","overflowY1","overflowY2","LoadImageService","autoRotateSupported","supported","testAutoOrientationImageURL","supportsAutomaticRotation","loadImageFile","cropperSettings","fileReader","readAsDataURL","imageBase64","imageType","isValidImageType","loadBase64Image","loadImageFromURL","crossOrigin","originalImage","originalBase64","transformImageBase64","autoRotate","exifRotationOrBase64Image","DataView","binaryString","bytes","base64ToArrayBuffer","getUint16","byteLength","getUint32","little","getExifRotation","getTransformationsFromExifData","transformLoadedImage","naturalWidth","naturalHeight","originalSize","transformedSize","getTransformedSize","transformedBase64","loadImageFromBase64","minHeightToContain","cropService","cropperPositionService","loadImageService","Hammer","CropperSettings","setImageMaxSizeRetries","resizedWhileHidden","moveTypes","imageVisible","allowMoveImage","hidden","startCropImage","transformChange","onChangesUpdateSettings","onChangesInputImage","setLoadedImage","loadImageError","setMaxSize","setCropperScaledMinSize","setCropperScaledMaxSize","aspectRatioIsCorrect","checkCropperPosition","doAutoCrop","setCssTransform","imageChangedEvent","imageURL","imageFile","isValidImageChangedEvent","safeTransformStyle","activatePinchGesture","safeImgDataUrl","checkImageMaxSizeRecursively","sourceImageLoaded","resizeCropperPosition","hammer","wrapper","onPinch","pinchStop","startPinch","changeKeyboardStepSize","keyboardMoveCropper","keyboardWhiteList","moveType","getInvertedPositionForKey","getPositionForKey","moveEvent","getEventForKey","startMove","moveImg","moveStop","setCropperScaledMinWidth","setCropperScaledMinHeight","maintainSize","i5","base64Image","byteString","ab","ia","newestOnTop","_attachedHost","isAttached","setAttachedHost","toastId","toastType","toastRef","_onTap","_onAction","afterClosed","triggerTap","tapToDismiss","onTap","triggerAction","onAction","DefaultNoComponentGlobalConfig","maxOpened","autoDismiss","preventDuplicates","countDuplicates","resetTimeoutOnDuplicate","includeTitleDuplicates","iconClasses","closeButton","disableTimeOut","timeOut","extendedTimeOut","enableHtml","progressBar","toastClass","positionClass","titleClass","messageClass","easeTime","onActivateTick","progressAnimation","TOAST_CONFIG","_overlayRef","duplicatesCount","_afterClosed","_activate","_manualClose","_resetTimeout","_countDuplicate","manualClose","manualClosed","timeoutReset","countDuplicate","isInactive","afterActivate","onDuplicate","resetTimeout","_toastPackage","_parentInjector","ToastPackage","portal","_attachedPortal","attachComponentPortal","_disposeFn","setDisposeFn","_hostDomElement","_getComponentRootNode","_portalHost","OverlayContainer","_containerElement","getContainerElement","_createContainer","Overlay","_overlayContainer","_paneElements","overlayContainer","_createOverlayRef","getPaneElement","_createPaneElement","pane","_createPortalHost","DomPortalHost","OverlayRef","ToastrService","overlay","currentlyActive","toasts","toastrConfig","override","_preBuildNotification","applyConfig","toast","_findToast","activeToast","findDuplicate","resetOnDuplicate","hasDuplicateTitle","_buildNotification","toastComponent","duplicate","previousToastMessage","keepInactive","overlayRef","sanitizedMessage","ToastRef","toastPackage","toastInjector","ToastInjector","ComponentPortal","componentInstance","ins","i2","Toast","toastClasses","originalTimeout","activateToast","sub1","sub2","sub3","displayStyle","outsideTimeout","hideTime","outsideInterval","tapToast","stickAround","delayedHideToast","runInsideAngular","DefaultGlobalConfig","ToastNoAnimation","ToastNoAnimationModule"],"sourceRoot":"webpack:///","sources":["./src/app/api/api-client-base.ts","./src/app/api/auth-api.generated.ts","./src/app/api/portal-api.generated.ts","./src/app/api/wallet-api.generated.ts","./src/app/auth/auth.service/auth.service.ts","./src/app/containers/layout/sidebar/sidebar.service.ts","./src/app/profiles/dashboard-shell/business-settings/business-settings.service/business-settings.service.ts","./src/app/profiles/dashboard-shell/business-settings/store/select-store-type/select-store-type.component.ts","./src/app/profiles/dashboard-shell/business-settings/store/select-store-type/select-store-type.component.html","./src/app/profiles/dashboard-shell/details/profile-images/profile-images.module.ts","./src/app/profiles/profiles.resolver/profiles.resolver.ts","./src/app/profiles/profiles.service/profiles.service.ts","./src/app/shared/common/constants.ts","./src/app/shared/components/image-cropper-popup/image-cropper-popup.component.html","./src/app/shared/components/image-cropper-popup/image-cropper-popup.component.ts","./src/app/shared/components/image-upload/image-upload.component.html","./src/app/shared/components/image-upload/image-upload.component.ts","./src/app/shared/components/loader/loader.component.ts","./src/app/shared/components/loader/loader.component.html","./src/app/shared/components/no-transaction/no-transaction.component.html","./src/app/shared/components/no-transaction/no-transaction.component.ts","./src/app/shared/components/profile-card/profile-card.component.html","./src/app/shared/components/profile-card/profile-card.component.ts","./src/app/shared/components/subscription-card/models/enterprise-subscription-type.enum.ts","./src/app/shared/components/subscription-card/models/subscription-status.enum.ts","./src/app/shared/components/time-picker/time-picker.component.html","./src/app/shared/components/time-picker/time-picker.component.ts","./src/app/shared/components/yes-no-dialog-box/yes-no-dialog-box.component.html","./src/app/shared/components/yes-no-dialog-box/yes-no-dialog-box.component.ts","./src/app/shared/components/yes-no-dialog-box/yes-no-dialog-box.module.ts","./src/app/shared/constants/links.ts","./src/app/shared/constants/value.ts","./src/app/shared/directives/business-limitation/business-limitation.directive.ts","./src/app/shared/directives/controllable-profile/controllable-profile.directive.ts","./src/app/shared/directives/time-parse.directive.ts","./src/app/shared/enums/enums.ts","./src/app/shared/helpers/missing-translation-helper.ts","./src/app/shared/pipes/mapper/mapper.module.ts","./src/app/shared/services/app-settings/app-settings.service.ts","./src/app/shared/services/configuration/configuration.service.ts","./src/app/shared/services/destroy/destroy.service.ts","./src/app/shared/services/storage/session-storage/session-storage.service.ts","./src/app/shared/services/storage/abstract-storage.service.ts","./src/app/shared/services/lang/lang.service.ts","./src/app/shared/services/modal/modal.service.ts","./src/app/shared/services/storage/local-storage/local-storage.service.ts","./src/app/shared/services/subscriptions/subscriptions.service.ts","./src/app/shared/services/toastr-message/toastr-message-service.service.ts","./src/app/shared/constants/feature-roles.ts","./src/app/shared/services/user-roles/user-role.service.ts","./src/app/shared/components/loader/loader.module.ts","./src/app/shared/shared.module.ts","./src/app/shared/tokens/storage.ts","./src/app/shared/tokens/window.ts","./src/app/utils/date.utils.ts","./src/environments/environment.staging.ts","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@angular/common/locales/es-US.mjs","./node_modules/@angular/common/locales/de.mjs","./node_modules/@angular/common/locales/it.mjs","./src/app/containers/layout/layout.containers.module.ts","./src/app/shared/helpers/use-script/use-script.ts","./src/app/utils/util.js","./src/app/containers/layout/topnav/topnav.component.html","./src/app/containers/layout/topnav/topnav.component.ts","./src/app/app.component.ts","./src/app/shared/helpers/google-analytics/google-analytics.ts","./src/app/app.component.html","./src/app/auth/auth.interceptor/auth.interceptor.ts","./src/app/auth/auto-login/auto-login.component.ts","./src/app/auth/forbidden/forbidden.component.ts","./src/app/auth/forbidden/forbidden.component.html","./src/app/settings/settings-tabs/settings-tabs.component.ts","./src/app/settings/settings-tabs/settings-tabs.component.html","./src/app/settings/general-settings/general-settings.component.html","./src/app/settings/general-settings/general-settings.component.ts","./src/app/settings/notifications-settings/profile-notifications/profile-notifications.component.html","./src/app/settings/notifications-settings/profile-notifications/profile-notifications.component.ts","./src/app/settings/notifications-settings/notifications-settings.component.html","./src/app/settings/notifications-settings/notifications-settings.component.ts","./src/app/settings/settings.component.html","./src/app/settings/settings.component.ts","./src/app/auth/unauthorized/unauthorized.component.ts","./src/app/auth/unauthorized/unauthorized.component.html","./src/app/shared/popups/expired-session/expired-session.component.ts","./src/app/shared/popups/expired-session/expired-session.component.html","./src/app/profiles/dashboard-shell/invitation-management/invitation/invitation.component.html","./src/app/profiles/dashboard-shell/invitation-management/invitation/invitation.component.ts","./src/app/shared/popups/sce-promotion/sce-promotion.component.ts","./src/app/shared/popups/sce-promotion/sce-promotion.component.html","./src/app/auth/auth.guard/auth.guard.ts","./src/app/app-routing.module.ts","./src/app/shared/interceptors/http-error/http-error.interceptor.ts","./src/app/shared/helpers/translate-compiler/custom-translate-compiler.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@biesbjerg/ngx-translate-extract-marker/__ivy_ngcc__/fesm2015/biesbjerg-ngx-translate-extract-marker.js","./node_modules/@cordobo/qrcode/lib/browser.js","./node_modules/@cordobo/qrcode/lib/can-promise.js","./node_modules/@cordobo/qrcode/lib/core/alignment-pattern.js","./node_modules/@cordobo/qrcode/lib/core/alphanumeric-data.js","./node_modules/@cordobo/qrcode/lib/core/bit-buffer.js","./node_modules/@cordobo/qrcode/lib/core/bit-matrix.js","./node_modules/@cordobo/qrcode/lib/core/byte-data.js","./node_modules/@cordobo/qrcode/lib/core/error-correction-code.js","./node_modules/@cordobo/qrcode/lib/core/error-correction-level.js","./node_modules/@cordobo/qrcode/lib/core/finder-pattern.js","./node_modules/@cordobo/qrcode/lib/core/format-info.js","./node_modules/@cordobo/qrcode/lib/core/galois-field.js","./node_modules/@cordobo/qrcode/lib/core/kanji-data.js","./node_modules/@cordobo/qrcode/lib/core/mask-pattern.js","./node_modules/@cordobo/qrcode/lib/core/mode.js","./node_modules/@cordobo/qrcode/lib/core/numeric-data.js","./node_modules/@cordobo/qrcode/lib/core/polynomial.js","./node_modules/@cordobo/qrcode/lib/core/qrcode.js","./node_modules/@cordobo/qrcode/lib/core/reed-solomon-encoder.js","./node_modules/@cordobo/qrcode/lib/core/regex.js","./node_modules/@cordobo/qrcode/lib/core/segments.js","./node_modules/@cordobo/qrcode/lib/core/utils.js","./node_modules/@cordobo/qrcode/lib/core/version-check.js","./node_modules/@cordobo/qrcode/lib/core/version.js","./node_modules/@cordobo/qrcode/lib/renderer/canvas.js","./node_modules/@cordobo/qrcode/lib/renderer/svg-tag.js","./node_modules/@cordobo/qrcode/lib/renderer/utils.js","./node_modules/rxjs/_esm2015/internal/operators/retryWhen.js","./node_modules/common-tags/es/TemplateTag/TemplateTag.js","./node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js","./node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js","./node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js","./node_modules/common-tags/es/commaLists/commaLists.js","./node_modules/common-tags/es/commaListsAnd/commaListsAnd.js","./node_modules/common-tags/es/commaListsOr/commaListsOr.js","./node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js","./node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js","./node_modules/common-tags/es/html/html.js","./node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js","./node_modules/common-tags/es/safeHtml/safeHtml.js","./node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js","./node_modules/common-tags/es/oneLine/oneLine.js","./node_modules/common-tags/es/oneLineTrim/oneLineTrim.js","./node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js","./node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js","./node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js","./node_modules/common-tags/es/inlineLists/inlineLists.js","./node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js","./node_modules/common-tags/es/stripIndent/stripIndent.js","./node_modules/common-tags/es/stripIndents/stripIndents.js","./node_modules/angular-auth-oidc-client/__ivy_ngcc__/fesm2015/angular-auth-oidc-client.js","./node_modules/dijkstrajs/dijkstra.js","./node_modules/encode-utf8/index.js","./node_modules/jsrsasign-reduced/jsrsasign.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-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.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/ngx-bootstrap/__ivy_ngcc__/accordion/fesm2015/ngx-bootstrap-accordion.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/chronos/fesm2015/ngx-bootstrap-chronos.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/collapse/fesm2015/ngx-bootstrap-collapse.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/component-loader/fesm2015/ngx-bootstrap-component-loader.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/timepicker/fesm2015/ngx-bootstrap-timepicker.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/tooltip/fesm2015/ngx-bootstrap-tooltip.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/datepicker/fesm2015/ngx-bootstrap-datepicker.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/dropdown/fesm2015/ngx-bootstrap-dropdown.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/positioning/fesm2015/ngx-bootstrap-positioning.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/utils/fesm2015/ngx-bootstrap-utils.js","./node_modules/ngx-chips/node_modules/tslib/tslib.es6.js","./node_modules/ng2-material-dropdown/fesm2015/ng2-material-dropdown.mjs","./node_modules/ngx-chips/__ivy_ngcc__/fesm2015/ngx-chips.js","./node_modules/ngx-infinite-scroll/__ivy_ngcc__/modules/ngx-infinite-scroll.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","./node_modules/ngx-perfect-scrollbar/__ivy_ngcc__/fesm2015/ngx-perfect-scrollbar.js","./node_modules/ssr-window/dist/ssr-window.esm.js","./node_modules/dom7/dist/dom7.modular.js","./node_modules/swiper/js/swiper.esm.bundle.js","./node_modules/ngx-swiper-wrapper/__ivy_ngcc__/fesm2015/ngx-swiper-wrapper.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/util/pipe.js","./node_modules/rxjs/_esm2015/internal/Observer.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/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.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/forkJoin.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/observable/timer.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.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/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.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/retry.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/shareReplay.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/throttle.js","./node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js","./node_modules/rxjs/_esm2015/internal/operators/timeout.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/animationFrame.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.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/TimeoutError.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/isNumeric.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/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/moment/locale|sync|/^/.*$","./node_modules/tslib/tslib.es6.js","./src/assets/css/sass/themes|lazy|/^/vien/..*/.scss$/|groupOptions: {}|namespace object","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./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/@angular/router/fesm2015/router.mjs","./node_modules/rxjs/_esm2015/internal/operators/last.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/util/isObservable.js","./node_modules/@ngx-translate/core/fesm2015/ngx-translate-core.mjs","./node_modules/angular-svg-icon/fesm2015/angular-svg-icon.mjs","./node_modules/angularx-qrcode/fesm2015/angularx-qrcode.mjs","./node_modules/ngx-echarts/fesm2015/ngx-echarts.mjs","./node_modules/ngx-image-cropper/fesm2015/ngx-image-cropper.mjs","./node_modules/ngx-toastr/fesm2015/ngx-toastr.mjs"],"sourcesContent":["import { HttpResponseBase } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { AppSettingsService } from '../shared/services/app-settings/app-settings.service';\n\n\nexport abstract class ApiClientBase {\n public url: string;\n\n constructor() { }\n\n // protected transformOptions(options: any): any {\n // // console.log('HTTP call, options: ' + JSON.stringify(options));\n // return Promise.resolve(options);\n // }\n\n protected transformResult(\n url: string,\n response: HttpResponseBase,\n processor: (resp: HttpResponseBase) => any\n ): Observable {\n return processor(response);\n }\n\n protected getBaseUrl(deafultUrl: string): string {\n return AppSettingsService.walletApiUrl;\n\n }\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.19.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { ApiClientBase } from './api-client-base';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const AUTH_API_URL = new InjectionToken('AUTH_API_URL');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(AUTH_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n register(body: RegistrationRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/auth/register\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRegister(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRegister(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRegister(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RegistrationResponse;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param code (optional) \n * @return Success\n */\n verifyEmail(code: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/auth/verifyEmail?\";\n if (code === null)\n throw new Error(\"The parameter 'code' cannot be null.\");\n else if (code !== undefined)\n url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processVerifyEmail(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processVerifyEmail(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processVerifyEmail(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param lang (optional) \n * @return Success\n */\n requestNewConfirmation(lang: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/auth/requestNewConfirmation?\";\n if (lang === null)\n throw new Error(\"The parameter 'lang' cannot be null.\");\n else if (lang !== undefined)\n url_ += \"lang=\" + encodeURIComponent(\"\" + lang) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRequestNewConfirmation(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRequestNewConfirmation(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRequestNewConfirmation(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n requestPasswordReset(body: InitPasswordResetRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/auth/requestPasswordReset\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRequestPasswordReset(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRequestPasswordReset(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRequestPasswordReset(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n resetPassword(body: ResetPasswordRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/auth/resetPassword\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processResetPassword(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processResetPassword(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processResetPassword(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ResetPasswordResponse;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n changePassword(body: ChangePasswordRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/auth/changePassword\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processChangePassword(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processChangePassword(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processChangePassword(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param userId (optional) \n * @param profileId (optional) \n * @return Success\n */\n claimOwnership(userId: string | undefined, profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/auth/claimOwnership?\";\n if (userId === null)\n throw new Error(\"The parameter 'userId' cannot be null.\");\n else if (userId !== undefined)\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processClaimOwnership(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processClaimOwnership(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processClaimOwnership(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n registrationCodeRequired(): Observable {\n let url_ = this.baseUrl + \"/api/auth/registrationCodeRequired\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRegistrationCodeRequired(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRegistrationCodeRequired(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRegistrationCodeRequired(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param lang (optional) \n * @return Success\n */\n changeLanguage(lang: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/auth/changeLanguage?\";\n if (lang === null)\n throw new Error(\"The parameter 'lang' cannot be null.\");\n else if (lang !== undefined)\n url_ += \"lang=\" + encodeURIComponent(\"\" + lang) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processChangeLanguage(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processChangeLanguage(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processChangeLanguage(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BusinessRolesClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(AUTH_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @return Success\n */\n getRoles(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/businessRoles/{profileId}\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetRoles(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetRoles(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRoles(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BusinessRoleDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getAcceptedNonViewerRoles(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/businessRoles/{profileId}/acceptedNonViewerRoles\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAcceptedNonViewerRoles(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAcceptedNonViewerRoles(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAcceptedNonViewerRoles(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BusinessRoleDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n addRole(body: BusinessRoleDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/businessRoles/addRole\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processAddRole(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAddRole(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAddRole(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n revokeRole(body: BusinessRoleDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/businessRoles/revokeRole\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRevokeRole(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRevokeRole(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRevokeRole(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InvitationLinkClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(AUTH_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param code (optional) \n * @return Success\n * @deprecated\n */\n invitation_link(code: string | undefined): Observable {\n let url_ = this.baseUrl + \"/invitation_link?\";\n if (code === null)\n throw new Error(\"The parameter 'code' cannot be null.\");\n else if (code !== undefined)\n url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processInvitation_link(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processInvitation_link(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processInvitation_link(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param code (optional) \n * @return Success\n */\n invitation(code: string | undefined): Observable {\n let url_ = this.baseUrl + \"/invitation?\";\n if (code === null)\n throw new Error(\"The parameter 'code' cannot be null.\");\n else if (code !== undefined)\n url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processInvitation(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processInvitation(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processInvitation(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TestsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(AUTH_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n requestConfirmation(body: ConfirmationCodeRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/RequestConfirmation\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRequestConfirmation(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRequestConfirmation(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRequestConfirmation(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ConfirmationCodeResponse;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface BusinessRoleDto {\n changeId: string;\n claimId?: number | undefined;\n businessId: string;\n businessName: string;\n businessLogoFullPath: string;\n inviteeEmail: string;\n role: string;\n userId?: string | undefined;\n state?: ChangeState;\n}\n\nexport interface ChangePasswordRequest {\n currentPassword: string;\n newPassword: string;\n language: string;\n}\n\nexport enum ChangeState {\n Invited = \"Invited\",\n Accepted = \"Accepted\",\n Rejected = \"Rejected\",\n Deleted = \"Deleted\",\n}\n\nexport interface ConfirmationCodeRequest {\n email?: string | undefined;\n secret?: string | undefined;\n}\n\nexport interface ConfirmationCodeResponse {\n code?: string | undefined;\n log?: string[] | undefined;\n}\n\nexport interface InitPasswordResetRequest {\n email: string;\n language: string;\n}\n\nexport interface RegistrationRequest {\n registrationCode?: string | undefined;\n email: string;\n password: string;\n acceptAgreements: boolean;\n language: string;\n marketingConsent?: boolean;\n}\n\nexport interface RegistrationResponse {\n userId?: string | undefined;\n log?: string[] | undefined;\n}\n\nexport interface ResetPasswordRequest {\n email: string;\n code: string;\n password: string;\n language: string;\n}\n\nexport interface ResetPasswordResponse {\n log?: string[] | undefined;\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}","//----------------------\n// \n// Generated using the NSwag toolchain v13.19.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { ApiClientBase } from './api-client-base';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const PORTAL_API_URL = new InjectionToken('PORTAL_API_URL');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BusinessClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createBusiness(body: BusinessDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateBusiness(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateBusiness(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateBusiness(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateBusiness(body: BusinessDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateBusiness(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateBusiness(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateBusiness(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getBusiness(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetBusiness(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetBusiness(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetBusiness(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BusinessDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createStore(body: StoreDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/stores\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateStore(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateStore(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateStore(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateStore(body: StoreDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/stores\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateStore(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateStore(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateStore(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param businessId (optional) \n * @param storeId (optional) \n * @return Success\n */\n deleteStore(businessId: string | undefined, storeId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/stores?\";\n if (businessId === null)\n throw new Error(\"The parameter 'businessId' cannot be null.\");\n else if (businessId !== undefined)\n url_ += \"businessId=\" + encodeURIComponent(\"\" + businessId) + \"&\";\n if (storeId === null)\n throw new Error(\"The parameter 'storeId' cannot be null.\");\n else if (storeId !== undefined)\n url_ += \"storeId=\" + encodeURIComponent(\"\" + storeId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeleteStore(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteStore(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteStore(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getStores(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/stores\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetStores(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetStores(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetStores(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StoreWithAddressDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n publishStore(businessId: string, storeId: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/stores/{storeId}/publish\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (storeId === undefined || storeId === null)\n throw new Error(\"The parameter 'storeId' must be defined.\");\n url_ = url_.replace(\"{storeId}\", encodeURIComponent(\"\" + storeId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processPublishStore(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processPublishStore(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPublishStore(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n unpublishStore(businessId: string, storeId: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/stores/{storeId}/unpublish\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (storeId === undefined || storeId === null)\n throw new Error(\"The parameter 'storeId' must be defined.\");\n url_ = url_.replace(\"{storeId}\", encodeURIComponent(\"\" + storeId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUnpublishStore(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUnpublishStore(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUnpublishStore(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getStoreOpeningHours(businessId: string, storeId: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/stores/{storeId}/openinghours\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (storeId === undefined || storeId === null)\n throw new Error(\"The parameter 'storeId' must be defined.\");\n url_ = url_.replace(\"{storeId}\", encodeURIComponent(\"\" + storeId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetStoreOpeningHours(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetStoreOpeningHours(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetStoreOpeningHours(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StoreOpeningHoursDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateStoreAddress(body: StoreAddressDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/storeAddress\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateStoreAddress(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateStoreAddress(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateStoreAddress(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateStoreOpeningHours(body: StoreOpeningHoursDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/openingHours\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateStoreOpeningHours(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateStoreOpeningHours(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateStoreOpeningHours(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param subscriptionDefinitionId (optional) \n * @return Success\n * @deprecated\n */\n checkout(businessId: string, subscriptionDefinitionId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/checkout?\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (subscriptionDefinitionId === null)\n throw new Error(\"The parameter 'subscriptionDefinitionId' cannot be null.\");\n else if (subscriptionDefinitionId !== undefined)\n url_ += \"subscriptionDefinitionId=\" + encodeURIComponent(\"\" + subscriptionDefinitionId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCheckout(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCheckout(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCheckout(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param subscriptionDefinitionId (optional) \n * @param lang (optional) \n * @return Success\n */\n checkoutV2(businessId: string, subscriptionDefinitionId: string | undefined, lang: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/checkoutV2?\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (subscriptionDefinitionId === null)\n throw new Error(\"The parameter 'subscriptionDefinitionId' cannot be null.\");\n else if (subscriptionDefinitionId !== undefined)\n url_ += \"subscriptionDefinitionId=\" + encodeURIComponent(\"\" + subscriptionDefinitionId) + \"&\";\n if (lang === null)\n throw new Error(\"The parameter 'lang' cannot be null.\");\n else if (lang !== undefined)\n url_ += \"lang=\" + encodeURIComponent(\"\" + lang) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCheckoutV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCheckoutV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCheckoutV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreditCardCheckoutResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param actionLink (optional) \n * @param lang (optional) \n * @param payload (optional) \n * @return Success\n * @deprecated\n */\n link4payCheckOutGET(actionLink: string | undefined, lang: string | undefined, payload: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/link4payCheckOut?\";\n if (actionLink === null)\n throw new Error(\"The parameter 'actionLink' cannot be null.\");\n else if (actionLink !== undefined)\n url_ += \"actionLink=\" + encodeURIComponent(\"\" + actionLink) + \"&\";\n if (lang === null)\n throw new Error(\"The parameter 'lang' cannot be null.\");\n else if (lang !== undefined)\n url_ += \"lang=\" + encodeURIComponent(\"\" + lang) + \"&\";\n if (payload === null)\n throw new Error(\"The parameter 'payload' cannot be null.\");\n else if (payload !== undefined)\n url_ += \"payload=\" + encodeURIComponent(\"\" + payload) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processLink4payCheckOutGET(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processLink4payCheckOutGET(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLink4payCheckOutGET(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n link4payCheckOutPOST(body: Link4payCheckoutRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/link4payCheckOut\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processLink4payCheckOutPOST(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processLink4payCheckOutPOST(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLink4payCheckOutPOST(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Link4payCheckoutResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n voucherCheckout(body: RedeemVoucherDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/vouchercheckout\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processVoucherCheckout(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processVoucherCheckout(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processVoucherCheckout(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createEcsPaymentRequest(body: CreateEcsPaymentRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Business/ecspaymentrequest\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateEcsPaymentRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateEcsPaymentRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateEcsPaymentRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateEcsPaymentResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n validateVat(vat: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/validatevat/{vat}\";\n if (vat === undefined || vat === null)\n throw new Error(\"The parameter 'vat' must be defined.\");\n url_ = url_.replace(\"{vat}\", encodeURIComponent(\"\" + vat));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processValidateVat(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processValidateVat(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processValidateVat(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidateVatDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getBlocktradeDetails(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/blocktradedetails\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetBlocktradeDetails(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetBlocktradeDetails(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetBlocktradeDetails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BlocktradeDetailsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n instantTradeOptIn(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/instanttradeoptin\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processInstantTradeOptIn(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processInstantTradeOptIn(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processInstantTradeOptIn(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InstantTradeDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n instantTradeOptOut(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/Business/{businessId}/instanttradeoptout\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processInstantTradeOptOut(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processInstantTradeOptOut(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processInstantTradeOptOut(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InstantTradeDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsumerClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n addConsumerDetails(body: ConsumerDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Consumer\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processAddConsumerDetails(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAddConsumerDetails(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAddConsumerDetails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getConsumerDetails(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Consumer/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetConsumerDetails(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetConsumerDetails(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetConsumerDetails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ConsumerDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DashboardClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param period (optional) \n * @param utcOffsetInMinutes (optional) \n * @return Success\n */\n getMerchantDashboard(period: DashboardPeriods | undefined, profileId: string, utcOffsetInMinutes: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Dashboard/MerchantDashboard/{profileId}?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (period === null)\n throw new Error(\"The parameter 'period' cannot be null.\");\n else if (period !== undefined)\n url_ += \"period=\" + encodeURIComponent(\"\" + period) + \"&\";\n if (utcOffsetInMinutes === null)\n throw new Error(\"The parameter 'utcOffsetInMinutes' cannot be null.\");\n else if (utcOffsetInMinutes !== undefined)\n url_ += \"utcOffsetInMinutes=\" + encodeURIComponent(\"\" + utcOffsetInMinutes) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetMerchantDashboard(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetMerchantDashboard(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetMerchantDashboard(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GoogleServicesClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @return Success\n * @deprecated\n */\n getMeasurementId(): Observable {\n let url_ = this.baseUrl + \"/api/GoogleServices/id\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetMeasurementId(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetMeasurementId(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetMeasurementId(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getConfigurations(): Observable {\n let url_ = this.baseUrl + \"/api/GoogleServices/configurations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetConfigurations(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetConfigurations(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetConfigurations(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GoogleConfigurationsDto;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InvitationClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @return Success\n */\n getInvitationUrlDetails(invitationShortId: string): Observable {\n let url_ = this.baseUrl + \"/InvitationUrlDetails/{invitationShortId}\";\n if (invitationShortId === undefined || invitationShortId === null)\n throw new Error(\"The parameter 'invitationShortId' must be defined.\");\n url_ = url_.replace(\"{invitationShortId}\", encodeURIComponent(\"\" + invitationShortId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetInvitationUrlDetails(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetInvitationUrlDetails(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetInvitationUrlDetails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InvitationUrlDetailsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param utcOffsetInMinutes (optional) \n * @param numberOfDays (optional) \n * @return Success\n */\n getAmbassadorGraphData(profileId: string, utcOffsetInMinutes: number | undefined, numberOfDays: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Invitation/GetAmbassadorGraphData/{profileId}?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (utcOffsetInMinutes === null)\n throw new Error(\"The parameter 'utcOffsetInMinutes' cannot be null.\");\n else if (utcOffsetInMinutes !== undefined)\n url_ += \"utcOffsetInMinutes=\" + encodeURIComponent(\"\" + utcOffsetInMinutes) + \"&\";\n if (numberOfDays === null)\n throw new Error(\"The parameter 'numberOfDays' cannot be null.\");\n else if (numberOfDays !== undefined)\n url_ += \"numberOfDays=\" + encodeURIComponent(\"\" + numberOfDays) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAmbassadorGraphData(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAmbassadorGraphData(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAmbassadorGraphData(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AmbassadorGraphDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n getInvitationProposals(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Invitation/proposals?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetInvitationProposals(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetInvitationProposals(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetInvitationProposals(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InvitationProposalDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n decideOnProposal(id: string, accept: boolean): Observable {\n let url_ = this.baseUrl + \"/api/Invitation/proposals/{id}/{accept}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (accept === undefined || accept === null)\n throw new Error(\"The parameter 'accept' must be defined.\");\n url_ = url_.replace(\"{accept}\", encodeURIComponent(\"\" + accept));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDecideOnProposal(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDecideOnProposal(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDecideOnProposal(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InvoiceClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @return Success\n */\n getInvoices(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Invoice/invoices/{profileId}\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetInvoices(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetInvoices(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetInvoices(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InvoiceDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getInvoiceStatus(invoiceId: string): Observable {\n let url_ = this.baseUrl + \"/api/Invoice/invoices/{invoiceId}/status\";\n if (invoiceId === undefined || invoiceId === null)\n throw new Error(\"The parameter 'invoiceId' must be defined.\");\n url_ = url_.replace(\"{invoiceId}\", encodeURIComponent(\"\" + invoiceId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetInvoiceStatus(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetInvoiceStatus(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetInvoiceStatus(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InvoiceStatus;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n downloadInvoiceAndMemo(profileId: string, docGenerationRequestId: string): Observable {\n let url_ = this.baseUrl + \"/api/Invoice/invoice/{profileId}/{docGenerationRequestId}/download\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (docGenerationRequestId === undefined || docGenerationRequestId === null)\n throw new Error(\"The parameter 'docGenerationRequestId' must be defined.\");\n url_ = url_.replace(\"{docGenerationRequestId}\", encodeURIComponent(\"\" + docGenerationRequestId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDownloadInvoiceAndMemo(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDownloadInvoiceAndMemo(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDownloadInvoiceAndMemo(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return _observableOf({ fileName: fileName, data: responseBlob as any, status: status, headers: _headers });\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Link4payWebHookClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @return Success\n */\n link4payWebHook(): Observable {\n let url_ = this.baseUrl + \"/api/Link4payWebHook\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processLink4payWebHook(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processLink4payWebHook(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLink4payWebHook(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PromotionPopupsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n showScePromotion(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/PromotionPopups/ShowScePromotion?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processShowScePromotion(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processShowScePromotion(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processShowScePromotion(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n promotionPopups(body: PromotionPopupDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/PromotionPopups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processPromotionPopups(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processPromotionPopups(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPromotionPopups(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SceDocumentsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param globalSettingId (optional) \n * @return Success\n */\n sceDocuments(profileId: string, globalSettingId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceDocuments/{profileId}?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (globalSettingId === null)\n throw new Error(\"The parameter 'globalSettingId' cannot be null.\");\n else if (globalSettingId !== undefined)\n url_ += \"globalSettingId=\" + encodeURIComponent(\"\" + globalSettingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processSceDocuments(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSceDocuments(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSceDocuments(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return _observableOf({ fileName: fileName, data: responseBlob as any, status: status, headers: _headers });\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n governancedocsAll(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/SceDocuments/{profileId}/governancedocs\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGovernancedocsAll(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGovernancedocsAll(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGovernancedocsAll(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GovernanceDocumentDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n governancedocs(profileId: string, fileName: string): Observable {\n let url_ = this.baseUrl + \"/api/SceDocuments/{profileId}/governancedocs/{fileName}\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (fileName === undefined || fileName === null)\n throw new Error(\"The parameter 'fileName' must be defined.\");\n url_ = url_.replace(\"{fileName}\", encodeURIComponent(\"\" + fileName));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGovernancedocs(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGovernancedocs(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGovernancedocs(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return _observableOf({ fileName: fileName, data: responseBlob as any, status: status, headers: _headers });\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SceGovernanceClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @return Success\n */\n announcements(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/SceGovernance/{profileId}/announcements\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processAnnouncements(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAnnouncements(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAnnouncements(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GovernanceAnnouncementDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n activedelegates(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/SceGovernance/{profileId}/activedelegates\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processActivedelegates(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processActivedelegates(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processActivedelegates(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceDelegateReportDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SceMembershipClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param pageNumber (optional) \n * @param pageSize (optional) \n * @return Success\n */\n getNewsTickers(profileId: string, pageNumber: number | undefined, pageSize: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/{profileId}/NewsTickers?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (pageNumber === null)\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\n else if (pageNumber !== undefined)\n url_ += \"pageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetNewsTickers(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetNewsTickers(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetNewsTickers(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NewsTickerDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n downloadSceCertificate(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/{profileId}/SceCertificate\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDownloadSceCertificate(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDownloadSceCertificate(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDownloadSceCertificate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return _observableOf({ fileName: fileName, data: responseBlob as any, status: status, headers: _headers });\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @param file (optional) \n * @return Success\n */\n uploadPassport(profileId: string | undefined, file: FileParameter | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/UploadPassport\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (profileId === null || profileId === undefined)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else\n content_.append(\"ProfileId\", profileId.toString());\n if (file === null || file === undefined)\n throw new Error(\"The parameter 'file' cannot be null.\");\n else\n content_.append(\"File\", file.data, file.fileName ? file.fileName : \"File\");\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUploadPassport(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUploadPassport(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUploadPassport(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceMembershipResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param id (optional) \n * @param sceMemberId (optional) \n * @param motivation (optional) \n * @param biography (optional) \n * @param cryptoKnowledge (optional) \n * @param linkedInUrl (optional) \n * @param twitterUrl (optional) \n * @param telegramUrl (optional) \n * @param resumeFile (optional) \n * @param photo_Id (optional) \n * @param photo_Payload (optional) \n * @param photo_MediaType (optional) \n * @param criminalRecordFile (optional) \n * @param utilityBillFile (optional) \n * @return Success\n */\n sceDelegate(id: string | undefined, sceMemberId: string | undefined, motivation: string | undefined, biography: string | undefined, cryptoKnowledge: string | undefined, linkedInUrl: string | undefined, twitterUrl: string | undefined, telegramUrl: string | undefined, resumeFile: FileParameter | undefined, photo_Id: string | undefined, photo_Payload: string | undefined, photo_MediaType: MediaType | undefined, criminalRecordFile: FileParameter | undefined, utilityBillFile: FileParameter | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/SceDelegate\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (id === null || id === undefined)\n throw new Error(\"The parameter 'id' cannot be null.\");\n else\n content_.append(\"Id\", id.toString());\n if (sceMemberId === null || sceMemberId === undefined)\n throw new Error(\"The parameter 'sceMemberId' cannot be null.\");\n else\n content_.append(\"SceMemberId\", sceMemberId.toString());\n if (motivation === null || motivation === undefined)\n throw new Error(\"The parameter 'motivation' cannot be null.\");\n else\n content_.append(\"Motivation\", motivation.toString());\n if (biography === null || biography === undefined)\n throw new Error(\"The parameter 'biography' cannot be null.\");\n else\n content_.append(\"Biography\", biography.toString());\n if (cryptoKnowledge === null || cryptoKnowledge === undefined)\n throw new Error(\"The parameter 'cryptoKnowledge' cannot be null.\");\n else\n content_.append(\"CryptoKnowledge\", cryptoKnowledge.toString());\n if (linkedInUrl === null || linkedInUrl === undefined)\n throw new Error(\"The parameter 'linkedInUrl' cannot be null.\");\n else\n content_.append(\"LinkedInUrl\", linkedInUrl.toString());\n if (twitterUrl === null || twitterUrl === undefined)\n throw new Error(\"The parameter 'twitterUrl' cannot be null.\");\n else\n content_.append(\"TwitterUrl\", twitterUrl.toString());\n if (telegramUrl === null || telegramUrl === undefined)\n throw new Error(\"The parameter 'telegramUrl' cannot be null.\");\n else\n content_.append(\"TelegramUrl\", telegramUrl.toString());\n if (resumeFile === null || resumeFile === undefined)\n throw new Error(\"The parameter 'resumeFile' cannot be null.\");\n else\n content_.append(\"ResumeFile\", resumeFile.data, resumeFile.fileName ? resumeFile.fileName : \"ResumeFile\");\n if (photo_Id === null || photo_Id === undefined)\n throw new Error(\"The parameter 'photo_Id' cannot be null.\");\n else\n content_.append(\"Photo.Id\", photo_Id.toString());\n if (photo_Payload === null || photo_Payload === undefined)\n throw new Error(\"The parameter 'photo_Payload' cannot be null.\");\n else\n content_.append(\"Photo.Payload\", photo_Payload.toString());\n if (photo_MediaType === null || photo_MediaType === undefined)\n throw new Error(\"The parameter 'photo_MediaType' cannot be null.\");\n else\n content_.append(\"Photo.MediaType\", photo_MediaType.toString());\n if (criminalRecordFile === null || criminalRecordFile === undefined)\n throw new Error(\"The parameter 'criminalRecordFile' cannot be null.\");\n else\n content_.append(\"CriminalRecordFile\", criminalRecordFile.data, criminalRecordFile.fileName ? criminalRecordFile.fileName : \"CriminalRecordFile\");\n if (utilityBillFile === null || utilityBillFile === undefined)\n throw new Error(\"The parameter 'utilityBillFile' cannot be null.\");\n else\n content_.append(\"UtilityBillFile\", utilityBillFile.data, utilityBillFile.fileName ? utilityBillFile.fileName : \"UtilityBillFile\");\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processSceDelegate(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSceDelegate(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSceDelegate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param votingConfigurationId (optional) \n * @return Success\n */\n sceDelegateStatus(sceMemberId: string, votingConfigurationId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/SceDelegate/{sceMemberId}/status?\";\n if (sceMemberId === undefined || sceMemberId === null)\n throw new Error(\"The parameter 'sceMemberId' must be defined.\");\n url_ = url_.replace(\"{sceMemberId}\", encodeURIComponent(\"\" + sceMemberId));\n if (votingConfigurationId === null)\n throw new Error(\"The parameter 'votingConfigurationId' cannot be null.\");\n else if (votingConfigurationId !== undefined)\n url_ += \"votingConfigurationId=\" + encodeURIComponent(\"\" + votingConfigurationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processSceDelegateStatus(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSceDelegateStatus(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSceDelegateStatus(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceDelegateStatusResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getSceDelegateDetails(sceMemberId: string): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/SceDelegate/{sceMemberId}/details\";\n if (sceMemberId === undefined || sceMemberId === null)\n throw new Error(\"The parameter 'sceMemberId' must be defined.\");\n url_ = url_.replace(\"{sceMemberId}\", encodeURIComponent(\"\" + sceMemberId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSceDelegateDetails(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSceDelegateDetails(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSceDelegateDetails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceDelegateDetailsResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param votingConfigurationId (optional) \n * @return Success\n */\n getValidatedSceDelegate(sceMemberId: string, votingConfigurationId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/SceDelegate/{sceMemberId}?\";\n if (sceMemberId === undefined || sceMemberId === null)\n throw new Error(\"The parameter 'sceMemberId' must be defined.\");\n url_ = url_.replace(\"{sceMemberId}\", encodeURIComponent(\"\" + sceMemberId));\n if (votingConfigurationId === null)\n throw new Error(\"The parameter 'votingConfigurationId' cannot be null.\");\n else if (votingConfigurationId !== undefined)\n url_ += \"votingConfigurationId=\" + encodeURIComponent(\"\" + votingConfigurationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetValidatedSceDelegate(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetValidatedSceDelegate(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetValidatedSceDelegate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceDelegateDetailsResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param votingConfigurationId (optional) \n * @return Success\n */\n getSceDelegates(votingConfigurationId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/SceDelegates?\";\n if (votingConfigurationId === null)\n throw new Error(\"The parameter 'votingConfigurationId' cannot be null.\");\n else if (votingConfigurationId !== undefined)\n url_ += \"votingConfigurationId=\" + encodeURIComponent(\"\" + votingConfigurationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSceDelegates(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSceDelegates(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSceDelegates(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceDelegateDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param votingConfigurationId (optional) \n * @return Success\n */\n downloadSceDelegateResume(sceMemberId: string, votingConfigurationId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/SceDelegate/{sceMemberId}/resume?\";\n if (sceMemberId === undefined || sceMemberId === null)\n throw new Error(\"The parameter 'sceMemberId' must be defined.\");\n url_ = url_.replace(\"{sceMemberId}\", encodeURIComponent(\"\" + sceMemberId));\n if (votingConfigurationId === null)\n throw new Error(\"The parameter 'votingConfigurationId' cannot be null.\");\n else if (votingConfigurationId !== undefined)\n url_ += \"votingConfigurationId=\" + encodeURIComponent(\"\" + votingConfigurationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDownloadSceDelegateResume(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDownloadSceDelegateResume(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDownloadSceDelegateResume(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return _observableOf({ fileName: fileName, data: responseBlob as any, status: status, headers: _headers });\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param sceDelegateFileType (optional) \n * @return Success\n */\n downloadSceDelegateFile(sceMemberId: string, sceDelegateFileType: SceDelegateFileType | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/SceDelegate/{sceMemberId}/download?\";\n if (sceMemberId === undefined || sceMemberId === null)\n throw new Error(\"The parameter 'sceMemberId' must be defined.\");\n url_ = url_.replace(\"{sceMemberId}\", encodeURIComponent(\"\" + sceMemberId));\n if (sceDelegateFileType === null)\n throw new Error(\"The parameter 'sceDelegateFileType' cannot be null.\");\n else if (sceDelegateFileType !== undefined)\n url_ += \"sceDelegateFileType=\" + encodeURIComponent(\"\" + sceDelegateFileType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDownloadSceDelegateFile(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDownloadSceDelegateFile(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDownloadSceDelegateFile(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return _observableOf({ fileName: fileName, data: responseBlob as any, status: status, headers: _headers });\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n cancelSceDelegateRequest(sceMemberId: string): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/SceDelegates/{sceMemberId}/cancel\";\n if (sceMemberId === undefined || sceMemberId === null)\n throw new Error(\"The parameter 'sceMemberId' must be defined.\");\n url_ = url_.replace(\"{sceMemberId}\", encodeURIComponent(\"\" + sceMemberId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCancelSceDelegateRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCancelSceDelegateRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCancelSceDelegateRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param count (optional) \n * @return Success\n */\n getLatestVotingResults(profileId: string, count: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/{profileId}/Votings/latestResults?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetLatestVotingResults(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetLatestVotingResults(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetLatestVotingResults(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VotingResultDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param count (optional) \n * @return Success\n */\n getUncompletedVotings(profileId: string, count: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/SceMembership/{profileId}/Votings/uncompleted?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetUncompletedVotings(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetUncompletedVotings(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetUncompletedVotings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VotingDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SubscriptionClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n getOfferedSubscriptions(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/offered?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetOfferedSubscriptions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetOfferedSubscriptions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetOfferedSubscriptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubscriptionDefinitionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n * @deprecated\n */\n getOfferedAmbassadorSubscriptions(): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/offered/ambassador\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetOfferedAmbassadorSubscriptions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetOfferedAmbassadorSubscriptions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetOfferedAmbassadorSubscriptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubscriptionDefinitionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n * @deprecated\n */\n getOfferedSceMembershipSubscriptions(): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/offered/scemembership\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetOfferedSceMembershipSubscriptions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetOfferedSceMembershipSubscriptions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetOfferedSceMembershipSubscriptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubscriptionDefinitionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getActiveSubscriptions(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/profile/{id}/active\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetActiveSubscriptions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetActiveSubscriptions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetActiveSubscriptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubscriptionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getProfileAvailableSubscriptions(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/profile/{id}/available\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProfileAvailableSubscriptions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProfileAvailableSubscriptions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetProfileAvailableSubscriptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubscriptionDefinitionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getProfileSubscriptionLimits(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/profile/{id}/limits\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProfileSubscriptionLimits(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProfileSubscriptionLimits(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetProfileSubscriptionLimits(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubscriptionLimitDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param paymentOption (optional) \n * @return Success\n */\n getSubsriptionPriceSummary(id: string, subscriptionDefinitonId: string, paymentOption: PaymentOption | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/profile/{id}/{subscriptionDefinitonId}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (subscriptionDefinitonId === undefined || subscriptionDefinitonId === null)\n throw new Error(\"The parameter 'subscriptionDefinitonId' must be defined.\");\n url_ = url_.replace(\"{subscriptionDefinitonId}\", encodeURIComponent(\"\" + subscriptionDefinitonId));\n if (paymentOption === null)\n throw new Error(\"The parameter 'paymentOption' cannot be null.\");\n else if (paymentOption !== undefined)\n url_ += \"paymentOption=\" + encodeURIComponent(\"\" + paymentOption) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSubsriptionPriceSummary(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSubsriptionPriceSummary(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSubsriptionPriceSummary(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubscriptionPriceSummaryDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n createBasicBusinessSubscription(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/profile/{id}/basicsubscription\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateBasicBusinessSubscription(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateBasicBusinessSubscription(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateBasicBusinessSubscription(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n requestSceMembership(body: SceMembershipRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/SceMembership\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRequestSceMembership(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRequestSceMembership(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRequestSceMembership(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceMembershipResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getSceMembershipStatus(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/sceMembership/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSceMembershipStatus(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSceMembershipStatus(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSceMembershipStatus(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceMembershipResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getSceMembershipDetails(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/sceMembership/{id}/details\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSceMembershipDetails(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSceMembershipDetails(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSceMembershipDetails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SceMembershipDetailsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getAllProfileSubscriptions(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Subscription/profile/{id}/all\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProfileSubscriptions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProfileSubscriptions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAllProfileSubscriptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubscriptionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TestClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createBusiness2(body: CreateBusinessRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/CreateBusiness\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateBusiness2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateBusiness2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateBusiness2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n setInstantTrade(body: SetInstantTradeDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/SetInstantTrade\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processSetInstantTrade(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetInstantTrade(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSetInstantTrade(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createSubscription(body: SubscriptionRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/CreateSubscription\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateSubscription(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateSubscription(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateSubscription(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n enrollSceMember(body: SceMemberRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/EnrollSceMember\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processEnrollSceMember(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processEnrollSceMember(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processEnrollSceMember(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @return Success\n */\n getUserLang(): Observable {\n let url_ = this.baseUrl + \"/api/User/lang\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetUserLang(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetUserLang(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetUserLang(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserLanguageDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WebWidgetClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(PORTAL_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n /**\n * @param webHookId (optional) \n * @return Success\n */\n getRecentAttempts(businessId: string, webHookId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/attempts?\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (webHookId === null)\n throw new Error(\"The parameter 'webHookId' cannot be null.\");\n else if (webHookId !== undefined)\n url_ += \"webHookId=\" + encodeURIComponent(\"\" + webHookId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetRecentAttempts(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetRecentAttempts(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRecentAttempts(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as WebHookAttemptDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getWebHooks(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/webhooks\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetWebHooks(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetWebHooks(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetWebHooks(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as WebHookDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createWebhook(businessId: string, body: WebHookDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/webhooks\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateWebhook(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateWebhook(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateWebhook(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateWebhook(businessId: string, body: WebHookDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/webhooks\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateWebhook(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateWebhook(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateWebhook(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getWebHook(businessId: string, webHookId: string): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/webhooks/{webHookId}\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (webHookId === undefined || webHookId === null)\n throw new Error(\"The parameter 'webHookId' must be defined.\");\n url_ = url_.replace(\"{webHookId}\", encodeURIComponent(\"\" + webHookId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetWebHook(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetWebHook(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetWebHook(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as WebHookDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n deleteWebHook(businessId: string, webHookId: string): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/webhooks/{webHookId}\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (webHookId === undefined || webHookId === null)\n throw new Error(\"The parameter 'webHookId' must be defined.\");\n url_ = url_.replace(\"{webHookId}\", encodeURIComponent(\"\" + webHookId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeleteWebHook(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteWebHook(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteWebHook(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n createApiKey(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/apikeys\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateApiKey(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateApiKey(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateApiKey(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NewApiKeyDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getApiKeys(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/apikeys\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetApiKeys(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetApiKeys(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetApiKeys(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApiKeyDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n deleteApiKey(businessId: string, keyId: string): Observable {\n let url_ = this.baseUrl + \"/api/WebWidget/{businessId}/apikeys/{keyId}\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n if (keyId === undefined || keyId === null)\n throw new Error(\"The parameter 'keyId' must be defined.\");\n url_ = url_.replace(\"{keyId}\", encodeURIComponent(\"\" + keyId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeleteApiKey(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteApiKey(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteApiKey(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface AmbassadorGraphDto {\n date?: Date;\n acceptedInvitationsCount?: number;\n}\n\nexport interface ApiKeyDto {\n id: string;\n startsWith?: string | undefined;\n createdAt?: Date;\n}\n\nexport interface BlocktradeDetailsDto {\n email?: string | undefined;\n accountType?: string | undefined;\n instantExchangeEnabled?: boolean;\n}\n\nexport interface BusinessDto {\n id: string;\n legalName: string;\n displayName?: string | undefined;\n email: string;\n phone: string;\n website?: string | undefined;\n taxId?: string | undefined;\n countryId: string;\n state?: string | undefined;\n city: string;\n postalCode: string;\n street: string;\n additionalLine?: string | undefined;\n profileImage?: ImageDto;\n companyRegistrationNumber?: string | undefined;\n location?: LocationDto;\n myWorldId?: string | undefined;\n myWorldDealerNumber?: string | undefined;\n myWorldShopperNumber?: string | undefined;\n myWorldMarketerNumber?: string | undefined;\n representativeName: string;\n blocktradeKey?: string | undefined;\n sceMember: boolean;\n sceMemberStatus?: SceMemberStatus;\n enrolledAmbassador: boolean;\n invitationLink?: string | undefined;\n blocktradeUserId?: number | undefined;\n blocktradeUserAddress?: string | undefined;\n instantTradeApproval?: string | undefined;\n sceMemberFullName?: string | undefined;\n sceMemberDateOfBirth?: Date | undefined;\n sceMemberEmail?: string | undefined;\n sceMemberUserId?: string | undefined;\n inviterName?: string | undefined;\n preferredFiatCurrency?: string | undefined;\n}\n\nexport interface ConsumerDto {\n id: string;\n fullName: string;\n countryId: string;\n state?: string | undefined;\n city: string;\n postalCode: string;\n street: string;\n additionalLine?: string | undefined;\n dateOfBirth?: Date | undefined;\n isPep?: boolean | undefined;\n inviterName?: string | undefined;\n}\n\nexport interface CreateBusinessRequest {\n accessToken?: string | undefined;\n secret?: string | undefined;\n}\n\nexport interface CreateEcsPaymentRequestDto {\n id: string;\n profileId: string;\n subscriptionDefinitionId: string;\n countryAlphaThreeCode?: string | undefined;\n}\n\nexport interface CreateEcsPaymentResponseDto {\n bruttoPrice: number;\n ecsAmount: number;\n expiresAt: Date;\n invoiceId: string;\n}\n\nexport interface CreditCardCheckoutResponseDto {\n isStripe?: boolean;\n sessionId?: string | undefined;\n actionUrl?: string | undefined;\n payload?: string | undefined;\n lang?: string | undefined;\n}\n\nexport interface DashboardDto {\n kpis?: KpiValue[] | undefined;\n turnOverIncomingGraph?: DecimalGraph[] | undefined;\n transactionCountGraph?: IntegerGraph[] | undefined;\n}\n\nexport enum DashboardPeriods {\n LastSevenDays = \"LastSevenDays\",\n LastThirtyDays = \"LastThirtyDays\",\n LastSixMonths = \"LastSixMonths\",\n CurrentYear = \"CurrentYear\",\n}\n\nexport enum DayOfWeek {\n Sunday = \"Sunday\",\n Monday = \"Monday\",\n Tuesday = \"Tuesday\",\n Wednesday = \"Wednesday\",\n Thursday = \"Thursday\",\n Friday = \"Friday\",\n Saturday = \"Saturday\",\n}\n\nexport interface DecimalGraph {\n date?: Date;\n amount?: number;\n}\n\nexport interface Discount {\n invoiceId?: string;\n position?: number;\n amount?: number;\n title?: string | undefined;\n type?: DiscountType;\n}\n\nexport enum DiscountType {\n SceMembership = \"SceMembership\",\n GoldPersonal = \"GoldPersonal\",\n Voucher = \"Voucher\",\n}\n\nexport interface GoogleConfigurationsDto {\n analyticsMeasurementId?: string | undefined;\n siteKey?: string | undefined;\n}\n\nexport interface GovernanceAnnouncementDto {\n id?: string;\n title?: string | undefined;\n description?: string | undefined;\n buttonText?: string | undefined;\n buttonLink?: string | undefined;\n publishDate?: Date;\n createdAt?: Date;\n}\n\nexport interface GovernanceDocumentDto {\n fileName?: string | undefined;\n createdAt?: Date;\n modifiedAt?: Date;\n}\n\nexport interface ImageDto {\n id?: string | undefined;\n payload?: string | undefined;\n mediaType?: MediaType;\n}\n\nexport interface InstantTradeDto {\n businessId: string;\n errorMessage?: string | undefined;\n}\n\nexport interface IntegerGraph {\n date?: Date;\n count?: number;\n}\n\nexport interface InvitationProposalDto {\n id?: string;\n inviterEmail?: string | undefined;\n inviterLegalName?: string | undefined;\n createdAt?: Date;\n}\n\nexport interface InvitationUrlDetailsDto {\n inviterLegalName?: string | undefined;\n inviterEmail?: string | undefined;\n dynamicLink?: string | undefined;\n shortId?: string | undefined;\n}\n\nexport interface InvoiceDto {\n invoiceId?: string | undefined;\n docGenerationRequestId?: string;\n invoiceNumber?: string | undefined;\n amount?: number;\n createdAt?: Date;\n isMemo?: boolean;\n}\n\nexport enum InvoiceStatus {\n Created = \"Created\",\n Requested = \"Requested\",\n Generated = \"Generated\",\n Unknown = \"Unknown\",\n}\n\nexport interface KpiValue {\n kpi?: Kpis;\n value?: any | undefined;\n}\n\nexport enum Kpis {\n TurnOverIncomingEcs = \"TurnOverIncomingEcs\",\n TotalSpentEcs = \"TotalSpentEcs\",\n IncomingTransactionsCount = \"IncomingTransactionsCount\",\n OutgoingTransactionsCount = \"OutgoingTransactionsCount\",\n RefundsCount = \"RefundsCount\",\n TotalRefundsEcs = \"TotalRefundsEcs\",\n}\n\nexport interface Link4payCheckoutRequestDto {\n actionLink: string;\n lang: string;\n payload: string;\n}\n\nexport interface Link4payCheckoutResponseDto {\n htmlPayload?: string | undefined;\n}\n\nexport interface LocationDto {\n latitude?: number;\n longitude?: number;\n}\n\nexport enum MediaType {\n Unknown = \"Unknown\",\n JPG = \"JPG\",\n PNG = \"PNG\",\n GIF = \"GIF\",\n SVG = \"SVG\",\n}\n\nexport interface NewApiKeyDto {\n clearTextValue: string;\n}\n\nexport interface NewsTickerDto {\n id?: string;\n newsText?: string | undefined;\n newsLinkUrl?: string | undefined;\n newsLinkName?: string | undefined;\n publishDate?: Date;\n}\n\nexport interface OpeningHoursDto {\n id: string;\n dayOfWeek: DayOfWeek;\n start: number;\n end: number;\n}\n\nexport enum PaymentOption {\n Unknown = \"Unknown\",\n Stripe = \"Stripe\",\n ECredits = \"ECredits\",\n MyWorld = \"MyWorld\",\n Voucher = \"Voucher\",\n Link4Pay = \"Link4Pay\",\n}\n\nexport enum PersonalSubscriptionType {\n None = \"None\",\n Gold = \"Gold\",\n Platinum = \"Platinum\",\n}\n\nexport enum PromotionPopupDecisionType {\n None = \"None\",\n Skip = \"Skip\",\n Apply = \"Apply\",\n}\n\nexport interface PromotionPopupDto {\n profileId?: string;\n decision?: PromotionPopupDecisionType;\n}\n\nexport interface RedeemVoucherDto {\n businessId: string;\n voucherCode: string;\n subscriptionId: string;\n recaptchaToken: string;\n}\n\nexport interface SceDelegateDetailsResponseDto {\n id?: string;\n sceMemberId?: string;\n legalName?: string | undefined;\n status?: SceDelegateStatus;\n photoBase64?: string | undefined;\n motivation?: string | undefined;\n biography?: string | undefined;\n cryptoKnowledge?: string | undefined;\n linkedInUrl?: string | undefined;\n twitterUrl?: string | undefined;\n telegramUrl?: string | undefined;\n resumeFilePath?: string | undefined;\n}\n\nexport interface SceDelegateDto {\n id?: string;\n sceMemberId?: string;\n legalName?: string | undefined;\n status?: SceDelegateStatus;\n photoBase64?: string | undefined;\n}\n\nexport enum SceDelegateFileType {\n Resume = \"Resume\",\n UtilityBill = \"UtilityBill\",\n CriminalRecord = \"CriminalRecord\",\n Photo = \"Photo\",\n}\n\nexport interface SceDelegateReportDto {\n id?: string;\n legalName?: string | undefined;\n votingPercentage?: number;\n}\n\nexport enum SceDelegateStatus {\n Applied = \"Applied\",\n Validated = \"Validated\",\n Rejected = \"Rejected\",\n Cancelled = \"Cancelled\",\n ToBeVoted = \"ToBeVoted\",\n Active = \"Active\",\n Expired = \"Expired\",\n}\n\nexport interface SceDelegateStatusResponseDto {\n sceMemberId?: string;\n status?: SceDelegateStatus;\n}\n\nexport interface SceMemberRequestDto {\n secret?: string | undefined;\n profileId?: string;\n}\n\nexport enum SceMemberStatus {\n NotMember = \"NotMember\",\n PassportRequired = \"PassportRequired\",\n Requested = \"Requested\",\n ToBePaid = \"ToBePaid\",\n ToBeApproved = \"ToBeApproved\",\n Approved = \"Approved\",\n Declined = \"Declined\",\n Active = \"Active\",\n Offboarding = \"Offboarding\",\n ToBeRefunded = \"ToBeRefunded\",\n Refunded = \"Refunded\",\n}\n\nexport interface SceMembershipDetailsDto {\n status?: SceMemberStatus;\n startDate?: Date | undefined;\n sceMemberFullName?: string | undefined;\n sceMemberEmail?: string | undefined;\n}\n\nexport interface SceMembershipRequestDto {\n profileId: string;\n fullName?: string | undefined;\n email?: string | undefined;\n dateOfBirth?: Date;\n isPep?: boolean | undefined;\n countryId: string;\n state?: string | undefined;\n city: string;\n postalCode: string;\n street: string;\n additionalLine?: string | undefined;\n}\n\nexport interface SceMembershipResponseDto {\n profileId?: string;\n status?: SceMemberStatus;\n}\n\nexport interface SetInstantTradeDto {\n businessId?: string;\n enable?: boolean;\n secret?: string | undefined;\n}\n\nexport interface StoreAddressDto {\n id: string;\n countryId?: string | undefined;\n state?: string | undefined;\n city?: string | undefined;\n postalCode?: string | undefined;\n street: string;\n additionalLine?: string | undefined;\n location?: LocationDto;\n}\n\nexport interface StoreDto {\n id: string;\n businessId: string;\n categoryId: number;\n name: string;\n internalName?: string | undefined;\n isOnline?: boolean;\n isPublished?: boolean;\n description?: string | undefined;\n website?: string | undefined;\n email?: string | undefined;\n phoneNumber?: string | undefined;\n logo?: ImageDto;\n keywords?: string[] | undefined;\n isDeleted: boolean;\n}\n\nexport interface StoreOpeningHoursDto {\n id: string;\n openingHours?: OpeningHoursDto[] | undefined;\n}\n\nexport interface StoreWithAddressDto {\n store?: StoreDto;\n address?: StoreAddressDto;\n}\n\nexport interface SubscriptionDefinitionDto {\n id: string;\n subscriptionPricingId: string;\n name: string;\n subscriptionType?: SubscriptionType;\n durationMonths: number;\n priceNetto: number;\n priceBrutto: number;\n vatPercentage: number;\n discount: number;\n commission: boolean;\n maxActiveStores: number;\n maxActiveDeals: number;\n maxOwners: number;\n maxManagers: number;\n maxViewers: number;\n maxCashiers: number;\n nonTaxableFees?: number;\n isMembership?: boolean;\n extensionDurationMonths?: number;\n extensionPriceNetto?: number;\n upgradableTo?: string | undefined;\n extensionPriceBrutto?: number;\n disabled?: boolean;\n disabledReason?: string | undefined;\n personalSubscriptionType?: PersonalSubscriptionType;\n}\n\nexport interface SubscriptionDto {\n id?: string;\n definition?: SubscriptionDefinitionDto;\n profileId?: string;\n startedAt?: Date;\n endsAt?: Date;\n activated?: boolean;\n}\n\nexport interface SubscriptionLimitDto {\n maxActiveStores: number;\n maxActiveDeals: number;\n maxOwners: number;\n maxManagers: number;\n maxViewers: number;\n maxCashiers: number;\n activeStores: number;\n}\n\nexport interface SubscriptionPriceSummaryDto {\n priceNetto: number;\n priceBrutto: number;\n vatPercentage: number;\n vatAmount: number;\n totalAmount: number;\n subscriptionName: string;\n subscriptionDuration: number;\n countryName: string;\n countryId: string;\n paymentOption: PaymentOption;\n nonTaxableFees?: number;\n nonTaxableFeesTitle?: string | undefined;\n isMembership?: boolean;\n personalSubscriptionType?: PersonalSubscriptionType;\n discounts?: Discount[] | undefined;\n}\n\nexport interface SubscriptionRequestDto {\n secret?: string | undefined;\n profileId?: string;\n subscriptionDefinitionId?: string;\n generateConsumerDetails?: boolean;\n}\n\nexport enum SubscriptionType {\n Business = \"Business\",\n Personal = \"Personal\",\n Ambassador = \"Ambassador\",\n SceMembership = \"SceMembership\",\n}\n\nexport interface UserLanguageDto {\n language?: string | undefined;\n}\n\nexport interface ValidateVatCompanyPayload {\n vat_number?: string | undefined;\n country_code?: string | undefined;\n company_name?: string | undefined;\n company_address?: string | undefined;\n}\n\nexport interface ValidateVatDataPayload {\n valid?: boolean;\n company?: ValidateVatCompanyPayload;\n}\n\nexport interface ValidateVatDto {\n success?: boolean;\n code?: number;\n data?: ValidateVatDataPayload;\n consultation_number?: string | undefined;\n error?: ValidateVatErrorPayload;\n}\n\nexport interface ValidateVatErrorPayload {\n title?: string | undefined;\n detail?: string | undefined;\n}\n\nexport interface VotingDto {\n id?: string;\n title?: string | undefined;\n description?: string | undefined;\n startDate?: Date;\n}\n\nexport interface VotingOptionResultDto {\n id?: string;\n name?: string | undefined;\n numberOfVotes?: number;\n}\n\nexport interface VotingResultDto {\n id?: string;\n title?: string | undefined;\n description?: string | undefined;\n endDate?: Date;\n totalVotes?: number;\n options?: VotingOptionResultDto[] | undefined;\n}\n\nexport interface WebHookAttemptDto {\n id?: string;\n webHookId: string;\n requestId: string;\n status: WebHookAttemptStatus;\n startedAt?: Date | undefined;\n finishedAt?: Date | undefined;\n scheduledFor?: Date | undefined;\n response: string;\n requestPayload: string;\n createdAt: Date;\n}\n\nexport enum WebHookAttemptStatus {\n Scheduled = \"Scheduled\",\n Success = \"Success\",\n Failed = \"Failed\",\n}\n\nexport interface WebHookDto {\n id?: string;\n profileId: string;\n url: string;\n signingSecret: string;\n createdAt?: Date;\n modifiedAt?: Date;\n test: boolean;\n}\n\nexport interface FileParameter {\n data: any;\n fileName: string;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}","//----------------------\n// \n// Generated using the NSwag toolchain v13.16.1.0 (NJsonSchema v10.7.2.0 (Newtonsoft.Json v11.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { ApiClientBase } from './api-client-base';\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const WALLET_API_URL = new InjectionToken('WALLET_API_URL');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ActSwapClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n prepareSwapRequests(body: PrepareSwapRequestsDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/ActSwap/prepare\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processPrepareSwapRequests(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processPrepareSwapRequests(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPrepareSwapRequests(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SwapRequestsResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AirdropsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createMarketerBalance(body: CreateMarketerBalanceDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Airdrops/pp/balance\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateMarketerBalance(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateMarketerBalance(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateMarketerBalance(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getAirdropAmount(number: string): Observable {\n let url_ = this.baseUrl + \"/api/Airdrops/pp/{number}\";\n if (number === undefined || number === null)\n throw new Error(\"The parameter 'number' must be defined.\");\n url_ = url_.replace(\"{number}\", encodeURIComponent(\"\" + number));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAirdropAmount(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAirdropAmount(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAirdropAmount(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GetAirdropAmountResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n triggerAirdrop(number: string, profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Airdrops/pp/{number}/trigger?\";\n if (number === undefined || number === null)\n throw new Error(\"The parameter 'number' must be defined.\");\n url_ = url_.replace(\"{number}\", encodeURIComponent(\"\" + number));\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processTriggerAirdrop(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processTriggerAirdrop(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processTriggerAirdrop(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BackupClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @return Success\n */\n generateSalt(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Backup/{profileId}/salt\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGenerateSalt(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGenerateSalt(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGenerateSalt(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param code (optional) \n * @return Success\n */\n getSalt(profileId: string, code: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Backup/{profileId}/salt?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (code === null)\n throw new Error(\"The parameter 'code' cannot be null.\");\n else if (code !== undefined)\n url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSalt(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSalt(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSalt(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param requestId (optional) \n * @return Success\n */\n createRequest(profileId: string, requestId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Backup/{profileId}/request?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (requestId === null)\n throw new Error(\"The parameter 'requestId' cannot be null.\");\n else if (requestId !== undefined)\n url_ += \"requestId=\" + encodeURIComponent(\"\" + requestId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BlockExplorerClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n getBalances(body: BalancesRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/balances\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetBalances(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetBalances(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetBalances(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BalanceDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @param targetCurrency (optional) \n * @return Success\n */\n getTransaction(txHash: string, profileId: string | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/txs/{txHash}?\";\n if (txHash === undefined || txHash === null)\n throw new Error(\"The parameter 'txHash' must be defined.\");\n url_ = url_.replace(\"{txHash}\", encodeURIComponent(\"\" + txHash));\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetTransaction(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetTransaction(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTransaction(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @param tokenAddress (optional) \n * @param count (optional) \n * @param targetCurrency (optional) \n * @return Success\n */\n getAllRecent(profileId: string | undefined, tokenAddress: string | undefined, count: number | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/txs?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (tokenAddress === null)\n throw new Error(\"The parameter 'tokenAddress' cannot be null.\");\n else if (tokenAddress !== undefined)\n url_ += \"tokenAddress=\" + encodeURIComponent(\"\" + tokenAddress) + \"&\";\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllRecent(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllRecent(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAllRecent(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n getAmbassadorTransactionsPagination(body: GetAmbassadorTransactionsRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/txs/ambassador\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAmbassadorTransactionsPagination(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAmbassadorTransactionsPagination(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAmbassadorTransactionsPagination(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n searchTransactionsPagination(body: SearchTransactionsRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/txs/searchpagination\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processSearchTransactionsPagination(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSearchTransactionsPagination(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSearchTransactionsPagination(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param tokenAddress (optional) \n * @param startingFromBlock (optional) \n * @param count (optional) \n * @param targetCurrency (optional) \n * @return Success\n * @deprecated\n */\n getTransactions(address: string, tokenAddress: string | undefined, startingFromBlock: number | undefined, count: number | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/{address}/txs?\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined.\");\n url_ = url_.replace(\"{address}\", encodeURIComponent(\"\" + address));\n if (tokenAddress === null)\n throw new Error(\"The parameter 'tokenAddress' cannot be null.\");\n else if (tokenAddress !== undefined)\n url_ += \"tokenAddress=\" + encodeURIComponent(\"\" + tokenAddress) + \"&\";\n if (startingFromBlock === null)\n throw new Error(\"The parameter 'startingFromBlock' cannot be null.\");\n else if (startingFromBlock !== undefined)\n url_ += \"startingFromBlock=\" + encodeURIComponent(\"\" + startingFromBlock) + \"&\";\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetTransactions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetTransactions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTransactions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param tokenAddress (optional) \n * @param startingFromBlock (optional) \n * @param targetCurrency (optional) \n * @return Success\n */\n getTransactionCount(address: string, tokenAddress: string | undefined, startingFromBlock: number | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/{address}/txcount?\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined.\");\n url_ = url_.replace(\"{address}\", encodeURIComponent(\"\" + address));\n if (tokenAddress === null)\n throw new Error(\"The parameter 'tokenAddress' cannot be null.\");\n else if (tokenAddress !== undefined)\n url_ += \"tokenAddress=\" + encodeURIComponent(\"\" + tokenAddress) + \"&\";\n if (startingFromBlock === null)\n throw new Error(\"The parameter 'startingFromBlock' cannot be null.\");\n else if (startingFromBlock !== undefined)\n url_ += \"startingFromBlock=\" + encodeURIComponent(\"\" + startingFromBlock) + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetTransactionCount(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetTransactionCount(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTransactionCount(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param tokenAddress (optional) \n * @param count (optional) \n * @param targetCurrency (optional) \n * @return Success\n */\n getRecentTransactions(address: string, tokenAddress: string | undefined, count: number | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/{address}/recent?\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined.\");\n url_ = url_.replace(\"{address}\", encodeURIComponent(\"\" + address));\n if (tokenAddress === null)\n throw new Error(\"The parameter 'tokenAddress' cannot be null.\");\n else if (tokenAddress !== undefined)\n url_ += \"tokenAddress=\" + encodeURIComponent(\"\" + tokenAddress) + \"&\";\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetRecentTransactions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetRecentTransactions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRecentTransactions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param count (optional) \n * @param tokenAddress (optional) \n * @param watermarkBlock (optional) \n * @param watermarkIndex (optional) \n * @param targetCurrency (optional) \n * @return Success\n */\n getLastTransactions(address: string, count: number | undefined, tokenAddress: string | undefined, watermarkBlock: number | undefined, watermarkIndex: number | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/{address}/last?\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined.\");\n url_ = url_.replace(\"{address}\", encodeURIComponent(\"\" + address));\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n if (tokenAddress === null)\n throw new Error(\"The parameter 'tokenAddress' cannot be null.\");\n else if (tokenAddress !== undefined)\n url_ += \"tokenAddress=\" + encodeURIComponent(\"\" + tokenAddress) + \"&\";\n if (watermarkBlock === null)\n throw new Error(\"The parameter 'watermarkBlock' cannot be null.\");\n else if (watermarkBlock !== undefined)\n url_ += \"watermarkBlock=\" + encodeURIComponent(\"\" + watermarkBlock) + \"&\";\n if (watermarkIndex === null)\n throw new Error(\"The parameter 'watermarkIndex' cannot be null.\");\n else if (watermarkIndex !== undefined)\n url_ += \"watermarkIndex=\" + encodeURIComponent(\"\" + watermarkIndex) + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetLastTransactions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetLastTransactions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetLastTransactions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @param count (optional) \n * @param watermark (optional) \n * @param targetCurrency (optional) \n * @return Success\n */\n getProfileUpdatesV2(profileId: string | undefined, count: number | undefined, watermark: Date | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/syncProfileV2?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n if (watermark === null)\n throw new Error(\"The parameter 'watermark' cannot be null.\");\n else if (watermark !== undefined)\n url_ += \"watermark=\" + encodeURIComponent(watermark ? \"\" + watermark.toISOString() : \"\") + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProfileUpdatesV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProfileUpdatesV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetProfileUpdatesV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param blockNumber (optional) \n * @param profileId (optional) \n * @return Success\n */\n getClaimsForFrozenAmount(blockNumber: number | undefined, profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/claims?\";\n if (blockNumber === null)\n throw new Error(\"The parameter 'blockNumber' cannot be null.\");\n else if (blockNumber !== undefined)\n url_ += \"blockNumber=\" + encodeURIComponent(\"\" + blockNumber) + \"&\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetClaimsForFrozenAmount(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetClaimsForFrozenAmount(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetClaimsForFrozenAmount(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RewardClaimDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getTotalFrozenAmount(address: string): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/{address}/vault/frozenAmount\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined.\");\n url_ = url_.replace(\"{address}\", encodeURIComponent(\"\" + address));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetTotalFrozenAmount(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetTotalFrozenAmount(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTotalFrozenAmount(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BalanceDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param count (optional) \n * @param watermarkBlock (optional) \n * @param watermarkIndex (optional) \n * @return Success\n */\n getVaultTransactions(address: string, count: number | undefined, watermarkBlock: number | undefined, watermarkIndex: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/{address}/vault/transactions?\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined.\");\n url_ = url_.replace(\"{address}\", encodeURIComponent(\"\" + address));\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n if (watermarkBlock === null)\n throw new Error(\"The parameter 'watermarkBlock' cannot be null.\");\n else if (watermarkBlock !== undefined)\n url_ += \"watermarkBlock=\" + encodeURIComponent(\"\" + watermarkBlock) + \"&\";\n if (watermarkIndex === null)\n throw new Error(\"The parameter 'watermarkIndex' cannot be null.\");\n else if (watermarkIndex !== undefined)\n url_ += \"watermarkIndex=\" + encodeURIComponent(\"\" + watermarkIndex) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetVaultTransactions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetVaultTransactions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetVaultTransactions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VaultTransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @param targetCurrency (optional) \n * @return Success\n */\n getVaultTransaction(txHash: string, profileId: string | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/vault/{txHash}?\";\n if (txHash === undefined || txHash === null)\n throw new Error(\"The parameter 'txHash' must be defined.\");\n url_ = url_.replace(\"{txHash}\", encodeURIComponent(\"\" + txHash));\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetVaultTransaction(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetVaultTransaction(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetVaultTransaction(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VaultTransactionDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n getMinedTransactions(body: string[] | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/getmined\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetMinedTransactions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetMinedTransactions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetMinedTransactions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n getActSwapStatus(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/actswap/status?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetActSwapStatus(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetActSwapStatus(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetActSwapStatus(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ActSwapStatusDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param businessId (optional) \n * @param templateId (optional) \n * @param count (optional) \n * @return Success\n */\n getTemplateRequestPayments(businessId: string | undefined, templateId: string | undefined, count: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/templateRequest/txs?\";\n if (businessId === null)\n throw new Error(\"The parameter 'businessId' cannot be null.\");\n else if (businessId !== undefined)\n url_ += \"businessId=\" + encodeURIComponent(\"\" + businessId) + \"&\";\n if (templateId === null)\n throw new Error(\"The parameter 'templateId' cannot be null.\");\n else if (templateId !== undefined)\n url_ += \"templateId=\" + encodeURIComponent(\"\" + templateId) + \"&\";\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetTemplateRequestPayments(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetTemplateRequestPayments(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTemplateRequestPayments(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param businessId (optional) \n * @param watermarkIndex (optional) \n * @param watermarkBlock (optional) \n * @param templateId (optional) \n * @param count (optional) \n * @return Success\n */\n getNewTemplateRequestPayments(businessId: string | undefined, watermarkIndex: number | undefined, watermarkBlock: number | undefined, templateId: string | undefined, count: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/templateRequest/newTxs?\";\n if (businessId === null)\n throw new Error(\"The parameter 'businessId' cannot be null.\");\n else if (businessId !== undefined)\n url_ += \"businessId=\" + encodeURIComponent(\"\" + businessId) + \"&\";\n if (watermarkIndex === null)\n throw new Error(\"The parameter 'watermarkIndex' cannot be null.\");\n else if (watermarkIndex !== undefined)\n url_ += \"watermarkIndex=\" + encodeURIComponent(\"\" + watermarkIndex) + \"&\";\n if (watermarkBlock === null)\n throw new Error(\"The parameter 'watermarkBlock' cannot be null.\");\n else if (watermarkBlock !== undefined)\n url_ += \"watermarkBlock=\" + encodeURIComponent(\"\" + watermarkBlock) + \"&\";\n if (templateId === null)\n throw new Error(\"The parameter 'templateId' cannot be null.\");\n else if (templateId !== undefined)\n url_ += \"templateId=\" + encodeURIComponent(\"\" + templateId) + \"&\";\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetNewTemplateRequestPayments(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetNewTemplateRequestPayments(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetNewTemplateRequestPayments(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param businessId (optional) \n * @param watermarkIndex (optional) \n * @param watermarkBlock (optional) \n * @param templateId (optional) \n * @param count (optional) \n * @return Success\n */\n getOldTemplateRequestPayments(businessId: string | undefined, watermarkIndex: number | undefined, watermarkBlock: number | undefined, templateId: string | undefined, count: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/BlockExplorer/templateRequest/oldTxs?\";\n if (businessId === null)\n throw new Error(\"The parameter 'businessId' cannot be null.\");\n else if (businessId !== undefined)\n url_ += \"businessId=\" + encodeURIComponent(\"\" + businessId) + \"&\";\n if (watermarkIndex === null)\n throw new Error(\"The parameter 'watermarkIndex' cannot be null.\");\n else if (watermarkIndex !== undefined)\n url_ += \"watermarkIndex=\" + encodeURIComponent(\"\" + watermarkIndex) + \"&\";\n if (watermarkBlock === null)\n throw new Error(\"The parameter 'watermarkBlock' cannot be null.\");\n else if (watermarkBlock !== undefined)\n url_ += \"watermarkBlock=\" + encodeURIComponent(\"\" + watermarkBlock) + \"&\";\n if (templateId === null)\n throw new Error(\"The parameter 'templateId' cannot be null.\");\n else if (templateId !== undefined)\n url_ += \"templateId=\" + encodeURIComponent(\"\" + templateId) + \"&\";\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetOldTemplateRequestPayments(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetOldTemplateRequestPayments(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetOldTemplateRequestPayments(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CampaignsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param countryAlphaTwoCode (optional) \n * @return Success\n */\n getCampaignToView(countryAlphaTwoCode: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Campaigns?\";\n if (countryAlphaTwoCode === null)\n throw new Error(\"The parameter 'countryAlphaTwoCode' cannot be null.\");\n else if (countryAlphaTwoCode !== undefined)\n url_ += \"countryAlphaTwoCode=\" + encodeURIComponent(\"\" + countryAlphaTwoCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetCampaignToView(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetCampaignToView(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCampaignToView(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CampaignDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n markCampaignAsViewed(body: CampaignViewedDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Campaigns/views\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processMarkCampaignAsViewed(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processMarkCampaignAsViewed(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processMarkCampaignAsViewed(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DealsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param updatedSince (optional) \n * @param pageSize (optional) \n * @return Success\n * @deprecated\n */\n getUpdatedDeals(updatedSince: Date | undefined, pageSize: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Deals/updatedDeals?\";\n if (updatedSince === null)\n throw new Error(\"The parameter 'updatedSince' cannot be null.\");\n else if (updatedSince !== undefined)\n url_ += \"updatedSince=\" + encodeURIComponent(updatedSince ? \"\" + updatedSince.toISOString() : \"\") + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetUpdatedDeals(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetUpdatedDeals(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetUpdatedDeals(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DealDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getDealsByBusiness(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/Deals/bybusiness/{businessId}\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetDealsByBusiness(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetDealsByBusiness(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetDealsByBusiness(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DealDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createDeal(body: DealDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Deals\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateDeal(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateDeal(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateDeal(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DealDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateDeal(dealId: string, body: DealDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Deals/{dealId}\";\n if (dealId === undefined || dealId === null)\n throw new Error(\"The parameter 'dealId' must be defined.\");\n url_ = url_.replace(\"{dealId}\", encodeURIComponent(\"\" + dealId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateDeal(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateDeal(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateDeal(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DealDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param hard (optional) \n * @return Success\n */\n deleteDeal(dealId: string, hard: boolean | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Deals/{dealId}?\";\n if (dealId === undefined || dealId === null)\n throw new Error(\"The parameter 'dealId' must be defined.\");\n url_ = url_.replace(\"{dealId}\", encodeURIComponent(\"\" + dealId));\n if (hard === null)\n throw new Error(\"The parameter 'hard' cannot be null.\");\n else if (hard !== undefined)\n url_ += \"hard=\" + encodeURIComponent(\"\" + hard) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeleteDeal(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteDeal(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteDeal(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param latitude (optional) \n * @param longitude (optional) \n * @param skip (optional) \n * @param take (optional) \n * @return Success\n */\n getLocalDeals(profileId: string, latitude: number | undefined, longitude: number | undefined, skip: number | undefined, take: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Deals/{profileId}/localdeals?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (latitude === null)\n throw new Error(\"The parameter 'latitude' cannot be null.\");\n else if (latitude !== undefined)\n url_ += \"latitude=\" + encodeURIComponent(\"\" + latitude) + \"&\";\n if (longitude === null)\n throw new Error(\"The parameter 'longitude' cannot be null.\");\n else if (longitude !== undefined)\n url_ += \"longitude=\" + encodeURIComponent(\"\" + longitude) + \"&\";\n if (skip === null)\n throw new Error(\"The parameter 'skip' cannot be null.\");\n else if (skip !== undefined)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take === null)\n throw new Error(\"The parameter 'take' cannot be null.\");\n else if (take !== undefined)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetLocalDeals(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetLocalDeals(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetLocalDeals(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DealDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param countryId (optional) \n * @param skip (optional) \n * @param take (optional) \n * @return Success\n */\n getOnlineDeals(profileId: string, countryId: string | undefined, skip: number | undefined, take: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Deals/{profileId}/onlinedeals?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (countryId === null)\n throw new Error(\"The parameter 'countryId' cannot be null.\");\n else if (countryId !== undefined)\n url_ += \"countryId=\" + encodeURIComponent(\"\" + countryId) + \"&\";\n if (skip === null)\n throw new Error(\"The parameter 'skip' cannot be null.\");\n else if (skip !== undefined)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take === null)\n throw new Error(\"The parameter 'take' cannot be null.\");\n else if (take !== undefined)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetOnlineDeals(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetOnlineDeals(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetOnlineDeals(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DealDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param storeId (optional) \n * @param activeOnly (optional) \n * @return Success\n */\n getStoreDeals(storeId: string | undefined, activeOnly: boolean | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Deals/storedeals?\";\n if (storeId === null)\n throw new Error(\"The parameter 'storeId' cannot be null.\");\n else if (storeId !== undefined)\n url_ += \"storeId=\" + encodeURIComponent(\"\" + storeId) + \"&\";\n if (activeOnly === null)\n throw new Error(\"The parameter 'activeOnly' cannot be null.\");\n else if (activeOnly !== undefined)\n url_ += \"activeOnly=\" + encodeURIComponent(\"\" + activeOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetStoreDeals(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetStoreDeals(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetStoreDeals(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DealDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getDealDetails(dealId: string): Observable {\n let url_ = this.baseUrl + \"/api/Deals/{dealId}/details\";\n if (dealId === undefined || dealId === null)\n throw new Error(\"The parameter 'dealId' must be defined.\");\n url_ = url_.replace(\"{dealId}\", encodeURIComponent(\"\" + dealId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetDealDetails(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetDealDetails(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetDealDetails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DealDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DevicesClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateDeviceInfo(body: DeviceInfoDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Devices/UpdateDeviceInfo\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateDeviceInfo(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateDeviceInfo(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateDeviceInfo(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @param deviceId (optional) \n * @return Success\n */\n addSigningDevice(profileId: string | undefined, deviceId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Devices/AddSigningDevice?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (deviceId === null)\n throw new Error(\"The parameter 'deviceId' cannot be null.\");\n else if (deviceId !== undefined)\n url_ += \"deviceId=\" + encodeURIComponent(\"\" + deviceId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processAddSigningDevice(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAddSigningDevice(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAddSigningDevice(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InvitationsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createV2(body: InvitationDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Invitations/createV2\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getSentNonAmbassadorInvitationsV2(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Invitations/sentNonAmbassadorInvitationsV2/{profileId}\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSentNonAmbassadorInvitationsV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSentNonAmbassadorInvitationsV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSentNonAmbassadorInvitationsV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InvitationsListDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getSentAmbassadorInvitationsV2(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Invitations/sentAmbassadorInvitationsV2/{profileId}\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSentAmbassadorInvitationsV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSentAmbassadorInvitationsV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSentAmbassadorInvitationsV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InvitationsListDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param invitee (optional) \n * @return Success\n */\n getSentInvitation(profileId: string, invitee: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Invitations/sentInvitation/{profileId}?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (invitee === null)\n throw new Error(\"The parameter 'invitee' cannot be null.\");\n else if (invitee !== undefined)\n url_ += \"invitee=\" + encodeURIComponent(\"\" + invitee) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSentInvitation(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSentInvitation(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSentInvitation(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InvitationDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n acceptInvitationV2(invitationId: string): Observable {\n let url_ = this.baseUrl + \"/api/Invitations/{invitationId}/accept\";\n if (invitationId === undefined || invitationId === null)\n throw new Error(\"The parameter 'invitationId' must be defined.\");\n url_ = url_.replace(\"{invitationId}\", encodeURIComponent(\"\" + invitationId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processAcceptInvitationV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAcceptInvitationV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAcceptInvitationV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n revokeV2(invitationId: string): Observable {\n let url_ = this.baseUrl + \"/api/Invitations/{invitationId}/revokeV2\";\n if (invitationId === undefined || invitationId === null)\n throw new Error(\"The parameter 'invitationId' must be defined.\");\n url_ = url_.replace(\"{invitationId}\", encodeURIComponent(\"\" + invitationId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRevokeV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRevokeV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRevokeV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n createInvitationLink(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Invitations/link?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateInvitationLink(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateInvitationLink(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateInvitationLink(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getAmbassadorInvitationsCountsV2(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Invitations/ambassadorinvitationsV2/{profileId}\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAmbassadorInvitationsCountsV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAmbassadorInvitationsCountsV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAmbassadorInvitationsCountsV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AmbassadorInvitionsCountDtoV2;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MyWorldClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @return Success\n */\n createDealerLoginUrl(profileId: string, originator: Apps): Observable {\n let url_ = this.baseUrl + \"/api/MyWorld/dealer/login?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined and cannot be null.\");\n else\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (originator === undefined || originator === null)\n throw new Error(\"The parameter 'originator' must be defined and cannot be null.\");\n else\n url_ += \"originator=\" + encodeURIComponent(\"\" + originator) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateDealerLoginUrl(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateDealerLoginUrl(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateDealerLoginUrl(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n createShopperLoginUrl(profileId: string, originator: Apps): Observable {\n let url_ = this.baseUrl + \"/api/MyWorld/shopper/login?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined and cannot be null.\");\n else\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (originator === undefined || originator === null)\n throw new Error(\"The parameter 'originator' must be defined and cannot be null.\");\n else\n url_ += \"originator=\" + encodeURIComponent(\"\" + originator) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateShopperLoginUrl(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateShopperLoginUrl(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateShopperLoginUrl(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n createMarketerLoginUrl(profileId: string, originator: Apps): Observable {\n let url_ = this.baseUrl + \"/api/MyWorld/marketer/login?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined and cannot be null.\");\n else\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (originator === undefined || originator === null)\n throw new Error(\"The parameter 'originator' must be defined and cannot be null.\");\n else\n url_ += \"originator=\" + encodeURIComponent(\"\" + originator) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateMarketerLoginUrl(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateMarketerLoginUrl(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateMarketerLoginUrl(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n createMarketerAirdropLoginUrl(profileId: string, originator: Apps): Observable {\n let url_ = this.baseUrl + \"/api/MyWorld/marketer/pp/login?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined and cannot be null.\");\n else\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n if (originator === undefined || originator === null)\n throw new Error(\"The parameter 'originator' must be defined and cannot be null.\");\n else\n url_ += \"originator=\" + encodeURIComponent(\"\" + originator) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateMarketerAirdropLoginUrl(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateMarketerAirdropLoginUrl(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateMarketerAirdropLoginUrl(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param pushId (optional) \n * @return Success\n */\n getNotifications(pushId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Notifications?\";\n if (pushId === null)\n throw new Error(\"The parameter 'pushId' cannot be null.\");\n else if (pushId !== undefined)\n url_ += \"pushId=\" + encodeURIComponent(\"\" + pushId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetNotifications(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetNotifications(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetNotifications(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NotificationDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param pushId (optional) \n * @return Success\n */\n getCount(pushId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Notifications/count?\";\n if (pushId === null)\n throw new Error(\"The parameter 'pushId' cannot be null.\");\n else if (pushId !== undefined)\n url_ += \"pushId=\" + encodeURIComponent(\"\" + pushId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetCount(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetCount(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCount(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param pushId (optional) \n * @param readOnDevice (optional) \n * @return Success\n */\n markAsRead(requestId: string, pushId: string | undefined, readOnDevice: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Notifications/{requestId}?\";\n if (requestId === undefined || requestId === null)\n throw new Error(\"The parameter 'requestId' must be defined.\");\n url_ = url_.replace(\"{requestId}\", encodeURIComponent(\"\" + requestId));\n if (pushId === null)\n throw new Error(\"The parameter 'pushId' cannot be null.\");\n else if (pushId !== undefined)\n url_ += \"pushId=\" + encodeURIComponent(\"\" + pushId) + \"&\";\n if (readOnDevice === null)\n throw new Error(\"The parameter 'readOnDevice' cannot be null.\");\n else if (readOnDevice !== undefined)\n url_ += \"readOnDevice=\" + encodeURIComponent(\"\" + readOnDevice) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processMarkAsRead(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processMarkAsRead(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processMarkAsRead(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaymentRequestTemplateClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createPaymentRequestTemplate(body: PaymentRequestTemplateDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/PaymentRequestTemplate\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreatePaymentRequestTemplate(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreatePaymentRequestTemplate(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreatePaymentRequestTemplate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updatePaymentRequestTemplate(body: PaymentRequestTemplateDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/PaymentRequestTemplate\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdatePaymentRequestTemplate(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdatePaymentRequestTemplate(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdatePaymentRequestTemplate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param businessId (optional) \n * @param paymentRequestTemplateId (optional) \n * @return Success\n */\n deletePaymentRequestTemplates(businessId: string | undefined, paymentRequestTemplateId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/PaymentRequestTemplate?\";\n if (businessId === null)\n throw new Error(\"The parameter 'businessId' cannot be null.\");\n else if (businessId !== undefined)\n url_ += \"businessId=\" + encodeURIComponent(\"\" + businessId) + \"&\";\n if (paymentRequestTemplateId === null)\n throw new Error(\"The parameter 'paymentRequestTemplateId' cannot be null.\");\n else if (paymentRequestTemplateId !== undefined)\n url_ += \"paymentRequestTemplateId=\" + encodeURIComponent(\"\" + paymentRequestTemplateId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeletePaymentRequestTemplates(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeletePaymentRequestTemplates(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeletePaymentRequestTemplates(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getPaymentRequestTemplates(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/PaymentRequestTemplate/{businessId}\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPaymentRequestTemplates(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPaymentRequestTemplates(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetPaymentRequestTemplates(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PaymentRequestTemplateDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getPaymentRequestTemplateDetails(templateId: string): Observable {\n let url_ = this.baseUrl + \"/api/PaymentRequestTemplate/details/{templateId}\";\n if (templateId === undefined || templateId === null)\n throw new Error(\"The parameter 'templateId' must be defined.\");\n url_ = url_.replace(\"{templateId}\", encodeURIComponent(\"\" + templateId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPaymentRequestTemplateDetails(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPaymentRequestTemplateDetails(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetPaymentRequestTemplateDetails(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PaymentRequestTemplateDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaymentsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n * @deprecated\n */\n createPaymentRequest(body: CreatePaymentRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreatePaymentRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreatePaymentRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreatePaymentRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Date;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createPaymentRequestV2(body: CreatePaymentRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/CreatePaymentRequestV2\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreatePaymentRequestV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreatePaymentRequestV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreatePaymentRequestV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreatePaymentRequestResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createCryptoPaymentRequest(body: CreatePaymentRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/CreateCryptoPaymentRequest\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateCryptoPaymentRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateCryptoPaymentRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateCryptoPaymentRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateCryptoPaymentRequestResponseDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n * @deprecated\n */\n getSegments(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{profileId}/segments\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSegments(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSegments(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSegments(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PaymentSegmentDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getSegmentsV2(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{profileId}/segmentsV2\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSegmentsV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSegmentsV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSegmentsV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PaymentSegmentDtoV2[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param payerProfileId (optional) \n * @return Success\n */\n getPaymentInfo(requestId: string, payerProfileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{requestId}/info?\";\n if (requestId === undefined || requestId === null)\n throw new Error(\"The parameter 'requestId' must be defined.\");\n url_ = url_.replace(\"{requestId}\", encodeURIComponent(\"\" + requestId));\n if (payerProfileId === null)\n throw new Error(\"The parameter 'payerProfileId' cannot be null.\");\n else if (payerProfileId !== undefined)\n url_ += \"payerProfileId=\" + encodeURIComponent(\"\" + payerProfileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPaymentInfo(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPaymentInfo(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetPaymentInfo(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PaymentRequestDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n * @deprecated\n */\n getRequestPayments(requestId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{requestId}/payments\";\n if (requestId === undefined || requestId === null)\n throw new Error(\"The parameter 'requestId' must be defined.\");\n url_ = url_.replace(\"{requestId}\", encodeURIComponent(\"\" + requestId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetRequestPayments(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetRequestPayments(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRequestPayments(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getRequestPaymentsV2(requestId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{requestId}/paymentsV2\";\n if (requestId === undefined || requestId === null)\n throw new Error(\"The parameter 'requestId' must be defined.\");\n url_ = url_.replace(\"{requestId}\", encodeURIComponent(\"\" + requestId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetRequestPaymentsV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetRequestPaymentsV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRequestPaymentsV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RequestPaymentsDetailsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getMatchedTransactions(requestId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{requestId}/matchedtransactions\";\n if (requestId === undefined || requestId === null)\n throw new Error(\"The parameter 'requestId' must be defined.\");\n url_ = url_.replace(\"{requestId}\", encodeURIComponent(\"\" + requestId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetMatchedTransactions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetMatchedTransactions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetMatchedTransactions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MatchedTransactionsDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n isRequestPaid(requestId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{requestId}/paid\";\n if (requestId === undefined || requestId === null)\n throw new Error(\"The parameter 'requestId' must be defined.\");\n url_ = url_.replace(\"{requestId}\", encodeURIComponent(\"\" + requestId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processIsRequestPaid(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processIsRequestPaid(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIsRequestPaid(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n confirmEthRequest(requestId: string, profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{requestId}/confirmEth?\";\n if (requestId === undefined || requestId === null)\n throw new Error(\"The parameter 'requestId' must be defined.\");\n url_ = url_.replace(\"{requestId}\", encodeURIComponent(\"\" + requestId));\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processConfirmEthRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processConfirmEthRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processConfirmEthRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n isPaymentSettled(txHash: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/settlements/{txHash}\";\n if (txHash === undefined || txHash === null)\n throw new Error(\"The parameter 'txHash' must be defined.\");\n url_ = url_.replace(\"{txHash}\", encodeURIComponent(\"\" + txHash));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processIsPaymentSettled(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processIsPaymentSettled(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIsPaymentSettled(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n searchPayments(body: SearchPaymentsDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/search\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processSearchPayments(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSearchPayments(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSearchPayments(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TransactionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getRefunds(profileId: string, txHash: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/{profileId}/{txHash}/refunds\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (txHash === undefined || txHash === null)\n throw new Error(\"The parameter 'txHash' must be defined.\");\n url_ = url_.replace(\"{txHash}\", encodeURIComponent(\"\" + txHash));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetRefunds(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetRefunds(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRefunds(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RefundListDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createRefundRequest(body: CreateRefundRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/refunds\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateRefundRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateRefundRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateRefundRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n getAllRefunds(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/refunds?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllRefunds(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllRefunds(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAllRefunds(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RefundStatusDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n getOpenRefundRequests(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/refunds/open?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetOpenRefundRequests(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetOpenRefundRequests(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetOpenRefundRequests(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RefundRequestDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n lockRefundRequest(binaryRefundId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/refunds/{binaryRefundId}\";\n if (binaryRefundId === undefined || binaryRefundId === null)\n throw new Error(\"The parameter 'binaryRefundId' must be defined.\");\n url_ = url_.replace(\"{binaryRefundId}\", encodeURIComponent(\"\" + binaryRefundId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processLockRefundRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processLockRefundRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLockRefundRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LockRefundRequestDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n unlockRefundRequest(binaryRefundId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/refunds/{binaryRefundId}\";\n if (binaryRefundId === undefined || binaryRefundId === null)\n throw new Error(\"The parameter 'binaryRefundId' must be defined.\");\n url_ = url_.replace(\"{binaryRefundId}\", encodeURIComponent(\"\" + binaryRefundId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUnlockRefundRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUnlockRefundRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUnlockRefundRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n rejectRefundRequest(binaryRefundId: string): Observable {\n let url_ = this.baseUrl + \"/api/Payments/refunds/{binaryRefundId}\";\n if (binaryRefundId === undefined || binaryRefundId === null)\n throw new Error(\"The parameter 'binaryRefundId' must be defined.\");\n url_ = url_.replace(\"{binaryRefundId}\", encodeURIComponent(\"\" + binaryRefundId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRejectRefundRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRejectRefundRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRejectRefundRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param address (optional) \n * @return Success\n */\n isAddressPayable(address: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/isAddressPayable?\";\n if (address === null)\n throw new Error(\"The parameter 'address' cannot be null.\");\n else if (address !== undefined)\n url_ += \"address=\" + encodeURIComponent(\"\" + address) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processIsAddressPayable(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processIsAddressPayable(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIsAddressPayable(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n * @deprecated\n */\n selfCreatePaymentRequest(body: SelfCreatePaymentRequestDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/selfcreate\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processSelfCreatePaymentRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSelfCreatePaymentRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSelfCreatePaymentRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param templateId (optional) \n * @param amount (optional) \n * @return Success\n */\n createPaymentRequestByTemplate(templateId: string | undefined, amount: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/CreatePaymentRequestByTemplate?\";\n if (templateId === null)\n throw new Error(\"The parameter 'templateId' cannot be null.\");\n else if (templateId !== undefined)\n url_ += \"templateId=\" + encodeURIComponent(\"\" + templateId) + \"&\";\n if (amount === null)\n throw new Error(\"The parameter 'amount' cannot be null.\");\n else if (amount !== undefined)\n url_ += \"amount=\" + encodeURIComponent(\"\" + amount) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreatePaymentRequestByTemplate(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreatePaymentRequestByTemplate(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreatePaymentRequestByTemplate(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param eurAmount (optional) \n * @return Success\n * @deprecated\n */\n getEcsAmount(eurAmount: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/exchange?\";\n if (eurAmount === null)\n throw new Error(\"The parameter 'eurAmount' cannot be null.\");\n else if (eurAmount !== undefined)\n url_ += \"eurAmount=\" + encodeURIComponent(\"\" + eurAmount) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetEcsAmount(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetEcsAmount(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetEcsAmount(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param fiatAmount (optional) \n * @param useOrderBook (optional) \n * @return Success\n */\n convertFromFiat(fiatAmount: string | undefined, fiatCurrencyCode: string, cryptoCurrencyCode: string, useOrderBook: boolean | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/exchangeFiat/{fiatCurrencyCode}/to/{cryptoCurrencyCode}?\";\n if (fiatCurrencyCode === undefined || fiatCurrencyCode === null)\n throw new Error(\"The parameter 'fiatCurrencyCode' must be defined.\");\n url_ = url_.replace(\"{fiatCurrencyCode}\", encodeURIComponent(\"\" + fiatCurrencyCode));\n if (cryptoCurrencyCode === undefined || cryptoCurrencyCode === null)\n throw new Error(\"The parameter 'cryptoCurrencyCode' must be defined.\");\n url_ = url_.replace(\"{cryptoCurrencyCode}\", encodeURIComponent(\"\" + cryptoCurrencyCode));\n if (fiatAmount === null)\n throw new Error(\"The parameter 'fiatAmount' cannot be null.\");\n else if (fiatAmount !== undefined)\n url_ += \"fiatAmount=\" + encodeURIComponent(\"\" + fiatAmount) + \"&\";\n if (useOrderBook === null)\n throw new Error(\"The parameter 'useOrderBook' cannot be null.\");\n else if (useOrderBook !== undefined)\n url_ += \"useOrderBook=\" + encodeURIComponent(\"\" + useOrderBook) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processConvertFromFiat(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processConvertFromFiat(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processConvertFromFiat(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param cryptoAmount (optional) \n * @param useOrderBook (optional) \n * @return Success\n */\n convertToFiat(cryptoAmount: string | undefined, cryptoCurrencyCode: string, fiatCurrencyCode: string, useOrderBook: boolean | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/exchange/{cryptoCurrencyCode}/toFiat/{fiatCurrencyCode}?\";\n if (cryptoCurrencyCode === undefined || cryptoCurrencyCode === null)\n throw new Error(\"The parameter 'cryptoCurrencyCode' must be defined.\");\n url_ = url_.replace(\"{cryptoCurrencyCode}\", encodeURIComponent(\"\" + cryptoCurrencyCode));\n if (fiatCurrencyCode === undefined || fiatCurrencyCode === null)\n throw new Error(\"The parameter 'fiatCurrencyCode' must be defined.\");\n url_ = url_.replace(\"{fiatCurrencyCode}\", encodeURIComponent(\"\" + fiatCurrencyCode));\n if (cryptoAmount === null)\n throw new Error(\"The parameter 'cryptoAmount' cannot be null.\");\n else if (cryptoAmount !== undefined)\n url_ += \"cryptoAmount=\" + encodeURIComponent(\"\" + cryptoAmount) + \"&\";\n if (useOrderBook === null)\n throw new Error(\"The parameter 'useOrderBook' cannot be null.\");\n else if (useOrderBook !== undefined)\n url_ += \"useOrderBook=\" + encodeURIComponent(\"\" + useOrderBook) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processConvertToFiat(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processConvertToFiat(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processConvertToFiat(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param fiatAmount (optional) \n * @param fiatCurrencyCode (optional) \n * @return Success\n * @deprecated\n */\n getExchangedFiatToEcs(fiatAmount: string | undefined, fiatCurrencyCode: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/exchangeFiatToEcs?\";\n if (fiatAmount === null)\n throw new Error(\"The parameter 'fiatAmount' cannot be null.\");\n else if (fiatAmount !== undefined)\n url_ += \"fiatAmount=\" + encodeURIComponent(\"\" + fiatAmount) + \"&\";\n if (fiatCurrencyCode === null)\n throw new Error(\"The parameter 'fiatCurrencyCode' cannot be null.\");\n else if (fiatCurrencyCode !== undefined)\n url_ += \"fiatCurrencyCode=\" + encodeURIComponent(\"\" + fiatCurrencyCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetExchangedFiatToEcs(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetExchangedFiatToEcs(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetExchangedFiatToEcs(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param ecsAmount (optional) \n * @param targetFiatCurrencyCode (optional) \n * @return Success\n * @deprecated\n */\n getExchangedEcsToFiat(ecsAmount: string | undefined, targetFiatCurrencyCode: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Payments/exchangeEcsToFiat?\";\n if (ecsAmount === null)\n throw new Error(\"The parameter 'ecsAmount' cannot be null.\");\n else if (ecsAmount !== undefined)\n url_ += \"ecsAmount=\" + encodeURIComponent(\"\" + ecsAmount) + \"&\";\n if (targetFiatCurrencyCode === null)\n throw new Error(\"The parameter 'targetFiatCurrencyCode' cannot be null.\");\n else if (targetFiatCurrencyCode !== undefined)\n url_ += \"targetFiatCurrencyCode=\" + encodeURIComponent(\"\" + targetFiatCurrencyCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetExchangedEcsToFiat(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetExchangedEcsToFiat(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetExchangedEcsToFiat(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfilesClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createProfile(body: ProfileDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateProfile(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateProfile(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateProfile(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param forApp (optional) \n * @return Success\n * @deprecated\n */\n getProfiles(forApp: Apps | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles?\";\n if (forApp === null)\n throw new Error(\"The parameter 'forApp' cannot be null.\");\n else if (forApp !== undefined)\n url_ += \"forApp=\" + encodeURIComponent(\"\" + forApp) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProfiles(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProfiles(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetProfiles(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProfileDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param forApp (optional) \n * @return Success\n */\n getProfilesV2(forApp: Apps | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/getprofiles?\";\n if (forApp === null)\n throw new Error(\"The parameter 'forApp' cannot be null.\");\n else if (forApp !== undefined)\n url_ += \"forApp=\" + encodeURIComponent(\"\" + forApp) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProfilesV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProfilesV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetProfilesV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProfilesDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getProfile(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProfile(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProfile(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetProfile(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProfileDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateProfile(id: string, body: ProfileDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateProfile(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateProfile(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateProfile(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n deleteProfile(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeleteProfile(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteProfile(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteProfile(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getNextAddressIndex(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/addresses/nextIndex\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetNextAddressIndex(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetNextAddressIndex(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetNextAddressIndex(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n addAddress(profileId: string, body: AddressDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/addresses\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processAddAddress(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAddAddress(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAddAddress(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param newName (optional) \n * @param isMerchantAccount (optional) \n * @param defaultSegmentId (optional) \n * @param assignedTo (optional) \n * @return Success\n * @deprecated\n */\n updateAddressV2(address: string, newName: string | undefined, isMerchantAccount: boolean | undefined, defaultSegmentId: string | undefined, assignedTo: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/addresses/{address}?\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined.\");\n url_ = url_.replace(\"{address}\", encodeURIComponent(\"\" + address));\n if (newName === null)\n throw new Error(\"The parameter 'newName' cannot be null.\");\n else if (newName !== undefined)\n url_ += \"newName=\" + encodeURIComponent(\"\" + newName) + \"&\";\n if (isMerchantAccount === null)\n throw new Error(\"The parameter 'isMerchantAccount' cannot be null.\");\n else if (isMerchantAccount !== undefined)\n url_ += \"isMerchantAccount=\" + encodeURIComponent(\"\" + isMerchantAccount) + \"&\";\n if (defaultSegmentId === null)\n throw new Error(\"The parameter 'defaultSegmentId' cannot be null.\");\n else if (defaultSegmentId !== undefined)\n url_ += \"defaultSegmentId=\" + encodeURIComponent(\"\" + defaultSegmentId) + \"&\";\n if (assignedTo === null)\n throw new Error(\"The parameter 'assignedTo' cannot be null.\");\n else if (assignedTo !== undefined)\n url_ += \"assignedTo=\" + encodeURIComponent(\"\" + assignedTo) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateAddressV2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateAddressV2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateAddressV2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateAddressV3(body: UpdateAddressDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/addresses\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateAddressV3(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateAddressV3(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateAddressV3(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n deleteAddress(profileId: string, addressId: string, addressTargetCurrency: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/addresses/{addressId}/{addressTargetCurrency}\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (addressId === undefined || addressId === null)\n throw new Error(\"The parameter 'addressId' must be defined.\");\n url_ = url_.replace(\"{addressId}\", encodeURIComponent(\"\" + addressId));\n if (addressTargetCurrency === undefined || addressTargetCurrency === null)\n throw new Error(\"The parameter 'addressTargetCurrency' must be defined.\");\n url_ = url_.replace(\"{addressTargetCurrency}\", encodeURIComponent(\"\" + addressTargetCurrency));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeleteAddress(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteAddress(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteAddress(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getNotificationSettings(): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/Profiles/GetNotificationSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetNotificationSettings(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetNotificationSettings(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetNotificationSettings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NotificationSettingDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateNotificationSettings(body: NotificationSettingDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/Profiles/UpdateNotificationSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateNotificationSettings(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateNotificationSettings(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateNotificationSettings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as NotificationSettingDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param assetIds (optional) \n * @return Success\n */\n getBlocktradeBalances(profileId: string, assetIds: number[] | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/blocktrade?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (assetIds === null)\n throw new Error(\"The parameter 'assetIds' cannot be null.\");\n else if (assetIds !== undefined)\n assetIds && assetIds.forEach(item => { url_ += \"assetIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetBlocktradeBalances(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetBlocktradeBalances(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetBlocktradeBalances(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PortfolioAssetDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n addBlocktradeKey(profileId: string, body: BlocktradeKeyDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/blocktrade\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processAddBlocktradeKey(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAddBlocktradeKey(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAddBlocktradeKey(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n dropBlocktradeKey(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/blocktrade\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDropBlocktradeKey(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDropBlocktradeKey(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDropBlocktradeKey(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n ambassador(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/ambassador\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processAmbassador(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAmbassador(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processAmbassador(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AmbassadorStatusDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param requestId (optional) \n * @return Success\n */\n requestProfileReset(profileId: string, requestId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/reset?\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (requestId === null)\n throw new Error(\"The parameter 'requestId' cannot be null.\");\n else if (requestId !== undefined)\n url_ += \"requestId=\" + encodeURIComponent(\"\" + requestId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRequestProfileReset(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRequestProfileReset(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRequestProfileReset(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n isProfileResetRequested(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/reset\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processIsProfileResetRequested(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processIsProfileResetRequested(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIsProfileResetRequested(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n resetProfile(profileId: string, code: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/reset/{code}\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n if (code === undefined || code === null)\n throw new Error(\"The parameter 'code' must be defined.\");\n url_ = url_.replace(\"{code}\", encodeURIComponent(\"\" + code));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processResetProfile(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processResetProfile(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processResetProfile(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n approveInstantTrade(profileId: string, body: InstantTradeApprovalDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/instantTrade\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processApproveInstantTrade(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processApproveInstantTrade(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processApproveInstantTrade(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n unlinkMWShopperId(profileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Profiles/{profileId}/mwShopperId\";\n if (profileId === undefined || profileId === null)\n throw new Error(\"The parameter 'profileId' must be defined.\");\n url_ = url_.replace(\"{profileId}\", encodeURIComponent(\"\" + profileId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUnlinkMWShopperId(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUnlinkMWShopperId(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUnlinkMWShopperId(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SettingsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @return Success\n */\n clientAppSettings2(): Observable {\n let url_ = this.baseUrl + \"/public/ClientAppSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processClientAppSettings2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processClientAppSettings2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processClientAppSettings2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ClientAppSettingsDto;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n * @deprecated\n */\n clientAppSettings(): Observable {\n let url_ = this.baseUrl + \"/api/ClientAppSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processClientAppSettings(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processClientAppSettings(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processClientAppSettings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ClientAppSettingsDto;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param all (optional) \n * @return Success\n */\n getCountries(all: boolean | undefined): Observable {\n let url_ = this.baseUrl + \"/public/GetCountries?\";\n if (all === null)\n throw new Error(\"The parameter 'all' cannot be null.\");\n else if (all !== undefined)\n url_ += \"All=\" + encodeURIComponent(\"\" + all) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetCountries(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetCountries(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCountries(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CountryDto[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n * @deprecated\n */\n getCountries2(): Observable {\n let url_ = this.baseUrl + \"/Settings/GetCountries\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetCountries2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetCountries2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCountries2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CountryDto[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getStoreCategories(): Observable {\n let url_ = this.baseUrl + \"/public/GetStoreCategories\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetStoreCategories(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetStoreCategories(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetStoreCategories(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StoreCategoryDto[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n * @deprecated\n */\n getStoreCategories2(): Observable {\n let url_ = this.baseUrl + \"/Settings/GetStoreCategories\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetStoreCategories2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetStoreCategories2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetStoreCategories2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StoreCategoryDto[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n * @deprecated\n */\n getUserCurrencySettings(): Observable {\n let url_ = this.baseUrl + \"/Settings/GetUserCurrencySettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetUserCurrencySettings(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetUserCurrencySettings(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetUserCurrencySettings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserCurrencySettingsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n * @deprecated\n */\n updateUserCurrencySettings(body: UserCurrencySettingsDto | undefined): Observable {\n let url_ = this.baseUrl + \"/Settings/UpdateUserCurrencySettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateUserCurrencySettings(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateUserCurrencySettings(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateUserCurrencySettings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserCurrencySettingsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SimplexClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @return Success\n */\n getPublicKey(): Observable {\n let url_ = this.baseUrl + \"/api/Simplex/key\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPublicKey(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPublicKey(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetPublicKey(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getQuote(fiatCurrency: string, fiatAmount: string, crypto: string): Observable {\n let url_ = this.baseUrl + \"/api/Simplex/quote?\";\n if (fiatCurrency === undefined || fiatCurrency === null)\n throw new Error(\"The parameter 'fiatCurrency' must be defined and cannot be null.\");\n else\n url_ += \"fiatCurrency=\" + encodeURIComponent(\"\" + fiatCurrency) + \"&\";\n if (fiatAmount === undefined || fiatAmount === null)\n throw new Error(\"The parameter 'fiatAmount' must be defined and cannot be null.\");\n else\n url_ += \"fiatAmount=\" + encodeURIComponent(\"\" + fiatAmount) + \"&\";\n if (crypto === undefined || crypto === null)\n throw new Error(\"The parameter 'crypto' must be defined and cannot be null.\");\n else\n url_ += \"crypto=\" + encodeURIComponent(\"\" + crypto) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetQuote(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetQuote(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetQuote(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getBuyCryptoUrl(address: string, fiatCurrency: string, fiatAmount: string, crypto: string): Observable {\n let url_ = this.baseUrl + \"/api/Simplex/url?\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined and cannot be null.\");\n else\n url_ += \"address=\" + encodeURIComponent(\"\" + address) + \"&\";\n if (fiatCurrency === undefined || fiatCurrency === null)\n throw new Error(\"The parameter 'fiatCurrency' must be defined and cannot be null.\");\n else\n url_ += \"fiatCurrency=\" + encodeURIComponent(\"\" + fiatCurrency) + \"&\";\n if (fiatAmount === undefined || fiatAmount === null)\n throw new Error(\"The parameter 'fiatAmount' must be defined and cannot be null.\");\n else\n url_ += \"fiatAmount=\" + encodeURIComponent(\"\" + fiatAmount) + \"&\";\n if (crypto === undefined || crypto === null)\n throw new Error(\"The parameter 'crypto' must be defined and cannot be null.\");\n else\n url_ += \"crypto=\" + encodeURIComponent(\"\" + crypto) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetBuyCryptoUrl(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetBuyCryptoUrl(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetBuyCryptoUrl(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StoresClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param updatedSince (optional) \n * @param pageSize (optional) \n * @return Success\n */\n getUpdatedStores(updatedSince: Date | undefined, pageSize: number | undefined): Observable {\n let url_ = this.baseUrl + \"/public/updatedStores?\";\n if (updatedSince === null)\n throw new Error(\"The parameter 'updatedSince' cannot be null.\");\n else if (updatedSince !== undefined)\n url_ += \"updatedSince=\" + encodeURIComponent(updatedSince ? \"\" + updatedSince.toISOString() : \"\") + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetUpdatedStores(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetUpdatedStores(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetUpdatedStores(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StoreDto[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param updatedSince (optional) \n * @param pageSize (optional) \n * @return Success\n * @deprecated\n */\n getUpdatedStores2(updatedSince: Date | undefined, pageSize: number | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Stores/updated?\";\n if (updatedSince === null)\n throw new Error(\"The parameter 'updatedSince' cannot be null.\");\n else if (updatedSince !== undefined)\n url_ += \"updatedSince=\" + encodeURIComponent(updatedSince ? \"\" + updatedSince.toISOString() : \"\") + \"&\";\n if (pageSize === null)\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\n else if (pageSize !== undefined)\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetUpdatedStores2(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetUpdatedStores2(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetUpdatedStores2(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StoreDto[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getStores(businessId: string): Observable {\n let url_ = this.baseUrl + \"/api/Stores/{businessId}/stores\";\n if (businessId === undefined || businessId === null)\n throw new Error(\"The parameter 'businessId' must be defined.\");\n url_ = url_.replace(\"{businessId}\", encodeURIComponent(\"\" + businessId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetStores(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetStores(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetStores(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as StoreDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getFavoriteStores(forProfileId: string): Observable {\n let url_ = this.baseUrl + \"/api/Stores/favorites?\";\n if (forProfileId === undefined || forProfileId === null)\n throw new Error(\"The parameter 'forProfileId' must be defined and cannot be null.\");\n else\n url_ += \"forProfileId=\" + encodeURIComponent(\"\" + forProfileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetFavoriteStores(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetFavoriteStores(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetFavoriteStores(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n saveFavoriteStore(forProfileId: string, storeId: string, tagged: boolean): Observable {\n let url_ = this.baseUrl + \"/api/Stores/favorites?\";\n if (forProfileId === undefined || forProfileId === null)\n throw new Error(\"The parameter 'forProfileId' must be defined and cannot be null.\");\n else\n url_ += \"forProfileId=\" + encodeURIComponent(\"\" + forProfileId) + \"&\";\n if (storeId === undefined || storeId === null)\n throw new Error(\"The parameter 'storeId' must be defined and cannot be null.\");\n else\n url_ += \"storeId=\" + encodeURIComponent(\"\" + storeId) + \"&\";\n if (tagged === undefined || tagged === null)\n throw new Error(\"The parameter 'tagged' must be defined and cannot be null.\");\n else\n url_ += \"tagged=\" + encodeURIComponent(\"\" + tagged) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processSaveFavoriteStore(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSaveFavoriteStore(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processSaveFavoriteStore(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SwipeluxClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @return Success\n */\n getSwipeluxPublicKey(): Observable {\n let url_ = this.baseUrl + \"/api/Swipelux/key\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSwipeluxPublicKey(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSwipeluxPublicKey(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSwipeluxPublicKey(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getSwipeluxQuote(fiatCurrency: string, fiatAmount: string, crypto: string): Observable {\n let url_ = this.baseUrl + \"/api/Swipelux/quote?\";\n if (fiatCurrency === undefined || fiatCurrency === null)\n throw new Error(\"The parameter 'fiatCurrency' must be defined and cannot be null.\");\n else\n url_ += \"fiatCurrency=\" + encodeURIComponent(\"\" + fiatCurrency) + \"&\";\n if (fiatAmount === undefined || fiatAmount === null)\n throw new Error(\"The parameter 'fiatAmount' must be defined and cannot be null.\");\n else\n url_ += \"fiatAmount=\" + encodeURIComponent(\"\" + fiatAmount) + \"&\";\n if (crypto === undefined || crypto === null)\n throw new Error(\"The parameter 'crypto' must be defined and cannot be null.\");\n else\n url_ += \"crypto=\" + encodeURIComponent(\"\" + crypto) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSwipeluxQuote(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSwipeluxQuote(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSwipeluxQuote(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getSwipeluxBuyCryptoUrl(address: string, fiatCurrency: string, fiatAmount: string, crypto: string): Observable {\n let url_ = this.baseUrl + \"/api/Swipelux/url?\";\n if (address === undefined || address === null)\n throw new Error(\"The parameter 'address' must be defined and cannot be null.\");\n else\n url_ += \"address=\" + encodeURIComponent(\"\" + address) + \"&\";\n if (fiatCurrency === undefined || fiatCurrency === null)\n throw new Error(\"The parameter 'fiatCurrency' must be defined and cannot be null.\");\n else\n url_ += \"fiatCurrency=\" + encodeURIComponent(\"\" + fiatCurrency) + \"&\";\n if (fiatAmount === undefined || fiatAmount === null)\n throw new Error(\"The parameter 'fiatAmount' must be defined and cannot be null.\");\n else\n url_ += \"fiatAmount=\" + encodeURIComponent(\"\" + fiatAmount) + \"&\";\n if (crypto === undefined || crypto === null)\n throw new Error(\"The parameter 'crypto' must be defined and cannot be null.\");\n else\n url_ += \"crypto=\" + encodeURIComponent(\"\" + crypto) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetSwipeluxBuyCryptoUrl(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetSwipeluxBuyCryptoUrl(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetSwipeluxBuyCryptoUrl(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TestsClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n topUp(body: TopUpRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/TopUp\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processTopUp(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processTopUp(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processTopUp(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param apiSecret (optional) \n * @return Success\n */\n paymentRequests(id: string, apiSecret: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/PaymentRequests/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (apiSecret === null)\n throw new Error(\"The parameter 'apiSecret' cannot be null.\");\n else if (apiSecret !== undefined)\n url_ += \"apiSecret=\" + encodeURIComponent(\"\" + apiSecret) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processPaymentRequests(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processPaymentRequests(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPaymentRequests(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PaymentRequestDto;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n getLastRequest(body: GetLastRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/GetLastRequest\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetLastRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetLastRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetLastRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param apiSecret (optional) \n * @return Success\n */\n getRequestId(apiSecret: string | undefined, txHash: string): Observable {\n let url_ = this.baseUrl + \"/api/e2e/{txHash}/requestId?\";\n if (txHash === undefined || txHash === null)\n throw new Error(\"The parameter 'txHash' must be defined.\");\n url_ = url_.replace(\"{txHash}\", encodeURIComponent(\"\" + txHash));\n if (apiSecret === null)\n throw new Error(\"The parameter 'apiSecret' cannot be null.\");\n else if (apiSecret !== undefined)\n url_ += \"apiSecret=\" + encodeURIComponent(\"\" + apiSecret) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetRequestId(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetRequestId(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetRequestId(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n payLastTestRequest(body: PayLastTestRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/PayLastTestRequest\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processPayLastTestRequest(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processPayLastTestRequest(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processPayLastTestRequest(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PayLastTestRequestResponse;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param apiSecret (optional) \n * @param eventDescription (optional) \n * @return Success\n */\n logEvent(apiSecret: string | undefined, eventDescription: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/log?\";\n if (apiSecret === null)\n throw new Error(\"The parameter 'apiSecret' cannot be null.\");\n else if (apiSecret !== undefined)\n url_ += \"apiSecret=\" + encodeURIComponent(\"\" + apiSecret) + \"&\";\n if (eventDescription === null)\n throw new Error(\"The parameter 'eventDescription' cannot be null.\");\n else if (eventDescription !== undefined)\n url_ += \"eventDescription=\" + encodeURIComponent(\"\" + eventDescription) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processLogEvent(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processLogEvent(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processLogEvent(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createAddress(body: CreateTestAddressDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateAddress(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateAddress(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateAddress(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n requestEmailChangeConfirmationCode(body: ConfirmationCodeRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/RequestEmailChangeConfirmationCode\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRequestEmailChangeConfirmationCode(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRequestEmailChangeConfirmationCode(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRequestEmailChangeConfirmationCode(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ConfirmationCodeResponse;\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n drainFunds(body: DrainFundsRequest | undefined): Observable {\n let url_ = this.baseUrl + \"/api/e2e/DrainFunds\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDrainFunds(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDrainFunds(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDrainFunds(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokensClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n getTokensInUse(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Tokens/used?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetTokensInUse(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetTokensInUse(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTokensInUse(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TokenInUseDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getTokensMetadata(): Observable {\n let url_ = this.baseUrl + \"/api/Tokens/Metadata/all\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetTokensMetadata(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetTokensMetadata(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetTokensMetadata(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TokenMetadataDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createCustomTokensMetadata(body: TokenMetadataDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Tokens/Metadata/customToken\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateCustomTokensMetadata(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateCustomTokensMetadata(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateCustomTokensMetadata(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateCustomTokensMetadata(body: TokenMetadataDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Tokens/Metadata/customToken\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateCustomTokensMetadata(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateCustomTokensMetadata(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateCustomTokensMetadata(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n deleteCustomTokensMetadata(id: string): Observable {\n let url_ = this.baseUrl + \"/api/Tokens/Metadata/customToken/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeleteCustomTokensMetadata(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteCustomTokensMetadata(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteCustomTokensMetadata(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsersClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @return Success\n */\n registerHookCall(): Observable {\n let url_ = this.baseUrl + \"/api/Users/training_hook\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRegisterHookCall(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRegisterHookCall(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRegisterHookCall(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getCoownedProfiles(): Observable {\n let url_ = this.baseUrl + \"/api/Users/coowned\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetCoownedProfiles(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetCoownedProfiles(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCoownedProfiles(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param requestId (optional) \n * @return Success\n */\n requestAccountDeletion(requestId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Users/delete?\";\n if (requestId === null)\n throw new Error(\"The parameter 'requestId' cannot be null.\");\n else if (requestId !== undefined)\n url_ += \"requestId=\" + encodeURIComponent(\"\" + requestId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRequestAccountDeletion(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRequestAccountDeletion(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRequestAccountDeletion(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n isAccountDeletionRequested(): Observable {\n let url_ = this.baseUrl + \"/api/Users/delete\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processIsAccountDeletionRequested(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processIsAccountDeletionRequested(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIsAccountDeletionRequested(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param code (optional) \n * @return Success\n */\n deleteAccount(code: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Users/delete?\";\n if (code === null)\n throw new Error(\"The parameter 'code' cannot be null.\");\n else if (code !== undefined)\n url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processDeleteAccount(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteAccount(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processDeleteAccount(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n getCurrencySettings(): Observable {\n let url_ = this.baseUrl + \"/api/Users/getCurrencySettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetCurrencySettings(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetCurrencySettings(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetCurrencySettings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserCurrencySettingsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateCurrencySettings(body: UserCurrencySettingsDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Users/updateCurrencySettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateCurrencySettings(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateCurrencySettings(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateCurrencySettings(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserCurrencySettingsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param updatedSince (optional) \n * @param targetCurrency (optional) \n * @return Success\n */\n getAddressBookEntries(updatedSince: Date | undefined, targetCurrency: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Users/addressBook?\";\n if (updatedSince === null)\n throw new Error(\"The parameter 'updatedSince' cannot be null.\");\n else if (updatedSince !== undefined)\n url_ += \"updatedSince=\" + encodeURIComponent(updatedSince ? \"\" + updatedSince.toISOString() : \"\") + \"&\";\n if (targetCurrency === null)\n throw new Error(\"The parameter 'targetCurrency' cannot be null.\");\n else if (targetCurrency !== undefined)\n url_ += \"targetCurrency=\" + encodeURIComponent(\"\" + targetCurrency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAddressBookEntries(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAddressBookEntries(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetAddressBookEntries(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AddressBookEntryDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n createAddressBookEntry(body: AddressBookEntryDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Users/addressBook\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateAddressBookEntry(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateAddressBookEntry(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCreateAddressBookEntry(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AddressBookEntryDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n updateAddressBookEntry(body: AddressBookEntryDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Users/addressBook\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateAddressBookEntry(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateAddressBookEntry(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processUpdateAddressBookEntry(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AddressBookEntryDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n requestEmailChange(body: RequestEmailChangeDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Users/emailchange\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processRequestEmailChange(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRequestEmailChange(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processRequestEmailChange(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n isEmailChangeRequested(): Observable {\n let url_ = this.baseUrl + \"/api/Users/emailchange\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processIsEmailChangeRequested(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processIsEmailChangeRequested(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processIsEmailChangeRequested(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param body (optional) \n * @return Success\n */\n changeEmail(body: ConfirmEmailChangeDto | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Users/emailchange\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processChangeEmail(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processChangeEmail(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processChangeEmail(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @return Success\n */\n cancelEmailChange(): Observable {\n let url_ = this.baseUrl + \"/api/Users/emailchange\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return this.http.request(\"delete\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processCancelEmailChange(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCancelEmailChange(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processCancelEmailChange(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf(null as any);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VaultClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @return Success\n */\n getVaultCampaigns(): Observable {\n let url_ = this.baseUrl + \"/api/Vault\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetVaultCampaigns(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetVaultCampaigns(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetVaultCampaigns(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VaultCampaignsDto;\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VotingClient extends ApiClientBase {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(WALLET_API_URL) baseUrl?: string) {\n super();\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n getVotingConfigurations(profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Voting?\";\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetVotingConfigurations(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetVotingConfigurations(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetVotingConfigurations(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VotingConfigurationDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n\n /**\n * @param profileId (optional) \n * @return Success\n */\n getVotingOptions(votingConfigurationId: string, profileId: string | undefined): Observable {\n let url_ = this.baseUrl + \"/api/Voting/{votingConfigurationId}/options?\";\n if (votingConfigurationId === undefined || votingConfigurationId === null)\n throw new Error(\"The parameter 'votingConfigurationId' must be defined.\");\n url_ = url_.replace(\"{votingConfigurationId}\", encodeURIComponent(\"\" + votingConfigurationId));\n if (profileId === null)\n throw new Error(\"The parameter 'profileId' cannot be null.\");\n else if (profileId !== undefined)\n url_ += \"profileId=\" + encodeURIComponent(\"\" + profileId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\n return this.transformResult(url_, response_, (r) => this.processGetVotingOptions(r as any));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetVotingOptions(r as any));\n } catch (e) {\n return _observableThrow(e) as any as Observable;\n }\n } else\n return _observableThrow(response_) as any as Observable;\n }));\n }\n\n protected processGetVotingOptions(response: HttpResponseBase): Observable {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (response as any).error instanceof Blob ? (response as any).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VotingOptionDto[];\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf(null as any);\n }\n}\n\nexport interface ActSwapStatusDto {\n canSwap?: boolean;\n code?: string | undefined;\n transactionHash?: string | undefined;\n}\n\nexport interface AddressBookEntryDto {\n id?: string;\n contactName: string;\n contactAddress: string;\n targetCurrency: string;\n isDeleted: boolean;\n updatedAt?: Date | undefined;\n}\n\nexport interface AddressDto {\n id: string;\n isBusiness?: boolean;\n keyPath: string;\n addressIndex: number;\n name?: string | undefined;\n signature?: string | undefined;\n defaultSegmentId?: string | undefined;\n isMerchantAccount: boolean;\n targetCurrency?: string | undefined;\n assignedTo?: string | undefined;\n usedForTokens?: TokenDto[] | undefined;\n ethEnabled?: boolean;\n usedForVault?: boolean;\n}\n\nexport interface AmbassadorInvitionsCountDtoV2 {\n sentInvitations?: number;\n acceptedInvitations?: number;\n onboardingBusinesses?: number;\n rewardsFromBusinesses?: number;\n}\n\nexport interface AmbassadorStatusDto {\n hasTrainedManager?: boolean;\n subscribedUntil?: Date | undefined;\n}\n\nexport enum Apps {\n Portal = \"Portal\",\n Wallet = \"Wallet\",\n Cashier = \"Cashier\",\n}\n\nexport interface BalanceDto {\n addressHex?: string | undefined;\n tokenHex?: string | undefined;\n balance?: number;\n blockNumber?: number | undefined;\n}\n\nexport interface BalancesRequestDto {\n addresses?: string[] | undefined;\n tokenAddresses?: string[] | undefined;\n fetchECredits?: boolean;\n targetCurrency?: string | undefined;\n}\n\nexport interface BlocktradeKeyDto {\n keyId: string;\n secret: string;\n overwrite: boolean;\n}\n\nexport interface CampaignDto {\n id: string;\n name: string;\n contentUrl: string;\n startsAt: Date;\n endsAt: Date;\n}\n\nexport interface CampaignViewedDto {\n campaignId?: string;\n}\n\nexport enum CashbackStatus {\n NotAvailable = \"NotAvailable\",\n Available = \"Available\",\n DealerNotConnected = \"DealerNotConnected\",\n ShopperNotConnected = \"ShopperNotConnected\",\n NoSegmentSelected = \"NoSegmentSelected\",\n ConnectivityIssueCBW = \"ConnectivityIssueCBW\",\n}\n\nexport interface ClientAppSettingsDto {\n authIssuerUrl: string;\n profileImagesLocation: string;\n publicImagesLocation: string;\n agreementsUrl: string;\n consumerTermsOfServiceFile: string;\n consumerPrivacyPolicyFile: string;\n eActivityContractAddress: string;\n blockchainConnString: string;\n gasFeePercentage: string;\n requiredGasForRefund: string;\n minimalTotalFee: string;\n minimalGasPrice: string;\n disabledFeatures: string[];\n blocktradeDomain: string;\n blocktradeConfig: string;\n googlePlacesPublicKey: string;\n businessTermsOfServiceFile: string;\n stripePublicKey: string;\n blockExplorerUrl: string;\n backOfficeAppSettings: string;\n learningCenterUrl: string;\n supportUrl: string;\n minWalletVersion: string;\n affiliateTermsOfServiceFile: string;\n blocktradeDisclaimerUrl: string;\n ethChainConnString: string;\n ethereumBlockExplorerUrl: string;\n currencyRateSource?: string | undefined;\n disabledTokens: string[];\n eVaultCampaignsContractAddress: string;\n actSwapContractAddress: string;\n supportedFiatCurrencyCodes: string[];\n indacoinUrl: string;\n simplexUrl: string;\n swipeluxUrl: string;\n}\n\nexport interface ConfirmEmailChangeDto {\n code: string;\n}\n\nexport interface ConfirmationCodeRequest {\n email?: string | undefined;\n secret?: string | undefined;\n}\n\nexport interface ConfirmationCodeResponse {\n code?: string | undefined;\n log?: string[] | undefined;\n}\n\nexport interface CountryDto {\n id: string;\n name: string;\n alphaTwoCode: string;\n sortingWeight?: number;\n phoneCode?: string | undefined;\n}\n\nexport interface CreateCryptoPaymentRequestResponseDto {\n address?: string | undefined;\n amountDue?: number;\n expiresAt?: Date;\n}\n\nexport interface CreateMarketerBalanceDto {\n marketerNumber: string;\n priorityPointBalance: number;\n signature: string;\n}\n\nexport interface CreatePaymentRequestDto {\n id: string;\n profileId: string;\n segmentNumber?: number | undefined;\n storeId?: string | undefined;\n amountDue: number;\n amountDueWei?: string | undefined;\n fiatAmount: number;\n fiatCurrencyCode3?: string | undefined;\n requestedInFiat: boolean;\n paymentReference?: string | undefined;\n targetCurrency?: string | undefined;\n paymentRequestTemplateId?: string | undefined;\n dealActivationId?: string | undefined;\n}\n\nexport interface CreatePaymentRequestResponseDto {\n ecreditsAmount: string;\n expiresAt: Date;\n}\n\nexport interface CreateRefundRequestDto {\n id: string;\n paymentBeingRefundedId: string;\n amountDue: number;\n fiatAmount: number;\n fiatCurrencyCode3?: string | undefined;\n paymentReference?: string | undefined;\n notifySigners: boolean;\n requestedInFiat: boolean;\n}\n\nexport interface CreateTestAddressDto {\n profileId: string;\n secret: string;\n targetCurrency?: string | undefined;\n newAddress?: boolean;\n}\n\nexport enum Currency {\n ECS = \"ECS\",\n ACT = \"ACT\",\n ETH = \"ETH\",\n USDC = \"USDC\",\n BTC = \"BTC\",\n EUR = \"EUR\",\n MKD = \"MKD\",\n CHF = \"CHF\",\n PLN = \"PLN\",\n GBP = \"GBP\",\n SEK = \"SEK\",\n HUF = \"HUF\",\n NOK = \"NOK\",\n DKK = \"DKK\",\n CZK = \"CZK\",\n RON = \"RON\",\n}\n\nexport interface CurrencySettingDto {\n currency: string;\n currencyName?: string | undefined;\n maxFractionDigits?: number;\n}\n\nexport enum DayOfWeek {\n Sunday = \"Sunday\",\n Monday = \"Monday\",\n Tuesday = \"Tuesday\",\n Wednesday = \"Wednesday\",\n Thursday = \"Thursday\",\n Friday = \"Friday\",\n Saturday = \"Saturday\",\n}\n\nexport interface DealDto {\n id: string;\n dealActivationId?: string;\n businessId: string;\n businessLegalName?: string | undefined;\n storeId?: string | undefined;\n storeName?: string | undefined;\n countryId?: string | undefined;\n title: string;\n description: string;\n deactivated?: boolean;\n image?: ImageDto;\n status?: DealStatus;\n publicationDate: Date;\n fromDate: Date;\n toDate: Date;\n modifiedAt?: Date;\n}\n\nexport enum DealStatus {\n Created = \"Created\",\n Escalated = \"Escalated\",\n Approved = \"Approved\",\n Banned = \"Banned\",\n Deactivated = \"Deactivated\",\n Deleted = \"Deleted\",\n}\n\nexport enum DesiredResult {\n Success = \"Success\",\n Underpaid = \"Underpaid\",\n Overpaid = \"Overpaid\",\n OutOfGas = \"OutOfGas\",\n}\n\nexport interface DeviceInfoDto {\n deviceId: string;\n deviceType: UserDeviceType;\n deviceName?: string | undefined;\n appVersion: string;\n pushId?: string | undefined;\n latestUserEmail: string;\n language: string;\n}\n\nexport interface DrainFundsRequest {\n secret?: string | undefined;\n mnemonic?: string | undefined;\n toAddress?: string | undefined;\n currency?: Currency;\n}\n\nexport interface GetAirdropAmountResponseDto {\n balance: number;\n isAuthenticated: boolean;\n}\n\nexport interface GetAmbassadorTransactionsRequestDto {\n profileId: string;\n dateFrom?: Date | undefined;\n dateTo?: Date | undefined;\n watermarkBlock?: number | undefined;\n watermarkIndex?: number | undefined;\n count?: number;\n status?: TransactionStatus;\n}\n\nexport interface GetLastRequest {\n profileId: string;\n secret: string;\n}\n\nexport interface ImageDto {\n id?: string | undefined;\n payload?: string | undefined;\n mediaType?: MediaType;\n}\n\nexport interface InstantTradeApprovalDto {\n depositAddress: string;\n approvalSignature: string;\n}\n\nexport interface InvitationDto {\n id?: string;\n inviterProfileId: string;\n inviterName?: string | undefined;\n invitee: string;\n createdAt?: Date;\n acceptedAt?: Date | undefined;\n expirationDate?: Date;\n invitationText?: string | undefined;\n ambassadorInvitation?: boolean;\n shortId?: string | undefined;\n dynamicLink?: string | undefined;\n consumerProfilesCreated?: number | undefined;\n businessProfilesCreated?: number | undefined;\n inviterLanguage?: string | undefined;\n}\n\nexport interface InvitationsListDto {\n invitationLinkConsumerProfiles?: number;\n invitationLinkBusinessProfiles?: number;\n invitations?: InvitationDto[] | undefined;\n}\n\nexport enum LedgerTransactionType {\n Transfer = \"Transfer\",\n Payment = \"Payment\",\n Refund = \"Refund\",\n FindersFee = \"FindersFee\",\n RevenueShare = \"RevenueShare\",\n VaultLock = \"VaultLock\",\n VaultReward = \"VaultReward\",\n Vote = \"Vote\",\n ActSwap = \"ActSwap\",\n PlatinumInvitationReward = \"PlatinumInvitationReward\",\n PlatinumInviteeVaultingReward = \"PlatinumInviteeVaultingReward\",\n BuyCrypto = \"BuyCrypto\",\n}\n\nexport interface LockRefundRequestDto {\n currentlyLockedBy?: string | undefined;\n request?: RefundRequestDto;\n merchantProxy?: string | undefined;\n}\n\nexport interface MatchedTransactionsDto {\n trxHash?: string | undefined;\n amount?: number;\n amountString?: string | undefined;\n numberOfConfirmations?: number;\n validationStatus?: ValidationStatus;\n}\n\nexport enum MediaType {\n Unknown = \"Unknown\",\n JPG = \"JPG\",\n PNG = \"PNG\",\n GIF = \"GIF\",\n SVG = \"SVG\",\n}\n\nexport interface NotificationDto {\n requestId?: string;\n sentAt?: Date;\n text?: string | undefined;\n contentTemplateId?: number;\n notificationType?: string | undefined;\n profileId?: string | undefined;\n dataPayload?: string | undefined;\n}\n\nexport interface NotificationSettingDto {\n profileId: string;\n eCreditsNotifyRefundRequest?: boolean | undefined;\n eCreditsNotifyIncomingTransfer?: boolean | undefined;\n eCreditsIncomingTransferAmountMinimum?: number;\n ethereumNotifyIncomingTransfer?: boolean | undefined;\n ethereumIncomingTransferAmountMinimum?: number;\n}\n\nexport interface PayLastTestRequest {\n email: string;\n secret: string;\n desiredResult?: DesiredResult;\n seedPhrase?: string | undefined;\n addressIndex?: number;\n}\n\nexport interface PayLastTestRequestResponse {\n hash?: string | undefined;\n requestId?: string | undefined;\n}\n\nexport interface PaymentRequestDto {\n id: string;\n issuerName: string;\n issuerInfo?: string | undefined;\n issuerLogo: string;\n proxyAddress: string;\n merchantAddressId: string;\n amountDue: number;\n amountDueTxt: string;\n transactionAmount: number;\n transactionAmountTxt: string;\n margin: number;\n marginTxt: string;\n cashback: number;\n cashbackTxt: string;\n sceFeeTxt: string;\n requiredGas: number;\n merchantRewardRatio: number;\n isPaid: boolean;\n cashbackSignature?: string | undefined;\n merchantRewardAddress?: string | undefined;\n markedAsConfirmed: boolean;\n cashbackStatus: CashbackStatus;\n gasEstimation: number;\n fiatAmount?: string | undefined;\n expiresAt: Date;\n fiatCurrencyCode3?: string | undefined;\n templateExternalName?: string | undefined;\n}\n\nexport interface PaymentRequestTemplateDto {\n id?: string;\n businessId?: string;\n internalName?: string | undefined;\n externalName?: string | undefined;\n amountDue?: number;\n currency?: string | undefined;\n validFrom?: Date;\n validTo?: Date | undefined;\n notifyCashierApp?: boolean;\n notifyWalletApp?: boolean;\n confirmationViaEmail?: boolean;\n deactivated?: boolean;\n createdAt?: Date;\n shortLink?: string | undefined;\n}\n\nexport interface PaymentSegmentDto {\n id: string;\n name: string;\n cashback: number;\n}\n\nexport interface PaymentSegmentDtoV2 {\n name: string;\n isDefault: boolean;\n segmentNumber: number;\n cashback: number;\n}\n\nexport enum PersonalSubscriptionType {\n None = \"None\",\n Gold = \"Gold\",\n Platinum = \"Platinum\",\n}\n\nexport interface PortfolioAssetDto {\n trading_asset_id?: number;\n available_amount?: string | undefined;\n reserved_amount?: string | undefined;\n wallet_address?: string | undefined;\n}\n\nexport interface PrepareSwapRequestsDto {\n addresses?: string[] | undefined;\n}\n\nexport interface ProfileDto {\n id: string;\n displayName: string;\n legalName: string;\n isBusiness: boolean;\n email: string;\n state?: ProfileState;\n referenceAddress?: string | undefined;\n addresses?: AddressDto[] | undefined;\n profileImage?: ImageDto;\n cashbackId?: string | undefined;\n myWorldId?: string | undefined;\n myWorldIdDealer?: string | undefined;\n myWorldIdShopper?: string | undefined;\n myWorldIdMarketer?: string | undefined;\n myWorldDealerNumber?: string | undefined;\n myWorldShopperNumber?: string | undefined;\n myWorldMarketerNumber?: string | undefined;\n blocktradeKey?: string | undefined;\n sceMember: boolean;\n enrolledAmbassador: boolean;\n invitationLink?: string | undefined;\n blocktradeUserId?: number | undefined;\n blocktradeUserAddress?: string | undefined;\n instantTradeApproval?: string | undefined;\n isDeletable?: boolean;\n inviterName?: string | undefined;\n personalSubscription: PersonalSubscriptionType;\n personalSubscriptionValidUntil?: Date | undefined;\n backupCreated: boolean;\n seedRepeated: boolean;\n preferredFiatCurrency?: string | undefined;\n mainSubscription?: string | undefined;\n mainSubscriptionValidUntil?: Date | undefined;\n}\n\nexport enum ProfileState {\n Inactive = \"Inactive\",\n PriceAcceptanceRequired = \"PriceAcceptanceRequired\",\n PaymentRequired = \"PaymentRequired\",\n Active = \"Active\",\n Expired = \"Expired\",\n}\n\nexport interface ProfilesDto {\n inviterLegalName?: string | undefined;\n inviterEmail?: string | undefined;\n profiles?: ProfileDto[] | undefined;\n}\n\nexport interface RefundDto {\n requestId: string;\n amount: number;\n fiatAmount: number;\n cashbackCompensation: number;\n marginCompensation: number;\n createdAt: Date;\n rejectedAt?: Date | undefined;\n refundTransactionHash?: string | undefined;\n requestedInFiat: boolean;\n}\n\nexport interface RefundListDto {\n refunds?: RefundDto[] | undefined;\n refundableAmount?: number;\n refundableCurrencyCode?: string | undefined;\n requestedInFiat?: boolean;\n}\n\nexport interface RefundRequestDto {\n id: string;\n createdAt: Date;\n targetAddress: string;\n amountDue: number;\n fiatAmount: number;\n currencyCode3: string;\n requestedInFiat: boolean;\n amountDueTxt: string;\n cashbackCompensation: number;\n cashbackCompensationTxt: string;\n marginCompensation: number;\n marginCompensationTxt: string;\n issuerId: string;\n cashierId: string;\n refunderId?: string | undefined;\n rejectedAt?: Date | undefined;\n refundPaymentReference?: string | undefined;\n transactionBeingRefunded: string;\n actSignature: string;\n consumerActBurningTxt: string;\n merchantActBurningTxt: string;\n cashbackSignature?: string | undefined;\n merchantRewardAddress?: string | undefined;\n}\n\nexport interface RefundStatusDto {\n request?: RefundRequestDto;\n paidMultipleTimes?: boolean;\n settledAt?: Date | undefined;\n refundableCurrencyCode?: string | undefined;\n refundTransactionHash?: string | undefined;\n}\n\nexport interface RequestEmailChangeDto {\n requestId?: string | undefined;\n newEmail: string;\n profileId: string;\n signature: string;\n}\n\nexport interface RequestPaymentsDetailsDto {\n paymentHashes?: string[] | undefined;\n paymentRequest?: PaymentRequestDto;\n}\n\nexport interface RewardClaimDto {\n date?: Date;\n amount?: number;\n}\n\nexport interface RewardDto {\n from: string;\n to: string;\n token: string;\n value: number;\n}\n\nexport interface SearchPaymentsDto {\n profileId: string;\n searchTerm: string;\n targetCurrency?: string | undefined;\n}\n\nexport interface SearchTransactionsRequestDto {\n targetCurrency?: string | undefined;\n profileId: string;\n searchTerm?: string | undefined;\n address?: string | undefined;\n dateFrom?: Date | undefined;\n dateTo?: Date | undefined;\n watermarkBlock?: number | undefined;\n watermarkIndex?: number | undefined;\n count?: number;\n cashbackOnly?: boolean | undefined;\n types?: LedgerTransactionType[] | undefined;\n direction?: TransactionDirection;\n status?: TransactionStatus;\n stores?: string[] | undefined;\n}\n\nexport interface SelfCreatePaymentRequestDto {\n id: string;\n address: string;\n amountDue: number;\n fiatAmount: number;\n}\n\nexport interface StoreCategoryDto {\n id: number;\n displayName: string;\n}\n\nexport interface StoreDto {\n id: string;\n businessId: string;\n categoryId: number;\n name: string;\n internalName?: string | undefined;\n isOnline?: boolean;\n isPublished?: boolean;\n description?: string | undefined;\n website?: string | undefined;\n email?: string | undefined;\n phoneNumber?: string | undefined;\n logoId?: string | undefined;\n logoMediaType?: MediaType;\n keywords?: string[] | undefined;\n countryId?: string | undefined;\n city?: string | undefined;\n postalCode?: string | undefined;\n street: string;\n additionalLine?: string | undefined;\n latitude?: number;\n longitude?: number;\n openingHours?: StoreOpeningHoursDto[] | undefined;\n coverImageId?: string | undefined;\n coverImageMediaType?: MediaType;\n isDeleted: boolean;\n isCashback: boolean;\n sortWeight?: number;\n modifiedAt?: Date;\n deliveryCoverageCountriesAlphaThreeCode?: string[] | undefined;\n}\n\nexport interface StoreOpeningHoursDto {\n dayOfWeek: DayOfWeek;\n start: number;\n end: number;\n}\n\nexport interface SwapRequestInfoDto {\n address?: string | undefined;\n signature?: string | undefined;\n blockNumber?: number;\n}\n\nexport interface SwapRequestsResponseDto {\n swapRequests?: SwapRequestInfoDto[] | undefined;\n}\n\nexport interface TokenDto {\n tokenContractAddressHash?: string | undefined;\n}\n\nexport interface TokenInUseDto {\n addressId?: string | undefined;\n targetCurrency?: string | undefined;\n tokenContractAddressHash?: string | undefined;\n}\n\nexport interface TokenMetadataDto {\n id: string;\n name: string;\n symbol: string;\n decimals: number;\n transferableTo: TokenTransferableTo;\n imageUrl?: string | undefined;\n logoUrl?: string | undefined;\n gas: number;\n gasPrice: number;\n backgroundColor: string;\n foregroundColor: string;\n selectedLogoUrl: string;\n customizableDecimalSettings: boolean;\n defaultFractionDigits: number;\n balanceAlwaysVisible: boolean;\n isLive: boolean;\n isCustom?: boolean;\n}\n\nexport interface TokenTransferDto {\n from?: string | undefined;\n to?: string | undefined;\n token?: string | undefined;\n valueTxt?: string | undefined;\n transactionHash?: string | undefined;\n logIndex?: number;\n insertedAt?: Date;\n blockNumber?: number | undefined;\n blockHash?: string | undefined;\n}\n\nexport enum TokenTransferableTo {\n Anybody = \"Anybody\",\n WhitelistedAddresses = \"WhitelistedAddresses\",\n Nobody = \"Nobody\",\n}\n\nexport interface TopUpRequest {\n address: string;\n secret: string;\n}\n\nexport enum TransactionDirection {\n Incoming = \"Incoming\",\n Outgoing = \"Outgoing\",\n}\n\nexport interface TransactionDto {\n hashHex: string;\n fromHex: string;\n toHex?: string | undefined;\n outgoing: boolean;\n value: number;\n fee: number;\n gas: number;\n error?: string | undefined;\n errorType?: TransactionErrorType;\n blockNumber?: number | undefined;\n indexInBlock?: number | undefined;\n type?: TransactionType;\n targetCurrency?: string | undefined;\n claimed?: boolean;\n vaultRate?: number | undefined;\n vaultSubscriptionType?: VaultSubscriptionType;\n insertedAt?: Date;\n updatedAt?: Date;\n receivable: number;\n cashback: number;\n margin: number;\n rewards?: RewardDto[] | undefined;\n tokenTransfers?: TokenTransferDto[] | undefined;\n requestId?: string | undefined;\n businessLogo?: string | undefined;\n businessName?: string | undefined;\n storeName?: string | undefined;\n refundRequestId?: string | undefined;\n transactionBeingRefunded?: string | undefined;\n paymentReference?: string | undefined;\n fiatAmount?: number | undefined;\n fiatCurrencyCode3?: string | undefined;\n requestedInFiat?: boolean;\n attachedText?: string | undefined;\n acknowledgedByWebShop?: boolean;\n merchantRewardAddress?: string | undefined;\n instantTrade?: boolean;\n token?: string | undefined;\n vaultRewardValue?: number | undefined;\n voteTitle?: string | undefined;\n voteOptionHash?: string | undefined;\n voteOptionName?: string | undefined;\n dealTitle?: string | undefined;\n templateId?: string | undefined;\n}\n\nexport enum TransactionErrorType {\n None = \"None\",\n Ledger = \"Ledger\",\n Backend = \"Backend\",\n}\n\nexport enum TransactionStatus {\n Successful = \"Successful\",\n Failed = \"Failed\",\n}\n\nexport enum TransactionType {\n Transfer = \"Transfer\",\n Payment = \"Payment\",\n Refund = \"Refund\",\n TransactionReward = \"TransactionReward\",\n UserInvitationReward = \"UserInvitationReward\",\n BusinessInvitationReward = \"BusinessInvitationReward\",\n SubscriptionPaymentReward = \"SubscriptionPaymentReward\",\n MerchantInvitationReward = \"MerchantInvitationReward\",\n PriorityPointsAirdrop = \"PriorityPointsAirdrop\",\n WelcomeBonus = \"WelcomeBonus\",\n FindersFee = \"FindersFee\",\n RevenueShare = \"RevenueShare\",\n TransactionRewardBurning = \"TransactionRewardBurning\",\n VaultLock = \"VaultLock\",\n VaultReward = \"VaultReward\",\n Vote = \"Vote\",\n ActSwap = \"ActSwap\",\n PlatinumInvitationReward = \"PlatinumInvitationReward\",\n PlatinumInviteeVaultingReward = \"PlatinumInviteeVaultingReward\",\n BuyCrypto = \"BuyCrypto\",\n BuyEcsActReward = \"BuyEcsActReward\",\n}\n\nexport interface UpdateAddressDto {\n id: string;\n targetCurrency?: string | undefined;\n newName?: string | undefined;\n isMerchantAccount?: boolean;\n defaultSegmentId?: string | undefined;\n assignedTo?: string | undefined;\n ethEnabled?: boolean;\n}\n\nexport interface UserCurrencySettingsDto {\n id: string;\n currencySettings?: CurrencySettingDto[] | undefined;\n}\n\nexport enum UserDeviceType {\n Unknown = \"Unknown\",\n Android = \"Android\",\n IOS = \"IOS\",\n WebBrowser = \"WebBrowser\",\n}\n\nexport enum ValidationStatus {\n Unknown = \"Unknown\",\n Suspicious = \"Suspicious\",\n OK = \"OK\",\n Failed = \"Failed\",\n}\n\nexport interface VaultCampaignsDto {\n lastStartedCampaign?: Date | undefined;\n nextScheduledCampaign?: Date | undefined;\n}\n\nexport interface VaultRewardTransactionDto {\n rewardValue?: number | undefined;\n rewardRate?: number | undefined;\n rewardSubscriptionType?: VaultSubscriptionType;\n}\n\nexport enum VaultSubscriptionType {\n Standard = \"Standard\",\n Gold = \"Gold\",\n Platinum = \"Platinum\",\n}\n\nexport interface VaultTransactionDto {\n hashHex: string;\n fromHex: string;\n toHex?: string | undefined;\n outgoing: boolean;\n value: number;\n fee: number;\n gas: number;\n error?: string | undefined;\n errorType?: TransactionErrorType;\n blockNumber?: number | undefined;\n indexInBlock?: number | undefined;\n type?: TransactionType;\n targetCurrency?: string | undefined;\n claimed?: boolean;\n vaultRate?: number | undefined;\n vaultSubscriptionType?: VaultSubscriptionType;\n insertedAt?: Date;\n updatedAt?: Date;\n totalRewardsAmount?: number;\n vaultRewardTransactions?: VaultRewardTransactionDto[] | undefined;\n vaultUnlockedTransactions?: VaultUnlockedTransaction[] | undefined;\n}\n\nexport interface VaultUnlockedTransaction {\n amount?: number;\n rate?: number;\n subscriptionType?: VaultSubscriptionType;\n}\n\nexport interface VotingConfigurationDto {\n id?: string;\n type: VotingType;\n description: string;\n descriptionImageUrl?: string | undefined;\n startDate: Date;\n endDate?: Date | undefined;\n contractAddress?: string | undefined;\n title?: string | undefined;\n}\n\nexport interface VotingOptionDto {\n id?: string;\n votingConfigurationId: string;\n position?: number;\n optionName: string;\n optionImageUrl?: string | undefined;\n optionHash?: string | undefined;\n}\n\nexport enum VotingType {\n SingleChoice = \"SingleChoice\",\n MultipleChoice = \"MultipleChoice\",\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable {\n return new Observable((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((event.target as any).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}","import { Injectable } from '@angular/core';\nimport { LogLevel, OidcConfigService, OidcSecurityService, TokenHelperService } from 'angular-auth-oidc-client';\nimport { Observable } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\n\nimport { AppSettingsService } from '../../shared/services/app-settings/app-settings.service';\nimport { ConfigurationService } from '../../shared/services/configuration/configuration.service';\nimport { SettingsClient } from '../../api/wallet-api.generated';\nimport {DISMISSED_BANNER_KEY, LOGOUT_MARKER, REDIRECT} from '../../shared/constants/value';\nimport {LocalStorageService} from '../../shared/services/storage/local-storage/local-storage.service';\n\nexport const configureAuth = (\n oidcConfigService: OidcConfigService,\n settingsClient: SettingsClient,\n configurationService: ConfigurationService\n) => {\n const setupAction$ = AppSettingsService.loadSettings$(settingsClient, configurationService).pipe(\n map((cfg) => ({\n stsServer: cfg.authIssuerUrl,\n redirectUrl: window.location.origin,\n clientId: 'portal',\n responseType: 'code',\n scope: 'openid profile portal wallet auth offline_access',\n postLogoutRedirectUri: window.location.origin,\n startCheckSession: false, // deactived due to issues with logout in incognito windows & after pw reset\n silentRenew: true,\n // silentRenewUrl: window.location.origin + '/silent-renew.html',\n postLoginRoute: '/',\n forbiddenRoute: '/forbidden',\n unauthorizedRoute: '/unauthorized',\n logLevel: LogLevel.None,\n maxIdTokenIatOffsetAllowedInSeconds: 30,\n historyCleanupOff: true,\n useRefreshToken: true,\n renewTimeBeforeTokenExpiresInSeconds: 10,\n\n // autoUserinfo: false,\n })),\n switchMap((config) => oidcConfigService.withConfig(config))\n );\n\n return () => setupAction$.toPromise();\n};\n\nexport enum AuthState {\n notAuthenticated = 0,\n incompleteRegistration,\n authenticated,\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n userData$: Observable;\n authState$: Observable;\n checkSessionChanged$: Observable;\n\n constructor(private oidcSecurityService: OidcSecurityService,\n private tokenHelper: TokenHelperService,\n private localStorageService: LocalStorageService) {\n this.userData$ = oidcSecurityService.userData$; //.pipe(tap((val) => console.log(val)));\n this.authState$ = oidcSecurityService.isAuthenticated$.pipe(map((val) => this.mapToAuthState(val)));\n this.checkSessionChanged$ = oidcSecurityService.checkSessionChanged$.pipe();\n }\n\n isLoggedIn(): Observable {\n return this.oidcSecurityService.isAuthenticated$;\n }\n\n getToken(): string {\n return this.oidcSecurityService.getToken();\n }\n\n getTokenPayload(): any {\n return this.tokenHelper.getPayloadFromToken(this.oidcSecurityService.getToken(), false);\n }\n\n userData(): Observable {\n return this.oidcSecurityService.userData$;\n }\n\n checkAuth(): Observable {\n return this.oidcSecurityService.checkAuth().pipe(map((val) => this.mapToAuthState(val)));\n }\n\n logoff() {\n this.localStorageService.write(LOGOUT_MARKER, true);\n this.localStorageService.remove(REDIRECT);\n this.localStorageService.remove(DISMISSED_BANNER_KEY);\n this.oidcSecurityService.logoff();\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n authorize(authOptions: { customParams: { ui_locales: string } }) {\n this.oidcSecurityService.authorize(authOptions);\n }\n\n refreshSession(): Observable<{ idToken: string; accessToken: string }> {\n return this.oidcSecurityService.forceRefreshSession();\n }\n\n logoffLocal() {\n this.oidcSecurityService.logoffLocal();\n }\n\n private mapToAuthState(isAuthenticated: boolean) {\n if (isAuthenticated) {\n const token = this.tokenHelper.getPayloadFromToken(this.oidcSecurityService.getToken(), false);\n return !token.incomplete ? AuthState.authenticated : AuthState.incompleteRegistration;\n } else {\n return AuthState.notAuthenticated;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport {LocalStorageService} from '../../../shared/services/storage/local-storage/local-storage.service';\nimport {SIDEBAR_CLOSED_STATE} from '../../../shared/constants/value';\n\nexport interface ISidebar {\n containerClassnames: string;\n menuClickCount: number;\n selectedMenuHasSubItems: boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SidebarService {\n subHiddenBreakpoint: number = environment.subHiddenBreakpoint;\n menuHiddenBreakpoint: number = environment.menuHiddenBreakpoint;\n private initialSidebar: ISidebar = {\n containerClassnames: environment.defaultMenuType,\n menuClickCount: 0,\n selectedMenuHasSubItems: environment.defaultMenuType === 'menu-default',\n };\n private sidebar = new BehaviorSubject(this.initialSidebar);\n\n private isSidebarVisible: boolean;\n\n constructor(private localStorageService: LocalStorageService) {\n }\n\n get showSidebar(): boolean {\n return this.isSidebarVisible;\n }\n\n set showSidebar(value: boolean) {\n this.isSidebarVisible = value;\n }\n\n getSidebar(): Observable {\n return this.sidebar.asObservable();\n }\n\n changeVal(str: string): void {\n const before = this.sidebar.getValue();\n this.sidebar.next({ ...before, containerClassnames: str });\n }\n\n setContainerClassnames(\n clickIndex: number,\n strCurrentClasses: string,\n selectedMenuHasSubItems: boolean\n ): void {\n\n const currentClasses = strCurrentClasses\n ? strCurrentClasses.split(' ').filter((x) => x !== '')\n : '';\n\n let nextClasses = '';\n\n if (!selectedMenuHasSubItems) {\n\n if (currentClasses.includes('menu-default') && (clickIndex % 4 === 0 || clickIndex % 4 === 3)) {\n clickIndex = 1;\n }\n\n if (currentClasses.includes('menu-sub-hidden') && clickIndex % 4 === 2) {\n clickIndex = 0;\n }\n\n if (currentClasses.includes('menu-hidden') && (clickIndex % 4 === 2 || clickIndex % 4 === 3)) {\n clickIndex = 0;\n }\n }\n\n if (clickIndex % 4 === 0) {\n if (currentClasses.includes('menu-default') && currentClasses.includes('menu-sub-hidden')) {\n nextClasses = 'menu-default menu-sub-hidden';\n } else if (currentClasses.includes('menu-default')) {\n nextClasses = 'menu-default';\n } else if (currentClasses.includes('menu-sub-hidden')) {\n nextClasses = 'menu-sub-hidden';\n } else if (currentClasses.includes('menu-hidden')) {\n nextClasses = 'menu-hidden';\n }\n\n clickIndex = 0;\n } else if (clickIndex % 4 === 1) {\n if (currentClasses.includes('menu-default') && currentClasses.includes('menu-sub-hidden')) {\n nextClasses = 'menu-default menu-sub-hidden main-hidden sub-hidden';\n } else if (currentClasses.includes('menu-default')) {\n nextClasses = 'menu-default sub-hidden';\n } else if (currentClasses.includes('menu-sub-hidden')) {\n nextClasses = 'menu-sub-hidden main-hidden sub-hidden';\n } else if (currentClasses.includes('menu-hidden')) {\n nextClasses = 'menu-hidden main-show-temporary';\n }\n } else if (clickIndex % 4 === 2) {\n if (currentClasses.includes('menu-default') && currentClasses.includes('menu-sub-hidden')) {\n nextClasses = 'menu-default menu-sub-hidden sub-hidden';\n } else if (currentClasses.includes('menu-default')) {\n nextClasses = 'menu-default main-hidden sub-hidden';\n } else if (currentClasses.includes('menu-sub-hidden')) {\n nextClasses = 'menu-sub-hidden sub-hidden';\n } else if (currentClasses.includes('menu-hidden')) {\n nextClasses = 'menu-hidden main-show-temporary sub-show-temporary';\n }\n } else if (clickIndex % 4 === 3) {\n if (currentClasses.includes('menu-default') && currentClasses.includes('menu-sub-hidden')) {\n nextClasses = 'menu-default menu-sub-hidden sub-show-temporary';\n } else if (currentClasses.includes('menu-default')) {\n nextClasses = 'menu-default sub-hidden';\n } else if (currentClasses.includes('menu-sub-hidden')) {\n nextClasses = 'menu-sub-hidden sub-show-temporary';\n } else if (currentClasses.includes('menu-hidden')) {\n nextClasses = 'menu-hidden main-show-temporary';\n }\n }\n\n if (currentClasses.includes('menu-mobile')) {\n nextClasses += ' menu-mobile';\n }\n\n if (currentClasses.includes('main-menu-hidden')) {\n nextClasses += ' main-menu-hidden';\n }\n\n if (currentClasses.includes('menu-default') && currentClasses.length === 1) {\n nextClasses = 'menu-default';\n }\n\n if(this.localStorageService.read(SIDEBAR_CLOSED_STATE)) {\n nextClasses += ' main-menu-hidden';\n } else {\n nextClasses.replace('main-menu-hidden', '');\n }\n\n this.sidebar.next({\n containerClassnames: nextClasses,\n menuClickCount: clickIndex,\n selectedMenuHasSubItems,\n });\n }\n\n addContainerClassname(classname: string, strCurrentClasses: string): void {\n const newClasses = !(strCurrentClasses.indexOf(classname) > -1)\n ? strCurrentClasses + ' ' + classname\n : strCurrentClasses;\n const before = this.sidebar.getValue();\n this.sidebar.next({ ...before, containerClassnames: newClasses });\n }\n\n changeDefaultClassnames(strCurrentClasses: string): void {\n const before = this.sidebar.getValue();\n this.sidebar.next({ ...before, containerClassnames: strCurrentClasses });\n }\n\n changeSelectedMenuHasSubItems(hasSubMenu: boolean = true): void {\n const before = this.sidebar.getValue();\n this.sidebar.next({ ...before, selectedMenuHasSubItems: hasSubMenu });\n }\n\n clickOnMobileMenu = (strCurrentClasses: string) => {\n const before = this.sidebar.getValue();\n const currentClasses = strCurrentClasses\n ? strCurrentClasses\n .split(' ')\n .filter((x) => x !== '' && x !== 'sub-show-temporary')\n : [];\n let nextClasses = '';\n if (currentClasses.includes('main-show-temporary')) {\n nextClasses = currentClasses\n .filter((x) => x !== 'main-show-temporary')\n .join(' ');\n } else {\n nextClasses = currentClasses.join(' ') + ' main-show-temporary';\n }\n this.sidebar.next({\n ...before,\n containerClassnames: nextClasses,\n menuClickCount: 0,\n });\n };\n\n collapse(hide: boolean) {\n // workaround to hide the entire left nagivation menu\n if (hide) {\n this.setContainerClassnames(4, 'menu-default menu-sub-hidden main-hidden sub-hidden', false);\n } else {\n this.setContainerClassnames(4, 'menu-default', true);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport {Observable, throwError} from 'rxjs';\nimport { BusinessClient, BusinessDto, StoreAddressDto, StoreWithAddressDto } from 'src/app/api/portal-api.generated';\nimport { StoreDto } from 'src/app/api/portal-api.generated';\nimport {PaymentsClient} from '../../../../api/wallet-api.generated';\nimport {catchError, map} from 'rxjs/operators';\nimport {ToastrMessageServiceService} from '../../../../shared/services/toastr-message/toastr-message-service.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BusinessSettingsService {\n private hideTabs = false;\n constructor(private businessClient: BusinessClient,\n private paymentsClient: PaymentsClient,\n private toastrMessageServiceService: ToastrMessageServiceService) { }\n\n get hideTabsValue() {\n return this.hideTabs;\n }\n\n set hideTabsValue(newState: boolean) {\n this.hideTabs = newState;\n }\n\n getBusinessDetails(profileId: string): Observable {\n if (!profileId) {\n return;\n }\n\n return this.businessClient.getBusiness(profileId);\n }\n\n updateBusinessDetails(newBusinessDto: BusinessDto) {\n if (!newBusinessDto) {\n return;\n }\n\n return this.businessClient.updateBusiness(newBusinessDto);\n }\n\n getStores(profileId: string): Observable {\n if (!profileId) {\n return;\n }\n\n return this.businessClient.getStores(profileId);\n }\n\n updateStoreDetails(newStoreDto: StoreDto) {\n if (!newStoreDto) {\n return;\n }\n\n return this.businessClient.updateStore(newStoreDto);\n }\n\n createStore(newStoreDto: StoreDto) {\n if (!newStoreDto) {\n return;\n }\n\n return this.businessClient.createStore(newStoreDto);\n }\n\n publishStore(profileId: string, storeId: string) {\n if (!profileId) {\n return;\n }\n return this.businessClient.publishStore(profileId, storeId);\n }\n\n unpublishStore(profileId: string, storeId: string) {\n if (!profileId) {\n return;\n }\n return this.businessClient.unpublishStore(profileId, storeId);\n }\n\n deleteStore(profileId: string, storeId: string) {\n if (!profileId) {\n return;\n }\n return this.businessClient.deleteStore(profileId, storeId);\n }\n\n updateStoreAddress(addressDto: StoreAddressDto) {\n if (!addressDto) {\n return;\n }\n return this.businessClient.updateStoreAddress(addressDto);\n }\n\n getSegments(id: string) {\n return this.paymentsClient.getSegmentsV2(id).pipe(\n map((data) => data || []),\n catchError((e) => {\n this.toastrMessageServiceService.error('onboarding.myworld.dealer-connect.errors.my-world-error');\n return throwError(e);\n })\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ApplicationRouteSegments } from 'src/app/shared/enums/enums';\nimport { BusinessSettingsService } from '../../business-settings.service/business-settings.service';\n\n@Component({\n selector: 'app-select-store-type',\n templateUrl: './select-store-type.component.html',\n styleUrls: ['./select-store-type.component.scss']\n})\nexport class SelectStoreTypeComponent implements OnInit {\n\n constructor(\n private businessSettingsService: BusinessSettingsService,\n private router: Router,\n private route: ActivatedRoute) {\n\n }\n\n ngOnInit(): void {\n this.businessSettingsService.hideTabsValue = true;\n }\n\n selectStore(isOnlineStore: boolean) {\n this.router.navigate([ApplicationRouteSegments.addStore], { relativeTo: this.route.parent, state: { isOnlineStore } });\n }\n}\n","
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\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 { CommonModule } from '@angular/common';\nimport { ProfileImagesComponent } from './profile-images.component';\nimport { SharedModule } from '../../../../shared/shared.module';\n\n@NgModule({\n declarations: [\n ProfileImagesComponent,\n ],\n imports: [\n CommonModule,\n SharedModule,\n ],\n exports: [ProfileImagesComponent],\n})\nexport class ProfileImagesModule { }\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router';\nimport {Observable, of} from 'rxjs';\nimport {ProfilesService} from '../profiles.service/profiles.service';\nimport {OidcSecurityService} from 'angular-auth-oidc-client';\nimport {filter, map, switchMap, take} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfilesResolver implements Resolve {\n\n constructor(private profilesService: ProfilesService,\n private oidcSecurityService: OidcSecurityService) {}\n\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\n\n const profiles = this.profilesService.profilesSubject?.value;\n\n if (profiles) {\n return of(Boolean(profiles));\n }\n\n return this.oidcSecurityService.isAuthenticated$.pipe(\n filter((isAuthenticated) => isAuthenticated),\n take(1),\n switchMap(() => this.profilesService.getProfiles()),\n map((data) => Boolean(data)),\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter, map, take, tap} from 'rxjs/operators';\nimport {environment} from 'src/environments/environment';\n\nimport {\n AmbassadorStatusDto,\n Apps,\n ImageDto,\n ProfileDto,\n ProfilesClient,\n ProfilesDto, TokenMetadataDto, TokensClient,\n UpdateAddressDto\n} from '../../api/wallet-api.generated';\nimport {AppSettingsService} from '../../shared/services/app-settings/app-settings.service';\nimport {AuthService} from '../../auth/auth.service/auth.service';\nimport {InviterData} from '../../shared/models/inviter-data.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProfilesService {\n\n profilesSubject: BehaviorSubject = new BehaviorSubject(null);\n\n profiles$: Observable = this.profilesSubject.asObservable();\n\n inviterDataSubject: BehaviorSubject = new BehaviorSubject({});\n\n inviterData$: Observable = this.inviterDataSubject.asObservable();\n\n profileImageBasePath: string = AppSettingsService.profileImagesLocation + '/';\n\n defaultImgPath: string = AppSettingsService.profileImagesLocation + '/' + environment.defaultConsumerLogoId + '.PNG';\n\n private tokensMetadataSubject: BehaviorSubject = new BehaviorSubject(null);\n\n constructor(authService: AuthService,\n private profilesClient: ProfilesClient,\n private tokensClient: TokensClient) {\n }\n\n get tokensMetadata$(): Observable {\n return this.tokensMetadataSubject.pipe();\n }\n\n set tokensMetadata(value: TokenMetadataDto[]) {\n this.tokensMetadataSubject.next(value);\n }\n\n set profiles(profiles: ProfileDto[]) {\n this.profilesSubject.next(profiles);\n }\n\n set inviterData(data: ProfilesDto) {\n this.inviterDataSubject.next(this.getInviterData(data));\n }\n\n public getProfiles() {\n return this.profilesClient.getProfilesV2(Apps.Portal).pipe(\n tap((response) => {\n this.profiles = response?.profiles;\n this.inviterData = response;\n }),\n map((response) => response?.profiles),\n );\n }\n\n /*todo remove subscription*/\n public reloadProfiles() {\n return this.getProfiles().pipe(\n take(1),\n ).subscribe(() => {},\n err => this.profilesSubject.error(err));\n }\n\n public retrieveSelectedProfile(profileId: string): Observable {\n if (!this.profilesSubject.value?.length) {\n return this.getProfile(profileId);\n }\n\n return this.selectProfile(this.profilesSubject.value, profileId);\n }\n\n public createProfile(profile: ProfileDto): Observable {\n return this.profilesClient.createProfile(profile);\n }\n\n public updateProfile(id: string, profile: ProfileDto): Observable {\n return this.profilesClient.updateProfile(id, profile);\n }\n\n public getProfile(id: string): Observable {\n return this.profilesClient.getProfile(id);\n }\n\n public deleteProfile(id: string): Observable {\n return this.profilesClient.deleteProfile(id);\n }\n\n public renameAddress(body: UpdateAddressDto): Observable {\n return this.profilesClient.updateAddressV3(body);\n }\n\n public onImgError(event) {\n event.target.src = this.defaultImgPath;\n }\n\n public getImageUrl(image: ImageDto): string {\n if (image) {\n return `${this.profileImageBasePath}${image.id}.${image.mediaType}`;\n }\n\n return this.defaultImgPath;\n }\n\n public getAmbassadorStatus(profileId: string): Observable {\n return this.profilesClient.ambassador(profileId);\n }\n\n public getSelectedProfile(profileId: string): ProfileDto {\n return this.profilesSubject?.value.find((profile) => profile.id === profileId);\n }\n\n public initTokensMetadata(): Observable {\n return this.tokensClient.getTokensMetadata();\n }\n\n protected selectProfile(profiles: ProfileDto[], profileId: string): Observable {\n return this.profiles$.pipe(\n filter((data) => data?.length > 0),\n map((data) => data.find((profile) => profile.id === profileId)),\n );\n }\n\n private getInviterData(response: ProfilesDto): InviterData {\n return {\n inviterLegalName: response.inviterLegalName,\n inviterEmail: response.inviterEmail,\n };\n }\n}\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\n\nexport class GlobalConstants {\n public static currencyCodePrefix = 'currency-codes.';\n public static ecsQrCodePrefix = 'eCredits:';\n public static storeAddressErrors = {\n geolocationFailed: _('store.store-address.geolocation-failed'),\n geolocationNotSupported: _('store.store-address.geolocation-not-supported'),\n };\n}\n\n","\n\n
\n \n
{{'image-cropper-popup.image-size-label'|translate}} {{croppedImageSizeInMegabytes |\n number:'3.1-2'}}\n {{'image-cropper-popup.image-size-unit'|translate}}
\n \n
\n
\n \n \n \n \n
\n\n
\n \n \n
\n
\n\n \n
\n
\n","import { Component, OnInit, ViewChild, Input, OnChanges, Output, EventEmitter } from '@angular/core';\nimport { ImageCroppedEvent, ImageCropperComponent, base64ToFile, ImageTransform } from 'ngx-image-cropper';\nimport { environment } from 'src/environments/environment';\nimport { ToastrMessageServiceService } from '../../services/toastr-message/toastr-message-service.service';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-image-cropper-popup',\n templateUrl: './image-cropper-popup.component.html',\n styleUrls: ['./image-cropper-popup.component.scss']\n})\nexport class ImageCropperPopupComponent implements OnInit, OnChanges {\n\n @Input() roundCropper = false;\n\n @Input() isVisible = true;\n @Input() image: File;\n @Output() submitImage: EventEmitter = new EventEmitter();\n @Output() cancelEvent: EventEmitter = new EventEmitter();\n\n @ViewChild(ImageCropperComponent) imageCropper: ImageCropperComponent;\n\n maxFileSizeInMegabytes = 4;\n croppedImage: string;\n croppedImageSizeInMegabytes = 0;\n isLoading = false;\n aspectRatio: number;\n resultImageType: string;\n byteToMbConversionRate: number = 1024 * 1024;\n transform: ImageTransform = {};\n rotationDegree = 0;\n loadImageFailMsg: string = _('image-cropper-popup.toastr-messages.load-image-fail-message');\n\n constructor(private toastrMessageServiceService: ToastrMessageServiceService, private translate: TranslateService) {\n this.maxFileSizeInMegabytes = environment.maxImageSize;\n }\n\n ngOnInit() {\n this.setAspectRatio();\n this.setImageType(this.image);\n\n if (!HTMLCanvasElement.prototype.toBlob) {\n Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\n value(callback, type, quality) {\n const dataURL = this.toDataURL(type, quality).split(',')[1];\n setTimeout(() => {\n\n const binStr = atob(dataURL);\n const len = binStr.length;\n const arr = new Uint8Array(len);\n\n for (let i = 0; i < len; i++) {\n arr[i] = binStr.charCodeAt(i);\n }\n\n callback(new Blob([arr], { type: type || 'image/png' }));\n\n });\n }\n });\n }\n }\n\n ngOnChanges() {\n this.setAspectRatio();\n this.setImageType(this.image);\n }\n\n imageCropped(event: ImageCroppedEvent) {\n this.croppedImage = event.base64;\n this.croppedImageSizeInMegabytes = base64ToFile(this.croppedImage).size / this.byteToMbConversionRate;\n }\n\n imageLoaded() {\n this.isLoading = false;\n }\n\n cropperReady() {\n this.isLoading = false;\n }\n\n loadImageFailed() {\n this.toastrMessageServiceService.error(this.loadImageFailMsg);\n }\n\n rotateLeft() {\n //this.isLoading = true;\n this.rotationDegree = this.rotationDegree - 90;\n this.transform = {\n ...this.transform,\n rotate: this.rotationDegree\n };\n }\n\n rotateRight() {\n //this.isLoading = true;\n this.rotationDegree = this.rotationDegree + 90;\n this.transform = {\n ...this.transform,\n rotate: this.rotationDegree\n };\n }\n\n flipHorizontal() {\n //this.isLoading = true;\n this.transform = {\n ...this.transform,\n flipH: !this.transform.flipH\n };\n }\n\n flipVertical() {\n //this.isLoading = true;\n this.transform = {\n ...this.transform,\n flipV: !this.transform.flipV\n };\n }\n\n save() {\n if (base64ToFile(this.croppedImage).size > this.maxFileSizeInMegabytes * this.byteToMbConversionRate) {\n this.toastrMessageServiceService.warningNoTranslate(this.translate\n .instant(_('image-cropper-popup.toastr-messages.exceed-size-message')) + ' '\n + this.maxFileSizeInMegabytes + this.translate.instant('image-cropper-popup.image-size-unit'));\n return;\n }\n\n this.complete(this.croppedImage\n //this.blobToFile(this.croppedImage, this.image.name, this.image.lastModified)\n );\n }\n\n cancel() {\n this.transform = {};\n this.cancelEvent.emit();\n }\n\n complete(emitValue: string) {\n this.submitImage.emit(emitValue);\n }\n\n private setAspectRatio() {\n this.aspectRatio = this.roundCropper ? 1 : 2 / 1;\n }\n\n private setImageType(file: File) {\n this.resultImageType = file && file.type.match(/image\\/jpg|image\\/jpeg/) ? 'jpeg' : 'png';\n }\n\n private blobToFile(theBlob: Blob, fileName: string, lastModified: number): File {\n const b: any = theBlob;\n b.lastModifiedDate = new Date();\n b.name = fileName;\n const file: File = b as File;\n\n return file;\n }\n}\n","\n\n
\n \n
\n\n\n \n\n\n\n
\n
\n\n\n
\n \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, Output, Input, ElementRef } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { ViewChild } from '@angular/core';\nimport { ToastrMessageServiceService } from '../../services/toastr-message/toastr-message-service.service';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\n\n@Component({\n selector: 'app-image-upload',\n templateUrl: './image-upload.component.html',\n styleUrls: ['./image-upload.component.scss']\n})\nexport class ImageUploadComponent {\n @Input() image: any;\n @Input() isLoading = false;\n @Input() canAdd = true;\n @Input() canRemove = false;\n @Input() isDisabled: boolean;\n @Input() isLogo = false;\n @Input() defaultImgPath: string;\n @Input() centered: boolean;\n\n @Output() newImageAdded: EventEmitter = new EventEmitter();\n @Output() newImageRemoved: EventEmitter = new EventEmitter();\n @Output() imageChangedEvent: EventEmitter = new EventEmitter();\n\n @ViewChild('file')\n fileElement: ElementRef;\n\n file: File;\n message: string;\n byteToMbConversionRate: number = 1024 * 1024;\n maxFileSize: string;\n showCropper: boolean;\n\n id: string = 'image-upload-' + new Date().toISOString();\n validImageFormatsMsg: string = _('image-upload.toastr-messages.valid-image-formats');\n\n constructor(private toastrMessageServiceService: ToastrMessageServiceService) {\n this.maxFileSize = `${environment.maxImageSize} MB`;\n }\n\n imageSelected(files) {\n if (files.length === 0) {\n return;\n }\n\n const mimeType = files[0].type;\n if (mimeType.match(/image\\/png|image\\/jpg|image\\/jpeg/) == null) {\n this.toastrMessageServiceService.warning(this.validImageFormatsMsg);\n return;\n }\n\n this.file = files[0];\n this.showCropper = true;\n }\n\n removeImage() {\n this.newImageRemoved.emit(true);\n }\n\n uploadDraftImage(croppedFile: string) {\n this.newImageAdded.emit(croppedFile);\n this.file = null;\n this.showCropper = false;\n }\n\n cancel() {\n this.fileElement.nativeElement.value = '';\n this.showCropper = false;\n }\n\n onImgError(event) {\n this.image = null;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss']\n})\nexport class LoaderComponent { }\n","
\n\n
\n \n \n
\n
\n
\n
\n
\n","
\n
\n \"\"\n
\n {{noDataMsg|translate}}\n \n {{subMsg1|translate}}\n \n
\n\n\n\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-no-transaction',\n templateUrl: './no-transaction.component.html',\n styleUrls: ['./no-transaction.component.scss'],\n})\nexport class NoTransactionComponent implements OnInit {\n @Input() isSearchResult: boolean;\n @Input() noDataMsg: string;\n @Input() subMsg1: string;\n @Input() subMsg2: string;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n \n
\n {{profile.displayName}}\n
\n
\n \n
\n {{('select-profile.states.' + profile.state)|translate}}\n
\n
\n
\n \n
\n\n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ProfileDto, ProfileState } from 'src/app/api/wallet-api.generated';\nimport { ProfilesService } from 'src/app/profiles/profiles.service/profiles.service';\n\n@Component({\n selector: 'app-profile-card',\n templateUrl: './profile-card.component.html',\n styleUrls: ['./profile-card.component.scss']\n})\nexport class ProfileCardComponent {\n @Input() profile: ProfileDto;\n @Input() canDelete = false;\n @Output() profileSelected: EventEmitter;\n @Output() profileDelete: EventEmitter;\n profileStates = ProfileState;\n\n constructor(public profilesService: ProfilesService,) {\n this.profileSelected = new EventEmitter();\n this.profileDelete = new EventEmitter();\n }\n\n onProfileClick(profile: ProfileDto) {\n this.profileSelected.emit(profile);\n }\n\n onDeleteClick(event) {\n event.stopPropagation();\n event.preventDefault();\n this.profileDelete.emit(this.profile);\n }\n\n}\n","export enum EnterpriseSubscriptionType {\n basic = 'Basic',\n premium = 'Premium'\n}\n","export enum SubscriptionStatus {\n subscribed,\n soonExpired,\n expired,\n cancelled\n}\n","
\n
\n\n \n
\n \n \n
\n
\n
\n\n\n {{value}}\n\n","import { Component, Input, Output, EventEmitter, ViewChild, OnChanges, ChangeDetectionStrategy } from '@angular/core';\nimport * as moment from 'moment';\nimport { TimeParseDirective } from './../../directives/time-parse.directive';\n\n@Component({\n selector: 'app-time-picker',\n templateUrl: './time-picker.component.html',\n styleUrls: ['./time-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TimePickerComponent implements OnChanges {\n\n @Input()\n value: string;\n\n @Input()\n editMode: boolean;\n\n @Input()\n defaultValue = '00:00';\n\n @Output()\n valueChange$ = new EventEmitter();\n\n @ViewChild(TimeParseDirective) input: TimeParseDirective;\n\n emptyValue = '00:00';\n timeFormatWithSeconds = 'HH:mm:ss';\n timeFormat = 'HH:mm';\n arrowChangeValue = 60;\n\n constructor() { }\n\n ngOnChanges(): void {\n this.parseInput();\n }\n\n parseInput() {\n this.value = this.parseValue();\n\n if (this.value && this.input && !this.input.regexPatterns.hoursAndMinutesCompleted.pattern.test(this.value)) {\n this.value = '';\n this.input.syncValue('');\n }\n }\n\n parseValue(): string {\n let result = moment(this.value, this.timeFormat, true).format(this.timeFormat);\n\n if (result === 'Invalid date') {\n result = moment(this.value, this.timeFormatWithSeconds, true).format(this.timeFormat);\n }\n\n return result;\n }\n\n valueIsValid(): boolean {\n return !this.input || this.input.valueIsValid();\n }\n\n add() {\n this.changeValue(this.arrowChangeValue);\n }\n\n reduce() {\n this.changeValue(-1 * this.arrowChangeValue);\n }\n\n changeValue(addMinutes: number) {\n const parsedValue = moment(this.value, this.timeFormat, true).add(addMinutes, 'minutes').format(this.timeFormat);\n\n this.value = this.isValid(parsedValue) ? parsedValue : '00:00';\n this.propagateValue(this.value);\n }\n\n propagateValue(value: string, initialValue: boolean = false) {\n if (initialValue || this.input.regexPatterns.hoursAndMinutesCompleted.pattern.test(value)) {\n this.input.syncValue(value);\n this.valueChange$.emit({ value });\n }\n }\n\n private isValid(value: string) {\n return moment(value, this.timeFormat, true).isValid();\n }\n}\n","
\n
\n
\n
\n
\n
\n\n \n
\n \n
\n
\n\n \n
\n {{header}}\n
\n
\n\n \n
\n \n
\n
\n\n \n
\n

{{content}}

\n
\n \n \n
\n
\n \n \n
\n\n
\n
\n
\n
\n","import { Component, OnInit, Input, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Component({\n selector: 'app-yes-no-dialog-box',\n templateUrl: './yes-no-dialog-box.component.html',\n styleUrls: ['./yes-no-dialog-box.component.scss']\n})\nexport class YesNoDialogBoxComponent implements OnInit {\n @Input()\n header: string;\n\n @Input()\n content: string;\n\n @Input()\n visible: boolean;\n\n @Input()\n size = 'auto';\n\n @Input()\n confirmText: string;\n\n @Input()\n cancelText: string;\n\n @Input()\n customHeader: boolean;\n\n @Input()\n customContent: boolean;\n\n @Input()\n centerContent: boolean;\n\n @Input()\n withoutCloseIcon: boolean;\n\n @Input()\n singleBtn: boolean;\n\n @Input()\n wrapped: boolean;\n\n @Input()\n redConfirmButton: boolean;\n\n @Output()\n actionComplete: EventEmitter;\n\n constructor() {\n this.actionComplete = new EventEmitter();\n }\n\n ngOnInit() {\n }\n\n confirm() {\n this.actionComplete.emit(true);\n }\n\n cancel() {\n this.actionComplete.emit(false);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {YesNoDialogBoxComponent} from './yes-no-dialog-box.component';\n\n\n\n@NgModule({\n declarations: [YesNoDialogBoxComponent],\n imports: [\n CommonModule\n ],\n exports: [YesNoDialogBoxComponent],\n})\nexport class YesNoDialogBoxModule { }\n","export const ECREDITS_GUIDE_LINK = 'https://support.ecredits.com/support/solutions/categories/66000063014';\n\nexport const GA_ENDPOINT = 'https://www.googletagmanager.com/gtag/js?id=';\n\nexport const SUBSCRIPTION_TERMS = 'https://dl.ecredits.com/legal/Subscription_terms.pdf';\n\nexport const BUY_ECS_TERMS_AND_CONDITIONS = 'https://dl.ecredits.com/legal/exchange-gtc.pdf';\n\nexport const DEALS_TERMS_AND_CONDITIONS = 'https://dl.ecredits.com/legal/deals_terms.pdf';\n\nexport const EWALLET_TERMS_OF_SERVICE = 'https://ecredits.com/en/ewallet-app-general-terms-of-service/';\n","export const AUTH_ATTEMPT = 'AUTH_ATTEMPT';\nexport const PATH_AUTOLOGIN = '/autologin';\nexport const UNAUTHORIZED = 'unauthorized';\nexport const REDIRECT = 'redirect_url';\nexport const LOGOUT_MARKER = 'logout_marker';\nexport const MY_WORLD_REDIRECT_URL = 'my_world_redirect_url';\nexport const SKIP_AMBASSADOR_AD = 'skip_ambassador_ad';\n\nexport const ACTIVE = 'active';\nexport const INCOMPLETE = 'incomplete';\nexport const CONFIRMED = 'confirmed';\nexport const FAILED = 'failed';\n\nexport const ECREDITS_IN = 'ecredits-in';\nexport const ECREDITS_OUT = 'ecredits-out';\nexport const EACTIVITY_IN = 'eactivity-in';\nexport const EACTIVITY_OUT = 'eactivity-out';\nexport const CASHBACK_IN = 'cashback-in';\nexport const ETHEREUM_IN = 'ethereum-in';\nexport const ETHEREUM_OUT = 'ethereum-out';\nexport const VAULT_IN = 'vault-in';\nexport const VAULT_OUT = 'vault-out';\nexport const TOKEN_IN = 'token-in';\nexport const TOKEN_OUT = 'token-out';\n\nexport const ALLOW_ALL_FEATURES = 'allow_all_features';\n\nexport const COMPANY_NAME = 'The People´s SCE';\n\nexport const DEFAULT_FRACTION_DIGITS = 2;\nexport const DEFAULT_ETH_FRACTION_DIGITS = 6;\nexport const MAX_FRACTION_DIGITS = 8;\n\nexport const BLOCKTRADE = 'Blocktrade';\n\nexport const ACTIVE_SETTINGS_TAB = 'active_settings_tab';\nexport const BACK_SETTINGS_REDIRECT = 'back_settings_redirect';\nexport const SIDEBAR_CLOSED_STATE = 'sidebar_closed_state';\n\nexport const ENTERPRISE = 'enterprise';\nexport const PREMIUMWHITE = 'subscription_premium_white';\nexport const PREMIUMBLUE = 'subscription_premium_blue';\nexport const BASICGRAY = 'subscription_basic_gray';\nexport const BASICBLUE = 'subscription_basic';\nexport const BASICWHITE = 'subscription_basic_white';\nexport const AMBASSADOR = 'ambassador';\nexport const SCE_MEMBERSHIP = 'sce-membership';\nexport const EMPTY = 'empty';\nexport const REGULAR = 'regular';\nexport const PERSONAL_GOLD = 'personal-gold';\nexport const PERSONAL_PLATINUM = 'personal-platinum';\nexport const CONSUMER = 'consumer';\nexport const BUSINESS = 'business';\n\nexport const INVITATIONS = 'invitations';\nexport const BUYECS = 'buyecs';\nexport const PRICETAGS = 'pricetags';\nexport const STORES = 'stores';\n\nexport const TOTAL_BUSINESS_PROFILES = 'invitationLinkBusinessProfiles';\nexport const TOTAL_CONSUMER_PROFILES = 'invitationLinkConsumerProfiles';\n\nexport const DEFAULT_GRAPH_DAYS = 8;\n\nexport const IMAGE_JPEG = 'image/jpeg';\nexport const IMAGE_PNG = 'image/png';\nexport const APPLICATION_PDF = 'application/pdf';\n\nexport const UNACCEPTED_INVITATION = 'unaccepted_invitation';\n\nexport const THEME_LANG = 'theme_lang';\n\nexport const GOLD = 'Gold';\nexport const PLATINUM = 'Platinum';\n\nexport const MONTH_IN_MILISECONDS = 2629800000;\n\nexport const DAY_IN_MILISECONDS = 86400000;\n\nexport const REDEEM_VOUCHER = 'redeem_voucher';\n\nexport const SUBSCRIPTION_DEFINITION = 'subscription_definition';\n\nexport const COMPANY = 'COMPANY';\n\nexport const DISMISSED_BANNER_KEY = 'dismissedSubscriptionBanner';\n\nexport const CURRENT_DEALS = 'current_deals';\nexport const EXPIRED_DEALS = 'expired_deals';\nexport const EDIT_DEAL = 'edit_deal';\nexport const CREATE_DEAL = 'create_deal';\nexport const ALL_STORES = 'all_stores';\nexport const INVALID_DATE = 'Invalid Date';\n\nexport const EDIT_MULTI_PAYMENT = 'edit_multi_payment';\n\nexport const DEFAULT_PAYMENT_TEMPLATE_TRANSACTIONS = 3;\n\nexport const DEFAULT_TOKEN_DECIMALS = 18;\n","import {Directive, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {SubscriptionsService} from '../../services/subscriptions/subscriptions.service';\nimport {ActivatedRoute} from '@angular/router';\n\n@Directive({\n selector: '[appBusinessLimitation]'\n})\nexport class BusinessLimitationDirective implements OnInit {\n\n constructor(private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef,\n private subscriptionsService: SubscriptionsService,\n private route: ActivatedRoute) { }\n\n ngOnInit() {\n const profileId = this.route.snapshot.params.profile;\n\n if (this.subscriptionsService.getBusinessPremiumSubscriptionExistance(profileId)) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n } else {\n this.viewContainer.clear();\n }\n }\n\n}\n","import { Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { UserRoleService } from '../../services/user-roles/user-role.service';\n\n@Directive({\n selector: '[appControllableProfile]'\n})\nexport class ControllableProfileDirective implements OnInit {\n\n constructor(\n private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef,\n private route: ActivatedRoute,\n private userRoleService: UserRoleService) {\n }\n\n ngOnInit() {\n const profileId = this.route.snapshot.params.profile;\n\n if (this.userRoleService.controllableProfile(profileId)) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n } else {\n this.viewContainer.clear();\n }\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[timeParse][ngModel]',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { '(ngModelChange)': 'parseTime($event)' }\n})\nexport class TimeParseDirective {\n\n public regexPatterns = {\n isDigit: { pattern: new RegExp(`[0-2]`) },\n hours: { pattern: new RegExp(`^([0-1]?[0-9]|2[0-3]):?$`) },\n hoursAndMinutes: { pattern: new RegExp(`^([0-1]?[0-9]|2[0-3]):[0-5][0-9]?$`) },\n hoursAndMinutesCompleted: { pattern: new RegExp(`^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$`) }\n };\n\n previousValue = '';\n\n constructor(\n public el: ElementRef) { }\n\n syncValue(value: string) {\n this.previousValue = value;\n }\n\n valueIsValid(): boolean {\n return this.regexPatterns.hoursAndMinutesCompleted.pattern.test(this.el.nativeElement.value);\n }\n\n parseTime(event) {\n if (event.length < this.previousValue.length) {\n if (this.previousValue[this.previousValue.length - 1] === ':') {\n this.setValue(this.previousValue.slice(0, this.previousValue.length - 2));\n } else {\n this.setValue(this.previousValue.slice(0, this.previousValue.length - 1));\n }\n } else if (event.length === 1 && this.regexPatterns.isDigit.pattern.test(event)) {\n this.setValue(event);\n } else if (event.length === 2 && this.regexPatterns.hours.pattern.test(event)) {\n this.setValue(`${event}:`);\n } else if (event.length > 3 && this.regexPatterns.hoursAndMinutes.pattern.test(event)) {\n this.setValue(event);\n } else {\n this.el.nativeElement.value = this.previousValue;\n }\n }\n\n private setValue(event: string) {\n this.el.nativeElement.value = event;\n this.previousValue = this.el.nativeElement.value;\n }\n}\n","/* eslint-disable no-shadow */\n\nexport enum BalanceTypes {\n eCredits = 'ecredits',\n eActivity = 'eactivity',\n euro = 'euro',\n blockTrade = 'blocktrade',\n ether = 'ether',\n other = 'other',\n eVault = 'evault',\n}\n\nexport enum UserRoles {\n owner = 'o',\n manager = 'm',\n viewer = 'v',\n cashier = 'c',\n developer = 'd',\n}\n\nexport enum InvitationStatuses {\n sentInvitations,\n acceptedInvitations,\n onboardingBusinesses,\n rewardsFromBusinesses,\n}\n\nexport enum CashbackTypes {\n cashback = 'Cashback',\n compensation = 'Compensation',\n}\n\nexport enum ErrorTypes {\n none = 'None',\n ledger = 'Ledger',\n backend = 'Backend',\n}\n\nexport enum PaymentMethods {\n ecredits = 'ECredits',\n creditcard = 'CreditCard',\n voucher = 'Voucher',\n}\n\nexport enum RefundRequestStatuses {\n pending = 'pending',\n confirmed = 'confirmed',\n rejected = 'rejected',\n multiPayment = 'multiPayment',\n error = 'error',\n}\n\nexport enum TransactionsStatuses {\n confirmed = 'Confirmed',\n failed = 'Failed',\n}\n\nexport enum ApplicationRouteSegments {\n root = '/',\n dashboard = 'dashboard',\n transactions = 'transactions',\n stores = 'stores',\n storeDetails = 'details',\n storeAddress = 'address',\n storeOpeningHours = 'openinghours',\n selectStore = 'selectstore',\n addStore = 'addstore',\n details = 'details',\n invitationmanagement = 'invitationmanagement',\n subscriptions = 'subscriptions',\n subscriptionInfo = 'subscriptioninfo',\n usermanagement = 'usermanagement',\n addUser = 'adduser',\n refundrequests = 'refundrequests',\n confirmpricing = 'confirmpricing',\n paymentmethod = 'paymentmethod',\n ecreditspayment = 'ecreditspayment',\n subscriptionpaid = 'subscriptionpaid',\n consumercreated = 'consumercreated',\n invitations = 'invitations',\n businessSettings = 'businesssettings',\n businessDetails = 'details',\n addstore = 'addstore',\n myworldconnect = 'myworldconnect',\n dealerconnect = 'dealerconnect',\n dealerconnectSuccess = 'dealerconnect/success',\n dealerconnectError = 'dealerconnect/error',\n marketerconnectSuccess = 'marketerconnect/success',\n marketerconnectError = 'marketerconnect/error',\n accountSettings = 'account_settings',\n webWidget = 'webwidget',\n webWidgetProduction = 'production',\n webWidgetTesting = 'testing',\n webWidgetLogs = 'logs',\n ambassador = 'ambassador',\n profile = 'profile',\n profileCreate = 'create',\n profileSelect = 'select',\n createProfile = 'create_profile',\n onboarding = 'onboarding',\n sceMembership = 'scemembership',\n sceMembershipStatus = 'status',\n sceMembershipForm = 'form',\n sceMembershipDashboard = 'dashboard',\n sceMembershipGovernance = 'governance',\n sceMembershipVotings = 'votings',\n sceMembershipDelegates = 'delegates',\n sceMembershipDelegatesApplications = 'applications',\n sceMembershipDelegatesForm = 'application-form',\n business = 'business',\n priorityPoints = 'pp',\n airdrop = 'airdrop',\n unauthorized = 'unauthorized',\n invoice = 'invoice',\n priceSummary = 'pricesummary',\n consumerDetails = 'consumerdetails',\n profiles = 'profiles',\n webshopConfig = 'webshop_config',\n invitation = 'invitation',\n personal = 'personal',\n voucherVerification = 'voucher_verification',\n buyEcs = 'buyecs',\n deals = 'deals',\n createDeal = 'create_deal',\n editDeal = 'edit_deal',\n multiPayments = 'multi_payments',\n multiPaymentInfo = 'multi_payment_info',\n settings = 'settings',\n autologin = 'autologin',\n forbidden = 'forbidden',\n}\n\nexport enum MaxFractionDigits {\n two = 2,\n three = 3,\n four = 4,\n five = 5,\n six = 6,\n seven = 7,\n eight = 8,\n}\n\nexport enum SupportedLanguagesCodes {\n english = 'en-US',\n german = 'de-DE',\n italian = 'it-IT',\n}\n\nexport enum SupportedLocalesCodes {\n unitedStates = 'us',\n german = 'de',\n italian = 'it',\n britain = 'en-gb',\n english = 'en',\n}\n\nexport enum ExportTypes {\n csv = 'csv',\n}\n\nexport enum ProcessedAuthCodes {\n unexpectedError = 400,\n notAuthenticated = 401,\n notAuthorized = 403,\n badRequest = 404,\n authenticationTimeout = 419,\n loginTimeout = 440,\n requestError = 0,\n requestConflict = 409,\n disconnect = 410,\n}\n\nexport enum ApplicationFeatures {\n ambassador = 'Ambassador',\n webWidget = 'WebWidget',\n sceMembership = 'SCEMembership',\n businessOnBoarding = 'BusinessOnboarding',\n userInvitations = 'UserInvitations',\n subscriptions = 'Subscriptions',\n refundRequests = 'Refunds',\n userManagement = 'UserManagement',\n priorityPointsAirdrop = 'PriorityPointsAirdrop',\n receivePayments = 'ReceivePayments',\n eCSSubscriptionPayment = 'ECSSubscriptionPayment',\n mWSubscription = 'MWSubscription',\n instantTrade = 'InstantTrade',\n ethIntegration = 'ETHIntegration',\n deleteAccount = 'DeleteAccount',\n ecsSubscriptionPayment = 'ECSSubscriptionPayment',\n refundableAmount = 'RefundableAmount',\n mWDealerConnectDuringOnboarding = 'MWDealerConnectDuringOnboarding',\n sceDelegatesApplication = 'SceDelegatesApplication',\n voting = 'Voting',\n governance = 'Governance',\n mWMarketerConnect = 'MWMarketerConnect',\n invitationLinksV3 = 'InvitationLinksV3',\n simplexWeb = 'SimplexWeb',\n swipeluxWeb = 'SwipeluxWeb',\n deals = 'Deals',\n paymentRequestTemplates = 'PaymentRequestTemplates',\n}\n\nexport enum SubscriptionNames {\n sceMembership = 'SCE Membership',\n}\n\nexport enum InvitationStatus {\n pending = 'pending',\n accepted = 'accepted',\n}\n","import { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\n\nexport class MissingTranslationHelper implements MissingTranslationHandler {\n handle(params: MissingTranslationHandlerParams) {\n if (params.interpolateParams) {\n // eslint-disable-next-line @typescript-eslint/dot-notation\n return params.interpolateParams['default'] || params.key;\n }\n return params.key;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MapperPipe } from './mapper.pipe';\n\n\n\n@NgModule({\n declarations: [MapperPipe],\n imports: [\n CommonModule\n ],\n exports: [MapperPipe],\n})\nexport class MapperModule { }\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, of, throwError } from 'rxjs';\nimport { catchError, shareReplay, take, tap } from 'rxjs/operators';\n\nimport {\n ClientAppSettingsDto as WalletClientAppSettingsDto,\n CountryDto,\n SettingsClient as WalletSettingsClient,\n StoreCategoryDto,\n UserCurrencySettingsDto,\n UsersClient,\n WALLET_API_URL,\n} from '../../../api/wallet-api.generated';\nimport { ConfigurationService } from '../configuration/configuration.service';\nimport {ApplicationFeatures} from '../../enums/enums';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppSettingsService {\n public static agreementsUrl = '';\n public static businessTermsOfServiceFile = '';\n public static consumerPrivacyPolicyFile = '';\n public static consumerTermsOfServiceFile = '';\n public static profileImagesLocation = '';\n public static publicImagesLocation = '';\n public static walletApiUrl = '';\n public static authServiceUrl = '';\n public static settingsLoaded = false;\n public static googlePlacesApiKey = '';\n public static blocktradeConfig = '';\n public static blocktradeDomain: string;\n public static affiliateTermsOfServiceFile = '';\n public static currencyRateSource: string;\n public static siteKey = '';\n\n public static simplexUrl = '';\n public static swipeluxUrl = '';\n public static supportedFiatCurrencyCodes: string[];\n\n public static disabledTokens: string[];\n\n // DO NOT set to empty string, otherwise Stripe throws errors in unit tests!\n public static stripePublicKey =\n 'pk_test_51Lei0ZC1C4ZH9z0Y3kwRIv9boa5HGEBoiUD8CqNFpMIL9yOy84Bn6QFp98hRnzKaki2KFP6tybI0otjGQKSNevD200f0Tz7h8K';\n\n public static eActivityContractAddress: string;\n public static learningCenterUrl: string;\n public static disabledFeatures: ApplicationFeatures[];\n public settings$: Observable;\n\n private userCurrencySettings: UserCurrencySettingsDto;\n private countires: CountryDto[];\n private storeCategories: StoreCategoryDto[];\n\n private currencysettings: BehaviorSubject = new BehaviorSubject(null);\n\n constructor(private readonly usersClient: UsersClient,\n private walletSettingsClient: WalletSettingsClient,\n @Inject(WALLET_API_URL) walletApiUrl: string) {\n AppSettingsService.walletApiUrl = walletApiUrl;\n }\n\n get currencySettings$(): Observable {\n return this.currencysettings.pipe();\n }\n\n set currencySettings(value: UserCurrencySettingsDto) {\n this.currencysettings.next(value);\n }\n\n public static loadSettings$(walletSettingsClient: WalletSettingsClient, configurationService: ConfigurationService) {\n return walletSettingsClient.clientAppSettings().pipe(\n tap((cfg) => {\n this.agreementsUrl = cfg.agreementsUrl;\n this.businessTermsOfServiceFile = cfg.businessTermsOfServiceFile;\n this.consumerPrivacyPolicyFile = cfg.consumerPrivacyPolicyFile;\n this.consumerTermsOfServiceFile = cfg.consumerTermsOfServiceFile;\n this.profileImagesLocation = cfg.profileImagesLocation;\n this.publicImagesLocation = cfg.publicImagesLocation;\n this.authServiceUrl = cfg.authIssuerUrl;\n this.googlePlacesApiKey = cfg.googlePlacesPublicKey;\n this.stripePublicKey = cfg.stripePublicKey;\n this.settingsLoaded = true;\n this.eActivityContractAddress = cfg.eActivityContractAddress;\n this.learningCenterUrl = cfg.learningCenterUrl;\n this.disabledFeatures = cfg.disabledFeatures as ApplicationFeatures[];\n this.blocktradeConfig = cfg.blocktradeConfig;\n configurationService.walletApiUrl = this.walletApiUrl;\n configurationService.disabledFeaturesList = cfg.disabledFeatures as ApplicationFeatures[];\n this.blocktradeDomain = cfg.blocktradeDomain;\n this.affiliateTermsOfServiceFile = cfg.affiliateTermsOfServiceFile;\n this.currencyRateSource = cfg.currencyRateSource;\n this.simplexUrl = cfg.simplexUrl;\n this.swipeluxUrl = cfg.swipeluxUrl;\n this.supportedFiatCurrencyCodes = cfg.supportedFiatCurrencyCodes;\n this.disabledTokens = cfg.disabledTokens;\n })\n );\n }\n\n getCountries$(): Observable {\n if (this.countires) {\n return of(this.countires);\n } else {\n return this.walletSettingsClient.getCountries(undefined).pipe(tap((data: CountryDto[]) => (this.countires = data)));\n }\n }\n\n getStoreCategories$(): Observable {\n if (this.storeCategories) {\n return of(this.storeCategories);\n } else {\n return this.walletSettingsClient\n .getStoreCategories()\n .pipe(tap((data: StoreCategoryDto[]) => (this.storeCategories = data)));\n }\n }\n\n getCurrencySettings(): Observable {\n return this.usersClient.getCurrencySettings().pipe(\n tap((data: UserCurrencySettingsDto) => (this.currencySettings = data)),\n take(1),\n shareReplay({ bufferSize: 1, refCount: true }),\n catchError((e) => throwError(e))\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {ApplicationFeatures} from '../../enums/enums';\n\n@Injectable({providedIn: 'root'})\nexport class ConfigurationService {\n\n private walletApiUrl$ = '';\n\n private disabledFeaturesList$: ApplicationFeatures[] = [];\n\n constructor() {\n }\n\n get walletApiUrl() {\n return this.walletApiUrl$;\n }\n\n get disabledFeaturesList() {\n return this.disabledFeaturesList$ || [];\n }\n\n set walletApiUrl(url: string) {\n this.walletApiUrl$ = url;\n }\n\n set disabledFeaturesList(list: ApplicationFeatures[]) {\n this.disabledFeaturesList$ = list;\n }\n\n checkForDisabledFeature(featureToCheck: ApplicationFeatures): boolean {\n return this.disabledFeaturesList?.includes(featureToCheck);\n }\n\n checkForDisabledFeatures(featuresToCheck: ApplicationFeatures[]): boolean {\n return this.disabledFeaturesList\n ?.some(feature => featuresToCheck.find(featureToCheck => featureToCheck === feature));\n }\n\n checkIfAllFeaturesDisabled(featuresToCheck: ApplicationFeatures[]): boolean {\n return featuresToCheck\n ?.every(feature => this.disabledFeaturesList.find(disabledFeature => disabledFeature === feature));\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class DestroyService extends Observable implements OnDestroy {\n private readonly life$ = new Subject();\n\n constructor() {\n super(subscriber => this.life$.subscribe(subscriber));\n }\n\n ngOnDestroy(): void {\n this.life$.next();\n this.life$.complete();\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {SESSION_STORAGE} from '../../../tokens/storage';\nimport {AbstractStorageService} from '../abstract-storage.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionStorageService extends AbstractStorageService {\n\n constructor(@Inject(SESSION_STORAGE) readonly sessionStorage: Storage) {\n super(sessionStorage);\n }\n}\n","export abstract class AbstractStorageService

{\n protected constructor(private readonly storage: Storage) {\n }\n\n public read(key: T): P[T] {\n try {\n const data = this.storage.getItem(key as string);\n\n if (data !== null) {\n return JSON.parse(data);\n }\n\n return null;\n } catch (e) {\n return null;\n }\n }\n\n public write(key: T, data: P[T]): void {\n this.storage.setItem(key as string, JSON.stringify(data));\n }\n\n public remove(key: T): void {\n this.storage.removeItem(key as string);\n }\n\n public clear(): void {\n this.storage.clear();\n }\n}\n","import {Inject, Injectable, Renderer2, RendererFactory2} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\n\nimport en from '../../../../lang/generated/en.json';\nimport de from '../../../../lang/generated/de.json';\nimport it from '../../../../lang/generated/it.json';\n\nimport {SupportedLanguagesCodes, SupportedLocalesCodes} from '../../enums/enums';\nimport {environment} from '../../../../environments/environment';\nimport {NAVIGATOR} from '../../tokens/window';\nimport {THEME_LANG} from '../../constants/value';\nimport {SessionStorageService} from '../storage/session-storage/session-storage.service';\nimport {Language} from '../../interfaces/language';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LangService {\n isSingleLang = false;\n\n renderer: Renderer2;\n\n supportedLanguages: Language[] = [\n {code: SupportedLanguagesCodes.english, direction: 'ltr', label: 'English', shorthand: SupportedLocalesCodes.english},\n // {\n // code: 'en-EN',\n // direction: 'rtl',\n // label: 'English - RTL',\n // shorthand: 'enrtl',\n // },\n {code: SupportedLanguagesCodes.german, direction: 'ltr', label: 'Deutsch', shorthand: SupportedLocalesCodes.german},\n {code: SupportedLanguagesCodes.italian, direction: 'ltr', label: 'Italian', shorthand: SupportedLocalesCodes.italian},\n ];\n\n constructor(private translate: TranslateService,\n private rendererFactory: RendererFactory2,\n @Inject(NAVIGATOR) private readonly navigator: Navigator,\n private sessionStorageService: SessionStorageService) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n get language(): string {\n return this.translate.currentLang;\n }\n\n get languageShorthand(): string {\n return this.supportedLanguages.find((item) => item.code === this.translate.currentLang).shorthand;\n }\n\n get direction(): string {\n return this.supportedLanguages.find((item) => item.code === this.translate.currentLang).direction;\n }\n\n get languageLabel(): string {\n return this.supportedLanguages.find((item) => item.code === this.translate.currentLang).label;\n }\n\n set language(lang: string) {\n if(lang) {\n const isSupportedLanguage: boolean = this.supportedLanguages.some((item) => item.code.includes(lang));\n\n const language = isSupportedLanguage ? lang : this.getDefaultLanguage();\n\n if(isSupportedLanguage) {\n this.sessionStorageService.write(THEME_LANG, lang);\n }\n\n this.translate.use(language);\n } else {\n this.translate.use(this.getDefaultLanguage());\n }\n }\n\n init(): void {\n this.translate.setTranslation(SupportedLanguagesCodes.english, en);\n // this.translate.setTranslation('en-EN', en);\n this.translate.setTranslation(SupportedLanguagesCodes.german, de);\n this.translate.setTranslation(SupportedLanguagesCodes.italian, it);\n\n this.translate.setDefaultLang(\n environment.resolveOtherLanguagesToEnglish === 'true'\n ? SupportedLanguagesCodes.english\n : null\n );\n\n if (this.isSingleLang) {\n this.translate.use(this.getDefaultLanguage());\n } else {\n this.language = '';\n }\n }\n\n checkForDirectionChange(): void {\n this.renderer.removeClass(document.body, 'ltr');\n this.renderer.removeClass(document.body, 'rtl');\n this.renderer.addClass(document.body, this.direction);\n this.renderer.setAttribute(document.documentElement, 'direction', this.direction);\n }\n\n getTranslation(key: string, options?: Record) {\n return this.instant(key, options);\n }\n\n instant(key: string, options = {}) {\n return this.translate.instant(key, options);\n }\n\n getDefaultLanguage() {\n return this.sessionStorageService.read(THEME_LANG) || this.resolveToSupportedLanguages(this.navigator.language);\n }\n\n resolveToSupportedLanguages(lang: string) {\n const mainLangSegment: string = lang.split('-')[0];\n return this.supportedLanguages\n .find(language => language.shorthand === mainLangSegment)?.code || SupportedLanguagesCodes.english;\n }\n\n setLanguage(languageCode: string): void {\n const language = this.supportedLanguages.find((supportedLanguage) => supportedLanguage.shorthand === languageCode);\n\n if (language) {\n this.language = language.code;\n }\n }\n}\n","import {Inject, Injectable, Renderer2, RendererFactory2} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService {\n\n private renderer: Renderer2;\n\n constructor(private rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private document) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n public lockBodyScroll() {\n const body: HTMLBodyElement = this.document.body as HTMLBodyElement;\n this.renderer.addClass(body, 'overflow-hidden');\n }\n\n public unlockBodyScroll() {\n const body: HTMLBodyElement = this.document.body as HTMLBodyElement;\n this.renderer.removeClass(body, 'overflow-hidden');\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {LOCAL_STORAGE} from '../../../tokens/storage';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalStorageService {\n\n constructor(@Inject(LOCAL_STORAGE) readonly localStorage: Storage) { }\n\n public read(key: string): any {\n try {\n const data = this.localStorage.getItem(key);\n if (data !== null) {\n return JSON.parse(data);\n }\n\n return null;\n } catch(e) {\n return null;\n }\n }\n\n public write(key: string, value: any): void {\n this.localStorage.setItem(key, JSON.stringify(value));\n }\n\n public remove(key: string): void {\n this.localStorage.removeItem(key);\n }\n}\n\n\n","import { Injectable } from '@angular/core';\nimport {\n PersonalSubscriptionType,\n SubscriptionDefinitionDto,\n SubscriptionDto,\n SubscriptionType,\n} from '../../../api/portal-api.generated';\nimport { ProfileDto } from '../../../api/wallet-api.generated';\nimport { SubscriptionCard } from '../../components/subscription-card/models/subscription-card.model';\nimport { SubscriptionStatus } from '../../components/subscription-card/models/subscription-status.enum';\nimport { DateUtils } from '../../../utils/date.utils';\nimport { BASICBLUE, BASICWHITE, MONTH_IN_MILISECONDS, PREMIUMBLUE, PREMIUMWHITE } from '../../constants/value';\nimport { EnterpriseSubscriptionType } from '../../components/subscription-card/models/enterprise-subscription-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SubscriptionsService {\n private activeSubscriptions: SubscriptionDto[];\n\n private expiredSubscriptions: SubscriptionDto[];\n\n private offeredSubscriptions: Record = {};\n\n get activeSubscriptionsList() {\n return this.activeSubscriptions;\n }\n\n setActiveSubscriptions(subs: SubscriptionDto[]) {\n this.activeSubscriptions = this.mergeSubscriptions(subs);\n }\n\n getActiveSubscriptions(profileId: string): SubscriptionDto[] | null {\n return this.activeSubscriptions?.some((sub) => sub.profileId === profileId) ? this.activeSubscriptions : null;\n }\n\n setOfferedSubscriptions(subs: SubscriptionDefinitionDto[], profileId: string) {\n this.offeredSubscriptions[profileId] = subs;\n }\n\n getOfferedSubscriptions(profileId: string): SubscriptionDefinitionDto[] | null {\n return this.offeredSubscriptions[profileId] ?? [];\n }\n\n setExpiredSubscriptions(subs: SubscriptionDto[]) {\n this.expiredSubscriptions = subs;\n }\n\n getExpiredSubscriptions(profileId: string): SubscriptionDto[] | null {\n return this.expiredSubscriptions?.some((sub) => sub.profileId === profileId) ? this.expiredSubscriptions : null;\n }\n\n isCardMatchingDefinition(card: Record, subscriptionDefinition: SubscriptionDefinitionDto) {\n if (card.type === 'Business') {\n return card.type === subscriptionDefinition.subscriptionType && card.title === subscriptionDefinition.name;\n } else if (card.type === 'Personal') {\n return (\n card.type === subscriptionDefinition.subscriptionType &&\n card.subType === subscriptionDefinition.personalSubscriptionType\n );\n }\n return card.type === subscriptionDefinition.subscriptionType;\n }\n\n mapActiveSubscriptions(cards: Record[], profile: ProfileDto): Record[] {\n const offeredSubs = this.offeredSubscriptions[profile?.id];\n const activeSubs = this.activeSubscriptions;\n const filteredCards = cards?.filter(\n (card) =>\n offeredSubs?.some((subDefinition) => this.isCardMatchingDefinition(card, subDefinition)) ||\n activeSubs?.some((sub) => this.isCardMatchingDefinition(card, sub.definition))\n );\n\n filteredCards?.forEach((card) => {\n let targetActiveSub: any = {};\n let targetOfferedSub: any = {};\n let targetExpiredSub: any = {};\n\n if (card.type === SubscriptionType.Business) {\n targetActiveSub = this.activeSubscriptions?.find(\n (sub) => card.type === sub.definition.subscriptionType && card.title === sub.definition.name\n );\n\n targetOfferedSub = offeredSubs?.find((sub) => card.type === sub.subscriptionType && card.title === sub.name);\n\n targetExpiredSub = this.expiredSubscriptions?.find(\n (sub) => card.type === sub.definition.subscriptionType && card.title === sub.definition.name\n );\n } else {\n targetActiveSub = this.activeSubscriptions?.find(\n (sub) =>\n card.type === sub.definition.subscriptionType && card.subType === sub.definition.personalSubscriptionType\n );\n\n targetOfferedSub = offeredSubs?.find(\n (sub) => card.type === sub.subscriptionType && card.subType === sub.personalSubscriptionType\n );\n\n targetExpiredSub = this.expiredSubscriptions?.find(\n (sub) =>\n card.type === sub.definition.subscriptionType && card.subType === sub.definition.personalSubscriptionType\n );\n }\n\n if (targetExpiredSub) {\n card.startedAt = targetExpiredSub.startedAt;\n\n const endsDate = new Date(targetExpiredSub.endsAt).setUTCHours(0, 0, 0, 0);\n card.endsAt = new Date(endsDate).toISOString();\n\n if (card.type === SubscriptionType.Personal && card.subType === PersonalSubscriptionType.Gold) {\n card.active = true;\n } else {\n card.active = targetExpiredSub.activated;\n }\n }\n\n if (targetActiveSub) {\n card.startedAt = targetActiveSub.startedAt;\n\n const endsDate = new Date(targetActiveSub.endsAt).setUTCHours(0, 0, 0, 0);\n card.endsAt = new Date(endsDate).toISOString();\n\n card.active = targetActiveSub.activated;\n\n if (new Date(card.startedAt) > new Date()) {\n card.notStarted = true;\n }\n }\n\n if (targetOfferedSub) {\n card.price = targetOfferedSub.priceNetto;\n card.name = targetOfferedSub.name;\n card.inactivePrice = this.getSubscriptionPrice(targetOfferedSub);\n card.id = targetOfferedSub.id;\n card.nonTaxableFees = targetOfferedSub.nonTaxableFees;\n\n if (!targetOfferedSub.disabled && targetOfferedSub.name === EnterpriseSubscriptionType.basic) {\n card.canSubscribe = true;\n }\n\n card.disabledReason = targetOfferedSub.disabledReason;\n }\n\n if (card.type !== SubscriptionType.Business && !profile?.referenceAddress) {\n card.disabled = true;\n }\n\n if (card.type === SubscriptionType.Business && !targetExpiredSub) {\n if (!card.active) {\n if (card.name === EnterpriseSubscriptionType.basic) {\n card.icon = BASICBLUE;\n } else if (card.name === EnterpriseSubscriptionType.premium) {\n card.icon = PREMIUMBLUE;\n }\n } else {\n if (card.name === EnterpriseSubscriptionType.basic) {\n card.icon = BASICWHITE;\n } else if (card.name === EnterpriseSubscriptionType.premium) {\n card.icon = PREMIUMWHITE;\n }\n }\n }\n });\n\n return this.checkForUpgradableSubs(filteredCards);\n }\n\n getSubscriptionPrice(targetOfferedSub: SubscriptionDefinitionDto): number {\n switch (targetOfferedSub.subscriptionType) {\n case SubscriptionType.Business:\n return targetOfferedSub.priceNetto;\n\n case SubscriptionType.Ambassador:\n return targetOfferedSub.priceNetto;\n\n case SubscriptionType.SceMembership:\n return targetOfferedSub.priceNetto + targetOfferedSub.nonTaxableFees;\n\n case SubscriptionType.Personal:\n return targetOfferedSub.priceBrutto;\n }\n }\n\n checkForUpgradableSubs(filteredCards: Record[]) {\n const goldSub = filteredCards?.find(\n (item) => item.type === SubscriptionType.Personal && item.subType === PersonalSubscriptionType.Gold\n );\n\n const platinumSub = filteredCards?.find(\n (item) => item.type === SubscriptionType.Personal && item.subType === PersonalSubscriptionType.Platinum\n );\n\n if (goldSub?.active && platinumSub && !platinumSub.active) {\n platinumSub.upgradable = true;\n }\n\n if (platinumSub?.active && goldSub?.active) {\n platinumSub.forbidden = true;\n }\n\n const basicSub = filteredCards?.find(\n (item) => item.type === SubscriptionType.Business && item.name === EnterpriseSubscriptionType.basic\n );\n\n const premiumSub = filteredCards?.find(\n (item) => item.type === SubscriptionType.Business && item.name === EnterpriseSubscriptionType.premium\n );\n\n const normalizedEndsDate = +DateUtils.addTimeZoneOffset(new Date(premiumSub?.endsAt));\n const normalizedBasicEndsDate = +DateUtils.addTimeZoneOffset(new Date(basicSub?.endsAt));\n const resetedTodayDate = +DateUtils.resetDateTime(new Date());\n\n if (basicSub?.active && premiumSub && !premiumSub?.active) {\n basicSub.upgradable = true;\n basicSub.upgradableTo = premiumSub.id;\n }\n\n if (premiumSub) {\n premiumSub.basicIsActive = normalizedBasicEndsDate > resetedTodayDate;\n }\n\n if (normalizedBasicEndsDate < resetedTodayDate) {\n basicSub.upgradable = false;\n basicSub.active = false;\n delete basicSub.endsAt;\n delete basicSub.startedAt;\n }\n if (!basicSub?.active && premiumSub?.active && basicSub?.canSubscribe) {\n if (normalizedEndsDate < resetedTodayDate) {\n basicSub.available = true;\n }\n }\n return filteredCards;\n }\n\n getSubscriptionStatus(card: SubscriptionCard): SubscriptionStatus | null {\n const normalizedEndsDate = +DateUtils.addTimeZoneOffset(new Date(card.endsAt));\n const resetedTodayDate = +DateUtils.resetDateTime(new Date());\n\n if (normalizedEndsDate < resetedTodayDate) {\n return SubscriptionStatus.expired;\n }\n\n if (normalizedEndsDate - resetedTodayDate < MONTH_IN_MILISECONDS * 3) {\n return SubscriptionStatus.soonExpired;\n }\n\n //TODO: add condition for cancelled subscription\n if (false) {\n return SubscriptionStatus.cancelled;\n }\n\n if (card.active) {\n return SubscriptionStatus.subscribed;\n }\n\n return null;\n }\n\n getBusinessPremiumSubscriptionExistance(profileId: string): boolean {\n return this.getActiveSubscriptions(profileId)?.some((sub) => {\n const definition = sub.definition;\n return (\n definition.subscriptionType === SubscriptionType.Business &&\n definition.name === EnterpriseSubscriptionType.premium\n );\n });\n }\n\n private mergeSubscriptions(subs: SubscriptionDto[]): SubscriptionDto[] {\n const mergedSubs: SubscriptionDto[] = [];\n\n subs?.forEach((sub) => {\n const existingSubIndex = mergedSubs?.findIndex(\n (mergedSub) =>\n mergedSub.definition.subscriptionType === sub.definition.subscriptionType &&\n mergedSub.definition.personalSubscriptionType === sub.definition.personalSubscriptionType\n );\n\n if (existingSubIndex > -1) {\n if (new Date(mergedSubs[existingSubIndex].endsAt) < new Date(sub.endsAt)) {\n mergedSubs[existingSubIndex].endsAt = sub.endsAt;\n }\n } else {\n mergedSubs.push(sub);\n }\n });\n\n return mergedSubs;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrService } from 'ngx-toastr';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastrMessageServiceService {\n\n constructor(private toastrService: ToastrService, private translate: TranslateService) { }\n\n public error(messageKey: string, options = {}) {\n this.translate.get(messageKey, options).subscribe((message) => this.toastrService.error(message));\n }\n\n public success(messageKey: string) {\n this.translate.get(messageKey).subscribe((message) => this.toastrService.success(message));\n }\n\n public warningNoTranslate(message: string) {\n this.toastrService.warning(message);\n }\n\n public warning(messageKey: string) {\n this.translate.get(messageKey).subscribe((message) => this.toastrService.warning(message));\n }\n\n public showTranslatedError(message: string) {\n this.toastrService.error(message);\n }\n\n}\n","import {ApplicationFeatures, UserRoles} from '../enums/enums';\n\nexport interface IFeatureRole {\n featureName: ApplicationFeatures;\n roles: UserRoles[];\n}\n\nconst featureRoles: Record[] =\n [\n {\n feature: ApplicationFeatures.webWidget,\n roles: [UserRoles.owner, UserRoles.manager, UserRoles.developer, UserRoles.viewer],\n\n },\n {\n feature: ApplicationFeatures.refundRequests,\n roles: [UserRoles.owner, UserRoles.manager, UserRoles.cashier, UserRoles.viewer],\n\n },\n {\n feature: ApplicationFeatures.ambassador,\n roles: [UserRoles.owner, UserRoles.manager],\n\n },\n {\n feature: ApplicationFeatures.sceMembership,\n roles: [UserRoles.owner, UserRoles.manager, UserRoles.viewer],\n\n },\n {\n feature: ApplicationFeatures.userInvitations,\n roles: [UserRoles.owner, UserRoles.manager, UserRoles.viewer],\n\n },\n {\n feature: ApplicationFeatures.subscriptions,\n roles: [UserRoles.owner, UserRoles.manager, UserRoles.viewer],\n\n },\n {\n feature: ApplicationFeatures.deals,\n roles: [UserRoles.owner, UserRoles.manager],\n },\n {\n feature: ApplicationFeatures.paymentRequestTemplates,\n roles: [UserRoles.owner, UserRoles.manager],\n },\n ];\n\nexport default featureRoles;\n","import { Injectable } from '@angular/core';\nimport featureRoles from '../../constants/feature-roles';\nimport { ApplicationFeatures, UserRoles } from '../../enums/enums';\nimport { AuthService } from '../../../auth/auth.service/auth.service';\nimport {BusinessRoleDto, BusinessRolesClient} from '../../../api/auth-api.generated';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserRoleService {\n\n private roles: { [id: string]: UserRoles[] };\n\n constructor(private authService: AuthService,\n private businessRolesClient: BusinessRolesClient) {\n this.parseRoleClaims();\n\n this.authService.authState$.pipe().subscribe(() => {\n this.parseRoleClaims();\n });\n }\n\n parseRoleClaims() {\n const tokenPayload = this.authService.getTokenPayload();\n this.parseRoles(tokenPayload);\n }\n\n parseRoles(tokenPayload: any): void {\n const profileRoles: { [id: string]: UserRoles[] } = {};\n\n const parseRoleFunc = (role: any) => {\n const values = role.split(':');\n if (values.length === 2) {\n const profileId = values[0] as UserRoles;\n if (!profileRoles[profileId]) { profileRoles[profileId] = []; }\n profileRoles[profileId].push(values[1]);\n }\n };\n\n if (tokenPayload?.role) {\n if (Array.isArray(tokenPayload.role)) { tokenPayload.role.map(x => parseRoleFunc(x)); }\n else { parseRoleFunc(tokenPayload.role); }\n }\n\n this.roles = profileRoles;\n }\n\n public controllableProfile(profileId: string): boolean {\n if (!profileId || !this.roles || !this.roles[profileId]) { return false; }\n\n const roles = this.roles[profileId];\n return roles.includes(UserRoles.owner) || roles.includes(UserRoles.manager);\n }\n\n public isOnlyViewer(profileId: string): boolean {\n if (!this.roles || !this.roles[profileId]) { return true; }\n\n const roles = this.roles[profileId];\n if (roles.includes(UserRoles.owner) || roles.includes(UserRoles.manager) || roles.includes(UserRoles.cashier) ||\n roles.includes(UserRoles.developer)) { return false; }\n\n // else Viewer\n return true;\n }\n\n public isOnlyOwner(profileId: string): boolean {\n if (!this.roles || !this.roles[profileId]) { return true; }\n\n const roles = this.roles[profileId];\n if (roles.includes(UserRoles.viewer) || roles.includes(UserRoles.manager) || roles.includes(UserRoles.cashier) ||\n roles.includes(UserRoles.developer)) { return false; }\n\n // else Owner only\n return true;\n }\n\n public isDeveloper(profileId: string): boolean {\n if (!this.roles || !this.roles[profileId]) { return false; }\n\n const roles = this.roles[profileId];\n return roles.includes(UserRoles.developer);\n\n }\n\n public profileRoles(profileId: string): UserRoles[] {\n if (!this.roles || !this.roles[profileId]) { return null; }\n\n return this.roles[profileId];\n }\n\n public getAcceptedNonViewerRoles(profileId: string): Observable {\n return this.businessRolesClient.getAcceptedNonViewerRoles(profileId);\n }\n}\n\nexport const getFeatureRoles = (applicationFeatures: ApplicationFeatures): UserRoles[] =>\n featureRoles.find(x => x.feature === applicationFeatures).roles;\n","import { NgModule } from '@angular/core';\nimport { LoaderComponent } from './loader.component';\n\n\n\n@NgModule({\n declarations: [LoaderComponent],\n exports: [LoaderComponent],\n})\nexport class LoaderModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RouterModule } from '@angular/router';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\nimport { ImageCropperPopupComponent } from './components/image-cropper-popup/image-cropper-popup.component';\nimport { ImageUploadComponent } from './components/image-upload/image-upload.component';\nimport { ImageCropperModule } from 'ngx-image-cropper';\nimport { TimePickerComponent } from './components/time-picker/time-picker.component';\nimport { TimeParseDirective } from './directives/time-parse.directive';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NoTransactionComponent } from './components/no-transaction/no-transaction.component';\n\nimport { LoaderModule } from './components/loader/loader.module';\nimport { ProfileCardComponent } from './components/profile-card/profile-card.component';\nimport { ControllableProfileDirective } from './directives/controllable-profile/controllable-profile.directive';\nimport { YesNoDialogBoxModule } from './components/yes-no-dialog-box/yes-no-dialog-box.module';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\nimport { QRCodeModule } from 'angularx-qrcode';\nimport { TranslationKeyPipe, FlexibleNumberPipe, CurrencyScalePipe } from './pipes/';\nimport { BusinessLimitationDirective } from './directives/business-limitation/business-limitation.directive';\n\nconst customComponents = [\n ImageCropperPopupComponent,\n ImageUploadComponent,\n TimePickerComponent,\n NoTransactionComponent,\n ProfileCardComponent\n];\n\nconst customDirectives = [\n TimeParseDirective,\n ControllableProfileDirective,\n BusinessLimitationDirective\n];\n\n@NgModule({\n declarations: [\n customComponents,\n customDirectives,\n FlexibleNumberPipe,\n ProfileCardComponent,\n CurrencyScalePipe,\n TranslationKeyPipe,\n BusinessLimitationDirective,\n ],\n imports: [\n RouterModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n PerfectScrollbarModule,\n ImageCropperModule,\n LoaderModule,\n YesNoDialogBoxModule,\n AngularSvgIconModule,\n QRCodeModule\n ],\n exports: [\n PerfectScrollbarModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n CommonModule,\n customComponents,\n customDirectives,\n FlexibleNumberPipe,\n LoaderModule,\n CurrencyScalePipe,\n YesNoDialogBoxModule,\n AngularSvgIconModule,\n TranslationKeyPipe\n ],\n})\nexport class SharedModule { }\n","import { inject, InjectionToken } from '@angular/core';\nimport { WINDOW } from './window';\n\nexport const LOCAL_STORAGE = new InjectionToken(\n 'local storage token',\n {\n factory: () => inject(WINDOW).localStorage,\n },\n);\n\nexport const SESSION_STORAGE = new InjectionToken(\n 'session storage token',\n {\n factory: () => inject(WINDOW).sessionStorage,\n },\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\nexport const WINDOW = new InjectionToken(\n 'An abstraction over global window object',\n {\n factory: () => {\n const {defaultView} = inject(DOCUMENT);\n\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n },\n },\n);\n\nexport const BODY_ELEMENT = new InjectionToken(\n 'body token',\n {\n factory: () => inject(DOCUMENT).body as HTMLBodyElement,\n },\n);\n\nexport const NAVIGATOR = new InjectionToken(\n 'navigator token',\n {\n factory: () => {\n const {defaultView} = inject(DOCUMENT);\n\n return defaultView && defaultView.navigator;\n }\n },\n);\n","// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace DateUtils {\n export const format = (date: Date): Date => {\n const offset = date.getTimezoneOffset();\n return new Date(date.getTime() - offset * 60 * 1000);\n };\n\n export const formatToIsoString = (date: Date): string => {\n const offset = date.getTimezoneOffset();\n const tzDate = new Date(date.getTime() - offset * 60 * 1000);\n return tzDate.toISOString().split('T')[0];\n };\n\n export const decreaseDateWithOffset = (date = new Date(), offset: number = 1): Date => {\n const newDate = new Date(date);\n\n newDate.setDate(newDate.getDate() - offset);\n\n return newDate;\n };\n\n export const resetDateTime = (date = new Date()) => {\n const newDate = new Date(date);\n\n newDate.setHours(0, 0, 0, 0);\n\n return newDate;\n };\n\n export const setDateTime = (\n date = new Date(),\n hours: number = 23,\n mins: number = 59,\n sec: number = 59,\n milisec: number = 999\n ) => {\n const newDate = new Date(date);\n\n newDate.setHours(hours, mins, sec, milisec);\n\n return newDate;\n };\n\n export const increaseDateWithOffset = (date = new Date(), offset: number = 1): Date => {\n date.setDate(date.getDate() + offset);\n\n return date;\n };\n\n export const addTimeZoneOffset = (date = new Date()) => {\n const newDate = new Date(date);\n\n const offset = newDate.getTimezoneOffset();\n\n return date ? new Date(newDate.getTime() + offset * 60 * 1000) : undefined;\n };\n}\n","export const environment = {\n production: true,\n version: '2024.10.1',\n baseApiUrl: window.location.origin,\n securedApis: [\n 'https://localhost:5004',\n 'https://localhost:5002',\n 'https://localhost:5001',\n 'https://decr-portal-test.azurewebsites.net',\n 'https://decr-portal.azurewebsites.net',\n 'https://decr-wallet.azurewebsites.net/',\n 'https://decr-auth.azurewebsites.net/',\n 'https://ecred-portal.azurewebsites.net',\n 'https://ecred-wallet.azurewebsites.net/',\n 'https://ecred-auth.azurewebsites.net/',\n 'https://ecred-portal-test.azurewebsites.net',\n 'https://ecred-wallet-test.azurewebsites.net/',\n 'https://ecred-auth-test.azurewebsites.net/',\n 'https://ecs-portal-test.azurewebsites.net',\n 'https://ecs-wallet-test.azurewebsites.net/',\n 'https://ecs-auth-test.azurewebsites.net/',\n 'https://portal.ecredits.com',\n 'https://wallet.ecredits.com/',\n 'https://auth.ecredits.com/',\n ],\n googleStoreUrl: 'https://play.google.com/store/apps/details?id=com.ecredits.wallet',\n appleStoreUrl: 'https://apps.apple.com/ch/app/ecredits-wallet/id1542789150',\n // theme START\n adminRoot: '/',\n defaultMenuType: 'menu-default',\n subHiddenBreakpoint: 1440,\n menuHiddenBreakpoint: 768,\n themeColorStorageKey: 'vien-themecolor',\n isMultiColorActive: false,\n defaultColor: 'ecredits',\n isDarkSwitchActive: false,\n defaultDirection: 'ltr',\n themeRadiusStorageKey: 'vien-themeradius',\n isAuthGuardActive: false,\n // THEME END\n defaultConsumerLogoId: '11111111-1111-1111-1111-111111111111',\n defaultBusinessLogoId: '22222222-2222-2222-2222-222222222222',\n defaultConsumerName: 'Consumer',\n cashbackWorldName: 'eCashback contract',\n maxImageSize: 2,\n regex: {\n website: '^(https?://www\\\\.|https?://|www\\\\.)[a-z0-9]+([\\\\-\\\\.]{1}[a-z0-9]+)*\\\\.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$',\n email: '^[\\\\S]+@[0-9a-zA-Z_-]{2,}?(\\\\.[0-9a-zA-Z_]{2,}?)*(\\\\.[a-zA-Z]{2,}){1,2}$',\n tax: '^[a-zA-Z0-9]*$',\n phone: '^[0-9+()/]*$',\n amountRegex: '^[0-9]*(.[0-9]{1,8})?$',\n },\n noOfDashoboardTransactions: 15,\n noOfTransactionsForScrolling: 15,\n paymentReferenceValidation: {\n minLength: 2,\n maxLength: 64,\n },\n\n minimumAmount: 0.01,\n qrCodeWidth: {\n sm: 256,\n md: 256,\n },\n timeToSleep: 5,\n invitationMessageMaxLength: 400,\n hideWebWidget: false,\n maxTxExport: 1000,\n sceMembershipFormUrl: 'https://forms.office.com/r/mjfYnYh8zF',\n ambassadorTrainingPage: 'pages/ambassadors',\n resolveOtherLanguagesToEnglish: 'true',\n};\n","/**\n * @license Angular v13.2.7\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.2.7\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopAnimationDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: NoopAnimationDriver });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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 let timings = null;\n if (value.hasOwnProperty('duration')) {\n timings = value;\n }\n else 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 timings = 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.2.7\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.2.7\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserAnimationBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: BrowserAnimationBuilder });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", 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.2.7\", ngImport: i0, type: AnimationRendererFactory });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", 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.2.7\", ngImport: i0, type: InjectableAnimationEngine });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBrowserAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });\nBrowserAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNoopAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });\nNoopAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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 * @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 CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val;\n if (n === 1)\n return 1;\n return 5;\n}\nexport default [\"es-US\", [[\"a. m.\", \"p. m.\"], u, u], u, [[\"D\", \"L\", \"M\", \"M\", \"J\", \"V\", \"S\"], [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"], [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"], [\"DO\", \"LU\", \"MA\", \"MI\", \"JU\", \"VI\", \"SA\"]], [[\"D\", \"L\", \"M\", \"M\", \"J\", \"V\", \"S\"], [\"dom.\", \"lun.\", \"mar.\", \"mié.\", \"jue.\", \"vie.\", \"sáb.\"], [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"], [\"DO\", \"LU\", \"MA\", \"MI\", \"JU\", \"VI\", \"SA\"]], [[\"E\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"ene.\", \"feb.\", \"mar.\", \"abr.\", \"may.\", \"jun.\", \"jul.\", \"ago.\", \"sep.\", \"oct.\", \"nov.\", \"dic.\"], [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\", \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"]], u, [[\"a. C.\", \"d. C.\"], u, [\"antes de Cristo\", \"después de Cristo\"]], 0, [6, 0], [\"d/M/y\", \"d MMM y\", \"d 'de' MMMM 'de' y\", \"EEEE, d 'de' MMMM 'de' y\"], [\"h:mm a\", \"h:mm:ss a\", \"h:mm:ss a z\", \"h:mm:ss a zzzz\"], [\"{1} {0}\", u, \"{1}, {0}\", u], [\".\", \",\", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0 %\", \"¤#,##0.00\", \"#E0\"], \"USD\", \"$\", \"dólar estadounidense\", { \"AUD\": [u, \"$\"], \"BRL\": [u, \"R$\"], \"CAD\": [u, \"$\"], \"CNY\": [u, \"¥\"], \"ESP\": [\"₧\"], \"EUR\": [u, \"€\"], \"GBP\": [u, \"£\"], \"HKD\": [u, \"$\"], \"ILS\": [u, \"₪\"], \"INR\": [u, \"₹\"], \"KRW\": [u, \"₩\"], \"MXN\": [u, \"$\"], \"NZD\": [u, \"$\"], \"PHP\": [u, \"₱\"], \"TWD\": [u, \"NT$\"], \"VND\": [u, \"₫\"], \"XAF\": [], \"XCD\": [u, \"$\"], \"XOF\": [] }, \"ltr\", plural];\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 CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val, i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\\.?/, '').length;\n if (i === 1 && v === 0)\n return 1;\n return 5;\n}\nexport default [\"de\", [[\"AM\", \"PM\"], u, u], u, [[\"S\", \"M\", \"D\", \"M\", \"D\", \"F\", \"S\"], [\"So.\", \"Mo.\", \"Di.\", \"Mi.\", \"Do.\", \"Fr.\", \"Sa.\"], [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"], [\"So.\", \"Mo.\", \"Di.\", \"Mi.\", \"Do.\", \"Fr.\", \"Sa.\"]], [[\"S\", \"M\", \"D\", \"M\", \"D\", \"F\", \"S\"], [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"], [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"], [\"So.\", \"Mo.\", \"Di.\", \"Mi.\", \"Do.\", \"Fr.\", \"Sa.\"]], [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"Jan.\", \"Feb.\", \"März\", \"Apr.\", \"Mai\", \"Juni\", \"Juli\", \"Aug.\", \"Sept.\", \"Okt.\", \"Nov.\", \"Dez.\"], [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"]], [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"], [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"]], [[\"v. Chr.\", \"n. Chr.\"], u, u], 1, [6, 0], [\"dd.MM.yy\", \"dd.MM.y\", \"d. MMMM y\", \"EEEE, d. MMMM y\"], [\"HH:mm\", \"HH:mm:ss\", \"HH:mm:ss z\", \"HH:mm:ss zzzz\"], [\"{1}, {0}\", u, \"{1} 'um' {0}\", u], [\",\", \".\", \";\", \"%\", \"+\", \"-\", \"E\", \"·\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0 %\", \"#,##0.00 ¤\", \"#E0\"], \"EUR\", \"€\", \"Euro\", { \"ATS\": [\"öS\"], \"AUD\": [\"AU$\", \"$\"], \"BGM\": [\"BGK\"], \"BGO\": [\"BGJ\"], \"CUC\": [u, \"Cub$\"], \"DEM\": [\"DM\"], \"FKP\": [u, \"Fl£\"], \"GHS\": [u, \"₵\"], \"GNF\": [u, \"F.G.\"], \"KMF\": [u, \"FC\"], \"PHP\": [u, \"₱\"], \"RON\": [u, \"L\"], \"RWF\": [u, \"F.Rw\"], \"SYP\": [], \"THB\": [\"฿\"], \"TWD\": [\"NT$\"], \"XXX\": [], \"ZMW\": [u, \"K\"] }, \"ltr\", plural];\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 CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val, i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\\.?/, '').length;\n if (i === 1 && v === 0)\n return 1;\n return 5;\n}\nexport default [\"it\", [[\"m.\", \"p.\"], [\"AM\", \"PM\"], u], u, [[\"D\", \"L\", \"M\", \"M\", \"G\", \"V\", \"S\"], [\"dom\", \"lun\", \"mar\", \"mer\", \"gio\", \"ven\", \"sab\"], [\"domenica\", \"lunedì\", \"martedì\", \"mercoledì\", \"giovedì\", \"venerdì\", \"sabato\"], [\"dom\", \"lun\", \"mar\", \"mer\", \"gio\", \"ven\", \"sab\"]], u, [[\"G\", \"F\", \"M\", \"A\", \"M\", \"G\", \"L\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"gen\", \"feb\", \"mar\", \"apr\", \"mag\", \"giu\", \"lug\", \"ago\", \"set\", \"ott\", \"nov\", \"dic\"], [\"gennaio\", \"febbraio\", \"marzo\", \"aprile\", \"maggio\", \"giugno\", \"luglio\", \"agosto\", \"settembre\", \"ottobre\", \"novembre\", \"dicembre\"]], u, [[\"aC\", \"dC\"], [\"a.C.\", \"d.C.\"], [\"avanti Cristo\", \"dopo Cristo\"]], 1, [6, 0], [\"dd/MM/yy\", \"d MMM y\", \"d MMMM y\", \"EEEE d MMMM y\"], [\"HH:mm\", \"HH:mm:ss\", \"HH:mm:ss z\", \"HH:mm:ss zzzz\"], [\"{1}, {0}\", u, \"{1} {0}\", u], [\",\", \".\", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0%\", \"#,##0.00 ¤\", \"#E0\"], \"EUR\", \"€\", \"euro\", { \"BRL\": [u, \"R$\"], \"BYN\": [u, \"Br\"], \"EGP\": [u, \"£E\"], \"HKD\": [u, \"$\"], \"INR\": [u, \"₹\"], \"JPY\": [u, \"¥\"], \"KRW\": [u, \"₩\"], \"MXN\": [u, \"$\"], \"NOK\": [u, \"NKr\"], \"THB\": [\"฿\"], \"TWD\": [u, \"NT$\"], \"USD\": [u, \"$\"], \"VND\": [u, \"₫\"] }, \"ltr\", plural];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\nimport { SidebarComponent } from './sidebar/sidebar.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RouterModule } from '@angular/router';\nimport { FooterComponent } from './footer/footer.component';\nimport { FormsModule } from '@angular/forms';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport {AngularSvgIconModule} from 'angular-svg-icon';\nimport { TopnavComponent } from './topnav/topnav.component';\n\n@NgModule({\n declarations: [\n SidebarComponent,\n FooterComponent,\n TopnavComponent,\n ],\n imports: [\n CommonModule,\n PerfectScrollbarModule,\n TranslateModule,\n RouterModule,\n FormsModule,\n AngularSvgIconModule,\n CollapseModule\n ],\n exports: [\n SidebarComponent,\n FooterComponent,\n TopnavComponent,\n ]\n})\nexport class LayoutContainersModule { }\n","export const useScript = (flag: string, content: string, target: string = 'body', async: boolean = false, callback?: () => void): void => {\n const script = document.createElement('script') as HTMLScriptElement;\n script.async = async;\n script[flag] = content;\n script.onload = (): void => {\n if (callback && typeof callback === 'function') {\n callback();\n }\n };\n document?.[target].appendChild(script);\n};\n","import { environment } from 'src/environments/environment';\n\nexport const getThemeColor = () => {\n let color = environment.defaultColor;\n try {\n color = localStorage.getItem(environment.themeColorStorageKey) || environment.defaultColor\n } catch (error) {\n console.log(\">>>> src/app/utils/util.js : getThemeColor -> error\", error)\n color = environment.defaultColor\n }\n return color;\n}\nexport const setThemeColor = (color) => {\n try {\n if (color) {\n localStorage.setItem(environment.themeColorStorageKey, color);\n } else {\n localStorage.removeItem(environment.themeColorStorageKey)\n }\n } catch (error) {\n console.log(\">>>> src/app/utils/util.js : setThemeColor -> error\", error)\n }\n}\nexport const getThemeRadius = () => {\n let radius = 'rounded';\n try {\n radius = localStorage.getItem(environment.themeRadiusStorageKey) || 'rounded';\n } catch (error) {\n console.log(\">>>> src/app/utils/util.js : getThemeRadius -> error\", error)\n radius = 'rounded'\n }\n return radius;\n}\nexport const setThemeRadius = (radius) => {\n try {\n localStorage.setItem(environment.themeRadiusStorageKey, radius);\n } catch (error) {\n console.log(\">>>> src/app/utils/util.js : setThemeRadius -> error\", error)\n }\n}\n\nexport const getThemeLang = () => {\n let lang = 'en-US';\n try {\n lang = localStorage.getItem('theme_lang') || 'en-US';\n } catch (error) {\n console.log(\">>>> src/app/utils/util.js : getThemeLang -> error\", error)\n lang = 'en-US'\n }\n return lang;\n}\nexport const setThemeLang = (lang) => {\n try {\n localStorage.setItem('theme_lang', lang);\n } catch (error) {\n console.log(\">>>> src/app/utils/util.js : setThemeLang -> error\", lang)\n }\n}\n\nexport const getUserRole = () => {\n let role = environment.defaultRole;\n try {\n role = localStorage.getItem('theme_user_role') || environment.defaultRole;\n } catch (error) {\n console.log(\">>>> src/app/utils/util.js : getUserRole -> error\", error)\n role = environment.defaultRole\n }\n return role;\n}\nexport const setUserRole = (role) => {\n try {\n localStorage.setItem('theme_user_role', role);\n } catch (error) {\n console.log(\">>>> src/app/utils/util.js : setUserRole -> error\", role)\n }\n}\n","

\n","import { Component, OnInit, OnDestroy, HostListener, ViewChild, ElementRef, Renderer2, Input } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { SidebarService, ISidebar } from '../sidebar/sidebar.service';\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { LangService } from 'src/app/shared/services/lang/lang.service';\nimport { AuthService, AuthState } from 'src/app/auth/auth.service/auth.service';\nimport { environment } from 'src/environments/environment';\nimport { getThemeColor, setThemeColor } from 'src/app/utils/util';\nimport { BACK_SETTINGS_REDIRECT, SIDEBAR_CLOSED_STATE } from '../../../shared/constants/value';\nimport { AppSettingsService } from 'src/app/shared/services/app-settings/app-settings.service';\nimport { LocalStorageService } from 'src/app/shared/services/storage/local-storage/local-storage.service';\nimport { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { DestroyService } from '../../../shared/services/destroy/destroy.service';\n\n@Component({\n selector: 'app-topnav',\n templateUrl: './topnav.component.html',\n styleUrls: ['./topnav.component.scss'],\n providers: [Location, { provide: LocationStrategy, useClass: PathLocationStrategy }, DestroyService],\n})\nexport class TopnavComponent implements OnInit, OnDestroy {\n @ViewChild('toggleButton') toggleButton: ElementRef;\n @ViewChild('menu') menu: ElementRef;\n @Input() hideSettingsMenu: boolean;\n\n adminRoot = environment.adminRoot;\n sidebar: ISidebar;\n sidebarSubscription: Subscription;\n displayName$: Observable;\n isFullScreen = false;\n isDarkModeActive = getThemeColor().indexOf('dark') > -1;\n searchKey = '';\n showSidebarMenuBurger = true;\n hideDownloadWalletBanner = false;\n isSettingsOpened = false;\n\n public isAuthenticated$: Observable = this.authService.authState$.pipe(\n map((authState) => authState === AuthState.authenticated)\n );\n\n public userName$: Observable = this.authService.userData$.pipe(map((u) => u && u.name));\n\n constructor(\n private sidebarService: SidebarService,\n private authService: AuthService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private langService: LangService,\n private renderer: Renderer2,\n private localStorageService: LocalStorageService,\n private location: Location,\n private destroy$: DestroyService\n ) {\n langService.init();\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.destroy$),\n map(() => this.activatedRoute),\n map((route) => {\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n return route;\n })\n )\n .subscribe((route) => {\n this.showSidebarMenuBurger = route.snapshot.data.showProfileMenu;\n this.hideDownloadWalletBanner = route.snapshot.data.hideDownloadWalletBanner ?? false;\n\n this.sidebarService.showSidebar = !!this.showSidebarMenuBurger;\n });\n\n this.renderer.listen('window', 'click', (e: Event) => {\n if (e.target !== this.toggleButton?.nativeElement && e.target !== this.menu?.nativeElement) {\n this.isSettingsOpened = false;\n }\n });\n }\n\n @HostListener('document:click', ['$event'])\n handleDocumentClick(event): void {\n const input = document.querySelector('.mobile-view');\n if (input && input.classList) {\n input.classList.remove('mobile-view');\n }\n this.searchKey = '';\n }\n\n @HostListener('document:fullscreenchange', ['$event'])\n handleFullscreen(event): void {\n this.isFullScreen = !!document.fullscreenElement;\n }\n\n onDarkModeChange(event): void {\n let color = getThemeColor();\n if (color.indexOf('dark') > -1) {\n color = color.replace('dark', 'light');\n } else if (color.indexOf('light') > -1) {\n color = color.replace('light', 'dark');\n }\n setThemeColor(color);\n setTimeout(() => {\n window.location.reload();\n }, 200);\n }\n\n fullScreenClick(): void {\n if (document.fullscreenElement) {\n document.exitFullscreen();\n } else {\n document.documentElement.requestFullscreen();\n }\n }\n\n async ngOnInit(): Promise {\n if (await this.authService.isLoggedIn) {\n this.displayName$ = this.authService.userData$.pipe(map((u) => u && u.name));\n }\n this.sidebarSubscription = this.sidebarService.getSidebar().subscribe(\n (res) => {\n this.sidebar = res;\n },\n (err) => {\n console.error(`An error occurred: ${err.message}`);\n }\n );\n }\n\n ngOnDestroy(): void {\n if (this.sidebarSubscription) {\n this.sidebarSubscription.unsubscribe();\n }\n }\n\n menuButtonClick = (e: { stopPropagation: () => void }, menuClickCount: number, containerClassnames: string) => {\n if (e) {\n e.stopPropagation();\n }\n\n setTimeout(() => {\n const event = document.createEvent('HTMLEvents');\n event.initEvent('resize', false, false);\n window.dispatchEvent(event);\n }, 350);\n\n if (containerClassnames.includes('main-menu-hidden')) {\n containerClassnames = containerClassnames.slice(0, containerClassnames.indexOf('main-menu-hidden') - 1);\n this.saveSidebarState(false);\n } else {\n containerClassnames += ' main-menu-hidden';\n this.saveSidebarState(true);\n }\n\n this.sidebarService.setContainerClassnames(\n menuClickCount++ === 0 ? 2 : 4, // consider only two clicks - either show both menus (4 clicks) or hide both (2 clicks)!\n containerClassnames,\n this.sidebar.selectedMenuHasSubItems\n );\n };\n\n mobileMenuButtonClick = (event: { stopPropagation: () => void }, containerClassnames: string) => {\n if (event) {\n event.stopPropagation();\n }\n this.sidebarService.clickOnMobileMenu(containerClassnames);\n };\n\n async onSignOut(e: { stopPropagation: () => void }): Promise {\n if (e) {\n e.stopPropagation();\n }\n\n this.authService.logoff();\n\n await this.router.navigate([{ outlets: { popup: null } }]);\n\n this.router.navigate(['/profiles/select']); // note: this is required for successful logout from subpages!\n }\n\n searchKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.search();\n } else if (event.key === 'Escape') {\n const input = document.querySelector('.mobile-view');\n if (input && input.classList) {\n input.classList.remove('mobile-view');\n }\n this.searchKey = '';\n }\n }\n\n searchAreaClick(event): void {\n event.stopPropagation();\n }\n searchClick(event): void {\n if (window.innerWidth < environment.menuHiddenBreakpoint) {\n let elem = event.target;\n if (!event.target.classList.contains('search')) {\n if (event.target.parentElement.classList.contains('search')) {\n elem = event.target.parentElement;\n } else if (event.target.parentElement.parentElement.classList.contains('search')) {\n elem = event.target.parentElement.parentElement;\n }\n }\n\n if (elem.classList.contains('mobile-view')) {\n this.search();\n elem.classList.remove('mobile-view');\n } else {\n elem.classList.add('mobile-view');\n }\n } else {\n this.search();\n }\n event.stopPropagation();\n }\n\n search(): void {\n if (this.searchKey && this.searchKey.length > 1) {\n this.router.navigate([this.adminRoot + '/pages/miscellaneous/search'], {\n queryParams: { key: this.searchKey.toLowerCase().trim() },\n });\n this.searchKey = '';\n }\n }\n\n onCogClick() {\n this.isSettingsOpened = !this.isSettingsOpened;\n }\n\n saveRedirectUrl() {\n this.localStorageService.write(BACK_SETTINGS_REDIRECT, this.location.path());\n }\n\n saveSidebarState(flag: boolean) {\n this.localStorageService.write(SIDEBAR_CLOSED_STATE, flag);\n }\n}\n","import {AfterContentChecked, AfterViewInit, ChangeDetectorRef, Component, OnInit, Renderer2} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, Router} from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {environment} from 'src/environments/environment';\nimport {AuthService, AuthState} from './auth/auth.service/auth.service';\nimport {ISidebar, SidebarService} from 'src/app/containers/layout/sidebar/sidebar.service';\nimport {AppSettingsService} from './shared/services/app-settings/app-settings.service';\nimport {AUTH_ATTEMPT, LOGOUT_MARKER, PATH_AUTOLOGIN, REDIRECT, UNAUTHORIZED} from './shared/constants/value';\nimport {ApplicationRouteSegments} from './shared/enums/enums';\nimport {LocalStorageService} from './shared/services/storage/local-storage/local-storage.service';\nimport {ModalService} from './shared/services/modal/modal.service';\nimport {GoogleServicesClient, UserClient, UserLanguageDto} from './api/portal-api.generated';\nimport {useScript} from './shared/helpers/use-script/use-script';\nimport {GA_ENDPOINT} from './shared/constants/links';\nimport {buildGAScript} from './shared/helpers/google-analytics/google-analytics';\nimport { LangService } from './shared/services/lang/lang.service';\nimport {DestroyService} from './shared/services/destroy/destroy.service';\nimport {takeUntil} from 'rxjs/operators';\nimport {PlatformLocation } from '@angular/common';\n\ndeclare const gtag: (...args: any[]) => void;\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n providers: [\n DestroyService,\n ]\n})\nexport class AppComponent implements OnInit, AfterViewInit, AfterContentChecked {\n title = 'eCredits';\n\n version: string = environment.version;\n\n isMultiColorActive = environment.isMultiColorActive;\n\n sidebar$: Observable;\n\n showPage = false;\n\n notAuthorized: boolean;\n\n private urlBeforeRedirect: string;\n\n constructor(\n public sidebarService: SidebarService,\n private authService: AuthService,\n private router: Router,\n private renderer: Renderer2,\n private localStorageService: LocalStorageService,\n private cd: ChangeDetectorRef,\n public modalService: ModalService,\n private readonly route: ActivatedRoute,\n private googleServicesClient: GoogleServicesClient,\n private readonly userClient: UserClient,\n private readonly langService: LangService,\n private destroy$: DestroyService,\n private platformLocation: PlatformLocation) {\n }\n\n ngOnInit() {\n if(this.platformLocation.href.includes('resetsession=1')) {\n this.router.navigate([PATH_AUTOLOGIN], {queryParams: {resetsession: 0}});\n } else {\n this.checkAuth();\n this.sidebar$ = this.sidebarService.getSidebar();\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.renderer.addClass(document.body, 'show');\n }, 1000);\n setTimeout(() => {\n this.renderer.addClass(document.body, 'default-transition');\n }, 1500);\n }\n\n ngAfterContentChecked() {\n this.cd.detectChanges();\n }\n\n private checkAuth(): void {\n this.authService.checkAuth()\n .subscribe(async (authState) => {\n const {pathname, href, search} = window.location;\n\n switch (authState) {\n case AuthState.notAuthenticated: {\n this.localStorageService.remove(LOGOUT_MARKER);\n const routeName = this.extractRouteFromPathname(pathname);\n\n if (pathname !== PATH_AUTOLOGIN) {\n if (this.router.config.find(({path}) => path === routeName)?.data?.bypassAutoLogin) {\n this.showPage = true;\n this.notAuthorized = true;\n break;\n }\n\n let authAttempt: number | undefined = this.localStorageService.read(AUTH_ATTEMPT);\n this.localStorageService.write(AUTH_ATTEMPT, !authAttempt ? 1 : authAttempt++);\n\n if (!authAttempt) {\n this.localStorageService.write(REDIRECT, pathname + search);\n }\n\n if (this.router.config.find(({path}) => path === routeName)?.data?.bypassAutoLogin) {\n this.showPage = true;\n this.notAuthorized = true;\n break;\n }\n\n if (authAttempt > 3) {\n break;\n }\n\n this.router.navigate([PATH_AUTOLOGIN]);\n }\n\n break;\n }\n case AuthState.incompleteRegistration: {\n window.location.href = AppSettingsService.authServiceUrl + '/Account/Confirm?ReturnUrl=' + href;\n break;\n }\n default: {\n /*todo commented logOut marker*/\n /*if (this.localStorageService.read(LOGOUT_MARKER)) {\n this.authService.logoff();\n break;\n }*/\n\n await this.initGoogleServices();\n\n this.initLang();\n this.showPage = true;\n this.navigateToStoredEndpoint();\n break;\n }\n }\n });\n }\n\n private navigateToStoredEndpoint() {\n const path = this.localStorageService.read(REDIRECT);\n const currentUrl = this.router.url;\n\n\n if (currentUrl === path || !path) {\n this.localStorageService.remove(REDIRECT);\n this.localStorageService.remove(AUTH_ATTEMPT);\n return;\n }\n\n if (path.toString().includes(UNAUTHORIZED)) {\n this.router.navigate([ApplicationRouteSegments.unauthorized])\n .then(() => this.localStorageService.write(REDIRECT, '/'));\n } else if (!this.localStorageService.read(AUTH_ATTEMPT)) {\n this.localStorageService.remove(AUTH_ATTEMPT);\n return;\n } else {\n this.router.navigateByUrl(path).then(() => this.localStorageService.remove(REDIRECT));\n }\n\n this.localStorageService.remove(AUTH_ATTEMPT);\n }\n\n private extractRouteFromPathname(pathname: string): string {\n return pathname.split('/')[1];\n }\n\n private async initGoogleServices() {\n try {\n const {analyticsMeasurementId, siteKey} = await this.googleServicesClient.getConfigurations().toPromise();\n\n if(analyticsMeasurementId) {\n this.initGoogleAnalytics(analyticsMeasurementId);\n }\n\n if(siteKey) {\n AppSettingsService.siteKey = siteKey;\n }\n }\n catch (e) {\n }\n }\n\n private initGoogleAnalytics(id: string) {\n useScript('src', GA_ENDPOINT + id, 'head', true);\n\n useScript('text', buildGAScript(id), 'head');\n\n this.initRouterEvents();\n }\n\n private initRouterEvents() {\n this.router.events.pipe(takeUntil(this.destroy$)).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.sendAnalyticsEvent();\n }\n });\n }\n\n private initLang(): void {\n this.userClient.getUserLang().subscribe((response: UserLanguageDto) => this.langService.setLanguage(response.language));\n }\n\n private sendAnalyticsEvent(event: string = 'page_view') {\n const href: string = this.platformLocation.href;\n\n gtag('event', event, {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n page_path: href,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n page_referrer: this.urlBeforeRedirect,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n page_location: href });\n\n this.urlBeforeRedirect = href;\n }\n}\n","export const buildGAScript = (id: string) => (\n `\n window.dataLayer = window.dataLayer || [];\n\n function gtag(){\n dataLayer.push(arguments);\n }\n\n gtag('js', new Date());\n \n gtag('config', '${id}', {send_page_view: false});\n `\n);\n","
\n
\n \n
\n
\n \n
\n
\n
\n
\n\n\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { AuthService } from '../auth.service/auth.service';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthInterceptor implements HttpInterceptor {\n constructor(private authService: AuthService) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n // Ensure we send the token only to routes which are secured\n if (!environment.securedApis.find((x) => req.url.startsWith(x))) {\n return next.handle(req);\n }\n\n const token = this.authService.getToken();\n\n if (!token) {\n return next.handle(req);\n }\n\n req = req.clone({\n headers: req.headers.set('Authorization', 'Bearer ' + token),\n });\n\n return next.handle(req);\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\nimport { AuthService } from '../auth.service/auth.service';\n\n@Component({\n selector: 'app-auto-component',\n template: `
`,\n})\nexport class AutoLoginComponent implements OnInit {\n lang: any;\n\n constructor(private authService: AuthService) {}\n\n ngOnInit() {\n this.authService.checkAuth().subscribe(() => this.authService.authorize(null));\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-forbidden',\n templateUrl: 'forbidden.component.html'\n})\n\nexport class ForbiddenComponent implements OnInit {\n\n public message: string;\n public values: any[] = [];\n\n constructor() {\n this.message = 'ForbiddenComponent constructor';\n }\n\n ngOnInit() {\n }\n}\n","
403: You have no rights to access this.
\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\n\n@Component({\n selector: 'app-settings-tabs',\n templateUrl: './settings-tabs.component.html',\n styleUrls: ['./settings-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SettingsTabsComponent implements OnInit {\n\n @Input() currentTab: string;\n\n @Output() tabSelected: EventEmitter = new EventEmitter();\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n onSelectLink(currentTab) {\n this.currentTab = currentTab;\n this.tabSelected.emit({activeTab: currentTab});\n }\n}\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.label }}\n \n \n {{ item.label }}\n \n \n
\n
\n
\n
\n
\n {{\"settings.general.number-scale-label\" | translate }}\n
\n
\n
\n \n \n {{ item.currencyName }}\n \n \n {{ item.currencyName }}\n \n \n\n \n \n {{ item.name }}\n \n \n {{ item.name }}\n \n \n
\n
\n
\n
\n\n
\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { AuthClient } from 'src/app/api/auth-api.generated';\nimport { TranslateService } from '@ngx-translate/core';\nimport { of } from 'rxjs';\nimport { catchError, map, take } from 'rxjs/operators';\nimport { CurrencySettingDto, UserCurrencySettingsDto, UsersClient } from 'src/app/api/wallet-api.generated';\nimport { AppSettingsService } from 'src/app/shared/services/app-settings/app-settings.service';\nimport { ApplicationFeatures, MaxFractionDigits } from 'src/app/shared/enums/enums';\nimport { IDropDownItem } from 'src/app/shared/models/drop-down-item';\nimport { LangService } from 'src/app/shared/services/lang/lang.service';\nimport { ToastrMessageServiceService } from 'src/app/shared/services/toastr-message/toastr-message-service.service';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { ConfigurationService } from '../../shared/services/configuration/configuration.service';\nimport {Language} from '../../shared/interfaces/language';\n\nconst maxFractionDigitsKeyPrefix = 'max-fraction-digits.';\n\n@Component({\n selector: 'app-general-settings',\n templateUrl: './general-settings.component.html',\n styleUrls: ['./general-settings.component.scss'],\n})\nexport class GeneralSettingsComponent implements OnInit {\n\n public currentTab = 'settings';\n public isLoading = false;\n\n languages: Language[];\n currentLanguage: string;\n isSingleLang;\n\n public isEthDisabled: boolean = this.configurationService.checkForDisabledFeature(ApplicationFeatures.ethIntegration);\n\n maxFractionDigits: string[];\n userCurrencySettingsDto: UserCurrencySettingsDto;\n updateMaxFractionDigitsSuccessMsg = _('settings.general.update-max-fraction-digits-success-message');\n updateMaxFractionDigitsFailMsg = _('settings.general.update-max-fraction-digits-fail-message');\n\n public selectedCurrency;\n public selectedMaxFractionDigits: number;\n\n public currencies: CurrencySettingDto[];\n public fractionDigits: IDropDownItem[];\n private currencySettingId: string;\n\n constructor(\n private langService: LangService,\n private transalateService: TranslateService,\n private toastrMessageServiceService: ToastrMessageServiceService,\n private authClient: AuthClient,\n private configurationService: ConfigurationService,\n private readonly usersClient: UsersClient\n ) {\n langService.init();\n this.languages = this.langService.supportedLanguages;\n this.currentLanguage = this.langService.language;\n this.isSingleLang = this.langService.isSingleLang;\n\n // this.token = this.authService.getToken();\n\n const maxFractionDigitsKeys = Object.keys(MaxFractionDigits);\n\n this.maxFractionDigits = maxFractionDigitsKeys\n .slice(maxFractionDigitsKeys.length / 2)\n .map((x) => `${maxFractionDigitsKeyPrefix}${x}`);\n }\n\n ngOnInit() {\n // this.authService.refreshSession().subscribe((result) => {\n // this.token = result.accessToken;\n // });\n\n this.usersClient.getCurrencySettings()\n ?.pipe(take(1))\n .subscribe((result: UserCurrencySettingsDto) => this.initCurrencySettings(result, null));\n\n this.transalateService\n .get(this.maxFractionDigits)\n ?.pipe(map((x) => this.mapDropDownList(x))).subscribe((result) => {\n this.fractionDigits = result;\n });\n\n }\n\n mapDropDownList(res: any): IDropDownItem[] {\n const dropDownItemList: IDropDownItem[] = [];\n for (const key in res) {\n if (Object.prototype.hasOwnProperty.call(res, key)) {\n const element = res[key];\n const currencyItem: IDropDownItem = {\n name: element,\n id: MaxFractionDigits[key.split('.')[1]],\n };\n dropDownItemList.push(currencyItem);\n }\n }\n\n return dropDownItemList;\n }\n\n async onLanguageChange(lang): Promise {\n this.langService.language = lang.code;\n this.currentLanguage = this.langService.language;\n await this.authClient.changeLanguage(lang.shorthand).toPromise();\n }\n\n onChangePassword(e: { stopPropagation: () => void; preventDefault: () => void }): void {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n const changePasswordUrl =\n AppSettingsService.authServiceUrl +\n '/Account/ChangePassword?returnUrl=' +\n encodeURIComponent(window.location.href);\n\n setTimeout(() => {\n document.location.href = changePasswordUrl;\n }, 0);\n // setTimeout -> workaround so that redirect is not blocked by some browsers\n }\n\n onCurrencyChange(currency: CurrencySettingDto) {\n this.selectedMaxFractionDigits = currency.maxFractionDigits;\n }\n\n onMaxFractionDigitChange(value: IDropDownItem): void {\n this.isLoading = true;\n\n const currencySettingDto: UserCurrencySettingsDto = {\n id: this.currencySettingId,\n currencySettings: this.currencies.map(currency => currency.currency === this.selectedCurrency.currency ?\n { ...currency, maxFractionDigits: Number(value.id)} : currency )\n };\n\n this.usersClient.updateCurrencySettings(currencySettingDto).pipe(take(1),\n catchError(() => {\n this.toastrMessageServiceService.error(this.updateMaxFractionDigitsFailMsg);\n return of(null);\n })).subscribe(() => {\n const selectedCurrencyIndex = currencySettingDto.currencySettings\n .findIndex((currencySetting) => currencySetting.currency === this.selectedCurrency.currency);\n\n this.initCurrencySettings(currencySettingDto, selectedCurrencyIndex);\n this.toastrMessageServiceService.success(this.updateMaxFractionDigitsSuccessMsg);\n this.isLoading = false;\n });\n\n }\n\n private initCurrencySettings(result: UserCurrencySettingsDto, selectedCurrencyIndex): void {\n if (result) {\n this.currencySettingId = result.id;\n this.currencies = result.currencySettings;\n this.selectedCurrency = selectedCurrencyIndex ? this.currencies[selectedCurrencyIndex] : this.currencies[0];\n this.selectedMaxFractionDigits = this.selectedCurrency.maxFractionDigits;\n }\n }\n}\n","
\n
\n
\n\n \n \n \n \n \n\n
\n
\n \n \n \n \n \n\n
\n
\n\n
\n \n \n \n
\n {{\n currencyCodePrefix + balanceTypes.eCredits | translate\n }}\n \n\n
\n \n \n {{ \"shared.buttons.cancel\" | translate }}\n \n \n {{ \"shared.buttons.save\" | translate }}\n \n \n
\n
\n","import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {NotificationSettingDto, ProfileDto} from '../../../api/wallet-api.generated';\nimport {GlobalConstants} from '../../../shared/common/constants';\nimport {BalanceTypes} from '../../../shared/enums/enums';\n\n@Component({\n selector: 'app-profile-notifications',\n templateUrl: './profile-notifications.component.html',\n styleUrls: ['./profile-notifications.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProfileNotificationsComponent implements OnInit {\n\n @Input() public readonly profile: ProfileDto;\n\n @Input() public readonly isEthDisabled: boolean;\n\n @Input() public readonly index: number;\n\n @Output() updateSettings: EventEmitter = new EventEmitter();\n\n public settings: NotificationSettingDto;\n\n public defaultSettings: NotificationSettingDto;\n\n public currencyCodePrefix = GlobalConstants.currencyCodePrefix;\n\n public balanceTypes = BalanceTypes;\n\n public edited = false;\n\n constructor() {\n }\n\n @Input() set notificationSettings(settings: NotificationSettingDto[]) {\n if (settings?.length) {\n this.settings = settings.find((item) => this.profile?.id === item?.profileId);\n this.defaultSettings = {...this.settings};\n }\n };\n\n ngOnInit(): void {\n }\n\n onTypeChange($event) {\n this.edited = true;\n }\n\n cancel($event) {\n this.settings = {...this.defaultSettings};\n this.edited = false;\n }\n\n onSave() {\n this.updateSettings.emit(this.settings);\n this.edited = false;\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 { Observable } from 'rxjs';\nimport { NotificationSettingDto, ProfileDto, ProfilesClient } from 'src/app/api/wallet-api.generated';\nimport { ProfilesService } from 'src/app/profiles/profiles.service/profiles.service';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrMessageServiceService } from '../../shared/services/toastr-message/toastr-message-service.service';\nimport { GlobalConstants } from 'src/app/shared/common/constants';\nimport {ApplicationFeatures, BalanceTypes} from 'src/app/shared/enums/enums';\nimport {ConfigurationService} from '../../shared/services/configuration/configuration.service';\n\nconst tabName = 'notifications';\n\n@Component({\n selector: 'app-notifications',\n templateUrl: './notifications-settings.component.html',\n styleUrls: ['./notifications-settings.component.scss'],\n})\nexport class NotificationsSettingsComponent implements OnInit {\n\n currentTab: string;\n\n profiles$: Observable = this.profilesService.profiles$;\n\n notificationSettings: NotificationSettingDto[];\n\n loadFailMsg = _('settings.notifications.settings-load-fail-message');\n updatedFailMsg = _('settings.notifications.settings-updated-fail-message');\n updatedSuccessMsg = _('settings.notifications.settings-updated-success-message');\n\n isLoading: boolean;\n\n currencyCodePrefix = GlobalConstants.currencyCodePrefix;\n\n balanceTypes = BalanceTypes;\n\n public isEthDisabled: boolean = this.configurationService.checkForDisabledFeature(ApplicationFeatures.ethIntegration);\n\n constructor(\n private profilesService: ProfilesService,\n private translateService: TranslateService,\n private profilesClient: ProfilesClient,\n private toastrMessageServiceService: ToastrMessageServiceService,\n private configurationService: ConfigurationService,\n ) {}\n\n ngOnInit(): void {\n this.currentTab = tabName;\n this.loadNotiicationSettings();\n }\n\n async loadNotiicationSettings() {\n this.isLoading = true;\n\n try {\n const settings: NotificationSettingDto[] = await this.profilesClient.getNotificationSettings().toPromise();\n this.notificationSettings = settings || [];\n }\n catch(e) {\n this.toastrMessageServiceService.error(this.loadFailMsg);\n }\n finally {\n this.isLoading = false;\n }\n }\n\n async updatePofileNotificationSetting(newProfileNotificationSetting: NotificationSettingDto) {\n if (!newProfileNotificationSetting) {\n return;\n }\n\n this.isLoading = true;\n\n try {\n await this.profilesClient.updateNotificationSettings(newProfileNotificationSetting).toPromise();\n this.toastrMessageServiceService.success(this.updatedSuccessMsg);\n }\n catch(e) {\n this.toastrMessageServiceService.error(this.updatedFailMsg);\n }\n finally {\n this.isLoading = false;\n }\n }\n}\n","
\n
\n \n \n \n \n
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n\n \n\n
\n
© {{year}} {{companyName}} | All rights reserved
\n
Version: {{version}}
\n
\n\n
\n \n
\n
\n","import {Component} from '@angular/core';\nimport {SidebarService} from '../containers/layout/sidebar/sidebar.service';\nimport {Location, LocationStrategy, PathLocationStrategy} from '@angular/common';\nimport {environment} from '../../environments/environment';\nimport {ACTIVE_SETTINGS_TAB, BACK_SETTINGS_REDIRECT, COMPANY_NAME} from '../shared/constants/value';\nimport {LocalStorageService} from '../shared/services/storage/local-storage/local-storage.service';\nimport {Router} from '@angular/router';\nimport {EWALLET_TERMS_OF_SERVICE} from '../shared/constants/links';\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n providers: [\n Location, {provide: LocationStrategy, useClass: PathLocationStrategy},\n ],\n})\n\nexport class SettingsComponent {\n\n public currentTab: string = this.localStorageService.read(ACTIVE_SETTINGS_TAB) || 'settings';\n\n public year: string = new Date().getFullYear().toString();\n\n public version: string = environment.version;\n\n public companyName = COMPANY_NAME;\n\n public isLoading = false;\n\n public termsOfServiceLink = EWALLET_TERMS_OF_SERVICE;\n\n constructor(private sidebarService: SidebarService,\n private location: Location,\n private localStorageService: LocalStorageService,\n private router: Router) {\n this.collapsSidebarMenu();\n }\n\n onTabSelectHandler(value) {\n this.currentTab = value.activeTab;\n this.localStorageService.write(ACTIVE_SETTINGS_TAB, this.currentTab);\n }\n\n collapsSidebarMenu() {\n setTimeout(() => {\n this.sidebarService.collapse(true);\n }, 100);\n }\n\n moveBack() {\n this.localStorageService.remove(ACTIVE_SETTINGS_TAB);\n\n this.isLoading = true;\n\n this.router.navigateByUrl(this.localStorageService.read(BACK_SETTINGS_REDIRECT) || '')\n .then(() => {\n this.localStorageService.remove(BACK_SETTINGS_REDIRECT);\n this.isLoading = false;\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {Observable, timer} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {DestroyService} from '../../shared/services/destroy/destroy.service';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-unauthorized',\n templateUrl: './unauthorized.component.html',\n styleUrls: ['./unauthorized.component.scss'],\n providers: [DestroyService],\n})\nexport class UnauthorizedComponent implements OnInit {\n\n private readonly redirectTimer$: Observable = timer(2000);\n\n constructor(private destroy$: DestroyService,\n private router: Router) { }\n\n ngOnInit(): void {\n this.redirectTimer$.pipe(takeUntil(this.destroy$))\n .subscribe(() => this.router.navigate(['/']));\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 {AuthService} from '../../../auth/auth.service/auth.service';\nimport {Observable, timer} from 'rxjs';\nimport {DestroyService} from '../../services/destroy/destroy.service';\nimport {takeUntil} from 'rxjs/operators';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-expired-session',\n templateUrl: './expired-session.component.html',\n styleUrls: ['./expired-session.component.scss'],\n providers: [DestroyService],\n})\nexport class ExpiredSessionComponent implements OnInit {\n\n private readonly redirectTimer$: Observable = timer(3000);\n\n constructor(private authService: AuthService,\n private destroy$: DestroyService,\n private router: Router) {\n }\n\n ngOnInit(): void {\n this.redirectTimer$.pipe(\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.logOut();\n });\n }\n\n async logOut() {\n this.authService.logoff();\n\n await this.router.navigate([{ outlets: { popup: null } }]);\n\n this.router.navigate(['/profiles/select']);\n }\n\n}\n","
\n \n
\n {{'shared.attention'|translate}}!\n
\n\n
\n
\n \n\n

\n {{'errors.expired-session'|translate }}\n

\n\n
\n \n
\n
\n
\n
\n
\n","
\n
\n
\n

\n

\n

\n
\n
\n
\n \n \n \n
\n \n
\n\n
\n
\n
\n
\n
\n
\n
\n\n \n
\n
\n\n \n
\n \n
\n
\n
\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, ParamMap } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { switchMap,catchError, tap, take } from 'rxjs/operators';\nimport { InvitationClient, InvitationUrlDetailsDto } from 'src/app/api/portal-api.generated';\nimport { AppSettingsService } from 'src/app/shared/services/app-settings/app-settings.service';\nimport { SidebarService } from 'src/app/containers/layout/sidebar/sidebar.service';\nimport { ApplicationFeatures, ApplicationRouteSegments } from 'src/app/shared/enums/enums';\nimport {LocalStorageService} from '../../../../shared/services/storage/local-storage/local-storage.service';\nimport {REDIRECT} from '../../../../shared/constants/value';\n@Component({\n selector: 'app-invitation',\n templateUrl: './invitation.component.html',\n styleUrls: ['./invitation.component.scss']\n})\nexport class InvitationComponent implements OnInit {\n public invitationUrlDetails$: Observable = this.route.paramMap\n .pipe(\n switchMap((params: ParamMap) => {\n const id: string = params.get('id');\n\n return this.invitationClient.getInvitationUrlDetails(id);\n }),\n catchError((e) => of({})\n ));\n\n public changeToAuthIfV3$ = this.route.paramMap.pipe(tap(\n (params: ParamMap) => {\n const id: string = params.get('id');\n if (!AppSettingsService.disabledFeatures.find((x) => x === ApplicationFeatures.invitationLinksV3)) {\n window.location.href = `${AppSettingsService.authServiceUrl}/Account/Register?invitationId=${id}`;\n }\n }\n ));\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly invitationClient: InvitationClient,\n private readonly sidebarService: SidebarService,\n private localStorageService: LocalStorageService,\n ) { }\n\n ngOnInit(): void {\n this.changeToAuthIfV3$.pipe(take(1)).subscribe();\n this.collapsSidebarMenu();\n }\n\n collapsSidebarMenu() {\n setTimeout(() => {\n this.sidebarService.collapse(true);\n }, 100);\n }\n\n createMerchantProfile(id: string): void {\n const { origin } = window.location;\n\n this.localStorageService.remove(REDIRECT);\n\n window.location.href = `${AppSettingsService.authServiceUrl}/Account/Register?invitationId=${id}&ReturnUrl=${origin}/${\n ApplicationRouteSegments.onboarding}/${ApplicationRouteSegments.business}/${ApplicationRouteSegments.createProfile}`;\n\n }\n\n\n}\n","import { Component } from '@angular/core';\nimport {PromotionPopupDecisionType, PromotionPopupDto, PromotionPopupsClient} from '../../../api/portal-api.generated';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {ApplicationRouteSegments} from '../../enums/enums';\n\n@Component({\n selector: 'app-sce-promotion',\n templateUrl: './sce-promotion.component.html',\n styleUrls: ['./sce-promotion.component.scss']\n})\nexport class ScePromotionComponent {\n\n public profileId: string;\n\n promotionPopupDecisionType = PromotionPopupDecisionType;\n\n constructor(private promotionClient: PromotionPopupsClient,\n private route: ActivatedRoute,\n private router: Router) {\n this.profileId = this.route.snapshot.paramMap.get('profileId') as string;\n }\n\n async action(decision: PromotionPopupDecisionType) {\n const body: PromotionPopupDto = {\n profileId: this.profileId,\n decision,\n };\n\n try {\n await this.promotionClient.promotionPopups(body).toPromise();\n }\n catch(e) {\n }\n finally {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n decision === PromotionPopupDecisionType.Apply ? await this.navigateToSceMembership() : await this.close();\n }\n }\n\n async close() {\n await this.router.navigate([{ outlets: { popup: null } }]);\n }\n\n async navigateToSceMembership() {\n await this.close();\n\n await this.router.navigate([\n ApplicationRouteSegments.profile,\n this.profileId,\n ApplicationRouteSegments.sceMembership,\n ApplicationRouteSegments.sceMembershipDashboard\n ]);\n }\n\n}\n","
\n \n
\n \"logo\"\n
\n\n
\n
\n \"polygon\"\n \"polygon\"\n \"polygon\"\n
\n\n
\n \n\n
\n \n \n
\n
\n
\n
\n
\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport {OidcSecurityService} from 'angular-auth-oidc-client';\nimport {filter, map} from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n\n constructor(private oidcSecurityService: OidcSecurityService) {}\n\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n return this.oidcSecurityService.isAuthenticated$.pipe(\n filter((isAuthenticated) => isAuthenticated),\n map((isAuthenticated) => isAuthenticated),\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AutoLoginComponent } from './auth/auto-login/auto-login.component';\nimport { ForbiddenComponent } from './auth/forbidden/forbidden.component';\nimport { SettingsComponent } from './settings/settings.component';\n\nimport { SelectStoreTypeComponent } from './profiles/dashboard-shell/business-settings/store/select-store-type/select-store-type.component';\nimport { UnauthorizedComponent } from './auth/unauthorized/unauthorized.component';\nimport { ApplicationRouteSegments } from './shared/enums/enums';\nimport { ExpiredSessionComponent } from './shared/popups/expired-session/expired-session.component';\nimport { InvitationComponent } from './profiles/dashboard-shell/invitation-management/invitation/invitation.component';\nimport { ScePromotionComponent } from './shared/popups/sce-promotion/sce-promotion.component';\nimport {AuthGuard} from './auth/auth.guard/auth.guard';\nimport {ProfilesResolver} from './profiles/profiles.resolver/profiles.resolver';\n\nconst routes: Routes = [\n {\n path: '',\n redirectTo: `${ApplicationRouteSegments.profile}/${ApplicationRouteSegments.profileSelect}`,\n pathMatch: 'full',\n },\n\n /*secured routes*/\n /*todo unite routes under one authGuard and resolver*/\n {\n path: ApplicationRouteSegments.profile,\n loadChildren: () => import('./profiles/profiles.module').then(m => m.ProfilesModule),\n canActivate: [AuthGuard],\n },\n {\n path: ApplicationRouteSegments.onboarding,\n loadChildren: () => import('./onboarding/onboarding.module').then((m) => m.OnboardingModule),\n canActivate: [AuthGuard],\n resolve: {\n profiles: ProfilesResolver,\n },\n },\n {\n path: ApplicationRouteSegments.settings,\n component: SettingsComponent,\n canActivate: [AuthGuard],\n resolve: {\n profiles: ProfilesResolver,\n },\n },\n\n /*unsecured routes*/\n {\n path: ApplicationRouteSegments.autologin,\n component: AutoLoginComponent,\n },\n {\n path: ApplicationRouteSegments.unauthorized,\n component: UnauthorizedComponent,\n },\n {\n path: ApplicationRouteSegments.forbidden,\n component: ForbiddenComponent,\n },\n {\n path: ApplicationRouteSegments.selectStore,\n component: SelectStoreTypeComponent,\n },\n {\n path: ApplicationRouteSegments.invitation,\n data: {\n bypassAutoLogin: true,\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: ':id',\n },\n {\n path: ':id',\n component: InvitationComponent,\n pathMatch: 'full',\n },\n ],\n },\n\n /*Common pop-up routes*/\n {\n path: 'session_error',\n component: ExpiredSessionComponent,\n outlet: 'popup',\n },\n {\n path: 'sce-promotion/:profileId',\n component: ScePromotionComponent,\n outlet: 'popup',\n },\n {\n path: '**',\n redirectTo: '',\n pathMatch: 'full',\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy', paramsInheritanceStrategy: 'always' })],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { Router } from '@angular/router';\nimport { ApplicationRouteSegments, ProcessedAuthCodes } from '../../enums/enums';\nimport { AuthService } from '../../../auth/auth.service/auth.service';\nimport {AppSettingsService} from '../../services/app-settings/app-settings.service';\n\n\n@Injectable()\nexport class HttpErrorInterceptor implements HttpInterceptor {\n\n constructor(private authService: AuthService,\n private router: Router) {\n }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request)\n .pipe(\n catchError((error: HttpErrorResponse) => {\n const { url } = request;\n\n if(url.includes('connect/token')) {\n return this.router.navigate([{outlets: {popup: ['session_error']}}]);\n }\n\n const { status } = error;\n\n if(!url.includes(AppSettingsService.authServiceUrl)\n && !url.includes(AppSettingsService.authServiceUrl?.replace('auth', 'wallet'))\n && !url.includes(AppSettingsService.authServiceUrl?.replace('auth', 'portal'))) {\n return throwError(error);\n }\n\n switch (status) {\n case ProcessedAuthCodes.notAuthenticated: {\n this.authService.logoff();\n this.router.navigate([{ outlets: { popup: null } }]);\n this.router.navigate(['/']);\n break;\n }\n\n case ProcessedAuthCodes.notAuthorized: {\n this.router.createUrlTree([ApplicationRouteSegments.unauthorized]);\n break;\n }\n\n default: {\n throwError(error);\n break;\n }\n }\n\n return throwError(error);\n }),\n ) as Observable>;\n }\n}\n","import {TranslateCompiler} from '@ngx-translate/core';\nimport {Injectable} from '@angular/core';\nimport {SupportedLanguagesCodes} from '../../enums/enums';\n\n@Injectable()\nexport class CustomTranslateCompiler extends TranslateCompiler {\n\n compile(value: string, lang: string): string | any {\n return value;\n }\n\n compileTranslations(translations: any, lang: string): any {\n if(lang !== SupportedLanguagesCodes.english) {\n return this.enrichTranslations(translations);\n }\n\n return translations;\n }\n\n enrichTranslations(translations: any) {\n const newObject = {};\n\n for (const key in translations) {\n if (translations.hasOwnProperty(key)) {\n if (typeof translations[key] === 'object') {\n newObject[key] = this.enrichTranslations(translations[key]);\n }\n else if ((typeof translations[key] === 'string') && (translations[key] === '')) {\n }\n else {\n newObject[key] = translations[key];\n }\n }\n }\n\n return newObject;\n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NgModule, APP_INITIALIZER } from '@angular/core';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { DatePipe, registerLocaleData } from '@angular/common';\nimport usLocale from '@angular/common/locales/es-US';\nimport deLocale from '@angular/common/locales/de';\nimport itLocale from '@angular/common/locales/it';\n\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { AuthModule, OidcConfigService } from 'angular-auth-oidc-client';\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\nimport { ToastrModule, ToastContainerModule } from 'ngx-toastr';\nimport { MissingTranslationHandler, TranslateCompiler, TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { TagInputModule } from 'ngx-chips';\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\n\nimport { SharedModule } from './shared/shared.module';\nimport { LayoutContainersModule } from './containers/layout/layout.containers.module';\nimport { AppComponent } from './app.component';\nimport { environment } from 'src/environments/environment';\n\n// import { FooterComponent } from './containers/layout/footer/footer.component';\n// import { ColorSwitcherComponent } from './containers/layout/color-switcher/color-switcher.component';\n// import { AngularFireModule } from '@angular/fire';\n\nimport { PORTAL_API_URL } from './api/portal-api.generated';\nimport { AUTH_API_URL } from './api/auth-api.generated';\nimport { configureAuth } from './auth/auth.service/auth.service';\nimport { CookieManagerService } from './shared/services/cookie-manager/cookie-manager.service';\nimport { UnauthorizedComponent } from './auth/unauthorized/unauthorized.component';\nimport { ForbiddenComponent } from './auth/forbidden/forbidden.component';\nimport { AuthInterceptor } from './auth/auth.interceptor/auth.interceptor';\nimport { AutoLoginComponent } from './auth/auto-login/auto-login.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { AppSettingsService } from './shared/services/app-settings/app-settings.service';\nimport { MissingTranslationHelper } from './shared/helpers/missing-translation-helper';\nimport { DateProxyPipe } from 'src/app/shared/pipes/date-proxy/date-proxy-pipe.pipe';\nimport { SettingsTabsComponent } from './settings/settings-tabs/settings-tabs.component';\nimport { NotificationsSettingsComponent } from './settings/notifications-settings/notifications-settings.component';\nimport { SettingsFooterComponent } from './settings/settings-footer/settings-footer.component';\nimport { GeneralSettingsComponent } from './settings/general-settings/general-settings.component';\nimport { ConfigurationService } from './shared/services/configuration/configuration.service';\nimport { AppRoutingModule } from './app-routing.module';\nimport { ProfileImagesModule } from './profiles/dashboard-shell/details/profile-images/profile-images.module';\nimport { DashboardShellComponent } from './profiles/dashboard-shell/dashboard-shell.component';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { MapperModule } from './shared/pipes/mapper/mapper.module';\nimport { SettingsClient, WALLET_API_URL } from './api/wallet-api.generated';\nimport { SWIPER_CONFIG, SwiperConfigInterface, SwiperModule } from 'ngx-swiper-wrapper';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\nimport { enGbLocale, deLocale as de_Locale, itLocale as it_Locale } from 'ngx-bootstrap/locale';\nimport { defineLocale } from 'ngx-bootstrap/chronos';\nimport { HttpErrorInterceptor } from './shared/interceptors/http-error/http-error.interceptor';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { SupportedLocalesCodes } from './shared/enums/enums';\nimport { ProfileNotificationsComponent } from './settings/notifications-settings/profile-notifications/profile-notifications.component';\nimport { ExpiredSessionComponent } from './shared/popups/expired-session/expired-session.component';\nimport { InvitationComponent } from './profiles/dashboard-shell/invitation-management/invitation/invitation.component';\nimport { ScePromotionComponent } from './shared/popups/sce-promotion/sce-promotion.component';\nimport { CustomTranslateCompiler } from './shared/helpers/translate-compiler/custom-translate-compiler';\nimport {HeaderComponent} from './containers/header/header.component';\n\nregisterLocaleData(usLocale, SupportedLocalesCodes.unitedStates);\nregisterLocaleData(deLocale, SupportedLocalesCodes.german);\nregisterLocaleData(itLocale, SupportedLocalesCodes.italian);\n\ndefineLocale(SupportedLocalesCodes.german, de_Locale);\ndefineLocale(SupportedLocalesCodes.britain, enGbLocale);\ndefineLocale(SupportedLocalesCodes.italian, it_Locale);\n\nconst DEFAULT_SWIPER_CONFIG: SwiperConfigInterface = {\n direction: 'horizontal',\n slidesPerView: 'auto',\n freeMode: false,\n mousewheel: false,\n keyboard: true,\n scrollbar: false,\n navigation: true,\n pagination: false,\n centeredSlides: false,\n};\n\n@NgModule({\n declarations: [\n AppComponent,\n AutoLoginComponent,\n SettingsComponent,\n //ColorSwitcherComponent,\n // SidebarComponent,\n //FooterComponent,\n UnauthorizedComponent,\n ForbiddenComponent,\n DateProxyPipe,\n SettingsTabsComponent,\n NotificationsSettingsComponent,\n SettingsFooterComponent,\n GeneralSettingsComponent,\n DashboardShellComponent,\n ProfileNotificationsComponent,\n ExpiredSessionComponent,\n InvitationComponent,\n ScePromotionComponent,\n HeaderComponent\n ],\n imports: [\n AuthModule.forRoot(),\n //AuthModule.forRoot(),\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\n HttpClientModule,\n AppRoutingModule,\n PerfectScrollbarModule,\n LayoutContainersModule,\n BrowserAnimationsModule,\n SharedModule,\n TranslateModule.forRoot({\n compiler: { provide: TranslateCompiler, useClass: CustomTranslateCompiler },\n missingTranslationHandler: { provide: MissingTranslationHandler, useClass: MissingTranslationHelper },\n useDefaultLang: true,\n }),\n // AngularFireModule.initializeApp(environment.firebase)\n BsDropdownModule.forRoot(),\n BsDatepickerModule.forRoot(),\n ToastrModule.forRoot(),\n ToastContainerModule,\n InfiniteScrollModule,\n TagInputModule,\n AccordionModule,\n ProfileImagesModule,\n NgSelectModule,\n MapperModule,\n SwiperModule,\n AngularSvgIconModule.forRoot(),\n NgxEchartsModule.forRoot({\n echarts: () => import('echarts'),\n }),\n ],\n providers: [\n {\n provide: PORTAL_API_URL,\n useValue: environment.baseApiUrl,\n },\n {\n provide: WALLET_API_URL,\n useValue: environment.baseApiUrl\n .replace('decr-portal-test', 'decr-portal')\n .replace('portal', 'wallet')\n .replace('localhost:5004', 'localhost:5002'),\n },\n {\n provide: AUTH_API_URL,\n useFactory: () => AppSettingsService.authServiceUrl,\n },\n SettingsClient,\n OidcConfigService,\n {\n provide: APP_INITIALIZER,\n useFactory: configureAuth,\n deps: [OidcConfigService, SettingsClient, ConfigurationService],\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpErrorInterceptor,\n multi: true,\n },\n DatePipe,\n {\n provide: SWIPER_CONFIG,\n useValue: DEFAULT_SWIPER_CONFIG,\n },\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\nimport { getThemeColor, setThemeColor } from './app/utils/util';\n\nexport const getBaseUrl = () => document.getElementsByTagName('base')[0].href;\n\nconst providers = [{ provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }];\n\nif (environment.production) {\n // enableProdMode();\n}\n\n// platformBrowserDynamic(providers)\n// .bootstrapModule(AppModule)\n// .catch((err) => console.log(err));\n\nconst color =\n environment.isMultiColorActive || environment.isDarkSwitchActive ? getThemeColor() : environment.defaultColor;\n\nimport('./assets/css/sass/themes/vien.' + color + '.scss')\n .then((x) => {\n setThemeColor(color);\n platformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch((err) => console.error(err));\n })\n .catch(() => {\n setThemeColor(null);\n window.location.reload();\n });\n\n// prevent scrolling of main content in case sidebar is scrolled to end\nsetTimeout(() => {\n const body = document.getElementsByTagName('body')[0];\n const sidebar = document.getElementsByTagName('app-sidebar')[0];\n const shell = document.getElementById('dashboard-shell');\n if (sidebar) {\n sidebar.addEventListener('mouseover', (event) => {\n body.style.overflow = 'hidden';\n }, false);\n }\n\n if (shell) {\n shell.addEventListener('mouseover', (event) => {\n body.style.overflow = 'auto';\n }, false);\n }\n}, 3000);\n","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @template T\n * @param {?} key\n * @return {?}\n */\nfunction marker(key) {\n return key;\n}\n\nexport { marker };\n\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = new Uint8Array(encodeUtf8(data))\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","import { Subject } from '../Subject';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport function retryWhen(notifier) {\n return (source) => source.lift(new RetryWhenOperator(notifier, source));\n}\nclass RetryWhenOperator {\n constructor(notifier, source) {\n this.notifier = notifier;\n this.source = source;\n }\n call(subscriber, source) {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n }\n}\nclass RetryWhenSubscriber extends SimpleOuterSubscriber {\n constructor(destination, notifier, source) {\n super(destination);\n this.notifier = notifier;\n this.source = source;\n }\n error(err) {\n if (!this.isStopped) {\n let errors = this.errors;\n let retries = this.retries;\n let retriesSubscription = this.retriesSubscription;\n if (!retries) {\n errors = new Subject();\n try {\n const { notifier } = this;\n retries = notifier(errors);\n }\n catch (e) {\n return super.error(e);\n }\n retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n }\n else {\n this.errors = undefined;\n this.retriesSubscription = undefined;\n }\n this._unsubscribeAndRecycle();\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n errors.next(err);\n }\n }\n _unsubscribe() {\n const { errors, retriesSubscription } = this;\n if (errors) {\n errors.unsubscribe();\n this.errors = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n notifyNext() {\n const { _unsubscribe } = this;\n this._unsubscribe = null;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n this.source.subscribe(this);\n }\n}\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']);\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class TemplateTag\n * @classdesc Consumes a pipeline of composable transformer plugins and produces a template tag.\n */\nvar TemplateTag = function () {\n /**\n * constructs a template tag\n * @constructs TemplateTag\n * @param {...Object} [...transformers] - an array or arguments list of transformers\n * @return {Function} - a template tag\n */\n function TemplateTag() {\n var _this = this;\n\n for (var _len = arguments.length, transformers = Array(_len), _key = 0; _key < _len; _key++) {\n transformers[_key] = arguments[_key];\n }\n\n _classCallCheck(this, TemplateTag);\n\n this.tag = function (strings) {\n for (var _len2 = arguments.length, expressions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n expressions[_key2 - 1] = arguments[_key2];\n }\n\n if (typeof strings === 'function') {\n // if the first argument passed is a function, assume it is a template tag and return\n // an intermediary tag that processes the template using the aforementioned tag, passing the\n // result to our tag\n return _this.interimTag.bind(_this, strings);\n }\n\n if (typeof strings === 'string') {\n // if the first argument passed is a string, just transform it\n return _this.transformEndResult(strings);\n }\n\n // else, return a transformed end result of processing the template with our tag\n strings = strings.map(_this.transformString.bind(_this));\n return _this.transformEndResult(strings.reduce(_this.processSubstitutions.bind(_this, expressions)));\n };\n\n // if first argument is an array, extrude it as a list of transformers\n if (transformers.length > 0 && Array.isArray(transformers[0])) {\n transformers = transformers[0];\n }\n\n // if any transformers are functions, this means they are not initiated - automatically initiate them\n this.transformers = transformers.map(function (transformer) {\n return typeof transformer === 'function' ? transformer() : transformer;\n });\n\n // return an ES2015 template tag\n return this.tag;\n }\n\n /**\n * Applies all transformers to a template literal tagged with this method.\n * If a function is passed as the first argument, assumes the function is a template tag\n * and applies it to the template, returning a template tag.\n * @param {(Function|String|Array)} strings - Either a template tag or an array containing template strings separated by identifier\n * @param {...*} ...expressions - Optional list of substitution values.\n * @return {(String|Function)} - Either an intermediary tag function or the results of processing the template.\n */\n\n\n _createClass(TemplateTag, [{\n key: 'interimTag',\n\n\n /**\n * An intermediary template tag that receives a template tag and passes the result of calling the template with the received\n * template tag to our own template tag.\n * @param {Function} nextTag - the received template tag\n * @param {Array} template - the template to process\n * @param {...*} ...substitutions - `substitutions` is an array of all substitutions in the template\n * @return {*} - the final processed value\n */\n value: function interimTag(previousTag, template) {\n for (var _len3 = arguments.length, substitutions = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n substitutions[_key3 - 2] = arguments[_key3];\n }\n\n return this.tag(_templateObject, previousTag.apply(undefined, [template].concat(substitutions)));\n }\n\n /**\n * Performs bulk processing on the tagged template, transforming each substitution and then\n * concatenating the resulting values into a string.\n * @param {Array<*>} substitutions - an array of all remaining substitutions present in this template\n * @param {String} resultSoFar - this iteration's result string so far\n * @param {String} remainingPart - the template chunk after the current substitution\n * @return {String} - the result of joining this iteration's processed substitution with the result\n */\n\n }, {\n key: 'processSubstitutions',\n value: function processSubstitutions(substitutions, resultSoFar, remainingPart) {\n var substitution = this.transformSubstitution(substitutions.shift(), resultSoFar);\n return ''.concat(resultSoFar, substitution, remainingPart);\n }\n\n /**\n * Iterate through each transformer, applying the transformer's `onString` method to the template\n * strings before all substitutions are processed.\n * @param {String} str - The input string\n * @return {String} - The final results of processing each transformer\n */\n\n }, {\n key: 'transformString',\n value: function transformString(str) {\n var cb = function cb(res, transform) {\n return transform.onString ? transform.onString(res) : res;\n };\n return this.transformers.reduce(cb, str);\n }\n\n /**\n * When a substitution is encountered, iterates through each transformer and applies the transformer's\n * `onSubstitution` method to the substitution.\n * @param {*} substitution - The current substitution\n * @param {String} resultSoFar - The result up to and excluding this substitution.\n * @return {*} - The final result of applying all substitution transformations.\n */\n\n }, {\n key: 'transformSubstitution',\n value: function transformSubstitution(substitution, resultSoFar) {\n var cb = function cb(res, transform) {\n return transform.onSubstitution ? transform.onSubstitution(res, resultSoFar) : res;\n };\n return this.transformers.reduce(cb, substitution);\n }\n\n /**\n * Iterates through each transformer, applying the transformer's `onEndResult` method to the\n * template literal after all substitutions have finished processing.\n * @param {String} endResult - The processed template, just before it is returned from the tag\n * @return {String} - The final results of processing each transformer\n */\n\n }, {\n key: 'transformEndResult',\n value: function transformEndResult(endResult) {\n var cb = function cb(res, transform) {\n return transform.onEndResult ? transform.onEndResult(res) : res;\n };\n return this.transformers.reduce(cb, endResult);\n }\n }]);\n\n return TemplateTag;\n}();\n\nexport default TemplateTag;\n","var defaults = {\n separator: '',\n conjunction: '',\n serial: false\n};\n\n/**\n * Converts an array substitution to a string containing a list\n * @param {String} [opts.separator = ''] - the character that separates each item\n * @param {String} [opts.conjunction = ''] - replace the last separator with this\n * @param {Boolean} [opts.serial = false] - include the separator before the conjunction? (Oxford comma use-case)\n *\n * @return {Object} - a TemplateTag transformer\n */\nvar inlineArrayTransformer = function inlineArrayTransformer() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults;\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n // only operate on arrays\n if (Array.isArray(substitution)) {\n var arrayLength = substitution.length;\n var separator = opts.separator;\n var conjunction = opts.conjunction;\n var serial = opts.serial;\n // join each item in the array into a string where each item is separated by separator\n // be sure to maintain indentation\n var indent = resultSoFar.match(/(\\n?[^\\S\\n]+)$/);\n if (indent) {\n substitution = substitution.join(separator + indent[1]);\n } else {\n substitution = substitution.join(separator + ' ');\n }\n // if conjunction is set, replace the last separator with conjunction, but only if there is more than one substitution\n if (conjunction && arrayLength > 1) {\n var separatorIndex = substitution.lastIndexOf(separator);\n substitution = substitution.slice(0, separatorIndex) + (serial ? separator : '') + ' ' + conjunction + substitution.slice(separatorIndex + 1);\n }\n }\n return substitution;\n }\n };\n};\n\nexport default inlineArrayTransformer;\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n/**\n * strips indentation from a template literal\n * @param {String} type = 'initial' - whether to remove all indentation or just leading indentation. can be 'all' or 'initial'\n * @return {Object} - a TemplateTag transformer\n */\nvar stripIndentTransformer = function stripIndentTransformer() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';\n return {\n onEndResult: function onEndResult(endResult) {\n if (type === 'initial') {\n // remove the shortest leading indentation from each line\n var match = endResult.match(/^[^\\S\\n]*(?=\\S)/gm);\n var indent = match && Math.min.apply(Math, _toConsumableArray(match.map(function (el) {\n return el.length;\n })));\n if (indent) {\n var regexp = new RegExp('^.{' + indent + '}', 'gm');\n return endResult.replace(regexp, '');\n }\n return endResult;\n }\n if (type === 'all') {\n // remove all indentation from each line\n return endResult.replace(/^[^\\S\\n]+/gm, '');\n }\n throw new Error('Unknown type: ' + type);\n }\n };\n};\n\nexport default stripIndentTransformer;\n","/**\n * TemplateTag transformer that trims whitespace on the end result of a tagged template\n * @param {String} side = '' - The side of the string to trim. Can be 'start' or 'end' (alternatively 'left' or 'right')\n * @return {Object} - a TemplateTag transformer\n */\nvar trimResultTransformer = function trimResultTransformer() {\n var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return {\n onEndResult: function onEndResult(endResult) {\n if (side === '') {\n return endResult.trim();\n }\n\n side = side.toLowerCase();\n\n if (side === 'start' || side === 'left') {\n return endResult.replace(/^\\s*/, '');\n }\n\n if (side === 'end' || side === 'right') {\n return endResult.replace(/\\s*$/, '');\n }\n\n throw new Error('Side not supported: ' + side);\n }\n };\n};\n\nexport default trimResultTransformer;\n","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\n\nvar commaLists = new TemplateTag(inlineArrayTransformer({ separator: ',' }), stripIndentTransformer, trimResultTransformer);\n\nexport default commaLists;\n","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\n\nvar commaListsAnd = new TemplateTag(inlineArrayTransformer({ separator: ',', conjunction: 'and' }), stripIndentTransformer, trimResultTransformer);\n\nexport default commaListsAnd;\n","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\n\nvar commaListsOr = new TemplateTag(inlineArrayTransformer({ separator: ',', conjunction: 'or' }), stripIndentTransformer, trimResultTransformer);\n\nexport default commaListsOr;\n","var splitStringTransformer = function splitStringTransformer(splitBy) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (splitBy != null && typeof splitBy === 'string') {\n if (typeof substitution === 'string' && substitution.includes(splitBy)) {\n substitution = substitution.split(splitBy);\n }\n } else {\n throw new Error('You need to specify a string character to split by.');\n }\n return substitution;\n }\n };\n};\n\nexport default splitStringTransformer;\n","var isValidValue = function isValidValue(x) {\n return x != null && !Number.isNaN(x) && typeof x !== 'boolean';\n};\n\nvar removeNonPrintingValuesTransformer = function removeNonPrintingValuesTransformer() {\n return {\n onSubstitution: function onSubstitution(substitution) {\n if (Array.isArray(substitution)) {\n return substitution.filter(isValidValue);\n }\n if (isValidValue(substitution)) {\n return substitution;\n }\n return '';\n }\n };\n};\n\nexport default removeNonPrintingValuesTransformer;\n","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport removeNonPrintingValuesTransformer from '../removeNonPrintingValuesTransformer';\n\nvar html = new TemplateTag(splitStringTransformer('\\n'), removeNonPrintingValuesTransformer, inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\n\nexport default html;\n","var replaceSubstitutionTransformer = function replaceSubstitutionTransformer(replaceWhat, replaceWith) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceSubstitutionTransformer requires at least 2 arguments.');\n }\n\n // Do not touch if null or undefined\n if (substitution == null) {\n return substitution;\n } else {\n return substitution.toString().replace(replaceWhat, replaceWith);\n }\n }\n };\n};\n\nexport default replaceSubstitutionTransformer;\n","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport replaceSubstitutionTransformer from '../replaceSubstitutionTransformer';\n\nvar safeHtml = new TemplateTag(splitStringTransformer('\\n'), inlineArrayTransformer, stripIndentTransformer, trimResultTransformer, replaceSubstitutionTransformer(/&/g, '&'), replaceSubstitutionTransformer(//g, '>'), replaceSubstitutionTransformer(/\"/g, '"'), replaceSubstitutionTransformer(/'/g, '''), replaceSubstitutionTransformer(/`/g, '`'));\n\nexport default safeHtml;\n","/**\n * Replaces tabs, newlines and spaces with the chosen value when they occur in sequences\n * @param {(String|RegExp)} replaceWhat - the value or pattern that should be replaced\n * @param {*} replaceWith - the replacement value\n * @return {Object} - a TemplateTag transformer\n */\nvar replaceResultTransformer = function replaceResultTransformer(replaceWhat, replaceWith) {\n return {\n onEndResult: function onEndResult(endResult) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceResultTransformer requires at least 2 arguments.');\n }\n return endResult.replace(replaceWhat, replaceWith);\n }\n };\n};\n\nexport default replaceResultTransformer;\n","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\n\nvar oneLine = new TemplateTag(replaceResultTransformer(/(?:\\n(?:\\s*))+/g, ' '), trimResultTransformer);\n\nexport default oneLine;\n","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\n\nvar oneLineTrim = new TemplateTag(replaceResultTransformer(/(?:\\n\\s*)/g, ''), trimResultTransformer);\n\nexport default oneLineTrim;\n","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\n\nvar oneLineCommaLists = new TemplateTag(inlineArrayTransformer({ separator: ',' }), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\n\nexport default oneLineCommaLists;\n","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\n\nvar oneLineCommaListsOr = new TemplateTag(inlineArrayTransformer({ separator: ',', conjunction: 'or' }), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\n\nexport default oneLineCommaListsOr;\n","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\n\nvar oneLineCommaListsAnd = new TemplateTag(inlineArrayTransformer({ separator: ',', conjunction: 'and' }), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\n\nexport default oneLineCommaListsAnd;\n","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\n\nvar inlineLists = new TemplateTag(inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\n\nexport default inlineLists;\n","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\n\nvar oneLineInlineLists = new TemplateTag(inlineArrayTransformer, replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\n\nexport default oneLineInlineLists;\n","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\n\nvar stripIndent = new TemplateTag(stripIndentTransformer, trimResultTransformer);\n\nexport default stripIndent;\n","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\n\nvar stripIndents = new TemplateTag(stripIndentTransformer('all'), trimResultTransformer);\n\nexport default stripIndents;\n","import { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse, HttpResponse, HttpClientModule } from '@angular/common/http';\nimport { Injectable, Inject, PLATFORM_ID, ɵɵdefineInjectable, ɵɵinject, NgZone, RendererFactory2, NgModule } from '@angular/core';\nimport { ReplaySubject, BehaviorSubject, throwError, of, timer, Observable, Subject, forkJoin, TimeoutError } from 'rxjs';\nimport { distinctUntilChanged, switchMap, retryWhen, catchError, mergeMap, map, retry, tap, take, timeout } from 'rxjs/operators';\nimport { KJUR, KEYUTIL, hextob64u } from 'jsrsasign-reduced';\nimport { Router } from '@angular/router';\nimport { oneLineTrim } from 'common-tags';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common/http';\nimport * as ɵngcc2 from '@angular/router';\nclass PlatformProvider {\r\n constructor(platformId) {\r\n this.platformId = platformId;\r\n }\r\n get isBrowser() {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n}\nPlatformProvider.ɵfac = function PlatformProvider_Factory(t) { return new (t || PlatformProvider)(ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nPlatformProvider.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PlatformProvider, factory: PlatformProvider.ɵfac });\r\nPlatformProvider.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PlatformProvider, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\n\n// eslint-disable-next-line no-shadow\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"None\"] = 0] = \"None\";\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\r\n LogLevel[LogLevel[\"Error\"] = 3] = \"Error\";\r\n})(LogLevel || (LogLevel = {}));\n\nconst DEFAULT_CONFIG = {\r\n stsServer: 'https://please_set',\r\n authWellknownEndpoint: '',\r\n redirectUrl: 'https://please_set',\r\n clientId: 'please_set',\r\n responseType: 'code',\r\n scope: 'openid email profile',\r\n hdParam: '',\r\n postLogoutRedirectUri: 'https://please_set',\r\n startCheckSession: false,\r\n silentRenew: false,\r\n silentRenewUrl: 'https://please_set',\r\n silentRenewTimeoutInSeconds: 20,\r\n renewTimeBeforeTokenExpiresInSeconds: 0,\r\n useRefreshToken: false,\r\n usePushedAuthorisationRequests: false,\r\n ignoreNonceAfterRefresh: false,\r\n postLoginRoute: '/',\r\n forbiddenRoute: '/forbidden',\r\n unauthorizedRoute: '/unauthorized',\r\n autoUserinfo: true,\r\n autoCleanStateAfterAuthentication: true,\r\n triggerAuthorizationResultEvent: false,\r\n logLevel: LogLevel.Warn,\r\n issValidationOff: false,\r\n historyCleanupOff: false,\r\n maxIdTokenIatOffsetAllowedInSeconds: 120,\r\n disableIatOffsetValidation: false,\r\n storage: typeof Storage !== 'undefined' ? sessionStorage : null,\r\n customParams: {},\r\n customParamsRefreshToken: {},\r\n customParamsEndSession: {},\r\n eagerLoadAuthWellKnownEndpoints: true,\r\n disableRefreshIdTokenAuthTimeValidation: false,\r\n tokenRefreshInSeconds: 4,\r\n refreshTokenRetryInSeconds: 3,\r\n ngswBypass: false,\r\n};\n\nclass ConfigurationProvider {\r\n constructor(platformProvider) {\r\n this.platformProvider = platformProvider;\r\n }\r\n hasValidConfig() {\r\n return !!this.openIdConfigurationInternal;\r\n }\r\n getOpenIDConfiguration() {\r\n return this.openIdConfigurationInternal || null;\r\n }\r\n setConfig(configuration) {\r\n this.openIdConfigurationInternal = Object.assign(Object.assign({}, DEFAULT_CONFIG), configuration);\r\n if (configuration === null || configuration === void 0 ? void 0 : configuration.storage) {\r\n console.warn(`PLEASE NOTE: The storage in the config will be deprecated in future versions:\n Please pass the custom storage in forRoot() as documented`);\r\n }\r\n this.setSpecialCases(this.openIdConfigurationInternal);\r\n return this.openIdConfigurationInternal;\r\n }\r\n setSpecialCases(currentConfig) {\r\n if (!this.platformProvider.isBrowser) {\r\n currentConfig.startCheckSession = false;\r\n currentConfig.silentRenew = false;\r\n currentConfig.useRefreshToken = false;\r\n currentConfig.usePushedAuthorisationRequests = false;\r\n }\r\n }\r\n}\nConfigurationProvider.ɵfac = function ConfigurationProvider_Factory(t) { return new (t || ConfigurationProvider)(ɵngcc0.ɵɵinject(PlatformProvider)); };\nConfigurationProvider.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ConfigurationProvider, factory: ConfigurationProvider.ɵfac });\r\nConfigurationProvider.ctorParameters = () => [\r\n { type: PlatformProvider }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ConfigurationProvider, [{\n type: Injectable\n }], function () { return [{ type: PlatformProvider }]; }, null); })();\n\nclass HttpBaseService {\r\n constructor(http) {\r\n this.http = http;\r\n }\r\n get(url, params) {\r\n return this.http.get(url, params);\r\n }\r\n post(url, body, params) {\r\n return this.http.post(url, body, params);\r\n }\r\n}\nHttpBaseService.ɵfac = function HttpBaseService_Factory(t) { return new (t || HttpBaseService)(ɵngcc0.ɵɵinject(ɵngcc1.HttpClient)); };\nHttpBaseService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HttpBaseService, factory: HttpBaseService.ɵfac });\r\nHttpBaseService.ctorParameters = () => [\r\n { type: HttpClient }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HttpBaseService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.HttpClient }]; }, null); })();\n\nconst NGSW_CUSTOM_PARAM = 'ngsw-bypass';\r\nclass DataService {\r\n constructor(httpClient, configurationProvider) {\r\n this.httpClient = httpClient;\r\n this.configurationProvider = configurationProvider;\r\n }\r\n get(url, token) {\r\n const headers = this.prepareHeaders(token);\r\n let params = new HttpParams();\r\n const { ngswBypass } = this.configurationProvider.getOpenIDConfiguration();\r\n if (ngswBypass) {\r\n params = params.set(NGSW_CUSTOM_PARAM, '');\r\n }\r\n return this.httpClient.get(url, {\r\n headers,\r\n params,\r\n });\r\n }\r\n post(url, body, headersParams) {\r\n const headers = headersParams || this.prepareHeaders();\r\n let params = new HttpParams();\r\n const { ngswBypass } = this.configurationProvider.getOpenIDConfiguration();\r\n if (ngswBypass) {\r\n params = params.set(NGSW_CUSTOM_PARAM, '');\r\n }\r\n return this.httpClient.post(url, body, { headers, params });\r\n }\r\n prepareHeaders(token) {\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Accept', 'application/json');\r\n if (!!token) {\r\n headers = headers.set('Authorization', 'Bearer ' + decodeURIComponent(token));\r\n }\r\n return headers;\r\n }\r\n}\nDataService.ɵfac = function DataService_Factory(t) { return new (t || DataService)(ɵngcc0.ɵɵinject(HttpBaseService), ɵngcc0.ɵɵinject(ConfigurationProvider)); };\nDataService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DataService, factory: DataService.ɵfac });\r\nDataService.ctorParameters = () => [\r\n { type: HttpBaseService },\r\n { type: ConfigurationProvider }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DataService, [{\n type: Injectable\n }], function () { return [{ type: HttpBaseService }, { type: ConfigurationProvider }]; }, null); })();\n\nclass LoggerService {\r\n constructor(configurationProvider) {\r\n this.configurationProvider = configurationProvider;\r\n }\r\n logError(message, ...args) {\r\n if (this.loggingIsTurnedOff()) {\r\n return;\r\n }\r\n if (!!args && args.length) {\r\n console.error(message, ...args);\r\n }\r\n else {\r\n console.error(message);\r\n }\r\n }\r\n logWarning(message, ...args) {\r\n if (!this.logLevelIsSet()) {\r\n return;\r\n }\r\n if (this.loggingIsTurnedOff()) {\r\n return;\r\n }\r\n if (!this.currentLogLevelIsEqualOrSmallerThan(LogLevel.Warn)) {\r\n return;\r\n }\r\n if (!!args && args.length) {\r\n console.warn(message, ...args);\r\n }\r\n else {\r\n console.warn(message);\r\n }\r\n }\r\n logDebug(message, ...args) {\r\n if (!this.logLevelIsSet()) {\r\n return;\r\n }\r\n if (this.loggingIsTurnedOff()) {\r\n return;\r\n }\r\n if (!this.currentLogLevelIsEqualOrSmallerThan(LogLevel.Debug)) {\r\n return;\r\n }\r\n if (!!args && args.length) {\r\n console.log(message, ...args);\r\n }\r\n else {\r\n console.log(message);\r\n }\r\n }\r\n currentLogLevelIsEqualOrSmallerThan(logLevelToCompare) {\r\n const { logLevel } = this.configurationProvider.getOpenIDConfiguration() || {};\r\n return logLevel <= logLevelToCompare;\r\n }\r\n logLevelIsSet() {\r\n const { logLevel } = this.configurationProvider.getOpenIDConfiguration() || {};\r\n if (logLevel === null) {\r\n return false;\r\n }\r\n if (logLevel === undefined) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n loggingIsTurnedOff() {\r\n const { logLevel } = this.configurationProvider.getOpenIDConfiguration() || {};\r\n return logLevel === LogLevel.None;\r\n }\r\n}\nLoggerService.ɵfac = function LoggerService_Factory(t) { return new (t || LoggerService)(ɵngcc0.ɵɵinject(ConfigurationProvider)); };\nLoggerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LoggerService, factory: LoggerService.ɵfac });\r\nLoggerService.ctorParameters = () => [\r\n { type: ConfigurationProvider }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoggerService, [{\n type: Injectable\n }], function () { return [{ type: ConfigurationProvider }]; }, null); })();\n\n// eslint-disable-next-line no-shadow\r\nvar EventTypes;\r\n(function (EventTypes) {\r\n /**\r\n * This only works in the AppModule Constructor\r\n */\r\n EventTypes[EventTypes[\"ConfigLoaded\"] = 0] = \"ConfigLoaded\";\r\n EventTypes[EventTypes[\"ConfigLoadingFailed\"] = 1] = \"ConfigLoadingFailed\";\r\n EventTypes[EventTypes[\"CheckSessionReceived\"] = 2] = \"CheckSessionReceived\";\r\n EventTypes[EventTypes[\"UserDataChanged\"] = 3] = \"UserDataChanged\";\r\n EventTypes[EventTypes[\"NewAuthorizationResult\"] = 4] = \"NewAuthorizationResult\";\r\n EventTypes[EventTypes[\"TokenExpired\"] = 5] = \"TokenExpired\";\r\n EventTypes[EventTypes[\"IdTokenExpired\"] = 6] = \"IdTokenExpired\";\r\n})(EventTypes || (EventTypes = {}));\n\nclass PublicEventsService {\r\n constructor() {\r\n this.notify = new ReplaySubject(1);\r\n }\r\n /**\r\n * Fires a new event.\r\n *\r\n * @param type The event type.\r\n * @param value The event value.\r\n */\r\n fireEvent(type, value) {\r\n this.notify.next({ type, value });\r\n }\r\n /**\r\n * Wires up the event notification observable.\r\n */\r\n registerForEvents() {\r\n return this.notify.asObservable();\r\n }\r\n}\nPublicEventsService.ɵfac = function PublicEventsService_Factory(t) { return new (t || PublicEventsService)(); };\nPublicEventsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PublicEventsService, factory: PublicEventsService.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PublicEventsService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\n/**\r\n * Implement this class-interface to create a custom storage.\r\n */\r\nclass AbstractSecurityStorage {\r\n}\nAbstractSecurityStorage.ɵfac = function AbstractSecurityStorage_Factory(t) { return new (t || AbstractSecurityStorage)(); };\nAbstractSecurityStorage.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AbstractSecurityStorage, factory: AbstractSecurityStorage.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AbstractSecurityStorage, [{\n type: Injectable\n }], null, null); })();\n\nclass StoragePersistenceService {\r\n constructor(oidcSecurityStorage, configurationProvider) {\r\n this.oidcSecurityStorage = oidcSecurityStorage;\r\n this.configurationProvider = configurationProvider;\r\n }\r\n read(key) {\r\n const keyToRead = this.createKeyWithPrefix(key);\r\n return this.oidcSecurityStorage.read(keyToRead);\r\n }\r\n write(key, value) {\r\n const keyToStore = this.createKeyWithPrefix(key);\r\n this.oidcSecurityStorage.write(keyToStore, value);\r\n }\r\n remove(key) {\r\n const keyToStore = this.createKeyWithPrefix(key);\r\n this.oidcSecurityStorage.remove(keyToStore);\r\n }\r\n resetStorageFlowData() {\r\n this.remove('session_state');\r\n this.remove('storageSilentRenewRunning');\r\n this.remove('codeVerifier');\r\n this.remove('userData');\r\n this.remove('storageCustomRequestParams');\r\n this.remove('storageCustomParamsRefresh');\r\n this.remove('access_token_expires_at');\r\n }\r\n resetAuthStateInStorage() {\r\n this.remove('authzData');\r\n this.remove('authnResult');\r\n }\r\n getAccessToken() {\r\n return this.read('authzData');\r\n }\r\n getIdToken() {\r\n var _a;\r\n return (_a = this.read('authnResult')) === null || _a === void 0 ? void 0 : _a.id_token;\r\n }\r\n getRefreshToken() {\r\n var _a;\r\n return (_a = this.read('authnResult')) === null || _a === void 0 ? void 0 : _a.refresh_token;\r\n }\r\n createKeyWithPrefix(key) {\r\n const config = this.configurationProvider.getOpenIDConfiguration();\r\n const prefix = (config === null || config === void 0 ? void 0 : config.clientId) || '';\r\n return `${prefix}_${key}`;\r\n }\r\n}\nStoragePersistenceService.ɵfac = function StoragePersistenceService_Factory(t) { return new (t || StoragePersistenceService)(ɵngcc0.ɵɵinject(AbstractSecurityStorage), ɵngcc0.ɵɵinject(ConfigurationProvider)); };\nStoragePersistenceService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: StoragePersistenceService, factory: StoragePersistenceService.ɵfac });\r\nStoragePersistenceService.ctorParameters = () => [\r\n { type: AbstractSecurityStorage },\r\n { type: ConfigurationProvider }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StoragePersistenceService, [{\n type: Injectable\n }], function () { return [{ type: AbstractSecurityStorage }, { type: ConfigurationProvider }]; }, null); })();\n\nconst PARTS_OF_TOKEN = 3;\r\nclass TokenHelperService {\r\n constructor(loggerService) {\r\n this.loggerService = loggerService;\r\n }\r\n getTokenExpirationDate(dataIdToken) {\r\n if (!dataIdToken.hasOwnProperty('exp')) {\r\n return new Date(new Date().toUTCString());\r\n }\r\n const date = new Date(0); // The 0 here is the key, which sets the date to the epoch\r\n date.setUTCSeconds(dataIdToken.exp);\r\n return date;\r\n }\r\n getHeaderFromToken(token, encoded) {\r\n if (!this.tokenIsValid(token)) {\r\n return {};\r\n }\r\n return this.getPartOfToken(token, 0, encoded);\r\n }\r\n getPayloadFromToken(token, encoded) {\r\n if (!this.tokenIsValid(token)) {\r\n return {};\r\n }\r\n return this.getPartOfToken(token, 1, encoded);\r\n }\r\n getSignatureFromToken(token, encoded) {\r\n if (!this.tokenIsValid(token)) {\r\n return {};\r\n }\r\n return this.getPartOfToken(token, 2, encoded);\r\n }\r\n getPartOfToken(token, index, encoded) {\r\n const partOfToken = this.extractPartOfToken(token, index);\r\n if (encoded) {\r\n return partOfToken;\r\n }\r\n const result = this.urlBase64Decode(partOfToken);\r\n return JSON.parse(result);\r\n }\r\n urlBase64Decode(str) {\r\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += '==';\r\n break;\r\n case 3:\r\n output += '=';\r\n break;\r\n default:\r\n throw Error('Illegal base64url string!');\r\n }\r\n const decoded = typeof window !== 'undefined' ? window.atob(output) : Buffer.from(output, 'base64').toString('binary');\r\n try {\r\n // Going backwards: from bytestream, to percent-encoding, to original string.\r\n return decodeURIComponent(decoded\r\n .split('')\r\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\r\n .join(''));\r\n }\r\n catch (err) {\r\n return decoded;\r\n }\r\n }\r\n tokenIsValid(token) {\r\n if (!token) {\r\n this.loggerService.logError(`token '${token}' is not valid --> token falsy`);\r\n return false;\r\n }\r\n if (!token.includes('.')) {\r\n this.loggerService.logError(`token '${token}' is not valid --> no dots included`);\r\n return false;\r\n }\r\n const parts = token.split('.');\r\n if (parts.length !== PARTS_OF_TOKEN) {\r\n this.loggerService.logError(`token '${token}' is not valid --> token has to have exactly ${PARTS_OF_TOKEN - 1} dots`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n extractPartOfToken(token, index) {\r\n return token.split('.')[index];\r\n }\r\n}\nTokenHelperService.ɵfac = function TokenHelperService_Factory(t) { return new (t || TokenHelperService)(ɵngcc0.ɵɵinject(LoggerService)); };\nTokenHelperService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TokenHelperService, factory: TokenHelperService.ɵfac });\r\nTokenHelperService.ctorParameters = () => [\r\n { type: LoggerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TokenHelperService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }]; }, null); })();\n\n// http://openid.net/specs/openid-connect-implicit-1_0.html\r\n// id_token\r\n// id_token C1: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery)\r\n// MUST exactly match the value of the iss (issuer) Claim.\r\n//\r\n// id_token C2: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified\r\n// by the iss (issuer) Claim as an audience.The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience,\r\n// or if it contains additional audiences not trusted by the Client.\r\n//\r\n// id_token C3: If the ID Token contains multiple audiences, the Client SHOULD verify that an azp Claim is present.\r\n//\r\n// id_token C4: If an azp (authorized party) Claim is present, the Client SHOULD verify that its client_id is the Claim Value.\r\n//\r\n// id_token C5: The Client MUST validate the signature of the ID Token according to JWS [JWS] using the algorithm specified in the\r\n// alg Header Parameter of the JOSE Header.The Client MUST use the keys provided by the Issuer.\r\n//\r\n// id_token C6: The alg value SHOULD be RS256. Validation of tokens using other signing algorithms is described in the OpenID Connect\r\n// Core 1.0\r\n// [OpenID.Core] specification.\r\n//\r\n// id_token C7: The current time MUST be before the time represented by the exp Claim (possibly allowing for some small leeway to account\r\n// for clock skew).\r\n//\r\n// id_token C8: The iat Claim can be used to reject tokens that were issued too far away from the current time,\r\n// limiting the amount of time that nonces need to be stored to prevent attacks.The acceptable range is Client specific.\r\n//\r\n// id_token C9: The value of the nonce Claim MUST be checked to verify that it is the same value as the one that was sent\r\n// in the Authentication Request.The Client SHOULD check the nonce value for replay attacks.The precise method for detecting replay attacks\r\n// is Client specific.\r\n//\r\n// id_token C10: If the acr Claim was requested, the Client SHOULD check that the asserted Claim Value is appropriate.\r\n// The meaning and processing of acr Claim Values is out of scope for this document.\r\n//\r\n// id_token C11: When a max_age request is made, the Client SHOULD check the auth_time Claim value and request re- authentication\r\n// if it determines too much time has elapsed since the last End- User authentication.\r\n// Access Token Validation\r\n// access_token C1: Hash the octets of the ASCII representation of the access_token with the hash algorithm specified in JWA[JWA]\r\n// for the alg Header Parameter of the ID Token's JOSE Header. For instance, if the alg is RS256, the hash algorithm used is SHA-256.\r\n// access_token C2: Take the left- most half of the hash and base64url- encode it.\r\n// access_token C3: The value of at_hash in the ID Token MUST match the value produced in the previous step if at_hash is present\r\n// in the ID Token.\r\nclass TokenValidationService {\r\n constructor(tokenHelperService, loggerService) {\r\n this.tokenHelperService = tokenHelperService;\r\n this.loggerService = loggerService;\r\n this.keyAlgorithms = ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'PS256', 'PS384', 'PS512'];\r\n }\r\n // id_token C7: The current time MUST be before the time represented by the exp Claim\r\n // (possibly allowing for some small leeway to account for clock skew).\r\n hasIdTokenExpired(token, offsetSeconds) {\r\n const decoded = this.tokenHelperService.getPayloadFromToken(token, false);\r\n return !this.validateIdTokenExpNotExpired(decoded, offsetSeconds);\r\n }\r\n // id_token C7: The current time MUST be before the time represented by the exp Claim\r\n // (possibly allowing for some small leeway to account for clock skew).\r\n validateIdTokenExpNotExpired(decodedIdToken, offsetSeconds) {\r\n const tokenExpirationDate = this.tokenHelperService.getTokenExpirationDate(decodedIdToken);\r\n offsetSeconds = offsetSeconds || 0;\r\n if (!tokenExpirationDate) {\r\n return false;\r\n }\r\n const tokenExpirationValue = tokenExpirationDate.valueOf();\r\n const nowWithOffset = new Date(new Date().toUTCString()).valueOf() + offsetSeconds * 1000;\r\n const tokenNotExpired = tokenExpirationValue > nowWithOffset;\r\n this.loggerService.logDebug(`Has id_token expired: ${!tokenNotExpired}, ${tokenExpirationValue} > ${nowWithOffset}`);\r\n // Token not expired?\r\n return tokenNotExpired;\r\n }\r\n validateAccessTokenNotExpired(accessTokenExpiresAt, offsetSeconds) {\r\n // value is optional, so if it does not exist, then it has not expired\r\n if (!accessTokenExpiresAt) {\r\n return true;\r\n }\r\n offsetSeconds = offsetSeconds || 0;\r\n const accessTokenExpirationValue = accessTokenExpiresAt.valueOf();\r\n const nowWithOffset = new Date(new Date().toUTCString()).valueOf() + offsetSeconds * 1000;\r\n const tokenNotExpired = accessTokenExpirationValue > nowWithOffset;\r\n this.loggerService.logDebug(`Has access_token expired: ${!tokenNotExpired}, ${accessTokenExpirationValue} > ${nowWithOffset}`);\r\n // access token not expired?\r\n return tokenNotExpired;\r\n }\r\n // iss\r\n // REQUIRED. Issuer Identifier for the Issuer of the response.The iss value is a case-sensitive URL using the\r\n // https scheme that contains scheme, host,\r\n // and optionally, port number and path components and no query or fragment components.\r\n //\r\n // sub\r\n // REQUIRED. Subject Identifier.Locally unique and never reassigned identifier within the Issuer for the End- User,\r\n // which is intended to be consumed by the Client, e.g., 24400320 or AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4.\r\n // It MUST NOT exceed 255 ASCII characters in length.The sub value is a case-sensitive string.\r\n //\r\n // aud\r\n // REQUIRED. Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an\r\n // audience value.\r\n // It MAY also contain identifiers for other audiences.In the general case, the aud value is an array of case-sensitive strings.\r\n // In the common special case when there is one audience, the aud value MAY be a single case-sensitive string.\r\n //\r\n // exp\r\n // REQUIRED. Expiration time on or after which the ID Token MUST NOT be accepted for processing.\r\n // The processing of this parameter requires that the current date/ time MUST be before the expiration date/ time listed in the value.\r\n // Implementers MAY provide for some small leeway, usually no more than a few minutes, to account for clock skew.\r\n // Its value is a JSON [RFC7159] number representing the number of seconds from 1970- 01 - 01T00: 00:00Z as measured in UTC until\r\n // the date/ time.\r\n // See RFC 3339 [RFC3339] for details regarding date/ times in general and UTC in particular.\r\n //\r\n // iat\r\n // REQUIRED. Time at which the JWT was issued. Its value is a JSON number representing the number of seconds from\r\n // 1970- 01 - 01T00: 00: 00Z as measured\r\n // in UTC until the date/ time.\r\n validateRequiredIdToken(dataIdToken) {\r\n let validated = true;\r\n if (!dataIdToken.hasOwnProperty('iss')) {\r\n validated = false;\r\n this.loggerService.logWarning('iss is missing, this is required in the id_token');\r\n }\r\n if (!dataIdToken.hasOwnProperty('sub')) {\r\n validated = false;\r\n this.loggerService.logWarning('sub is missing, this is required in the id_token');\r\n }\r\n if (!dataIdToken.hasOwnProperty('aud')) {\r\n validated = false;\r\n this.loggerService.logWarning('aud is missing, this is required in the id_token');\r\n }\r\n if (!dataIdToken.hasOwnProperty('exp')) {\r\n validated = false;\r\n this.loggerService.logWarning('exp is missing, this is required in the id_token');\r\n }\r\n if (!dataIdToken.hasOwnProperty('iat')) {\r\n validated = false;\r\n this.loggerService.logWarning('iat is missing, this is required in the id_token');\r\n }\r\n return validated;\r\n }\r\n // id_token C8: The iat Claim can be used to reject tokens that were issued too far away from the current time,\r\n // limiting the amount of time that nonces need to be stored to prevent attacks.The acceptable range is Client specific.\r\n validateIdTokenIatMaxOffset(dataIdToken, maxOffsetAllowedInSeconds, disableIatOffsetValidation) {\r\n if (disableIatOffsetValidation) {\r\n return true;\r\n }\r\n if (!dataIdToken.hasOwnProperty('iat')) {\r\n return false;\r\n }\r\n const dateTimeIatIdToken = new Date(0); // The 0 here is the key, which sets the date to the epoch\r\n dateTimeIatIdToken.setUTCSeconds(dataIdToken.iat);\r\n maxOffsetAllowedInSeconds = maxOffsetAllowedInSeconds || 0;\r\n const nowInUtc = new Date(new Date().toUTCString());\r\n const diff = nowInUtc.valueOf() - dateTimeIatIdToken.valueOf();\r\n const maxOffsetAllowedInMilliseconds = maxOffsetAllowedInSeconds * 1000;\r\n this.loggerService.logDebug(`validate id token iat max offset ${diff} < ${maxOffsetAllowedInMilliseconds}`);\r\n if (diff > 0) {\r\n return diff < maxOffsetAllowedInMilliseconds;\r\n }\r\n return -diff < maxOffsetAllowedInMilliseconds;\r\n }\r\n // id_token C9: The value of the nonce Claim MUST be checked to verify that it is the same value as the one\r\n // that was sent in the Authentication Request.The Client SHOULD check the nonce value for replay attacks.\r\n // The precise method for detecting replay attacks is Client specific.\r\n // However the nonce claim SHOULD not be present for the refresh_token grant type\r\n // https://bitbucket.org/openid/connect/issues/1025/ambiguity-with-how-nonce-is-handled-on\r\n // The current spec is ambiguous and Keycloak does send it.\r\n validateIdTokenNonce(dataIdToken, localNonce, ignoreNonceAfterRefresh) {\r\n const isFromRefreshToken = (dataIdToken.nonce === undefined || ignoreNonceAfterRefresh) && localNonce === TokenValidationService.refreshTokenNoncePlaceholder;\r\n if (!isFromRefreshToken && dataIdToken.nonce !== localNonce) {\r\n this.loggerService.logDebug('Validate_id_token_nonce failed, dataIdToken.nonce: ' + dataIdToken.nonce + ' local_nonce:' + localNonce);\r\n return false;\r\n }\r\n return true;\r\n }\r\n // id_token C1: The Issuer Identifier for the OpenID Provider (which is typically obtained during Discovery)\r\n // MUST exactly match the value of the iss (issuer) Claim.\r\n validateIdTokenIss(dataIdToken, authWellKnownEndpointsIssuer) {\r\n if (dataIdToken.iss !== authWellKnownEndpointsIssuer) {\r\n this.loggerService.logDebug('Validate_id_token_iss failed, dataIdToken.iss: ' +\r\n dataIdToken.iss +\r\n ' authWellKnownEndpoints issuer:' +\r\n authWellKnownEndpointsIssuer);\r\n return false;\r\n }\r\n return true;\r\n }\r\n // id_token C2: The Client MUST validate that the aud (audience) Claim contains its client_id value registered at the Issuer identified\r\n // by the iss (issuer) Claim as an audience.\r\n // The ID Token MUST be rejected if the ID Token does not list the Client as a valid audience, or if it contains additional audiences\r\n // not trusted by the Client.\r\n validateIdTokenAud(dataIdToken, aud) {\r\n if (Array.isArray(dataIdToken.aud)) {\r\n const result = dataIdToken.aud.includes(aud);\r\n if (!result) {\r\n this.loggerService.logDebug('Validate_id_token_aud array failed, dataIdToken.aud: ' + dataIdToken.aud + ' client_id:' + aud);\r\n return false;\r\n }\r\n return true;\r\n }\r\n else if (dataIdToken.aud !== aud) {\r\n this.loggerService.logDebug('Validate_id_token_aud failed, dataIdToken.aud: ' + dataIdToken.aud + ' client_id:' + aud);\r\n return false;\r\n }\r\n return true;\r\n }\r\n validateIdTokenAzpExistsIfMoreThanOneAud(dataIdToken) {\r\n if (!dataIdToken) {\r\n return false;\r\n }\r\n if (Array.isArray(dataIdToken.aud) && dataIdToken.aud.length > 1 && !dataIdToken.azp) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n // If an azp (authorized party) Claim is present, the Client SHOULD verify that its client_id is the Claim Value.\r\n validateIdTokenAzpValid(dataIdToken, clientId) {\r\n if (!(dataIdToken === null || dataIdToken === void 0 ? void 0 : dataIdToken.azp)) {\r\n return true;\r\n }\r\n if (dataIdToken.azp === clientId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n validateStateFromHashCallback(state, localState) {\r\n if (state !== localState) {\r\n this.loggerService.logDebug('ValidateStateFromHashCallback failed, state: ' + state + ' local_state:' + localState);\r\n return false;\r\n }\r\n return true;\r\n }\r\n // id_token C5: The Client MUST validate the signature of the ID Token according to JWS [JWS] using the algorithm specified in the alg\r\n // Header Parameter of the JOSE Header.The Client MUST use the keys provided by the Issuer.\r\n // id_token C6: The alg value SHOULD be RS256. Validation of tokens using other signing algorithms is described in the\r\n // OpenID Connect Core 1.0 [OpenID.Core] specification.\r\n validateSignatureIdToken(idToken, jwtkeys) {\r\n if (!jwtkeys || !jwtkeys.keys) {\r\n return false;\r\n }\r\n const headerData = this.tokenHelperService.getHeaderFromToken(idToken, false);\r\n if (Object.keys(headerData).length === 0 && headerData.constructor === Object) {\r\n this.loggerService.logWarning('id token has no header data');\r\n return false;\r\n }\r\n const kid = headerData.kid;\r\n const alg = headerData.alg;\r\n if (!this.keyAlgorithms.includes(alg)) {\r\n this.loggerService.logWarning('alg not supported', alg);\r\n return false;\r\n }\r\n let jwtKtyToUse = 'RSA';\r\n if (alg.charAt(0) === 'E') {\r\n jwtKtyToUse = 'EC';\r\n }\r\n let isValid = false;\r\n // No kid in the Jose header\r\n if (!kid) {\r\n let keyToValidate;\r\n // If only one key, use it\r\n if (jwtkeys.keys.length === 1 && jwtkeys.keys[0].kty === jwtKtyToUse) {\r\n keyToValidate = jwtkeys.keys[0];\r\n }\r\n else {\r\n // More than one key\r\n // Make sure there's exactly 1 key candidate\r\n // kty \"RSA\" and \"EC\" uses \"sig\"\r\n let amountOfMatchingKeys = 0;\r\n for (const key of jwtkeys.keys) {\r\n if (key.kty === jwtKtyToUse && key.use === 'sig') {\r\n amountOfMatchingKeys++;\r\n keyToValidate = key;\r\n }\r\n }\r\n if (amountOfMatchingKeys > 1) {\r\n this.loggerService.logWarning('no ID Token kid claim in JOSE header and multiple supplied in jwks_uri');\r\n return false;\r\n }\r\n }\r\n if (!keyToValidate) {\r\n this.loggerService.logWarning('no keys found, incorrect Signature, validation failed for id_token');\r\n return false;\r\n }\r\n isValid = KJUR.jws.JWS.verify(idToken, KEYUTIL.getKey(keyToValidate), [alg]);\r\n if (!isValid) {\r\n this.loggerService.logWarning('incorrect Signature, validation failed for id_token');\r\n }\r\n return isValid;\r\n }\r\n else {\r\n // kid in the Jose header of id_token\r\n for (const key of jwtkeys.keys) {\r\n if (key.kid === kid) {\r\n const publicKey = KEYUTIL.getKey(key);\r\n isValid = KJUR.jws.JWS.verify(idToken, publicKey, [alg]);\r\n if (!isValid) {\r\n this.loggerService.logWarning('incorrect Signature, validation failed for id_token');\r\n }\r\n return isValid;\r\n }\r\n }\r\n }\r\n return isValid;\r\n }\r\n // Accepts ID Token without 'kid' claim in JOSE header if only one JWK supplied in 'jwks_url'\r\n //// private validate_no_kid_in_header_only_one_allowed_in_jwtkeys(header_data: any, jwtkeys: any): boolean {\r\n //// this.oidcSecurityCommon.logDebug('amount of jwtkeys.keys: ' + jwtkeys.keys.length);\r\n //// if (!header_data.hasOwnProperty('kid')) {\r\n //// // no kid defined in Jose header\r\n //// if (jwtkeys.keys.length != 1) {\r\n //// this.oidcSecurityCommon.logDebug('jwtkeys.keys.length != 1 and no kid in header');\r\n //// return false;\r\n //// }\r\n //// }\r\n //// return true;\r\n //// }\r\n // Access Token Validation\r\n // access_token C1: Hash the octets of the ASCII representation of the access_token with the hash algorithm specified in JWA[JWA]\r\n // for the alg Header Parameter of the ID Token's JOSE Header. For instance, if the alg is RS256, the hash algorithm used is SHA-256.\r\n // access_token C2: Take the left- most half of the hash and base64url- encode it.\r\n // access_token C3: The value of at_hash in the ID Token MUST match the value produced in the previous step if at_hash\r\n // is present in the ID Token.\r\n validateIdTokenAtHash(accessToken, atHash, idTokenAlg) {\r\n this.loggerService.logDebug('at_hash from the server:' + atHash);\r\n // 'sha256' 'sha384' 'sha512'\r\n let sha = 'sha256';\r\n if (idTokenAlg.includes('384')) {\r\n sha = 'sha384';\r\n }\r\n else if (idTokenAlg.includes('512')) {\r\n sha = 'sha512';\r\n }\r\n const testData = this.generateAtHash('' + accessToken, sha);\r\n this.loggerService.logDebug('at_hash client validation not decoded:' + testData);\r\n if (testData === atHash) {\r\n return true; // isValid;\r\n }\r\n else {\r\n const testValue = this.generateAtHash('' + decodeURIComponent(accessToken), sha);\r\n this.loggerService.logDebug('-gen access--' + testValue);\r\n if (testValue === atHash) {\r\n return true; // isValid\r\n }\r\n }\r\n return false;\r\n }\r\n generateCodeChallenge(codeVerifier) {\r\n const hash = KJUR.crypto.Util.hashString(codeVerifier, 'sha256');\r\n const testData = hextob64u(hash);\r\n return testData;\r\n }\r\n generateAtHash(accessToken, sha) {\r\n const hash = KJUR.crypto.Util.hashString(accessToken, sha);\r\n const first128bits = hash.substr(0, hash.length / 2);\r\n const testData = hextob64u(first128bits);\r\n return testData;\r\n }\r\n}\nTokenValidationService.ɵfac = function TokenValidationService_Factory(t) { return new (t || TokenValidationService)(ɵngcc0.ɵɵinject(TokenHelperService), ɵngcc0.ɵɵinject(LoggerService)); };\nTokenValidationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TokenValidationService, factory: TokenValidationService.ɵfac });\r\nTokenValidationService.refreshTokenNoncePlaceholder = '--RefreshToken--';\r\nTokenValidationService.ctorParameters = () => [\r\n { type: TokenHelperService },\r\n { type: LoggerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TokenValidationService, [{\n type: Injectable\n }], function () { return [{ type: TokenHelperService }, { type: LoggerService }]; }, null); })();\n\nclass AuthStateService {\r\n constructor(storagePersistenceService, loggerService, publicEventsService, configurationProvider, tokenValidationService) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.loggerService = loggerService;\r\n this.publicEventsService = publicEventsService;\r\n this.configurationProvider = configurationProvider;\r\n this.tokenValidationService = tokenValidationService;\r\n this.authorizedInternal$ = new BehaviorSubject(false);\r\n }\r\n get authorized$() {\r\n return this.authorizedInternal$.asObservable().pipe(distinctUntilChanged());\r\n }\r\n get isAuthorized() {\r\n return !!this.storagePersistenceService.getAccessToken() && !!this.storagePersistenceService.getIdToken();\r\n }\r\n setAuthorizedAndFireEvent() {\r\n this.authorizedInternal$.next(true);\r\n }\r\n setUnauthorizedAndFireEvent() {\r\n this.storagePersistenceService.resetAuthStateInStorage();\r\n this.authorizedInternal$.next(false);\r\n }\r\n updateAndPublishAuthState(authorizationResult) {\r\n this.publicEventsService.fireEvent(EventTypes.NewAuthorizationResult, authorizationResult);\r\n }\r\n setAuthorizationData(accessToken, authResult) {\r\n this.loggerService.logDebug(accessToken);\r\n this.loggerService.logDebug('storing the accessToken');\r\n this.storagePersistenceService.write('authzData', accessToken);\r\n this.persistAccessTokenExpirationTime(authResult);\r\n this.setAuthorizedAndFireEvent();\r\n }\r\n getAccessToken() {\r\n if (!this.isAuthorized) {\r\n return '';\r\n }\r\n const token = this.storagePersistenceService.getAccessToken();\r\n return this.decodeURIComponentSafely(token);\r\n }\r\n getIdToken() {\r\n if (!this.isAuthorized) {\r\n return '';\r\n }\r\n const token = this.storagePersistenceService.getIdToken();\r\n return this.decodeURIComponentSafely(token);\r\n }\r\n getRefreshToken() {\r\n if (!this.isAuthorized) {\r\n return '';\r\n }\r\n const token = this.storagePersistenceService.getRefreshToken();\r\n return this.decodeURIComponentSafely(token);\r\n }\r\n areAuthStorageTokensValid() {\r\n if (!this.isAuthorized) {\r\n return false;\r\n }\r\n if (this.hasIdTokenExpired()) {\r\n this.loggerService.logDebug('persisted id_token is expired');\r\n return false;\r\n }\r\n if (this.hasAccessTokenExpiredIfExpiryExists()) {\r\n this.loggerService.logDebug('persisted access_token is expired');\r\n return false;\r\n }\r\n this.loggerService.logDebug('persisted id_token and access token are valid');\r\n return true;\r\n }\r\n hasIdTokenExpired() {\r\n const tokenToCheck = this.storagePersistenceService.getIdToken();\r\n const { renewTimeBeforeTokenExpiresInSeconds } = this.configurationProvider.getOpenIDConfiguration();\r\n const idTokenExpired = this.tokenValidationService.hasIdTokenExpired(tokenToCheck, renewTimeBeforeTokenExpiresInSeconds);\r\n if (idTokenExpired) {\r\n this.publicEventsService.fireEvent(EventTypes.IdTokenExpired, idTokenExpired);\r\n }\r\n return idTokenExpired;\r\n }\r\n hasAccessTokenExpiredIfExpiryExists() {\r\n const { renewTimeBeforeTokenExpiresInSeconds } = this.configurationProvider.getOpenIDConfiguration();\r\n const accessTokenExpiresIn = this.storagePersistenceService.read('access_token_expires_at');\r\n const accessTokenHasNotExpired = this.tokenValidationService.validateAccessTokenNotExpired(accessTokenExpiresIn, renewTimeBeforeTokenExpiresInSeconds);\r\n const hasExpired = !accessTokenHasNotExpired;\r\n if (hasExpired) {\r\n this.publicEventsService.fireEvent(EventTypes.TokenExpired, hasExpired);\r\n }\r\n return hasExpired;\r\n }\r\n decodeURIComponentSafely(token) {\r\n if (token) {\r\n return decodeURIComponent(token);\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n persistAccessTokenExpirationTime(authResult) {\r\n if (authResult === null || authResult === void 0 ? void 0 : authResult.expires_in) {\r\n const accessTokenExpiryTime = new Date(new Date().toUTCString()).valueOf() + authResult.expires_in * 1000;\r\n this.storagePersistenceService.write('access_token_expires_at', accessTokenExpiryTime);\r\n }\r\n }\r\n}\nAuthStateService.ɵfac = function AuthStateService_Factory(t) { return new (t || AuthStateService)(ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(PublicEventsService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(TokenValidationService)); };\nAuthStateService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AuthStateService, factory: AuthStateService.ɵfac });\r\nAuthStateService.ctorParameters = () => [\r\n { type: StoragePersistenceService },\r\n { type: LoggerService },\r\n { type: PublicEventsService },\r\n { type: ConfigurationProvider },\r\n { type: TokenValidationService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AuthStateService, [{\n type: Injectable\n }], function () { return [{ type: StoragePersistenceService }, { type: LoggerService }, { type: PublicEventsService }, { type: ConfigurationProvider }, { type: TokenValidationService }]; }, null); })();\n\nconst STORAGE_KEY = 'redirect';\r\nclass AutoLoginService {\r\n /**\r\n * Gets the stored redirect route from storage.\r\n */\r\n getStoredRedirectRoute() {\r\n return localStorage.getItem(STORAGE_KEY);\r\n }\r\n /**\r\n * Saves the redirect url to storage.\r\n *\r\n * @param url The redirect url to save.\r\n */\r\n saveStoredRedirectRoute(url) {\r\n localStorage.setItem(STORAGE_KEY, url);\r\n }\r\n /**\r\n * Removes the redirect url from storage.\r\n */\r\n deleteStoredRedirectRoute() {\r\n localStorage.removeItem(STORAGE_KEY);\r\n }\r\n}\nAutoLoginService.ɵfac = function AutoLoginService_Factory(t) { return new (t || AutoLoginService)(); };\nAutoLoginService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AutoLoginService, factory: AutoLoginService.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AutoLoginService, [{\n type: Injectable\n }], null, null); })();\n\nclass RandomService {\r\n constructor(doc, loggerService) {\r\n this.doc = doc;\r\n this.loggerService = loggerService;\r\n }\r\n createRandom(requiredLength) {\r\n if (requiredLength <= 0) {\r\n return '';\r\n }\r\n if (requiredLength > 0 && requiredLength < 7) {\r\n this.loggerService.logWarning(`RandomService called with ${requiredLength} but 7 chars is the minimum, returning 10 chars`);\r\n requiredLength = 10;\r\n }\r\n const length = requiredLength - 6;\r\n const arr = new Uint8Array(Math.floor((length || length) / 2));\r\n if (this.getCrypto()) {\r\n this.getCrypto().getRandomValues(arr);\r\n }\r\n return Array.from(arr, this.toHex).join('') + this.randomString(7);\r\n }\r\n toHex(dec) {\r\n return ('0' + dec.toString(16)).substr(-2);\r\n }\r\n randomString(length) {\r\n let result = '';\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n const values = new Uint32Array(length);\r\n if (this.getCrypto()) {\r\n this.getCrypto().getRandomValues(values);\r\n for (let i = 0; i < length; i++) {\r\n result += characters[values[i] % characters.length];\r\n }\r\n }\r\n return result;\r\n }\r\n getCrypto() {\r\n // support for IE, (window.crypto || window.msCrypto)\r\n return this.doc.defaultView.crypto || this.doc.defaultView.msCrypto;\r\n }\r\n}\nRandomService.ɵfac = function RandomService_Factory(t) { return new (t || RandomService)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(LoggerService)); };\nRandomService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: RandomService, factory: RandomService.ɵfac });\r\nRandomService.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: LoggerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RandomService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: LoggerService }]; }, null); })();\n\nclass FlowsDataService {\r\n constructor(storagePersistenceService, randomService, configurationProvider, loggerService) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.randomService = randomService;\r\n this.configurationProvider = configurationProvider;\r\n this.loggerService = loggerService;\r\n }\r\n createNonce() {\r\n const nonce = this.randomService.createRandom(40);\r\n this.setNonce(nonce);\r\n return nonce;\r\n }\r\n setNonce(nonce) {\r\n this.storagePersistenceService.write('authNonce', nonce);\r\n }\r\n getAuthStateControl() {\r\n return this.storagePersistenceService.read('authStateControl');\r\n }\r\n setAuthStateControl(authStateControl) {\r\n this.storagePersistenceService.write('authStateControl', authStateControl);\r\n }\r\n getExistingOrCreateAuthStateControl() {\r\n let state = this.storagePersistenceService.read('authStateControl');\r\n if (!state) {\r\n state = this.randomService.createRandom(40);\r\n this.storagePersistenceService.write('authStateControl', state);\r\n }\r\n return state;\r\n }\r\n setSessionState(sessionState) {\r\n this.storagePersistenceService.write('session_state', sessionState);\r\n }\r\n resetStorageFlowData() {\r\n this.storagePersistenceService.resetStorageFlowData();\r\n }\r\n getCodeVerifier() {\r\n return this.storagePersistenceService.read('codeVerifier');\r\n }\r\n createCodeVerifier() {\r\n const codeVerifier = this.randomService.createRandom(67);\r\n this.storagePersistenceService.write('codeVerifier', codeVerifier);\r\n return codeVerifier;\r\n }\r\n isSilentRenewRunning() {\r\n const storageObject = JSON.parse(this.storagePersistenceService.read('storageSilentRenewRunning'));\r\n if (storageObject) {\r\n const { silentRenewTimeoutInSeconds } = this.configurationProvider.getOpenIDConfiguration();\r\n const timeOutInMilliseconds = silentRenewTimeoutInSeconds * 1000;\r\n const dateOfLaunchedProcessUtc = Date.parse(storageObject.dateOfLaunchedProcessUtc);\r\n const currentDateUtc = Date.parse(new Date().toISOString());\r\n const elapsedTimeInMilliseconds = Math.abs(currentDateUtc - dateOfLaunchedProcessUtc);\r\n const isProbablyStuck = elapsedTimeInMilliseconds > timeOutInMilliseconds;\r\n if (isProbablyStuck) {\r\n this.loggerService.logDebug('silent renew process is probably stuck, state will be reset.');\r\n this.resetSilentRenewRunning();\r\n return false;\r\n }\r\n return storageObject.state === 'running';\r\n }\r\n return false;\r\n }\r\n setSilentRenewRunning() {\r\n const storageObject = {\r\n state: 'running',\r\n dateOfLaunchedProcessUtc: new Date().toISOString(),\r\n };\r\n this.storagePersistenceService.write('storageSilentRenewRunning', JSON.stringify(storageObject));\r\n }\r\n resetSilentRenewRunning() {\r\n this.storagePersistenceService.write('storageSilentRenewRunning', '');\r\n }\r\n}\nFlowsDataService.ɵfac = function FlowsDataService_Factory(t) { return new (t || FlowsDataService)(ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(RandomService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(LoggerService)); };\nFlowsDataService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FlowsDataService, factory: FlowsDataService.ɵfac });\r\nFlowsDataService.ctorParameters = () => [\r\n { type: StoragePersistenceService },\r\n { type: RandomService },\r\n { type: ConfigurationProvider },\r\n { type: LoggerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlowsDataService, [{\n type: Injectable\n }], function () { return [{ type: StoragePersistenceService }, { type: RandomService }, { type: ConfigurationProvider }, { type: LoggerService }]; }, null); })();\n\nclass FlowHelper {\r\n constructor(configurationProvider) {\r\n this.configurationProvider = configurationProvider;\r\n }\r\n isCurrentFlowCodeFlow() {\r\n return this.currentFlowIs('code');\r\n }\r\n isCurrentFlowAnyImplicitFlow() {\r\n return this.isCurrentFlowImplicitFlowWithAccessToken() || this.isCurrentFlowImplicitFlowWithoutAccessToken();\r\n }\r\n isCurrentFlowCodeFlowWithRefreshTokens() {\r\n const { useRefreshToken } = this.configurationProvider.getOpenIDConfiguration();\r\n if (this.isCurrentFlowCodeFlow() && useRefreshToken) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n isCurrentFlowImplicitFlowWithAccessToken() {\r\n return this.currentFlowIs('id_token token');\r\n }\r\n isCurrentFlowImplicitFlowWithoutAccessToken() {\r\n return this.currentFlowIs('id_token');\r\n }\r\n currentFlowIs(flowTypes) {\r\n const { responseType } = this.configurationProvider.getOpenIDConfiguration();\r\n if (Array.isArray(flowTypes)) {\r\n return flowTypes.some((x) => responseType === x);\r\n }\r\n return responseType === flowTypes;\r\n }\r\n}\nFlowHelper.ɵfac = function FlowHelper_Factory(t) { return new (t || FlowHelper)(ɵngcc0.ɵɵinject(ConfigurationProvider)); };\nFlowHelper.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FlowHelper, factory: FlowHelper.ɵfac });\r\nFlowHelper.ctorParameters = () => [\r\n { type: ConfigurationProvider }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlowHelper, [{\n type: Injectable\n }], function () { return [{ type: ConfigurationProvider }]; }, null); })();\n\nclass UriEncoder {\r\n encodeKey(key) {\r\n return encodeURIComponent(key);\r\n }\r\n encodeValue(value) {\r\n return encodeURIComponent(value);\r\n }\r\n decodeKey(key) {\r\n return decodeURIComponent(key);\r\n }\r\n decodeValue(value) {\r\n return decodeURIComponent(value);\r\n }\r\n}\n\nconst CALLBACK_PARAMS_TO_CHECK = ['code', 'state', 'token', 'id_token'];\r\nclass UrlService {\r\n constructor(configurationProvider, loggerService, flowsDataService, flowHelper, tokenValidationService, storagePersistenceService) {\r\n this.configurationProvider = configurationProvider;\r\n this.loggerService = loggerService;\r\n this.flowsDataService = flowsDataService;\r\n this.flowHelper = flowHelper;\r\n this.tokenValidationService = tokenValidationService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n getUrlParameter(urlToCheck, name) {\r\n if (!urlToCheck) {\r\n return '';\r\n }\r\n if (!name) {\r\n return '';\r\n }\r\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n const results = regex.exec(urlToCheck);\r\n return results === null ? '' : decodeURIComponent(results[1]);\r\n }\r\n isCallbackFromSts(currentUrl) {\r\n return CALLBACK_PARAMS_TO_CHECK.some((x) => !!this.getUrlParameter(currentUrl, x));\r\n }\r\n getRefreshSessionSilentRenewUrl(customParams) {\r\n if (this.flowHelper.isCurrentFlowCodeFlow()) {\r\n return this.createUrlCodeFlowWithSilentRenew(customParams);\r\n }\r\n return this.createUrlImplicitFlowWithSilentRenew(customParams) || '';\r\n }\r\n getAuthorizeParUrl(requestUri) {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (!authWellKnownEndPoints) {\r\n this.loggerService.logError('authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n const authorizationEndpoint = authWellKnownEndPoints.authorizationEndpoint;\r\n if (!authorizationEndpoint) {\r\n this.loggerService.logError(`Can not create an authorize url when authorizationEndpoint is '${authorizationEndpoint}'`);\r\n return null;\r\n }\r\n const { clientId } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!clientId) {\r\n this.loggerService.logError(`createAuthorizeUrl could not add clientId because it was: `, clientId);\r\n return null;\r\n }\r\n const urlParts = authorizationEndpoint.split('?');\r\n const authorizationUrl = urlParts[0];\r\n let params = new HttpParams({\r\n fromString: urlParts[1],\r\n encoder: new UriEncoder(),\r\n });\r\n params = params.set('request_uri', requestUri);\r\n params = params.append('client_id', clientId);\r\n return `${authorizationUrl}?${params}`;\r\n }\r\n getAuthorizeUrl(customParams) {\r\n if (this.flowHelper.isCurrentFlowCodeFlow()) {\r\n return this.createUrlCodeFlowAuthorize(customParams);\r\n }\r\n return this.createUrlImplicitFlowAuthorize(customParams) || '';\r\n }\r\n createEndSessionUrl(idTokenHint, customParamsEndSession) {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n const endSessionEndpoint = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.endSessionEndpoint;\r\n if (!endSessionEndpoint) {\r\n return null;\r\n }\r\n const urlParts = endSessionEndpoint.split('?');\r\n const authorizationEndsessionUrl = urlParts[0];\r\n let params = new HttpParams({\r\n fromString: urlParts[1],\r\n encoder: new UriEncoder(),\r\n });\r\n params = params.set('id_token_hint', idTokenHint);\r\n if (customParamsEndSession) {\r\n for (const [key, value] of Object.entries(Object.assign({}, customParamsEndSession))) {\r\n params = params.append(key, value.toString());\r\n }\r\n }\r\n const postLogoutRedirectUri = this.getPostLogoutRedirectUrl();\r\n if (postLogoutRedirectUri) {\r\n params = params.append('post_logout_redirect_uri', postLogoutRedirectUri);\r\n }\r\n return `${authorizationEndsessionUrl}?${params}`;\r\n }\r\n createRevocationEndpointBodyAccessToken(token) {\r\n const clientId = this.getClientId();\r\n if (!clientId) {\r\n return null;\r\n }\r\n return `client_id=${clientId}&token=${token}&token_type_hint=access_token`;\r\n }\r\n createRevocationEndpointBodyRefreshToken(token) {\r\n const clientId = this.getClientId();\r\n if (!clientId) {\r\n return null;\r\n }\r\n return `client_id=${clientId}&token=${token}&token_type_hint=refresh_token`;\r\n }\r\n getRevocationEndpointUrl() {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n const revocationEndpoint = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.revocationEndpoint;\r\n if (!revocationEndpoint) {\r\n return null;\r\n }\r\n const urlParts = revocationEndpoint.split('?');\r\n const revocationEndpointUrl = urlParts[0];\r\n return revocationEndpointUrl;\r\n }\r\n createBodyForCodeFlowCodeRequest(code, customTokenParams) {\r\n const codeVerifier = this.flowsDataService.getCodeVerifier();\r\n if (!codeVerifier) {\r\n this.loggerService.logError(`CodeVerifier is not set `, codeVerifier);\r\n return null;\r\n }\r\n const clientId = this.getClientId();\r\n if (!clientId) {\r\n return null;\r\n }\r\n let dataForBody = oneLineTrim `grant_type=authorization_code\n &client_id=${clientId}\n &code_verifier=${codeVerifier}\n &code=${code}`;\r\n if (customTokenParams) {\r\n const customParamText = this.composeCustomParams(Object.assign({}, customTokenParams));\r\n dataForBody = oneLineTrim `${dataForBody}${customParamText}`;\r\n }\r\n const silentRenewUrl = this.getSilentRenewUrl();\r\n if (this.flowsDataService.isSilentRenewRunning() && silentRenewUrl) {\r\n return oneLineTrim `${dataForBody}&redirect_uri=${silentRenewUrl}`;\r\n }\r\n const redirectUrl = this.getRedirectUrl();\r\n if (!redirectUrl) {\r\n return null;\r\n }\r\n return oneLineTrim `${dataForBody}&redirect_uri=${redirectUrl}`;\r\n }\r\n createBodyForCodeFlowRefreshTokensRequest(refreshToken, customParamsRefresh) {\r\n const clientId = this.getClientId();\r\n if (!clientId) {\r\n return null;\r\n }\r\n let dataForBody = oneLineTrim `grant_type=refresh_token\n &client_id=${clientId}\n &refresh_token=${refreshToken}`;\r\n if (customParamsRefresh) {\r\n const customParamText = this.composeCustomParams(Object.assign({}, customParamsRefresh));\r\n dataForBody = `${dataForBody}${customParamText}`;\r\n }\r\n return dataForBody;\r\n }\r\n createBodyForParCodeFlowRequest(customParamsRequest) {\r\n const redirectUrl = this.getRedirectUrl();\r\n if (!redirectUrl) {\r\n return null;\r\n }\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl();\r\n const nonce = this.flowsDataService.createNonce();\r\n this.loggerService.logDebug('Authorize created. adding myautostate: ' + state);\r\n // code_challenge with \"S256\"\r\n const codeVerifier = this.flowsDataService.createCodeVerifier();\r\n const codeChallenge = this.tokenValidationService.generateCodeChallenge(codeVerifier);\r\n const { clientId, responseType, scope, hdParam, customParams } = this.configurationProvider.getOpenIDConfiguration();\r\n let dataForBody = oneLineTrim `client_id=${clientId}\n &redirect_uri=${redirectUrl}\n &response_type=${responseType}\n &scope=${scope}\n &nonce=${nonce}\n &state=${state}\n &code_challenge=${codeChallenge}\n &code_challenge_method=S256`;\r\n if (hdParam) {\r\n dataForBody = `${dataForBody}&hd=${hdParam}`;\r\n }\r\n if (customParams) {\r\n const customParamText = this.composeCustomParams(Object.assign({}, customParams));\r\n dataForBody = `${dataForBody}${customParamText}`;\r\n }\r\n if (customParamsRequest) {\r\n const customParamText = this.composeCustomParams(Object.assign({}, customParamsRequest));\r\n dataForBody = `${dataForBody}${customParamText}`;\r\n }\r\n return dataForBody;\r\n }\r\n createAuthorizeUrl(codeChallenge, redirectUrl, nonce, state, prompt, customRequestParams) {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n const authorizationEndpoint = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.authorizationEndpoint;\r\n if (!authorizationEndpoint) {\r\n this.loggerService.logError(`Can not create an authorize url when authorizationEndpoint is '${authorizationEndpoint}'`);\r\n return null;\r\n }\r\n const { clientId, responseType, scope, hdParam, customParams } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!clientId) {\r\n this.loggerService.logError(`createAuthorizeUrl could not add clientId because it was: `, clientId);\r\n return null;\r\n }\r\n if (!responseType) {\r\n this.loggerService.logError(`createAuthorizeUrl could not add responseType because it was: `, responseType);\r\n return null;\r\n }\r\n if (!scope) {\r\n this.loggerService.logError(`createAuthorizeUrl could not add scope because it was: `, scope);\r\n return null;\r\n }\r\n const urlParts = authorizationEndpoint.split('?');\r\n const authorizationUrl = urlParts[0];\r\n let params = new HttpParams({\r\n fromString: urlParts[1],\r\n encoder: new UriEncoder(),\r\n });\r\n params = params.set('client_id', clientId);\r\n params = params.append('redirect_uri', redirectUrl);\r\n params = params.append('response_type', responseType);\r\n params = params.append('scope', scope);\r\n params = params.append('nonce', nonce);\r\n params = params.append('state', state);\r\n if (this.flowHelper.isCurrentFlowCodeFlow()) {\r\n params = params.append('code_challenge', codeChallenge);\r\n params = params.append('code_challenge_method', 'S256');\r\n }\r\n if (prompt) {\r\n params = params.append('prompt', prompt);\r\n }\r\n if (hdParam) {\r\n params = params.append('hd', hdParam);\r\n }\r\n if (customParams) {\r\n for (const [key, value] of Object.entries(Object.assign({}, customParams))) {\r\n params = params.append(key, value.toString());\r\n }\r\n }\r\n if (customRequestParams) {\r\n for (const [key, value] of Object.entries(Object.assign({}, customRequestParams))) {\r\n params = params.append(key, value.toString());\r\n }\r\n }\r\n return `${authorizationUrl}?${params}`;\r\n }\r\n createUrlImplicitFlowWithSilentRenew(customParams) {\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl();\r\n const nonce = this.flowsDataService.createNonce();\r\n const silentRenewUrl = this.getSilentRenewUrl();\r\n if (!silentRenewUrl) {\r\n return null;\r\n }\r\n this.loggerService.logDebug('RefreshSession created. adding myautostate: ', state);\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (authWellKnownEndPoints) {\r\n return this.createAuthorizeUrl('', silentRenewUrl, nonce, state, 'none', customParams);\r\n }\r\n this.loggerService.logError('authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n createUrlCodeFlowWithSilentRenew(customParams) {\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl();\r\n const nonce = this.flowsDataService.createNonce();\r\n this.loggerService.logDebug('RefreshSession created. adding myautostate: ' + state);\r\n // code_challenge with \"S256\"\r\n const codeVerifier = this.flowsDataService.createCodeVerifier();\r\n const codeChallenge = this.tokenValidationService.generateCodeChallenge(codeVerifier);\r\n const silentRenewUrl = this.getSilentRenewUrl();\r\n if (!silentRenewUrl) {\r\n return null;\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (authWellKnownEndPoints) {\r\n return this.createAuthorizeUrl(codeChallenge, silentRenewUrl, nonce, state, 'none', customParams);\r\n }\r\n this.loggerService.logWarning('authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n createUrlImplicitFlowAuthorize(customParams) {\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl();\r\n const nonce = this.flowsDataService.createNonce();\r\n this.loggerService.logDebug('Authorize created. adding myautostate: ' + state);\r\n const redirectUrl = this.getRedirectUrl();\r\n if (!redirectUrl) {\r\n return null;\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (authWellKnownEndPoints) {\r\n return this.createAuthorizeUrl('', redirectUrl, nonce, state, null, customParams);\r\n }\r\n this.loggerService.logError('authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n createUrlCodeFlowAuthorize(customParams) {\r\n const state = this.flowsDataService.getExistingOrCreateAuthStateControl();\r\n const nonce = this.flowsDataService.createNonce();\r\n this.loggerService.logDebug('Authorize created. adding myautostate: ' + state);\r\n const redirectUrl = this.getRedirectUrl();\r\n if (!redirectUrl) {\r\n return null;\r\n }\r\n // code_challenge with \"S256\"\r\n const codeVerifier = this.flowsDataService.createCodeVerifier();\r\n const codeChallenge = this.tokenValidationService.generateCodeChallenge(codeVerifier);\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (authWellKnownEndPoints) {\r\n return this.createAuthorizeUrl(codeChallenge, redirectUrl, nonce, state, null, customParams);\r\n }\r\n this.loggerService.logError('authWellKnownEndpoints is undefined');\r\n return null;\r\n }\r\n getRedirectUrl() {\r\n const { redirectUrl } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!redirectUrl) {\r\n this.loggerService.logError(`could not get redirectUrl, was: `, redirectUrl);\r\n return null;\r\n }\r\n return redirectUrl;\r\n }\r\n getSilentRenewUrl() {\r\n const { silentRenewUrl } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!silentRenewUrl) {\r\n this.loggerService.logError(`could not get silentRenewUrl, was: `, silentRenewUrl);\r\n return null;\r\n }\r\n return silentRenewUrl;\r\n }\r\n getPostLogoutRedirectUrl() {\r\n const { postLogoutRedirectUri } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!postLogoutRedirectUri) {\r\n this.loggerService.logError(`could not get postLogoutRedirectUri, was: `, postLogoutRedirectUri);\r\n return null;\r\n }\r\n return postLogoutRedirectUri;\r\n }\r\n getClientId() {\r\n const { clientId } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!clientId) {\r\n this.loggerService.logError(`could not get clientId, was: `, clientId);\r\n return null;\r\n }\r\n return clientId;\r\n }\r\n composeCustomParams(customParams) {\r\n let customParamText = '';\r\n for (const [key, value] of Object.entries(customParams)) {\r\n customParamText = customParamText.concat(`&${key}=${value.toString()}`);\r\n }\r\n return customParamText;\r\n }\r\n}\nUrlService.ɵfac = function UrlService_Factory(t) { return new (t || UrlService)(ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(FlowHelper), ɵngcc0.ɵɵinject(TokenValidationService), ɵngcc0.ɵɵinject(StoragePersistenceService)); };\nUrlService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: UrlService, factory: UrlService.ɵfac });\r\nUrlService.ctorParameters = () => [\r\n { type: ConfigurationProvider },\r\n { type: LoggerService },\r\n { type: FlowsDataService },\r\n { type: FlowHelper },\r\n { type: TokenValidationService },\r\n { type: StoragePersistenceService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UrlService, [{\n type: Injectable\n }], function () { return [{ type: ConfigurationProvider }, { type: LoggerService }, { type: FlowsDataService }, { type: FlowHelper }, { type: TokenValidationService }, { type: StoragePersistenceService }]; }, null); })();\n\nclass CodeFlowCallbackHandlerService {\r\n constructor(urlService, loggerService, tokenValidationService, flowsDataService, configurationProvider, storagePersistenceService, dataService) {\r\n this.urlService = urlService;\r\n this.loggerService = loggerService;\r\n this.tokenValidationService = tokenValidationService;\r\n this.flowsDataService = flowsDataService;\r\n this.configurationProvider = configurationProvider;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.dataService = dataService;\r\n }\r\n // STEP 1 Code Flow\r\n codeFlowCallback(urlToCheck) {\r\n const code = this.urlService.getUrlParameter(urlToCheck, 'code');\r\n const state = this.urlService.getUrlParameter(urlToCheck, 'state');\r\n const sessionState = this.urlService.getUrlParameter(urlToCheck, 'session_state') || null;\r\n if (!state) {\r\n this.loggerService.logDebug('no state in url');\r\n return throwError('no state in url');\r\n }\r\n if (!code) {\r\n this.loggerService.logDebug('no code in url');\r\n return throwError('no code in url');\r\n }\r\n this.loggerService.logDebug('running validation for callback', urlToCheck);\r\n const initialCallbackContext = {\r\n code,\r\n refreshToken: null,\r\n state,\r\n sessionState,\r\n authResult: null,\r\n isRenewProcess: false,\r\n jwtKeys: null,\r\n validationResult: null,\r\n existingIdToken: null,\r\n };\r\n return of(initialCallbackContext);\r\n }\r\n // STEP 2 Code Flow // Code Flow Silent Renew starts here\r\n codeFlowCodeRequest(callbackContext) {\r\n const authStateControl = this.flowsDataService.getAuthStateControl();\r\n const isStateCorrect = this.tokenValidationService.validateStateFromHashCallback(callbackContext.state, authStateControl);\r\n if (!isStateCorrect) {\r\n this.loggerService.logWarning('codeFlowCodeRequest incorrect state');\r\n return throwError('codeFlowCodeRequest incorrect state');\r\n }\r\n const authWellKnown = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n const tokenEndpoint = authWellKnown === null || authWellKnown === void 0 ? void 0 : authWellKnown.tokenEndpoint;\r\n if (!tokenEndpoint) {\r\n return throwError('Token Endpoint not defined');\r\n }\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n const config = this.configurationProvider.getOpenIDConfiguration();\r\n const bodyForCodeFlow = this.urlService.createBodyForCodeFlowCodeRequest(callbackContext.code, config === null || config === void 0 ? void 0 : config.customTokenParams);\r\n return this.dataService.post(tokenEndpoint, bodyForCodeFlow, headers).pipe(switchMap((response) => {\r\n let authResult = new Object();\r\n authResult = response;\r\n authResult.state = callbackContext.state;\r\n authResult.session_state = callbackContext.sessionState;\r\n callbackContext.authResult = authResult;\r\n return of(callbackContext);\r\n }), retryWhen((error) => this.handleRefreshRetry(error)), catchError((error) => {\r\n const { stsServer } = this.configurationProvider.getOpenIDConfiguration();\r\n const errorMessage = `OidcService code request ${stsServer}`;\r\n this.loggerService.logError(errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n handleRefreshRetry(errors) {\r\n return errors.pipe(mergeMap((error) => {\r\n // retry token refresh if there is no internet connection\r\n if (error && error instanceof HttpErrorResponse && error.error instanceof ProgressEvent && error.error.type === 'error') {\r\n const { stsServer, refreshTokenRetryInSeconds } = this.configurationProvider.getOpenIDConfiguration();\r\n const errorMessage = `OidcService code request ${stsServer} - no internet connection`;\r\n this.loggerService.logWarning(errorMessage, error);\r\n return timer(refreshTokenRetryInSeconds * 1000);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\nCodeFlowCallbackHandlerService.ɵfac = function CodeFlowCallbackHandlerService_Factory(t) { return new (t || CodeFlowCallbackHandlerService)(ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(TokenValidationService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(DataService)); };\nCodeFlowCallbackHandlerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CodeFlowCallbackHandlerService, factory: CodeFlowCallbackHandlerService.ɵfac });\r\nCodeFlowCallbackHandlerService.ctorParameters = () => [\r\n { type: UrlService },\r\n { type: LoggerService },\r\n { type: TokenValidationService },\r\n { type: FlowsDataService },\r\n { type: ConfigurationProvider },\r\n { type: StoragePersistenceService },\r\n { type: DataService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CodeFlowCallbackHandlerService, [{\n type: Injectable\n }], function () { return [{ type: UrlService }, { type: LoggerService }, { type: TokenValidationService }, { type: FlowsDataService }, { type: ConfigurationProvider }, { type: StoragePersistenceService }, { type: DataService }]; }, null); })();\n\n/* eslint-disable no-shadow */\r\nvar AuthorizedState;\r\n(function (AuthorizedState) {\r\n AuthorizedState[\"Authorized\"] = \"Authorized\";\r\n AuthorizedState[\"Unauthorized\"] = \"Unauthorized\";\r\n AuthorizedState[\"Unknown\"] = \"Unknown\";\r\n})(AuthorizedState || (AuthorizedState = {}));\n\n/* eslint-disable no-shadow */\r\nvar ValidationResult;\r\n(function (ValidationResult) {\r\n ValidationResult[\"NotSet\"] = \"NotSet\";\r\n ValidationResult[\"StatesDoNotMatch\"] = \"StatesDoNotMatch\";\r\n ValidationResult[\"SignatureFailed\"] = \"SignatureFailed\";\r\n ValidationResult[\"IncorrectNonce\"] = \"IncorrectNonce\";\r\n ValidationResult[\"RequiredPropertyMissing\"] = \"RequiredPropertyMissing\";\r\n ValidationResult[\"MaxOffsetExpired\"] = \"MaxOffsetExpired\";\r\n ValidationResult[\"IssDoesNotMatchIssuer\"] = \"IssDoesNotMatchIssuer\";\r\n ValidationResult[\"NoAuthWellKnownEndPoints\"] = \"NoAuthWellKnownEndPoints\";\r\n ValidationResult[\"IncorrectAud\"] = \"IncorrectAud\";\r\n ValidationResult[\"IncorrectIdTokenClaimsAfterRefresh\"] = \"IncorrectIdTokenClaimsAfterRefresh\";\r\n ValidationResult[\"IncorrectAzp\"] = \"IncorrectAzp\";\r\n ValidationResult[\"TokenExpired\"] = \"TokenExpired\";\r\n ValidationResult[\"IncorrectAtHash\"] = \"IncorrectAtHash\";\r\n ValidationResult[\"Ok\"] = \"Ok\";\r\n ValidationResult[\"LoginRequired\"] = \"LoginRequired\";\r\n ValidationResult[\"SecureTokenServerError\"] = \"SecureTokenServerError\";\r\n})(ValidationResult || (ValidationResult = {}));\n\nclass UserService {\r\n constructor(oidcDataService, storagePersistenceService, eventService, loggerService, tokenHelperService, flowHelper, configurationProvider) {\r\n this.oidcDataService = oidcDataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.eventService = eventService;\r\n this.loggerService = loggerService;\r\n this.tokenHelperService = tokenHelperService;\r\n this.flowHelper = flowHelper;\r\n this.configurationProvider = configurationProvider;\r\n this.userDataInternal$ = new BehaviorSubject(null);\r\n }\r\n get userData$() {\r\n return this.userDataInternal$.asObservable();\r\n }\r\n // TODO CHECK PARAMETERS\r\n // validationResult.idToken can be the complete validationResult\r\n getAndPersistUserDataInStore(isRenewProcess = false, idToken, decodedIdToken) {\r\n idToken = idToken || this.storagePersistenceService.getIdToken();\r\n decodedIdToken = decodedIdToken || this.tokenHelperService.getPayloadFromToken(idToken, false);\r\n const existingUserDataFromStorage = this.getUserDataFromStore();\r\n const haveUserData = !!existingUserDataFromStorage;\r\n const isCurrentFlowImplicitFlowWithAccessToken = this.flowHelper.isCurrentFlowImplicitFlowWithAccessToken();\r\n const isCurrentFlowCodeFlow = this.flowHelper.isCurrentFlowCodeFlow();\r\n const accessToken = this.storagePersistenceService.getAccessToken();\r\n if (!(isCurrentFlowImplicitFlowWithAccessToken || isCurrentFlowCodeFlow)) {\r\n this.loggerService.logDebug('authorizedCallback id_token flow');\r\n this.loggerService.logDebug('accessToken', accessToken);\r\n this.setUserDataToStore(decodedIdToken);\r\n return of(decodedIdToken);\r\n }\r\n const { renewUserInfoAfterTokenRenew } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!isRenewProcess || renewUserInfoAfterTokenRenew || !haveUserData) {\r\n return this.getUserDataOidcFlowAndSave(decodedIdToken.sub).pipe(switchMap((userData) => {\r\n this.loggerService.logDebug('Received user data', userData);\r\n if (!!userData) {\r\n this.loggerService.logDebug('accessToken', accessToken);\r\n return of(userData);\r\n }\r\n else {\r\n return throwError('no user data, request failed');\r\n }\r\n }));\r\n }\r\n return of(existingUserDataFromStorage);\r\n }\r\n getUserDataFromStore() {\r\n return this.storagePersistenceService.read('userData') || null;\r\n }\r\n publishUserDataIfExists() {\r\n const userData = this.getUserDataFromStore();\r\n if (userData) {\r\n this.userDataInternal$.next(userData);\r\n this.eventService.fireEvent(EventTypes.UserDataChanged, userData);\r\n }\r\n }\r\n setUserDataToStore(value) {\r\n this.storagePersistenceService.write('userData', value);\r\n this.userDataInternal$.next(value);\r\n this.eventService.fireEvent(EventTypes.UserDataChanged, value);\r\n }\r\n resetUserDataInStore() {\r\n this.storagePersistenceService.remove('userData');\r\n this.eventService.fireEvent(EventTypes.UserDataChanged, null);\r\n this.userDataInternal$.next(null);\r\n }\r\n getUserDataOidcFlowAndSave(idTokenSub) {\r\n return this.getIdentityUserData().pipe(map((data) => {\r\n if (this.validateUserDataSubIdToken(idTokenSub, data === null || data === void 0 ? void 0 : data.sub)) {\r\n this.setUserDataToStore(data);\r\n return data;\r\n }\r\n else {\r\n // something went wrong, userdata sub does not match that from id_token\r\n this.loggerService.logWarning('authorizedCallback, User data sub does not match sub in id_token');\r\n this.loggerService.logDebug('authorizedCallback, token(s) validation failed, resetting');\r\n this.resetUserDataInStore();\r\n return null;\r\n }\r\n }));\r\n }\r\n getIdentityUserData() {\r\n const token = this.storagePersistenceService.getAccessToken();\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (!authWellKnownEndPoints) {\r\n this.loggerService.logWarning('init check session: authWellKnownEndpoints is undefined');\r\n return throwError('authWellKnownEndpoints is undefined');\r\n }\r\n const userinfoEndpoint = authWellKnownEndPoints.userinfoEndpoint;\r\n if (!userinfoEndpoint) {\r\n this.loggerService.logError('init check session: authWellKnownEndpoints.userinfo_endpoint is undefined; set auto_userinfo = false in config');\r\n return throwError('authWellKnownEndpoints.userinfo_endpoint is undefined');\r\n }\r\n return this.oidcDataService.get(userinfoEndpoint, token).pipe(retry(2));\r\n }\r\n validateUserDataSubIdToken(idTokenSub, userdataSub) {\r\n if (!idTokenSub) {\r\n return false;\r\n }\r\n if (!userdataSub) {\r\n return false;\r\n }\r\n if (idTokenSub !== userdataSub) {\r\n this.loggerService.logDebug('validateUserDataSubIdToken failed', idTokenSub, userdataSub);\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\nUserService.ɵfac = function UserService_Factory(t) { return new (t || UserService)(ɵngcc0.ɵɵinject(DataService), ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(PublicEventsService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(TokenHelperService), ɵngcc0.ɵɵinject(FlowHelper), ɵngcc0.ɵɵinject(ConfigurationProvider)); };\nUserService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: UserService, factory: UserService.ɵfac });\r\nUserService.ctorParameters = () => [\r\n { type: DataService },\r\n { type: StoragePersistenceService },\r\n { type: PublicEventsService },\r\n { type: LoggerService },\r\n { type: TokenHelperService },\r\n { type: FlowHelper },\r\n { type: ConfigurationProvider }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UserService, [{\n type: Injectable\n }], function () { return [{ type: DataService }, { type: StoragePersistenceService }, { type: PublicEventsService }, { type: LoggerService }, { type: TokenHelperService }, { type: FlowHelper }, { type: ConfigurationProvider }]; }, null); })();\n\nclass ResetAuthDataService {\r\n constructor(authStateService, flowsDataService, userService) {\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n this.userService = userService;\r\n }\r\n resetAuthorizationData() {\r\n this.userService.resetUserDataInStore();\r\n this.flowsDataService.resetStorageFlowData();\r\n this.authStateService.setUnauthorizedAndFireEvent();\r\n }\r\n}\nResetAuthDataService.ɵfac = function ResetAuthDataService_Factory(t) { return new (t || ResetAuthDataService)(ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(UserService)); };\nResetAuthDataService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ResetAuthDataService, factory: ResetAuthDataService.ɵfac });\r\nResetAuthDataService.ctorParameters = () => [\r\n { type: AuthStateService },\r\n { type: FlowsDataService },\r\n { type: UserService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResetAuthDataService, [{\n type: Injectable\n }], function () { return [{ type: AuthStateService }, { type: FlowsDataService }, { type: UserService }]; }, null); })();\n\nclass SigninKeyDataService {\r\n constructor(storagePersistenceService, loggerService, dataService) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.loggerService = loggerService;\r\n this.dataService = dataService;\r\n }\r\n getSigningKeys() {\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n const jwksUri = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.jwksUri;\r\n if (!jwksUri) {\r\n const error = `getSigningKeys: authWellKnownEndpoints.jwksUri is: '${jwksUri}'`;\r\n this.loggerService.logWarning(error);\r\n return throwError(error);\r\n }\r\n this.loggerService.logDebug('Getting signinkeys from ', jwksUri);\r\n return this.dataService.get(jwksUri).pipe(retry(2), catchError(this.handleErrorGetSigningKeys));\r\n }\r\n handleErrorGetSigningKeys(errorResponse) {\r\n let errMsg = '';\r\n if (errorResponse instanceof HttpResponse) {\r\n const body = errorResponse.body || {};\r\n const err = JSON.stringify(body);\r\n const { status, statusText } = errorResponse;\r\n errMsg = `${status || ''} - ${statusText || ''} ${err || ''}`;\r\n }\r\n else {\r\n const { message } = errorResponse;\r\n errMsg = !!message ? message : `${errorResponse}`;\r\n }\r\n this.loggerService.logError(errMsg);\r\n return throwError(new Error(errMsg));\r\n }\r\n}\nSigninKeyDataService.ɵfac = function SigninKeyDataService_Factory(t) { return new (t || SigninKeyDataService)(ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(DataService)); };\nSigninKeyDataService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SigninKeyDataService, factory: SigninKeyDataService.ɵfac });\r\nSigninKeyDataService.ctorParameters = () => [\r\n { type: StoragePersistenceService },\r\n { type: LoggerService },\r\n { type: DataService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SigninKeyDataService, [{\n type: Injectable\n }], function () { return [{ type: StoragePersistenceService }, { type: LoggerService }, { type: DataService }]; }, null); })();\n\nconst JWT_KEYS = 'jwtKeys';\r\nclass HistoryJwtKeysCallbackHandlerService {\r\n constructor(loggerService, configurationProvider, authStateService, flowsDataService, signInKeyDataService, storagePersistenceService, resetAuthDataService) {\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n this.signInKeyDataService = signInKeyDataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n }\r\n // STEP 3 Code Flow, STEP 2 Implicit Flow, STEP 3 Refresh Token\r\n callbackHistoryAndResetJwtKeys(callbackContext) {\r\n this.storagePersistenceService.write('authnResult', callbackContext.authResult);\r\n if (this.historyCleanUpTurnedOn() && !callbackContext.isRenewProcess) {\r\n this.resetBrowserHistory();\r\n }\r\n else {\r\n this.loggerService.logDebug('history clean up inactive');\r\n }\r\n if (callbackContext.authResult.error) {\r\n const errorMessage = `authorizedCallbackProcedure came with error: ${callbackContext.authResult.error}`;\r\n this.loggerService.logDebug(errorMessage);\r\n this.resetAuthDataService.resetAuthorizationData();\r\n this.flowsDataService.setNonce('');\r\n this.handleResultErrorFromCallback(callbackContext.authResult, callbackContext.isRenewProcess);\r\n return throwError(errorMessage);\r\n }\r\n this.loggerService.logDebug(callbackContext.authResult);\r\n this.loggerService.logDebug('authorizedCallback created, begin token validation');\r\n return this.signInKeyDataService.getSigningKeys().pipe(tap((jwtKeys) => this.storeSigningKeys(jwtKeys)), catchError((err) => {\r\n // fallback: try to load jwtKeys from storage\r\n const storedJwtKeys = this.readSigningKeys();\r\n if (!!storedJwtKeys) {\r\n this.loggerService.logWarning(`Failed to retrieve signing keys, fallback to stored keys`);\r\n return of(storedJwtKeys);\r\n }\r\n return throwError(err);\r\n }), switchMap((jwtKeys) => {\r\n if (jwtKeys) {\r\n callbackContext.jwtKeys = jwtKeys;\r\n return of(callbackContext);\r\n }\r\n const errorMessage = `Failed to retrieve signing key`;\r\n this.loggerService.logWarning(errorMessage);\r\n return throwError(errorMessage);\r\n }), catchError((err) => {\r\n const errorMessage = `Failed to retrieve signing key with error: ${err}`;\r\n this.loggerService.logWarning(errorMessage);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n handleResultErrorFromCallback(result, isRenewProcess) {\r\n let validationResult = ValidationResult.SecureTokenServerError;\r\n if (result.error === 'login_required') {\r\n validationResult = ValidationResult.LoginRequired;\r\n }\r\n this.authStateService.updateAndPublishAuthState({\r\n authorizationState: AuthorizedState.Unauthorized,\r\n validationResult,\r\n isRenewProcess,\r\n });\r\n }\r\n historyCleanUpTurnedOn() {\r\n const { historyCleanupOff } = this.configurationProvider.getOpenIDConfiguration();\r\n return !historyCleanupOff;\r\n }\r\n resetBrowserHistory() {\r\n window.history.replaceState({}, window.document.title, window.location.origin + window.location.pathname);\r\n }\r\n storeSigningKeys(jwtKeys) {\r\n this.storagePersistenceService.write(JWT_KEYS, jwtKeys);\r\n }\r\n readSigningKeys() {\r\n return this.storagePersistenceService.read(JWT_KEYS);\r\n }\r\n}\nHistoryJwtKeysCallbackHandlerService.ɵfac = function HistoryJwtKeysCallbackHandlerService_Factory(t) { return new (t || HistoryJwtKeysCallbackHandlerService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(SigninKeyDataService), ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(ResetAuthDataService)); };\nHistoryJwtKeysCallbackHandlerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HistoryJwtKeysCallbackHandlerService, factory: HistoryJwtKeysCallbackHandlerService.ɵfac });\r\nHistoryJwtKeysCallbackHandlerService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: ConfigurationProvider },\r\n { type: AuthStateService },\r\n { type: FlowsDataService },\r\n { type: SigninKeyDataService },\r\n { type: StoragePersistenceService },\r\n { type: ResetAuthDataService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HistoryJwtKeysCallbackHandlerService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: ConfigurationProvider }, { type: AuthStateService }, { type: FlowsDataService }, { type: SigninKeyDataService }, { type: StoragePersistenceService }, { type: ResetAuthDataService }]; }, null); })();\n\nclass ImplicitFlowCallbackHandlerService {\r\n constructor(resetAuthDataService, loggerService, flowsDataService, doc) {\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.loggerService = loggerService;\r\n this.flowsDataService = flowsDataService;\r\n this.doc = doc;\r\n }\r\n // STEP 1 Code Flow\r\n // STEP 1 Implicit Flow\r\n implicitFlowCallback(hash) {\r\n const isRenewProcessData = this.flowsDataService.isSilentRenewRunning();\r\n this.loggerService.logDebug('BEGIN authorizedCallback, no auth data');\r\n if (!isRenewProcessData) {\r\n this.resetAuthDataService.resetAuthorizationData();\r\n }\r\n hash = hash || this.doc.location.hash.substr(1);\r\n const authResult = hash.split('&').reduce((resultData, item) => {\r\n const parts = item.split('=');\r\n resultData[parts.shift()] = parts.join('=');\r\n return resultData;\r\n }, {});\r\n const callbackContext = {\r\n code: null,\r\n refreshToken: null,\r\n state: null,\r\n sessionState: null,\r\n authResult,\r\n isRenewProcess: isRenewProcessData,\r\n jwtKeys: null,\r\n validationResult: null,\r\n existingIdToken: null,\r\n };\r\n return of(callbackContext);\r\n }\r\n}\nImplicitFlowCallbackHandlerService.ɵfac = function ImplicitFlowCallbackHandlerService_Factory(t) { return new (t || ImplicitFlowCallbackHandlerService)(ɵngcc0.ɵɵinject(ResetAuthDataService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(DOCUMENT)); };\nImplicitFlowCallbackHandlerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ImplicitFlowCallbackHandlerService, factory: ImplicitFlowCallbackHandlerService.ɵfac });\r\nImplicitFlowCallbackHandlerService.ctorParameters = () => [\r\n { type: ResetAuthDataService },\r\n { type: LoggerService },\r\n { type: FlowsDataService },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ImplicitFlowCallbackHandlerService, [{\n type: Injectable\n }], function () { return [{ type: ResetAuthDataService }, { type: LoggerService }, { type: FlowsDataService }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\nclass RefreshSessionCallbackHandlerService {\r\n constructor(loggerService, authStateService, flowsDataService) {\r\n this.loggerService = loggerService;\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n }\r\n // STEP 1 Refresh session\r\n refreshSessionWithRefreshTokens() {\r\n const stateData = this.flowsDataService.getExistingOrCreateAuthStateControl();\r\n this.loggerService.logDebug('RefreshSession created. adding myautostate: ' + stateData);\r\n const refreshToken = this.authStateService.getRefreshToken();\r\n const idToken = this.authStateService.getIdToken();\r\n if (refreshToken) {\r\n const callbackContext = {\r\n code: null,\r\n refreshToken,\r\n state: stateData,\r\n sessionState: null,\r\n authResult: null,\r\n isRenewProcess: true,\r\n jwtKeys: null,\r\n validationResult: null,\r\n existingIdToken: idToken,\r\n };\r\n this.loggerService.logDebug('found refresh code, obtaining new credentials with refresh code');\r\n // Nonce is not used with refresh tokens; but Keycloak may send it anyway\r\n this.flowsDataService.setNonce(TokenValidationService.refreshTokenNoncePlaceholder);\r\n return of(callbackContext);\r\n }\r\n else {\r\n const errorMessage = 'no refresh token found, please login';\r\n this.loggerService.logError(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n }\r\n}\nRefreshSessionCallbackHandlerService.ɵfac = function RefreshSessionCallbackHandlerService_Factory(t) { return new (t || RefreshSessionCallbackHandlerService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(FlowsDataService)); };\nRefreshSessionCallbackHandlerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: RefreshSessionCallbackHandlerService, factory: RefreshSessionCallbackHandlerService.ɵfac });\r\nRefreshSessionCallbackHandlerService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: AuthStateService },\r\n { type: FlowsDataService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RefreshSessionCallbackHandlerService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: AuthStateService }, { type: FlowsDataService }]; }, null); })();\n\nclass RefreshTokenCallbackHandlerService {\r\n constructor(urlService, loggerService, configurationProvider, dataService, storagePersistenceService) {\r\n this.urlService = urlService;\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.dataService = dataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n // STEP 2 Refresh Token\r\n refreshTokensRequestTokens(callbackContext, customParamsRefresh) {\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n const authWellKnown = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n const tokenEndpoint = authWellKnown === null || authWellKnown === void 0 ? void 0 : authWellKnown.tokenEndpoint;\r\n if (!tokenEndpoint) {\r\n return throwError('Token Endpoint not defined');\r\n }\r\n const data = this.urlService.createBodyForCodeFlowRefreshTokensRequest(callbackContext.refreshToken, customParamsRefresh);\r\n return this.dataService.post(tokenEndpoint, data, headers).pipe(switchMap((response) => {\r\n this.loggerService.logDebug('token refresh response: ', response);\r\n let authResult = new Object();\r\n authResult = response;\r\n authResult.state = callbackContext.state;\r\n callbackContext.authResult = authResult;\r\n return of(callbackContext);\r\n }), retryWhen((error) => this.handleRefreshRetry(error)), catchError((error) => {\r\n const { stsServer } = this.configurationProvider.getOpenIDConfiguration();\r\n const errorMessage = `OidcService code request ${stsServer}`;\r\n this.loggerService.logError(errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n handleRefreshRetry(errors) {\r\n return errors.pipe(mergeMap((error) => {\r\n // retry token refresh if there is no internet connection\r\n if (error && error instanceof HttpErrorResponse && error.error instanceof ProgressEvent && error.error.type === 'error') {\r\n const { stsServer, refreshTokenRetryInSeconds } = this.configurationProvider.getOpenIDConfiguration();\r\n const errorMessage = `OidcService code request ${stsServer} - no internet connection`;\r\n this.loggerService.logWarning(errorMessage, error);\r\n return timer(refreshTokenRetryInSeconds * 1000);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\nRefreshTokenCallbackHandlerService.ɵfac = function RefreshTokenCallbackHandlerService_Factory(t) { return new (t || RefreshTokenCallbackHandlerService)(ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(DataService), ɵngcc0.ɵɵinject(StoragePersistenceService)); };\nRefreshTokenCallbackHandlerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: RefreshTokenCallbackHandlerService, factory: RefreshTokenCallbackHandlerService.ɵfac });\r\nRefreshTokenCallbackHandlerService.ctorParameters = () => [\r\n { type: UrlService },\r\n { type: LoggerService },\r\n { type: ConfigurationProvider },\r\n { type: DataService },\r\n { type: StoragePersistenceService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RefreshTokenCallbackHandlerService, [{\n type: Injectable\n }], function () { return [{ type: UrlService }, { type: LoggerService }, { type: ConfigurationProvider }, { type: DataService }, { type: StoragePersistenceService }]; }, null); })();\n\nclass EqualityService {\r\n isStringEqualOrNonOrderedArrayEqual(value1, value2) {\r\n if (this.isNullOrUndefined(value1)) {\r\n return false;\r\n }\r\n if (this.isNullOrUndefined(value2)) {\r\n return false;\r\n }\r\n if (this.oneValueIsStringAndTheOtherIsArray(value1, value2)) {\r\n return false;\r\n }\r\n if (this.bothValuesAreStrings(value1, value2)) {\r\n return value1 === value2;\r\n }\r\n if (this.bothValuesAreArrays(value1, value2)) {\r\n return this.arraysHaveEqualContent(value1, value2);\r\n }\r\n return false;\r\n }\r\n areEqual(value1, value2) {\r\n if (!value1 || !value2) {\r\n return false;\r\n }\r\n if (this.bothValuesAreArrays(value1, value2)) {\r\n return this.arraysStrictEqual(value1, value2);\r\n }\r\n if (this.bothValuesAreStrings(value1, value2)) {\r\n return value1 === value2;\r\n }\r\n if (this.bothValuesAreObjects(value1, value2)) {\r\n return JSON.stringify(value1).toLowerCase() === JSON.stringify(value2).toLowerCase();\r\n }\r\n if (this.oneValueIsStringAndTheOtherIsArray(value1, value2)) {\r\n if (Array.isArray(value1) && this.valueIsString(value2)) {\r\n return value1[0] === value2;\r\n }\r\n if (Array.isArray(value2) && this.valueIsString(value1)) {\r\n return value2[0] === value1;\r\n }\r\n }\r\n }\r\n oneValueIsStringAndTheOtherIsArray(value1, value2) {\r\n return (Array.isArray(value1) && this.valueIsString(value2)) || (Array.isArray(value2) && this.valueIsString(value1));\r\n }\r\n bothValuesAreObjects(value1, value2) {\r\n return this.valueIsObject(value1) && this.valueIsObject(value2);\r\n }\r\n bothValuesAreStrings(value1, value2) {\r\n return this.valueIsString(value1) && this.valueIsString(value2);\r\n }\r\n bothValuesAreArrays(value1, value2) {\r\n return Array.isArray(value1) && Array.isArray(value2);\r\n }\r\n valueIsString(value) {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n valueIsObject(value) {\r\n return typeof value === 'object';\r\n }\r\n arraysStrictEqual(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n for (let i = arr1.length; i--;) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n arraysHaveEqualContent(arr1, arr2) {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n return arr1.some((v) => arr2.includes(v));\r\n }\r\n isNullOrUndefined(val) {\r\n return val === null || val === undefined;\r\n }\r\n}\nEqualityService.ɵfac = function EqualityService_Factory(t) { return new (t || EqualityService)(); };\nEqualityService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: EqualityService, factory: EqualityService.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EqualityService, [{\n type: Injectable\n }], null, null); })();\n\nclass StateValidationResult {\r\n constructor(accessToken = '', idToken = '', authResponseIsValid = false, decodedIdToken = {}, state = ValidationResult.NotSet) {\r\n this.accessToken = accessToken;\r\n this.idToken = idToken;\r\n this.authResponseIsValid = authResponseIsValid;\r\n this.decodedIdToken = decodedIdToken;\r\n this.state = state;\r\n }\r\n}\n\nclass StateValidationService {\r\n constructor(storagePersistenceService, tokenValidationService, tokenHelperService, loggerService, configurationProvider, equalityService, flowHelper) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.tokenValidationService = tokenValidationService;\r\n this.tokenHelperService = tokenHelperService;\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.equalityService = equalityService;\r\n this.flowHelper = flowHelper;\r\n }\r\n getValidatedStateResult(callbackContext) {\r\n if (!callbackContext) {\r\n return new StateValidationResult('', '', false, {});\r\n }\r\n if (callbackContext.authResult.error) {\r\n return new StateValidationResult('', '', false, {});\r\n }\r\n return this.validateState(callbackContext);\r\n }\r\n validateState(callbackContext) {\r\n const toReturn = new StateValidationResult();\r\n const authStateControl = this.storagePersistenceService.read('authStateControl');\r\n if (!this.tokenValidationService.validateStateFromHashCallback(callbackContext.authResult.state, authStateControl)) {\r\n this.loggerService.logWarning('authorizedCallback incorrect state');\r\n toReturn.state = ValidationResult.StatesDoNotMatch;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n const isCurrentFlowImplicitFlowWithAccessToken = this.flowHelper.isCurrentFlowImplicitFlowWithAccessToken();\r\n const isCurrentFlowCodeFlow = this.flowHelper.isCurrentFlowCodeFlow();\r\n if (isCurrentFlowImplicitFlowWithAccessToken || isCurrentFlowCodeFlow) {\r\n toReturn.accessToken = callbackContext.authResult.access_token;\r\n }\r\n if (callbackContext.authResult.id_token) {\r\n const { clientId, issValidationOff, maxIdTokenIatOffsetAllowedInSeconds, disableIatOffsetValidation, ignoreNonceAfterRefresh, } = this.configurationProvider.getOpenIDConfiguration();\r\n toReturn.idToken = callbackContext.authResult.id_token;\r\n toReturn.decodedIdToken = this.tokenHelperService.getPayloadFromToken(toReturn.idToken, false);\r\n if (!this.tokenValidationService.validateSignatureIdToken(toReturn.idToken, callbackContext.jwtKeys)) {\r\n this.loggerService.logDebug('authorizedCallback Signature validation failed id_token');\r\n toReturn.state = ValidationResult.SignatureFailed;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n const authNonce = this.storagePersistenceService.read('authNonce');\r\n if (!this.tokenValidationService.validateIdTokenNonce(toReturn.decodedIdToken, authNonce, ignoreNonceAfterRefresh)) {\r\n this.loggerService.logWarning('authorizedCallback incorrect nonce');\r\n toReturn.state = ValidationResult.IncorrectNonce;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateRequiredIdToken(toReturn.decodedIdToken)) {\r\n this.loggerService.logDebug('authorizedCallback Validation, one of the REQUIRED properties missing from id_token');\r\n toReturn.state = ValidationResult.RequiredPropertyMissing;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenIatMaxOffset(toReturn.decodedIdToken, maxIdTokenIatOffsetAllowedInSeconds, disableIatOffsetValidation)) {\r\n this.loggerService.logWarning('authorizedCallback Validation, iat rejected id_token was issued too far away from the current time');\r\n toReturn.state = ValidationResult.MaxOffsetExpired;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (authWellKnownEndPoints) {\r\n if (issValidationOff) {\r\n this.loggerService.logDebug('iss validation is turned off, this is not recommended!');\r\n }\r\n else if (!issValidationOff &&\r\n !this.tokenValidationService.validateIdTokenIss(toReturn.decodedIdToken, authWellKnownEndPoints.issuer)) {\r\n this.loggerService.logWarning('authorizedCallback incorrect iss does not match authWellKnownEndpoints issuer');\r\n toReturn.state = ValidationResult.IssDoesNotMatchIssuer;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n }\r\n else {\r\n this.loggerService.logWarning('authWellKnownEndpoints is undefined');\r\n toReturn.state = ValidationResult.NoAuthWellKnownEndPoints;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenAud(toReturn.decodedIdToken, clientId)) {\r\n this.loggerService.logWarning('authorizedCallback incorrect aud');\r\n toReturn.state = ValidationResult.IncorrectAud;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenAzpExistsIfMoreThanOneAud(toReturn.decodedIdToken)) {\r\n this.loggerService.logWarning('authorizedCallback missing azp');\r\n toReturn.state = ValidationResult.IncorrectAzp;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenAzpValid(toReturn.decodedIdToken, clientId)) {\r\n this.loggerService.logWarning('authorizedCallback incorrect azp');\r\n toReturn.state = ValidationResult.IncorrectAzp;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n if (!this.isIdTokenAfterRefreshTokenRequestValid(callbackContext, toReturn.decodedIdToken)) {\r\n this.loggerService.logWarning('authorizedCallback pre, post id_token claims do not match in refresh');\r\n toReturn.state = ValidationResult.IncorrectIdTokenClaimsAfterRefresh;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n if (!this.tokenValidationService.validateIdTokenExpNotExpired(toReturn.decodedIdToken)) {\r\n this.loggerService.logWarning('authorizedCallback id token expired');\r\n toReturn.state = ValidationResult.TokenExpired;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n }\r\n else {\r\n this.loggerService.logDebug('No id_token found, skipping id_token validation');\r\n }\r\n // flow id_token\r\n if (!isCurrentFlowImplicitFlowWithAccessToken && !isCurrentFlowCodeFlow) {\r\n toReturn.authResponseIsValid = true;\r\n toReturn.state = ValidationResult.Ok;\r\n this.handleSuccessfulValidation();\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n // only do check if id_token returned, no always the case when using refresh tokens\r\n if (callbackContext.authResult.id_token) {\r\n const idTokenHeader = this.tokenHelperService.getHeaderFromToken(toReturn.idToken, false);\r\n // The at_hash is optional for the code flow\r\n if (isCurrentFlowCodeFlow && !toReturn.decodedIdToken.at_hash) {\r\n this.loggerService.logDebug('Code Flow active, and no at_hash in the id_token, skipping check!');\r\n }\r\n else if (!this.tokenValidationService.validateIdTokenAtHash(toReturn.accessToken, toReturn.decodedIdToken.at_hash, idTokenHeader.alg // 'RSA256'\r\n ) ||\r\n !toReturn.accessToken) {\r\n this.loggerService.logWarning('authorizedCallback incorrect at_hash');\r\n toReturn.state = ValidationResult.IncorrectAtHash;\r\n this.handleUnsuccessfulValidation();\r\n return toReturn;\r\n }\r\n }\r\n toReturn.authResponseIsValid = true;\r\n toReturn.state = ValidationResult.Ok;\r\n this.handleSuccessfulValidation();\r\n return toReturn;\r\n }\r\n isIdTokenAfterRefreshTokenRequestValid(callbackContext, newIdToken) {\r\n const { useRefreshToken, disableRefreshIdTokenAuthTimeValidation } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!useRefreshToken) {\r\n return true;\r\n }\r\n if (!callbackContext.existingIdToken) {\r\n return true;\r\n }\r\n const decodedIdToken = this.tokenHelperService.getPayloadFromToken(callbackContext.existingIdToken, false);\r\n // Upon successful validation of the Refresh Token, the response body is the Token Response of Section 3.1.3.3\r\n // except that it might not contain an id_token.\r\n // If an ID Token is returned as a result of a token refresh request, the following requirements apply:\r\n // its iss Claim Value MUST be the same as in the ID Token issued when the original authentication occurred,\r\n if (decodedIdToken.iss !== newIdToken.iss) {\r\n this.loggerService.logDebug(`iss do not match: ${decodedIdToken.iss} ${newIdToken.iss}`);\r\n return false;\r\n }\r\n // its azp Claim Value MUST be the same as in the ID Token issued when the original authentication occurred;\r\n // if no azp Claim was present in the original ID Token, one MUST NOT be present in the new ID Token, and\r\n // otherwise, the same rules apply as apply when issuing an ID Token at the time of the original authentication.\r\n if (decodedIdToken.azp !== newIdToken.azp) {\r\n this.loggerService.logDebug(`azp do not match: ${decodedIdToken.azp} ${newIdToken.azp}`);\r\n return false;\r\n }\r\n // its sub Claim Value MUST be the same as in the ID Token issued when the original authentication occurred,\r\n if (decodedIdToken.sub !== newIdToken.sub) {\r\n this.loggerService.logDebug(`sub do not match: ${decodedIdToken.sub} ${newIdToken.sub}`);\r\n return false;\r\n }\r\n // its aud Claim Value MUST be the same as in the ID Token issued when the original authentication occurred,\r\n if (!this.equalityService.isStringEqualOrNonOrderedArrayEqual(decodedIdToken === null || decodedIdToken === void 0 ? void 0 : decodedIdToken.aud, newIdToken === null || newIdToken === void 0 ? void 0 : newIdToken.aud)) {\r\n this.loggerService.logDebug(`aud in new id_token is not valid: '${decodedIdToken === null || decodedIdToken === void 0 ? void 0 : decodedIdToken.aud}' '${newIdToken.aud}'`);\r\n return false;\r\n }\r\n if (disableRefreshIdTokenAuthTimeValidation) {\r\n return true;\r\n }\r\n // its iat Claim MUST represent the time that the new ID Token is issued,\r\n // if the ID Token contains an auth_time Claim, its value MUST represent the time of the original authentication\r\n // - not the time that the new ID token is issued,\r\n if (decodedIdToken.auth_time !== newIdToken.auth_time) {\r\n this.loggerService.logDebug(`auth_time do not match: ${decodedIdToken.auth_time} ${newIdToken.auth_time}`);\r\n return false;\r\n }\r\n return true;\r\n }\r\n handleSuccessfulValidation() {\r\n const { autoCleanStateAfterAuthentication } = this.configurationProvider.getOpenIDConfiguration();\r\n this.storagePersistenceService.write('authNonce', '');\r\n if (autoCleanStateAfterAuthentication) {\r\n this.storagePersistenceService.write('authStateControl', '');\r\n }\r\n this.loggerService.logDebug('AuthorizedCallback token(s) validated, continue');\r\n }\r\n handleUnsuccessfulValidation() {\r\n const { autoCleanStateAfterAuthentication } = this.configurationProvider.getOpenIDConfiguration();\r\n this.storagePersistenceService.write('authNonce', '');\r\n if (autoCleanStateAfterAuthentication) {\r\n this.storagePersistenceService.write('authStateControl', '');\r\n }\r\n this.loggerService.logDebug('AuthorizedCallback token(s) invalid');\r\n }\r\n}\nStateValidationService.ɵfac = function StateValidationService_Factory(t) { return new (t || StateValidationService)(ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(TokenValidationService), ɵngcc0.ɵɵinject(TokenHelperService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(EqualityService), ɵngcc0.ɵɵinject(FlowHelper)); };\nStateValidationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: StateValidationService, factory: StateValidationService.ɵfac });\r\nStateValidationService.ctorParameters = () => [\r\n { type: StoragePersistenceService },\r\n { type: TokenValidationService },\r\n { type: TokenHelperService },\r\n { type: LoggerService },\r\n { type: ConfigurationProvider },\r\n { type: EqualityService },\r\n { type: FlowHelper }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StateValidationService, [{\n type: Injectable\n }], function () { return [{ type: StoragePersistenceService }, { type: TokenValidationService }, { type: TokenHelperService }, { type: LoggerService }, { type: ConfigurationProvider }, { type: EqualityService }, { type: FlowHelper }]; }, null); })();\n\nclass StateValidationCallbackHandlerService {\r\n constructor(loggerService, stateValidationService, authStateService, resetAuthDataService, doc) {\r\n this.loggerService = loggerService;\r\n this.stateValidationService = stateValidationService;\r\n this.authStateService = authStateService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.doc = doc;\r\n }\r\n // STEP 4 All flows\r\n callbackStateValidation(callbackContext) {\r\n const validationResult = this.stateValidationService.getValidatedStateResult(callbackContext);\r\n callbackContext.validationResult = validationResult;\r\n if (validationResult.authResponseIsValid) {\r\n this.authStateService.setAuthorizationData(validationResult.accessToken, callbackContext.authResult);\r\n return of(callbackContext);\r\n }\r\n else {\r\n const errorMessage = `authorizedCallback, token(s) validation failed, resetting. Hash: ${this.doc.location.hash}`;\r\n this.loggerService.logWarning(errorMessage);\r\n this.resetAuthDataService.resetAuthorizationData();\r\n this.publishUnauthorizedState(callbackContext.validationResult, callbackContext.isRenewProcess);\r\n return throwError(errorMessage);\r\n }\r\n }\r\n publishUnauthorizedState(stateValidationResult, isRenewProcess) {\r\n this.authStateService.updateAndPublishAuthState({\r\n authorizationState: AuthorizedState.Unauthorized,\r\n validationResult: stateValidationResult.state,\r\n isRenewProcess,\r\n });\r\n }\r\n}\nStateValidationCallbackHandlerService.ɵfac = function StateValidationCallbackHandlerService_Factory(t) { return new (t || StateValidationCallbackHandlerService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(StateValidationService), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(ResetAuthDataService), ɵngcc0.ɵɵinject(DOCUMENT)); };\nStateValidationCallbackHandlerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: StateValidationCallbackHandlerService, factory: StateValidationCallbackHandlerService.ɵfac });\r\nStateValidationCallbackHandlerService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: StateValidationService },\r\n { type: AuthStateService },\r\n { type: ResetAuthDataService },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StateValidationCallbackHandlerService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: StateValidationService }, { type: AuthStateService }, { type: ResetAuthDataService }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\nclass UserCallbackHandlerService {\r\n constructor(loggerService, configurationProvider, authStateService, flowsDataService, userService, resetAuthDataService) {\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n this.userService = userService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n }\r\n // STEP 5 userData\r\n callbackUser(callbackContext) {\r\n const { isRenewProcess, validationResult, authResult, refreshToken } = callbackContext;\r\n const { autoUserinfo, renewUserInfoAfterTokenRenew } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!autoUserinfo) {\r\n if (!isRenewProcess || renewUserInfoAfterTokenRenew) {\r\n // userData is set to the id_token decoded, auto get user data set to false\r\n if (validationResult.decodedIdToken) {\r\n this.userService.setUserDataToStore(validationResult.decodedIdToken);\r\n }\r\n }\r\n if (!isRenewProcess && !refreshToken) {\r\n this.flowsDataService.setSessionState(authResult.session_state);\r\n }\r\n this.publishAuthorizedState(validationResult, isRenewProcess);\r\n return of(callbackContext);\r\n }\r\n return this.userService.getAndPersistUserDataInStore(isRenewProcess, validationResult.idToken, validationResult.decodedIdToken).pipe(switchMap((userData) => {\r\n if (!!userData) {\r\n if (!refreshToken) {\r\n this.flowsDataService.setSessionState(authResult.session_state);\r\n }\r\n this.publishAuthorizedState(validationResult, isRenewProcess);\r\n return of(callbackContext);\r\n }\r\n else {\r\n this.resetAuthDataService.resetAuthorizationData();\r\n this.publishUnauthorizedState(validationResult, isRenewProcess);\r\n const errorMessage = `Called for userData but they were ${userData}`;\r\n this.loggerService.logWarning(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n }), catchError((err) => {\r\n const errorMessage = `Failed to retrieve user info with error: ${err}`;\r\n this.loggerService.logWarning(errorMessage);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n publishAuthorizedState(stateValidationResult, isRenewProcess) {\r\n this.authStateService.updateAndPublishAuthState({\r\n authorizationState: AuthorizedState.Authorized,\r\n validationResult: stateValidationResult.state,\r\n isRenewProcess,\r\n });\r\n }\r\n publishUnauthorizedState(stateValidationResult, isRenewProcess) {\r\n this.authStateService.updateAndPublishAuthState({\r\n authorizationState: AuthorizedState.Unauthorized,\r\n validationResult: stateValidationResult.state,\r\n isRenewProcess,\r\n });\r\n }\r\n}\nUserCallbackHandlerService.ɵfac = function UserCallbackHandlerService_Factory(t) { return new (t || UserCallbackHandlerService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(UserService), ɵngcc0.ɵɵinject(ResetAuthDataService)); };\nUserCallbackHandlerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: UserCallbackHandlerService, factory: UserCallbackHandlerService.ɵfac });\r\nUserCallbackHandlerService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: ConfigurationProvider },\r\n { type: AuthStateService },\r\n { type: FlowsDataService },\r\n { type: UserService },\r\n { type: ResetAuthDataService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UserCallbackHandlerService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: ConfigurationProvider }, { type: AuthStateService }, { type: FlowsDataService }, { type: UserService }, { type: ResetAuthDataService }]; }, null); })();\n\nclass FlowsService {\r\n constructor(codeFlowCallbackHandlerService, implicitFlowCallbackHandlerService, historyJwtKeysCallbackHandlerService, userHandlerService, stateValidationCallbackHandlerService, refreshSessionCallbackHandlerService, refreshTokenCallbackHandlerService) {\r\n this.codeFlowCallbackHandlerService = codeFlowCallbackHandlerService;\r\n this.implicitFlowCallbackHandlerService = implicitFlowCallbackHandlerService;\r\n this.historyJwtKeysCallbackHandlerService = historyJwtKeysCallbackHandlerService;\r\n this.userHandlerService = userHandlerService;\r\n this.stateValidationCallbackHandlerService = stateValidationCallbackHandlerService;\r\n this.refreshSessionCallbackHandlerService = refreshSessionCallbackHandlerService;\r\n this.refreshTokenCallbackHandlerService = refreshTokenCallbackHandlerService;\r\n }\r\n processCodeFlowCallback(urlToCheck) {\r\n return this.codeFlowCallbackHandlerService.codeFlowCallback(urlToCheck).pipe(switchMap((callbackContext) => this.codeFlowCallbackHandlerService.codeFlowCodeRequest(callbackContext)), switchMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext)));\r\n }\r\n processSilentRenewCodeFlowCallback(firstContext) {\r\n return this.codeFlowCallbackHandlerService.codeFlowCodeRequest(firstContext).pipe(switchMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext)));\r\n }\r\n processImplicitFlowCallback(hash) {\r\n return this.implicitFlowCallbackHandlerService.implicitFlowCallback(hash).pipe(switchMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext)));\r\n }\r\n processRefreshToken(customParamsRefresh) {\r\n return this.refreshSessionCallbackHandlerService.refreshSessionWithRefreshTokens().pipe(switchMap((callbackContext) => this.refreshTokenCallbackHandlerService.refreshTokensRequestTokens(callbackContext, customParamsRefresh)), switchMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext)));\r\n }\r\n}\nFlowsService.ɵfac = function FlowsService_Factory(t) { return new (t || FlowsService)(ɵngcc0.ɵɵinject(CodeFlowCallbackHandlerService), ɵngcc0.ɵɵinject(ImplicitFlowCallbackHandlerService), ɵngcc0.ɵɵinject(HistoryJwtKeysCallbackHandlerService), ɵngcc0.ɵɵinject(UserCallbackHandlerService), ɵngcc0.ɵɵinject(StateValidationCallbackHandlerService), ɵngcc0.ɵɵinject(RefreshSessionCallbackHandlerService), ɵngcc0.ɵɵinject(RefreshTokenCallbackHandlerService)); };\nFlowsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FlowsService, factory: FlowsService.ɵfac });\r\nFlowsService.ctorParameters = () => [\r\n { type: CodeFlowCallbackHandlerService },\r\n { type: ImplicitFlowCallbackHandlerService },\r\n { type: HistoryJwtKeysCallbackHandlerService },\r\n { type: UserCallbackHandlerService },\r\n { type: StateValidationCallbackHandlerService },\r\n { type: RefreshSessionCallbackHandlerService },\r\n { type: RefreshTokenCallbackHandlerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlowsService, [{\n type: Injectable\n }], function () { return [{ type: CodeFlowCallbackHandlerService }, { type: ImplicitFlowCallbackHandlerService }, { type: HistoryJwtKeysCallbackHandlerService }, { type: UserCallbackHandlerService }, { type: StateValidationCallbackHandlerService }, { type: RefreshSessionCallbackHandlerService }, { type: RefreshTokenCallbackHandlerService }]; }, null); })();\n\nclass IntervallService {\r\n constructor(zone) {\r\n this.zone = zone;\r\n this.runTokenValidationRunning = null;\r\n }\r\n stopPeriodicallTokenCheck() {\r\n if (this.runTokenValidationRunning) {\r\n this.runTokenValidationRunning.unsubscribe();\r\n this.runTokenValidationRunning = null;\r\n }\r\n }\r\n startPeriodicTokenCheck(repeatAfterSeconds) {\r\n const millisecondsDelayBetweenTokenCheck = repeatAfterSeconds * 1000;\r\n return new Observable((subscriber) => {\r\n let intervalId;\r\n this.zone.runOutsideAngular(() => {\r\n intervalId = setInterval(() => this.zone.run(() => subscriber.next()), millisecondsDelayBetweenTokenCheck);\r\n });\r\n return () => {\r\n clearInterval(intervalId);\r\n };\r\n });\r\n }\r\n}\nIntervallService.ɵfac = function IntervallService_Factory(t) { return new (t || IntervallService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\r\nIntervallService.ɵprov = ɵɵdefineInjectable({ factory: function IntervallService_Factory() { return new IntervallService(ɵɵinject(NgZone)); }, token: IntervallService, providedIn: \"root\" });\r\nIntervallService.ctorParameters = () => [\r\n { type: NgZone }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IntervallService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n\nclass ImplicitFlowCallbackService {\r\n constructor(flowsService, configurationProvider, router, flowsDataService, intervalService) {\r\n this.flowsService = flowsService;\r\n this.configurationProvider = configurationProvider;\r\n this.router = router;\r\n this.flowsDataService = flowsDataService;\r\n this.intervalService = intervalService;\r\n }\r\n authorizedImplicitFlowCallback(hash) {\r\n const isRenewProcess = this.flowsDataService.isSilentRenewRunning();\r\n const { triggerAuthorizationResultEvent, postLoginRoute, unauthorizedRoute } = this.configurationProvider.getOpenIDConfiguration();\r\n return this.flowsService.processImplicitFlowCallback(hash).pipe(tap((callbackContext) => {\r\n if (!triggerAuthorizationResultEvent && !callbackContext.isRenewProcess) {\r\n this.router.navigateByUrl(postLoginRoute);\r\n }\r\n }), catchError((error) => {\r\n this.flowsDataService.resetSilentRenewRunning();\r\n this.intervalService.stopPeriodicallTokenCheck();\r\n if (!triggerAuthorizationResultEvent && !isRenewProcess) {\r\n this.router.navigateByUrl(unauthorizedRoute);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\nImplicitFlowCallbackService.ɵfac = function ImplicitFlowCallbackService_Factory(t) { return new (t || ImplicitFlowCallbackService)(ɵngcc0.ɵɵinject(FlowsService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(ɵngcc2.Router), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(IntervallService)); };\r\nImplicitFlowCallbackService.ɵprov = ɵɵdefineInjectable({ factory: function ImplicitFlowCallbackService_Factory() { return new ImplicitFlowCallbackService(ɵɵinject(FlowsService), ɵɵinject(ConfigurationProvider), ɵɵinject(Router), ɵɵinject(FlowsDataService), ɵɵinject(IntervallService)); }, token: ImplicitFlowCallbackService, providedIn: \"root\" });\r\nImplicitFlowCallbackService.ctorParameters = () => [\r\n { type: FlowsService },\r\n { type: ConfigurationProvider },\r\n { type: Router },\r\n { type: FlowsDataService },\r\n { type: IntervallService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ImplicitFlowCallbackService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: FlowsService }, { type: ConfigurationProvider }, { type: ɵngcc2.Router }, { type: FlowsDataService }, { type: IntervallService }]; }, null); })();\n\nclass CodeFlowCallbackService {\r\n constructor(flowsService, flowsDataService, intervallService, configurationProvider, router) {\r\n this.flowsService = flowsService;\r\n this.flowsDataService = flowsDataService;\r\n this.intervallService = intervallService;\r\n this.configurationProvider = configurationProvider;\r\n this.router = router;\r\n }\r\n authorizedCallbackWithCode(urlToCheck) {\r\n const isRenewProcess = this.flowsDataService.isSilentRenewRunning();\r\n const { triggerAuthorizationResultEvent, postLoginRoute, unauthorizedRoute } = this.configurationProvider.getOpenIDConfiguration();\r\n return this.flowsService.processCodeFlowCallback(urlToCheck).pipe(tap((callbackContext) => {\r\n if (!triggerAuthorizationResultEvent && !callbackContext.isRenewProcess) {\r\n this.router.navigateByUrl(postLoginRoute);\r\n }\r\n }), catchError((error) => {\r\n this.flowsDataService.resetSilentRenewRunning();\r\n this.intervallService.stopPeriodicallTokenCheck();\r\n if (!triggerAuthorizationResultEvent && !isRenewProcess) {\r\n this.router.navigateByUrl(unauthorizedRoute);\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\nCodeFlowCallbackService.ɵfac = function CodeFlowCallbackService_Factory(t) { return new (t || CodeFlowCallbackService)(ɵngcc0.ɵɵinject(FlowsService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(IntervallService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(ɵngcc2.Router)); };\r\nCodeFlowCallbackService.ɵprov = ɵɵdefineInjectable({ factory: function CodeFlowCallbackService_Factory() { return new CodeFlowCallbackService(ɵɵinject(FlowsService), ɵɵinject(FlowsDataService), ɵɵinject(IntervallService), ɵɵinject(ConfigurationProvider), ɵɵinject(Router)); }, token: CodeFlowCallbackService, providedIn: \"root\" });\r\nCodeFlowCallbackService.ctorParameters = () => [\r\n { type: FlowsService },\r\n { type: FlowsDataService },\r\n { type: IntervallService },\r\n { type: ConfigurationProvider },\r\n { type: Router }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CodeFlowCallbackService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: FlowsService }, { type: FlowsDataService }, { type: IntervallService }, { type: ConfigurationProvider }, { type: ɵngcc2.Router }]; }, null); })();\n\nclass CallbackService {\r\n constructor(urlService, flowHelper, implicitFlowCallbackService, codeFlowCallbackService) {\r\n this.urlService = urlService;\r\n this.flowHelper = flowHelper;\r\n this.implicitFlowCallbackService = implicitFlowCallbackService;\r\n this.codeFlowCallbackService = codeFlowCallbackService;\r\n this.stsCallbackInternal$ = new Subject();\r\n }\r\n get stsCallback$() {\r\n return this.stsCallbackInternal$.asObservable();\r\n }\r\n isCallback(currentUrl) {\r\n return this.urlService.isCallbackFromSts(currentUrl);\r\n }\r\n handleCallbackAndFireEvents(currentCallbackUrl) {\r\n let callback$;\r\n if (this.flowHelper.isCurrentFlowCodeFlow()) {\r\n callback$ = this.codeFlowCallbackService.authorizedCallbackWithCode(currentCallbackUrl);\r\n }\r\n else if (this.flowHelper.isCurrentFlowAnyImplicitFlow()) {\r\n callback$ = this.implicitFlowCallbackService.authorizedImplicitFlowCallback();\r\n }\r\n return callback$.pipe(tap(() => this.stsCallbackInternal$.next()));\r\n }\r\n}\nCallbackService.ɵfac = function CallbackService_Factory(t) { return new (t || CallbackService)(ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(FlowHelper), ɵngcc0.ɵɵinject(ImplicitFlowCallbackService), ɵngcc0.ɵɵinject(CodeFlowCallbackService)); };\r\nCallbackService.ɵprov = ɵɵdefineInjectable({ factory: function CallbackService_Factory() { return new CallbackService(ɵɵinject(UrlService), ɵɵinject(FlowHelper), ɵɵinject(ImplicitFlowCallbackService), ɵɵinject(CodeFlowCallbackService)); }, token: CallbackService, providedIn: \"root\" });\r\nCallbackService.ctorParameters = () => [\r\n { type: UrlService },\r\n { type: FlowHelper },\r\n { type: ImplicitFlowCallbackService },\r\n { type: CodeFlowCallbackService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CallbackService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: UrlService }, { type: FlowHelper }, { type: ImplicitFlowCallbackService }, { type: CodeFlowCallbackService }]; }, null); })();\n\nclass IFrameService {\r\n constructor(doc, loggerService) {\r\n this.doc = doc;\r\n this.loggerService = loggerService;\r\n }\r\n getExistingIFrame(identifier) {\r\n const iFrameOnParent = this.getIFrameFromParentWindow(identifier);\r\n if (this.isIFrameElement(iFrameOnParent)) {\r\n return iFrameOnParent;\r\n }\r\n const iFrameOnSelf = this.getIFrameFromWindow(identifier);\r\n if (this.isIFrameElement(iFrameOnSelf)) {\r\n return iFrameOnSelf;\r\n }\r\n return null;\r\n }\r\n addIFrameToWindowBody(identifier) {\r\n const sessionIframe = this.doc.createElement('iframe');\r\n sessionIframe.id = identifier;\r\n sessionIframe.title = identifier;\r\n this.loggerService.logDebug(sessionIframe);\r\n sessionIframe.style.display = 'none';\r\n this.doc.body.appendChild(sessionIframe);\r\n return sessionIframe;\r\n }\r\n getIFrameFromParentWindow(identifier) {\r\n try {\r\n const iFrameElement = this.doc.defaultView.parent.document.getElementById(identifier);\r\n if (this.isIFrameElement(iFrameElement)) {\r\n return iFrameElement;\r\n }\r\n return null;\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n getIFrameFromWindow(identifier) {\r\n const iFrameElement = this.doc.getElementById(identifier);\r\n if (this.isIFrameElement(iFrameElement)) {\r\n return iFrameElement;\r\n }\r\n return null;\r\n }\r\n isIFrameElement(element) {\r\n return !!element && element instanceof HTMLIFrameElement;\r\n }\r\n}\nIFrameService.ɵfac = function IFrameService_Factory(t) { return new (t || IFrameService)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(LoggerService)); };\nIFrameService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: IFrameService, factory: IFrameService.ɵfac });\r\nIFrameService.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: LoggerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(IFrameService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: LoggerService }]; }, null); })();\n\nconst IFRAME_FOR_SILENT_RENEW_IDENTIFIER = 'myiFrameForSilentRenew';\r\nclass SilentRenewService {\r\n constructor(configurationProvider, iFrameService, flowsService, resetAuthDataService, flowsDataService, authStateService, loggerService, flowHelper, implicitFlowCallbackService, intervalService) {\r\n this.configurationProvider = configurationProvider;\r\n this.iFrameService = iFrameService;\r\n this.flowsService = flowsService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.flowsDataService = flowsDataService;\r\n this.authStateService = authStateService;\r\n this.loggerService = loggerService;\r\n this.flowHelper = flowHelper;\r\n this.implicitFlowCallbackService = implicitFlowCallbackService;\r\n this.intervalService = intervalService;\r\n this.refreshSessionWithIFrameCompletedInternal$ = new Subject();\r\n }\r\n get refreshSessionWithIFrameCompleted$() {\r\n return this.refreshSessionWithIFrameCompletedInternal$.asObservable();\r\n }\r\n getOrCreateIframe() {\r\n const existingIframe = this.getExistingIframe();\r\n if (!existingIframe) {\r\n return this.iFrameService.addIFrameToWindowBody(IFRAME_FOR_SILENT_RENEW_IDENTIFIER);\r\n }\r\n return existingIframe;\r\n }\r\n isSilentRenewConfigured() {\r\n const { useRefreshToken, silentRenew } = this.configurationProvider.getOpenIDConfiguration();\r\n return !useRefreshToken && silentRenew;\r\n }\r\n codeFlowCallbackSilentRenewIframe(urlParts) {\r\n const params = new HttpParams({\r\n fromString: urlParts[1],\r\n });\r\n const error = params.get('error');\r\n if (error) {\r\n this.authStateService.updateAndPublishAuthState({\r\n authorizationState: AuthorizedState.Unauthorized,\r\n validationResult: ValidationResult.LoginRequired,\r\n isRenewProcess: true,\r\n });\r\n this.resetAuthDataService.resetAuthorizationData();\r\n this.flowsDataService.setNonce('');\r\n this.intervalService.stopPeriodicallTokenCheck();\r\n return throwError(error);\r\n }\r\n const code = params.get('code');\r\n const state = params.get('state');\r\n const sessionState = params.get('session_state');\r\n const callbackContext = {\r\n code,\r\n refreshToken: null,\r\n state,\r\n sessionState,\r\n authResult: null,\r\n isRenewProcess: true,\r\n jwtKeys: null,\r\n validationResult: null,\r\n existingIdToken: null,\r\n };\r\n return this.flowsService.processSilentRenewCodeFlowCallback(callbackContext).pipe(catchError((errorFromFlow) => {\r\n this.intervalService.stopPeriodicallTokenCheck();\r\n this.resetAuthDataService.resetAuthorizationData();\r\n return throwError(errorFromFlow);\r\n }));\r\n }\r\n silentRenewEventHandler(e) {\r\n this.loggerService.logDebug('silentRenewEventHandler');\r\n if (!e.detail) {\r\n return;\r\n }\r\n let callback$ = of(null);\r\n const isCodeFlow = this.flowHelper.isCurrentFlowCodeFlow();\r\n if (isCodeFlow) {\r\n const urlParts = e.detail.toString().split('?');\r\n callback$ = this.codeFlowCallbackSilentRenewIframe(urlParts);\r\n }\r\n else {\r\n callback$ = this.implicitFlowCallbackService.authorizedImplicitFlowCallback(e.detail);\r\n }\r\n callback$.subscribe((callbackContext) => {\r\n this.refreshSessionWithIFrameCompletedInternal$.next(callbackContext);\r\n this.flowsDataService.resetSilentRenewRunning();\r\n }, (err) => {\r\n this.loggerService.logError('Error: ' + err);\r\n this.refreshSessionWithIFrameCompletedInternal$.next(null);\r\n this.flowsDataService.resetSilentRenewRunning();\r\n });\r\n }\r\n getExistingIframe() {\r\n return this.iFrameService.getExistingIFrame(IFRAME_FOR_SILENT_RENEW_IDENTIFIER);\r\n }\r\n}\nSilentRenewService.ɵfac = function SilentRenewService_Factory(t) { return new (t || SilentRenewService)(ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(IFrameService), ɵngcc0.ɵɵinject(FlowsService), ɵngcc0.ɵɵinject(ResetAuthDataService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(FlowHelper), ɵngcc0.ɵɵinject(ImplicitFlowCallbackService), ɵngcc0.ɵɵinject(IntervallService)); };\nSilentRenewService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SilentRenewService, factory: SilentRenewService.ɵfac });\r\nSilentRenewService.ctorParameters = () => [\r\n { type: ConfigurationProvider },\r\n { type: IFrameService },\r\n { type: FlowsService },\r\n { type: ResetAuthDataService },\r\n { type: FlowsDataService },\r\n { type: AuthStateService },\r\n { type: LoggerService },\r\n { type: FlowHelper },\r\n { type: ImplicitFlowCallbackService },\r\n { type: IntervallService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SilentRenewService, [{\n type: Injectable\n }], function () { return [{ type: ConfigurationProvider }, { type: IFrameService }, { type: FlowsService }, { type: ResetAuthDataService }, { type: FlowsDataService }, { type: AuthStateService }, { type: LoggerService }, { type: FlowHelper }, { type: ImplicitFlowCallbackService }, { type: IntervallService }]; }, null); })();\n\nclass RefreshSessionIframeService {\r\n constructor(doc, loggerService, urlService, silentRenewService, rendererFactory) {\r\n this.doc = doc;\r\n this.loggerService = loggerService;\r\n this.urlService = urlService;\r\n this.silentRenewService = silentRenewService;\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n refreshSessionWithIframe(customParams) {\r\n this.loggerService.logDebug('BEGIN refresh session Authorize Iframe renew');\r\n const url = this.urlService.getRefreshSessionSilentRenewUrl(customParams);\r\n return this.sendAuthorizeRequestUsingSilentRenew(url);\r\n }\r\n sendAuthorizeRequestUsingSilentRenew(url) {\r\n const sessionIframe = this.silentRenewService.getOrCreateIframe();\r\n this.initSilentRenewRequest();\r\n this.loggerService.logDebug('sendAuthorizeRequestUsingSilentRenew for URL:' + url);\r\n return new Observable((observer) => {\r\n const onLoadHandler = () => {\r\n sessionIframe.removeEventListener('load', onLoadHandler);\r\n this.loggerService.logDebug('removed event listener from IFrame');\r\n observer.next(true);\r\n observer.complete();\r\n };\r\n sessionIframe.addEventListener('load', onLoadHandler);\r\n sessionIframe.contentWindow.location.replace(url);\r\n });\r\n }\r\n initSilentRenewRequest() {\r\n const instanceId = Math.random();\r\n const initDestroyHandler = this.renderer.listen('window', 'oidc-silent-renew-init', (e) => {\r\n if (e.detail !== instanceId) {\r\n initDestroyHandler();\r\n renewDestroyHandler();\r\n }\r\n });\r\n const renewDestroyHandler = this.renderer.listen('window', 'oidc-silent-renew-message', (e) => this.silentRenewService.silentRenewEventHandler(e));\r\n this.doc.defaultView.dispatchEvent(new CustomEvent('oidc-silent-renew-init', {\r\n detail: instanceId,\r\n }));\r\n }\r\n}\nRefreshSessionIframeService.ɵfac = function RefreshSessionIframeService_Factory(t) { return new (t || RefreshSessionIframeService)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(SilentRenewService), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2)); };\r\nRefreshSessionIframeService.ɵprov = ɵɵdefineInjectable({ factory: function RefreshSessionIframeService_Factory() { return new RefreshSessionIframeService(ɵɵinject(DOCUMENT), ɵɵinject(LoggerService), ɵɵinject(UrlService), ɵɵinject(SilentRenewService), ɵɵinject(RendererFactory2)); }, token: RefreshSessionIframeService, providedIn: \"root\" });\r\nRefreshSessionIframeService.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: LoggerService },\r\n { type: UrlService },\r\n { type: SilentRenewService },\r\n { type: RendererFactory2 }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RefreshSessionIframeService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: LoggerService }, { type: UrlService }, { type: SilentRenewService }, { type: ɵngcc0.RendererFactory2 }]; }, null); })();\n\nclass RefreshSessionRefreshTokenService {\r\n constructor(loggerService, resetAuthDataService, flowsService, intervalService) {\r\n this.loggerService = loggerService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.flowsService = flowsService;\r\n this.intervalService = intervalService;\r\n }\r\n refreshSessionWithRefreshTokens(customParamsRefresh) {\r\n this.loggerService.logDebug('BEGIN refresh session Authorize');\r\n return this.flowsService.processRefreshToken(customParamsRefresh).pipe(catchError((error) => {\r\n this.intervalService.stopPeriodicallTokenCheck();\r\n this.resetAuthDataService.resetAuthorizationData();\r\n return throwError(error);\r\n }));\r\n }\r\n}\nRefreshSessionRefreshTokenService.ɵfac = function RefreshSessionRefreshTokenService_Factory(t) { return new (t || RefreshSessionRefreshTokenService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ResetAuthDataService), ɵngcc0.ɵɵinject(FlowsService), ɵngcc0.ɵɵinject(IntervallService)); };\r\nRefreshSessionRefreshTokenService.ɵprov = ɵɵdefineInjectable({ factory: function RefreshSessionRefreshTokenService_Factory() { return new RefreshSessionRefreshTokenService(ɵɵinject(LoggerService), ɵɵinject(ResetAuthDataService), ɵɵinject(FlowsService), ɵɵinject(IntervallService)); }, token: RefreshSessionRefreshTokenService, providedIn: \"root\" });\r\nRefreshSessionRefreshTokenService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: ResetAuthDataService },\r\n { type: FlowsService },\r\n { type: IntervallService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RefreshSessionRefreshTokenService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: LoggerService }, { type: ResetAuthDataService }, { type: FlowsService }, { type: IntervallService }]; }, null); })();\n\nclass PeriodicallyTokenCheckService {\r\n constructor(resetAuthDataService, flowHelper, configurationProvider, flowsDataService, loggerService, userService, authStateService, refreshSessionIframeService, refreshSessionRefreshTokenService, intervalService, storagePersistenceService) {\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.flowHelper = flowHelper;\r\n this.configurationProvider = configurationProvider;\r\n this.flowsDataService = flowsDataService;\r\n this.loggerService = loggerService;\r\n this.userService = userService;\r\n this.authStateService = authStateService;\r\n this.refreshSessionIframeService = refreshSessionIframeService;\r\n this.refreshSessionRefreshTokenService = refreshSessionRefreshTokenService;\r\n this.intervalService = intervalService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n startTokenValidationPeriodically(repeatAfterSeconds) {\r\n const { silentRenew } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!!this.intervalService.runTokenValidationRunning || !silentRenew) {\r\n return;\r\n }\r\n this.loggerService.logDebug(`starting token validation check every ${repeatAfterSeconds}s`);\r\n const periodicallyCheck$ = this.intervalService.startPeriodicTokenCheck(repeatAfterSeconds).pipe(switchMap(() => {\r\n const idToken = this.authStateService.getIdToken();\r\n const isSilentRenewRunning = this.flowsDataService.isSilentRenewRunning();\r\n const userDataFromStore = this.userService.getUserDataFromStore();\r\n this.loggerService.logDebug(`Checking: silentRenewRunning: ${isSilentRenewRunning} id_token: ${!!idToken} userData: ${!!userDataFromStore}`);\r\n const shouldBeExecuted = userDataFromStore && !isSilentRenewRunning && idToken;\r\n if (!shouldBeExecuted) {\r\n return of(null);\r\n }\r\n const idTokenHasExpired = this.authStateService.hasIdTokenExpired();\r\n const accessTokenHasExpired = this.authStateService.hasAccessTokenExpiredIfExpiryExists();\r\n if (!idTokenHasExpired && !accessTokenHasExpired) {\r\n return of(null);\r\n }\r\n const config = this.configurationProvider.getOpenIDConfiguration();\r\n if (!(config === null || config === void 0 ? void 0 : config.silentRenew)) {\r\n this.resetAuthDataService.resetAuthorizationData();\r\n return of(null);\r\n }\r\n this.loggerService.logDebug('starting silent renew...');\r\n this.flowsDataService.setSilentRenewRunning();\r\n if (this.flowHelper.isCurrentFlowCodeFlowWithRefreshTokens()) {\r\n // Retrieve Dynamically Set Custom Params for refresh body\r\n const customParamsRefresh = this.storagePersistenceService.read('storageCustomParamsRefresh') || {};\r\n const { customParamsRefreshToken } = this.configurationProvider.getOpenIDConfiguration();\r\n const mergedParams = Object.assign(Object.assign({}, customParamsRefresh), customParamsRefreshToken);\r\n // Refresh Session using Refresh tokens\r\n return this.refreshSessionRefreshTokenService.refreshSessionWithRefreshTokens(mergedParams);\r\n }\r\n // Retrieve Dynamically Set Custom Params\r\n const customParams = this.storagePersistenceService.read('storageCustomRequestParams');\r\n return this.refreshSessionIframeService.refreshSessionWithIframe(customParams);\r\n }));\r\n this.intervalService.runTokenValidationRunning = periodicallyCheck$\r\n .pipe(catchError(() => {\r\n this.flowsDataService.resetSilentRenewRunning();\r\n return throwError('periodically check failed');\r\n }))\r\n .subscribe(() => {\r\n this.loggerService.logDebug('silent renew, periodic check finished!');\r\n if (this.flowHelper.isCurrentFlowCodeFlowWithRefreshTokens()) {\r\n this.flowsDataService.resetSilentRenewRunning();\r\n }\r\n }, (err) => {\r\n this.loggerService.logError('silent renew failed!', err);\r\n });\r\n }\r\n}\nPeriodicallyTokenCheckService.ɵfac = function PeriodicallyTokenCheckService_Factory(t) { return new (t || PeriodicallyTokenCheckService)(ɵngcc0.ɵɵinject(ResetAuthDataService), ɵngcc0.ɵɵinject(FlowHelper), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(UserService), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(RefreshSessionIframeService), ɵngcc0.ɵɵinject(RefreshSessionRefreshTokenService), ɵngcc0.ɵɵinject(IntervallService), ɵngcc0.ɵɵinject(StoragePersistenceService)); };\r\nPeriodicallyTokenCheckService.ɵprov = ɵɵdefineInjectable({ factory: function PeriodicallyTokenCheckService_Factory() { return new PeriodicallyTokenCheckService(ɵɵinject(ResetAuthDataService), ɵɵinject(FlowHelper), ɵɵinject(ConfigurationProvider), ɵɵinject(FlowsDataService), ɵɵinject(LoggerService), ɵɵinject(UserService), ɵɵinject(AuthStateService), ɵɵinject(RefreshSessionIframeService), ɵɵinject(RefreshSessionRefreshTokenService), ɵɵinject(IntervallService), ɵɵinject(StoragePersistenceService)); }, token: PeriodicallyTokenCheckService, providedIn: \"root\" });\r\nPeriodicallyTokenCheckService.ctorParameters = () => [\r\n { type: ResetAuthDataService },\r\n { type: FlowHelper },\r\n { type: ConfigurationProvider },\r\n { type: FlowsDataService },\r\n { type: LoggerService },\r\n { type: UserService },\r\n { type: AuthStateService },\r\n { type: RefreshSessionIframeService },\r\n { type: RefreshSessionRefreshTokenService },\r\n { type: IntervallService },\r\n { type: StoragePersistenceService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PeriodicallyTokenCheckService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ResetAuthDataService }, { type: FlowHelper }, { type: ConfigurationProvider }, { type: FlowsDataService }, { type: LoggerService }, { type: UserService }, { type: AuthStateService }, { type: RefreshSessionIframeService }, { type: RefreshSessionRefreshTokenService }, { type: IntervallService }, { type: StoragePersistenceService }]; }, null); })();\n\nconst WELL_KNOWN_SUFFIX = `/.well-known/openid-configuration`;\r\nclass AuthWellKnownDataService {\r\n constructor(http) {\r\n this.http = http;\r\n }\r\n getWellKnownEndPointsFromUrl(authWellknownEndpoint) {\r\n return this.getWellKnownDocument(authWellknownEndpoint).pipe(map((wellKnownEndpoints) => ({\r\n issuer: wellKnownEndpoints.issuer,\r\n jwksUri: wellKnownEndpoints.jwks_uri,\r\n authorizationEndpoint: wellKnownEndpoints.authorization_endpoint,\r\n tokenEndpoint: wellKnownEndpoints.token_endpoint,\r\n userinfoEndpoint: wellKnownEndpoints.userinfo_endpoint,\r\n endSessionEndpoint: wellKnownEndpoints.end_session_endpoint,\r\n checkSessionIframe: wellKnownEndpoints.check_session_iframe,\r\n revocationEndpoint: wellKnownEndpoints.revocation_endpoint,\r\n introspectionEndpoint: wellKnownEndpoints.introspection_endpoint,\r\n parEndpoint: wellKnownEndpoints.pushed_authorization_request_endpoint,\r\n })));\r\n }\r\n getWellKnownDocument(wellKnownEndpoint) {\r\n let url = wellKnownEndpoint;\r\n if (!wellKnownEndpoint.includes(WELL_KNOWN_SUFFIX)) {\r\n url = `${wellKnownEndpoint}${WELL_KNOWN_SUFFIX}`;\r\n }\r\n return this.http.get(url).pipe(retry(2));\r\n }\r\n}\nAuthWellKnownDataService.ɵfac = function AuthWellKnownDataService_Factory(t) { return new (t || AuthWellKnownDataService)(ɵngcc0.ɵɵinject(DataService)); };\nAuthWellKnownDataService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AuthWellKnownDataService, factory: AuthWellKnownDataService.ɵfac });\r\nAuthWellKnownDataService.ctorParameters = () => [\r\n { type: DataService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AuthWellKnownDataService, [{\n type: Injectable\n }], function () { return [{ type: DataService }]; }, null); })();\n\nclass AuthWellKnownService {\r\n constructor(publicEventsService, dataService, storagePersistenceService) {\r\n this.publicEventsService = publicEventsService;\r\n this.dataService = dataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n getAuthWellKnownEndPoints(authWellknownEndpointUrl) {\r\n const alreadySavedWellKnownEndpoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (!!alreadySavedWellKnownEndpoints) {\r\n return of(alreadySavedWellKnownEndpoints);\r\n }\r\n return this.getWellKnownEndPointsFromUrl(authWellknownEndpointUrl).pipe(tap((mappedWellKnownEndpoints) => this.storeWellKnownEndpoints(mappedWellKnownEndpoints)), catchError((error) => {\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoadingFailed, null);\r\n return throwError(error);\r\n }));\r\n }\r\n storeWellKnownEndpoints(mappedWellKnownEndpoints) {\r\n this.storagePersistenceService.write('authWellKnownEndPoints', mappedWellKnownEndpoints);\r\n }\r\n getWellKnownEndPointsFromUrl(authWellknownEndpoint) {\r\n return this.dataService.getWellKnownEndPointsFromUrl(authWellknownEndpoint);\r\n }\r\n}\nAuthWellKnownService.ɵfac = function AuthWellKnownService_Factory(t) { return new (t || AuthWellKnownService)(ɵngcc0.ɵɵinject(PublicEventsService), ɵngcc0.ɵɵinject(AuthWellKnownDataService), ɵngcc0.ɵɵinject(StoragePersistenceService)); };\nAuthWellKnownService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AuthWellKnownService, factory: AuthWellKnownService.ɵfac });\r\nAuthWellKnownService.ctorParameters = () => [\r\n { type: PublicEventsService },\r\n { type: AuthWellKnownDataService },\r\n { type: StoragePersistenceService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AuthWellKnownService, [{\n type: Injectable\n }], function () { return [{ type: PublicEventsService }, { type: AuthWellKnownDataService }, { type: StoragePersistenceService }]; }, null); })();\n\nconst MAX_RETRY_ATTEMPTS = 3;\r\nclass RefreshSessionService {\r\n constructor(flowHelper, configurationProvider, flowsDataService, loggerService, silentRenewService, authStateService, authWellKnownService, refreshSessionIframeService, refreshSessionRefreshTokenService) {\r\n this.flowHelper = flowHelper;\r\n this.configurationProvider = configurationProvider;\r\n this.flowsDataService = flowsDataService;\r\n this.loggerService = loggerService;\r\n this.silentRenewService = silentRenewService;\r\n this.authStateService = authStateService;\r\n this.authWellKnownService = authWellKnownService;\r\n this.refreshSessionIframeService = refreshSessionIframeService;\r\n this.refreshSessionRefreshTokenService = refreshSessionRefreshTokenService;\r\n }\r\n forceRefreshSession(extraCustomParams) {\r\n if (this.flowHelper.isCurrentFlowCodeFlowWithRefreshTokens()) {\r\n const { customParamsRefreshToken } = this.configurationProvider.getOpenIDConfiguration();\r\n const mergedParams = Object.assign(Object.assign({}, extraCustomParams), customParamsRefreshToken);\r\n return this.startRefreshSession(mergedParams).pipe(map(() => {\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid();\r\n if (isAuthenticated) {\r\n return {\r\n idToken: this.authStateService.getIdToken(),\r\n accessToken: this.authStateService.getAccessToken(),\r\n };\r\n }\r\n return null;\r\n }));\r\n }\r\n const { silentRenewTimeoutInSeconds } = this.configurationProvider.getOpenIDConfiguration();\r\n const timeOutTime = silentRenewTimeoutInSeconds * 1000;\r\n return forkJoin([\r\n this.startRefreshSession(extraCustomParams),\r\n this.silentRenewService.refreshSessionWithIFrameCompleted$.pipe(take(1)),\r\n ]).pipe(timeout(timeOutTime), retryWhen(this.timeoutRetryStrategy.bind(this)), map(([_, callbackContext]) => {\r\n var _a, _b;\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid();\r\n if (isAuthenticated) {\r\n return {\r\n idToken: (_a = callbackContext === null || callbackContext === void 0 ? void 0 : callbackContext.authResult) === null || _a === void 0 ? void 0 : _a.id_token,\r\n accessToken: (_b = callbackContext === null || callbackContext === void 0 ? void 0 : callbackContext.authResult) === null || _b === void 0 ? void 0 : _b.access_token,\r\n };\r\n }\r\n return null;\r\n }));\r\n }\r\n startRefreshSession(extraCustomParams) {\r\n const isSilentRenewRunning = this.flowsDataService.isSilentRenewRunning();\r\n this.loggerService.logDebug(`Checking: silentRenewRunning: ${isSilentRenewRunning}`);\r\n const shouldBeExecuted = !isSilentRenewRunning;\r\n if (!shouldBeExecuted) {\r\n return of(null);\r\n }\r\n const { authWellknownEndpoint } = this.configurationProvider.getOpenIDConfiguration() || {};\r\n if (!authWellknownEndpoint) {\r\n this.loggerService.logError('no authwellknownendpoint given!');\r\n return of(null);\r\n }\r\n return this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpoint).pipe(switchMap(() => {\r\n this.flowsDataService.setSilentRenewRunning();\r\n if (this.flowHelper.isCurrentFlowCodeFlowWithRefreshTokens()) {\r\n // Refresh Session using Refresh tokens\r\n return this.refreshSessionRefreshTokenService.refreshSessionWithRefreshTokens(extraCustomParams);\r\n }\r\n return this.refreshSessionIframeService.refreshSessionWithIframe(extraCustomParams);\r\n }));\r\n }\r\n timeoutRetryStrategy(errorAttempts) {\r\n return errorAttempts.pipe(mergeMap((error, index) => {\r\n const scalingDuration = 1000;\r\n const currentAttempt = index + 1;\r\n if (!(error instanceof TimeoutError) || currentAttempt > MAX_RETRY_ATTEMPTS) {\r\n return throwError(error);\r\n }\r\n this.loggerService.logDebug(`forceRefreshSession timeout. Attempt #${currentAttempt}`);\r\n this.flowsDataService.resetSilentRenewRunning();\r\n return timer(currentAttempt * scalingDuration);\r\n }));\r\n }\r\n}\nRefreshSessionService.ɵfac = function RefreshSessionService_Factory(t) { return new (t || RefreshSessionService)(ɵngcc0.ɵɵinject(FlowHelper), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(SilentRenewService), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(AuthWellKnownService), ɵngcc0.ɵɵinject(RefreshSessionIframeService), ɵngcc0.ɵɵinject(RefreshSessionRefreshTokenService)); };\r\nRefreshSessionService.ɵprov = ɵɵdefineInjectable({ factory: function RefreshSessionService_Factory() { return new RefreshSessionService(ɵɵinject(FlowHelper), ɵɵinject(ConfigurationProvider), ɵɵinject(FlowsDataService), ɵɵinject(LoggerService), ɵɵinject(SilentRenewService), ɵɵinject(AuthStateService), ɵɵinject(AuthWellKnownService), ɵɵinject(RefreshSessionIframeService), ɵɵinject(RefreshSessionRefreshTokenService)); }, token: RefreshSessionService, providedIn: \"root\" });\r\nRefreshSessionService.ctorParameters = () => [\r\n { type: FlowHelper },\r\n { type: ConfigurationProvider },\r\n { type: FlowsDataService },\r\n { type: LoggerService },\r\n { type: SilentRenewService },\r\n { type: AuthStateService },\r\n { type: AuthWellKnownService },\r\n { type: RefreshSessionIframeService },\r\n { type: RefreshSessionRefreshTokenService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RefreshSessionService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: FlowHelper }, { type: ConfigurationProvider }, { type: FlowsDataService }, { type: LoggerService }, { type: SilentRenewService }, { type: AuthStateService }, { type: AuthWellKnownService }, { type: RefreshSessionIframeService }, { type: RefreshSessionRefreshTokenService }]; }, null); })();\n\nconst IFRAME_FOR_CHECK_SESSION_IDENTIFIER = 'myiFrameForCheckSession';\r\n// http://openid.net/specs/openid-connect-session-1_0-ID4.html\r\nclass CheckSessionService {\r\n constructor(storagePersistenceService, loggerService, iFrameService, eventService, configurationProvider, zone) {\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.loggerService = loggerService;\r\n this.iFrameService = iFrameService;\r\n this.eventService = eventService;\r\n this.configurationProvider = configurationProvider;\r\n this.zone = zone;\r\n this.checkSessionReceived = false;\r\n this.lastIFrameRefresh = 0;\r\n this.outstandingMessages = 0;\r\n this.heartBeatInterval = 3000;\r\n this.iframeRefreshInterval = 60000;\r\n this.checkSessionChangedInternal$ = new BehaviorSubject(false);\r\n }\r\n get checkSessionChanged$() {\r\n return this.checkSessionChangedInternal$.asObservable();\r\n }\r\n isCheckSessionConfigured() {\r\n const { startCheckSession } = this.configurationProvider.getOpenIDConfiguration();\r\n return startCheckSession;\r\n }\r\n start() {\r\n if (!!this.scheduledHeartBeatRunning) {\r\n return;\r\n }\r\n const { clientId } = this.configurationProvider.getOpenIDConfiguration();\r\n this.pollServerSession(clientId);\r\n }\r\n stop() {\r\n if (!this.scheduledHeartBeatRunning) {\r\n return;\r\n }\r\n this.clearScheduledHeartBeat();\r\n this.checkSessionReceived = false;\r\n }\r\n serverStateChanged() {\r\n const { startCheckSession } = this.configurationProvider.getOpenIDConfiguration();\r\n return startCheckSession && this.checkSessionReceived;\r\n }\r\n getExistingIframe() {\r\n return this.iFrameService.getExistingIFrame(IFRAME_FOR_CHECK_SESSION_IDENTIFIER);\r\n }\r\n init() {\r\n if (this.lastIFrameRefresh + this.iframeRefreshInterval > Date.now()) {\r\n return of(undefined);\r\n }\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (!authWellKnownEndPoints) {\r\n this.loggerService.logWarning('init check session: authWellKnownEndpoints is undefined. Returning.');\r\n return of();\r\n }\r\n const existingIframe = this.getOrCreateIframe();\r\n const checkSessionIframe = authWellKnownEndPoints.checkSessionIframe;\r\n if (checkSessionIframe) {\r\n existingIframe.contentWindow.location.replace(checkSessionIframe);\r\n }\r\n else {\r\n this.loggerService.logWarning('init check session: checkSessionIframe is not configured to run');\r\n }\r\n return new Observable((observer) => {\r\n existingIframe.onload = () => {\r\n this.lastIFrameRefresh = Date.now();\r\n observer.next();\r\n observer.complete();\r\n };\r\n });\r\n }\r\n pollServerSession(clientId) {\r\n this.outstandingMessages = 0;\r\n const pollServerSessionRecur = () => {\r\n this.init()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n var _a;\r\n const existingIframe = this.getExistingIframe();\r\n if (existingIframe && clientId) {\r\n this.loggerService.logDebug(existingIframe);\r\n const sessionState = this.storagePersistenceService.read('session_state');\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (sessionState && (authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.checkSessionIframe)) {\r\n const iframeOrigin = (_a = new URL(authWellKnownEndPoints.checkSessionIframe)) === null || _a === void 0 ? void 0 : _a.origin;\r\n this.outstandingMessages++;\r\n existingIframe.contentWindow.postMessage(clientId + ' ' + sessionState, iframeOrigin);\r\n }\r\n else {\r\n this.loggerService.logDebug(`OidcSecurityCheckSession pollServerSession session_state is '${sessionState}'`);\r\n this.loggerService.logDebug(`AuthWellKnownEndPoints is '${JSON.stringify(authWellKnownEndPoints)}'`);\r\n this.checkSessionChangedInternal$.next(true);\r\n }\r\n }\r\n else {\r\n this.loggerService.logWarning('OidcSecurityCheckSession pollServerSession checkSession IFrame does not exist');\r\n this.loggerService.logDebug(clientId);\r\n this.loggerService.logDebug(existingIframe);\r\n }\r\n // after sending three messages with no response, fail.\r\n if (this.outstandingMessages > 3) {\r\n this.loggerService.logError(`OidcSecurityCheckSession not receiving check session response messages.\n Outstanding messages: ${this.outstandingMessages}. Server unreachable?`);\r\n }\r\n this.zone.runOutsideAngular(() => {\r\n this.scheduledHeartBeatRunning = setTimeout(() => this.zone.run(pollServerSessionRecur), this.heartBeatInterval);\r\n });\r\n });\r\n };\r\n pollServerSessionRecur();\r\n }\r\n clearScheduledHeartBeat() {\r\n clearTimeout(this.scheduledHeartBeatRunning);\r\n this.scheduledHeartBeatRunning = null;\r\n }\r\n messageHandler(e) {\r\n var _a;\r\n const existingIFrame = this.getExistingIframe();\r\n const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n const startsWith = !!((_a = authWellKnownEndPoints === null || authWellKnownEndPoints === void 0 ? void 0 : authWellKnownEndPoints.checkSessionIframe) === null || _a === void 0 ? void 0 : _a.startsWith(e.origin));\r\n this.outstandingMessages = 0;\r\n if (existingIFrame && startsWith && e.source === existingIFrame.contentWindow) {\r\n if (e.data === 'error') {\r\n this.loggerService.logWarning('error from checksession messageHandler');\r\n }\r\n else if (e.data === 'changed') {\r\n this.loggerService.logDebug(e);\r\n this.checkSessionReceived = true;\r\n this.eventService.fireEvent(EventTypes.CheckSessionReceived, e.data);\r\n this.checkSessionChangedInternal$.next(true);\r\n }\r\n else {\r\n this.eventService.fireEvent(EventTypes.CheckSessionReceived, e.data);\r\n this.loggerService.logDebug(e.data + ' from checksession messageHandler');\r\n }\r\n }\r\n }\r\n bindMessageEventToIframe() {\r\n const iframeMessageEvent = this.messageHandler.bind(this);\r\n window.addEventListener('message', iframeMessageEvent, false);\r\n }\r\n getOrCreateIframe() {\r\n const existingIframe = this.getExistingIframe();\r\n if (!existingIframe) {\r\n const frame = this.iFrameService.addIFrameToWindowBody(IFRAME_FOR_CHECK_SESSION_IDENTIFIER);\r\n this.bindMessageEventToIframe();\r\n return frame;\r\n }\r\n return existingIframe;\r\n }\r\n}\nCheckSessionService.ɵfac = function CheckSessionService_Factory(t) { return new (t || CheckSessionService)(ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(IFrameService), ɵngcc0.ɵɵinject(PublicEventsService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nCheckSessionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CheckSessionService, factory: CheckSessionService.ɵfac });\r\nCheckSessionService.ctorParameters = () => [\r\n { type: StoragePersistenceService },\r\n { type: LoggerService },\r\n { type: IFrameService },\r\n { type: PublicEventsService },\r\n { type: ConfigurationProvider },\r\n { type: NgZone }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckSessionService, [{\n type: Injectable\n }], function () { return [{ type: StoragePersistenceService }, { type: LoggerService }, { type: IFrameService }, { type: PublicEventsService }, { type: ConfigurationProvider }, { type: ɵngcc0.NgZone }]; }, null); })();\n\nclass PopUpService {\r\n constructor() {\r\n this.STORAGE_IDENTIFIER = 'popupauth';\r\n this.resultInternal$ = new Subject();\r\n }\r\n get result$() {\r\n return this.resultInternal$.asObservable();\r\n }\r\n isCurrentlyInPopup() {\r\n const popup = sessionStorage.getItem(this.STORAGE_IDENTIFIER);\r\n return !!window.opener && window.opener !== window && !!popup;\r\n }\r\n openPopUp(url, popupOptions) {\r\n const optionsToPass = this.getOptions(popupOptions);\r\n this.popUp = window.open(url, '_blank', optionsToPass);\r\n this.popUp.sessionStorage.setItem(this.STORAGE_IDENTIFIER, 'true');\r\n const listener = (event) => {\r\n if (!(event === null || event === void 0 ? void 0 : event.data) || typeof event.data !== 'string') {\r\n return;\r\n }\r\n this.resultInternal$.next({ userClosed: false, receivedUrl: event.data });\r\n this.cleanUp(listener);\r\n };\r\n window.addEventListener('message', listener, false);\r\n this.handle = window.setInterval(() => {\r\n if (this.popUp.closed) {\r\n this.resultInternal$.next({ userClosed: true });\r\n this.cleanUp(listener);\r\n }\r\n }, 200);\r\n }\r\n sendMessageToMainWindow(url) {\r\n if (window.opener) {\r\n this.sendMessage(url, window.location.href);\r\n }\r\n }\r\n cleanUp(listener) {\r\n var _a;\r\n window.removeEventListener('message', listener, false);\r\n window.clearInterval(this.handle);\r\n if (this.popUp) {\r\n (_a = this.popUp.sessionStorage) === null || _a === void 0 ? void 0 : _a.removeItem(this.STORAGE_IDENTIFIER);\r\n this.popUp.close();\r\n this.popUp = null;\r\n }\r\n }\r\n sendMessage(url, href) {\r\n window.opener.postMessage(url, href);\r\n }\r\n getOptions(popupOptions) {\r\n const popupDefaultOptions = { width: 500, height: 500, left: 50, top: 50 };\r\n const options = Object.assign(Object.assign({}, popupDefaultOptions), (popupOptions || {}));\r\n return Object.entries(options)\r\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)\r\n .join(',');\r\n }\r\n}\nPopUpService.ɵfac = function PopUpService_Factory(t) { return new (t || PopUpService)(); };\r\nPopUpService.ɵprov = ɵɵdefineInjectable({ factory: function PopUpService_Factory() { return new PopUpService(); }, token: PopUpService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopUpService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nclass CheckAuthService {\r\n constructor(doc, checkSessionService, silentRenewService, userService, loggerService, configurationProvider, authStateService, callbackService, refreshSessionService, periodicallyTokenCheckService, popupService, autoLoginService, router) {\r\n this.doc = doc;\r\n this.checkSessionService = checkSessionService;\r\n this.silentRenewService = silentRenewService;\r\n this.userService = userService;\r\n this.loggerService = loggerService;\r\n this.configurationProvider = configurationProvider;\r\n this.authStateService = authStateService;\r\n this.callbackService = callbackService;\r\n this.refreshSessionService = refreshSessionService;\r\n this.periodicallyTokenCheckService = periodicallyTokenCheckService;\r\n this.popupService = popupService;\r\n this.autoLoginService = autoLoginService;\r\n this.router = router;\r\n }\r\n checkAuth(url) {\r\n if (!this.configurationProvider.hasValidConfig()) {\r\n this.loggerService.logError('Please provide a configuration before setting up the module');\r\n return of(false);\r\n }\r\n const { stsServer } = this.configurationProvider.getOpenIDConfiguration();\r\n this.loggerService.logDebug('STS server: ', stsServer);\r\n const currentUrl = url || this.doc.defaultView.location.toString();\r\n if (this.popupService.isCurrentlyInPopup()) {\r\n this.popupService.sendMessageToMainWindow(currentUrl);\r\n return of(null);\r\n }\r\n const isCallback = this.callbackService.isCallback(currentUrl);\r\n this.loggerService.logDebug('currentUrl to check auth with: ', currentUrl);\r\n const callback$ = isCallback ? this.callbackService.handleCallbackAndFireEvents(currentUrl) : of(null);\r\n return callback$.pipe(map(() => {\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid();\r\n if (isAuthenticated) {\r\n this.startCheckSessionAndValidation();\r\n if (!isCallback) {\r\n this.authStateService.setAuthorizedAndFireEvent();\r\n this.userService.publishUserDataIfExists();\r\n }\r\n }\r\n this.loggerService.logDebug('checkAuth completed fired events, auth: ' + isAuthenticated);\r\n return isAuthenticated;\r\n }), tap(() => {\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid();\r\n if (isAuthenticated) {\r\n const savedRouteForRedirect = this.autoLoginService.getStoredRedirectRoute();\r\n if (savedRouteForRedirect) {\r\n this.autoLoginService.deleteStoredRedirectRoute();\r\n this.router.navigateByUrl(savedRouteForRedirect);\r\n }\r\n }\r\n }), catchError((error) => {\r\n this.loggerService.logError(error);\r\n return of(false);\r\n }));\r\n }\r\n checkAuthIncludingServer() {\r\n return this.checkAuth().pipe(switchMap((isAuthenticated) => {\r\n if (isAuthenticated) {\r\n return of(isAuthenticated);\r\n }\r\n return this.refreshSessionService.forceRefreshSession().pipe(map((result) => !!(result === null || result === void 0 ? void 0 : result.idToken) && !!(result === null || result === void 0 ? void 0 : result.accessToken)), switchMap((isAuth) => {\r\n if (isAuth) {\r\n this.startCheckSessionAndValidation();\r\n }\r\n return of(isAuth);\r\n }));\r\n }));\r\n }\r\n startCheckSessionAndValidation() {\r\n if (this.checkSessionService.isCheckSessionConfigured()) {\r\n this.checkSessionService.start();\r\n }\r\n const { tokenRefreshInSeconds } = this.configurationProvider.getOpenIDConfiguration();\r\n this.periodicallyTokenCheckService.startTokenValidationPeriodically(tokenRefreshInSeconds);\r\n if (this.silentRenewService.isSilentRenewConfigured()) {\r\n this.silentRenewService.getOrCreateIframe();\r\n }\r\n }\r\n}\nCheckAuthService.ɵfac = function CheckAuthService_Factory(t) { return new (t || CheckAuthService)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(CheckSessionService), ɵngcc0.ɵɵinject(SilentRenewService), ɵngcc0.ɵɵinject(UserService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(CallbackService), ɵngcc0.ɵɵinject(RefreshSessionService), ɵngcc0.ɵɵinject(PeriodicallyTokenCheckService), ɵngcc0.ɵɵinject(PopUpService), ɵngcc0.ɵɵinject(AutoLoginService), ɵngcc0.ɵɵinject(ɵngcc2.Router)); };\nCheckAuthService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CheckAuthService, factory: CheckAuthService.ɵfac });\r\nCheckAuthService.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: CheckSessionService },\r\n { type: SilentRenewService },\r\n { type: UserService },\r\n { type: LoggerService },\r\n { type: ConfigurationProvider },\r\n { type: AuthStateService },\r\n { type: CallbackService },\r\n { type: RefreshSessionService },\r\n { type: PeriodicallyTokenCheckService },\r\n { type: PopUpService },\r\n { type: AutoLoginService },\r\n { type: Router }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CheckAuthService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: CheckSessionService }, { type: SilentRenewService }, { type: UserService }, { type: LoggerService }, { type: ConfigurationProvider }, { type: AuthStateService }, { type: CallbackService }, { type: RefreshSessionService }, { type: PeriodicallyTokenCheckService }, { type: PopUpService }, { type: AutoLoginService }, { type: ɵngcc2.Router }]; }, null); })();\n\nconst POSITIVE_VALIDATION_RESULT = {\r\n result: true,\r\n messages: [],\r\n level: null,\r\n};\n\nconst ensureClientId = (passedConfig) => {\r\n if (!passedConfig.clientId) {\r\n return {\r\n result: false,\r\n messages: ['The clientId is required and missing from your config!'],\r\n level: 'error',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst ensureRedirectRule = (passedConfig) => {\r\n if (!passedConfig.redirectUrl) {\r\n return {\r\n result: false,\r\n messages: ['The redirectURL is required and missing from your config'],\r\n level: 'error',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst ensureSilentRenewUrlWhenNoRefreshTokenUsed = (passedConfig) => {\r\n const usesSilentRenew = passedConfig.silentRenew;\r\n const usesRefreshToken = passedConfig.useRefreshToken;\r\n const hasSilentRenewUrl = passedConfig.silentRenewUrl;\r\n if (usesSilentRenew && !usesRefreshToken && !hasSilentRenewUrl) {\r\n return {\r\n result: false,\r\n messages: ['Please provide a silent renew URL if using renew and not refresh tokens'],\r\n level: 'error',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst ensureStsServer = (passedConfig) => {\r\n if (!passedConfig.stsServer) {\r\n return {\r\n result: false,\r\n messages: ['The STS URL MUST be provided in the configuration!'],\r\n level: 'error',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst useOfflineScopeWithSilentRenew = (passedConfig) => {\r\n const hasRefreshToken = passedConfig.useRefreshToken;\r\n const hasSilentRenew = passedConfig.silentRenew;\r\n const scope = passedConfig.scope || '';\r\n const hasOfflineScope = scope.split(' ').includes('offline_access');\r\n if (hasRefreshToken && hasSilentRenew && !hasOfflineScope) {\r\n return {\r\n result: false,\r\n messages: ['When using silent renew and refresh tokens please set the `offline_access` scope'],\r\n level: 'warning',\r\n };\r\n }\r\n return POSITIVE_VALIDATION_RESULT;\r\n};\n\nconst allRules = [\r\n ensureStsServer,\r\n useOfflineScopeWithSilentRenew,\r\n ensureRedirectRule,\r\n ensureClientId,\r\n ensureSilentRenewUrlWhenNoRefreshTokenUsed,\r\n];\n\nclass ConfigValidationService {\r\n constructor(loggerService) {\r\n this.loggerService = loggerService;\r\n }\r\n validateConfig(passedConfig) {\r\n const allValidationResults = allRules.map((rule) => rule(passedConfig));\r\n const allMessages = allValidationResults.filter((x) => x.messages.length > 0);\r\n const allErrorMessages = this.getAllMessagesOfType('error', allMessages);\r\n const allWarnings = this.getAllMessagesOfType('warning', allMessages);\r\n allErrorMessages.map((message) => this.loggerService.logError(message));\r\n allWarnings.map((message) => this.loggerService.logWarning(message));\r\n return allErrorMessages.length === 0;\r\n }\r\n getAllMessagesOfType(type, results) {\r\n const allMessages = results.filter((x) => x.level === type).map((result) => result.messages);\r\n return allMessages.reduce((acc, val) => acc.concat(val), []);\r\n }\r\n}\nConfigValidationService.ɵfac = function ConfigValidationService_Factory(t) { return new (t || ConfigValidationService)(ɵngcc0.ɵɵinject(LoggerService)); };\nConfigValidationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ConfigValidationService, factory: ConfigValidationService.ɵfac });\r\nConfigValidationService.ctorParameters = () => [\r\n { type: LoggerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ConfigValidationService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }]; }, null); })();\n\nclass OidcConfigService {\r\n constructor(loggerService, publicEventsService, configurationProvider, authWellKnownService, storagePersistenceService, configValidationService) {\r\n this.loggerService = loggerService;\r\n this.publicEventsService = publicEventsService;\r\n this.configurationProvider = configurationProvider;\r\n this.authWellKnownService = authWellKnownService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.configValidationService = configValidationService;\r\n }\r\n withConfig(passedConfig, passedAuthWellKnownEndpoints) {\r\n return new Promise((resolve, reject) => {\r\n if (!this.configValidationService.validateConfig(passedConfig)) {\r\n this.loggerService.logError('Validation of config rejected with errors. Config is NOT set.');\r\n resolve();\r\n }\r\n if (!passedConfig.authWellknownEndpoint) {\r\n passedConfig.authWellknownEndpoint = passedConfig.stsServer;\r\n }\r\n const usedConfig = this.configurationProvider.setConfig(passedConfig);\r\n const alreadyExistingAuthWellKnownEndpoints = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (!!alreadyExistingAuthWellKnownEndpoints) {\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoaded, {\r\n configuration: passedConfig,\r\n wellknown: alreadyExistingAuthWellKnownEndpoints,\r\n });\r\n resolve();\r\n }\r\n if (!!passedAuthWellKnownEndpoints) {\r\n this.authWellKnownService.storeWellKnownEndpoints(passedAuthWellKnownEndpoints);\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoaded, {\r\n configuration: passedConfig,\r\n wellknown: passedAuthWellKnownEndpoints,\r\n });\r\n resolve();\r\n }\r\n if (usedConfig.eagerLoadAuthWellKnownEndpoints) {\r\n this.authWellKnownService\r\n .getAuthWellKnownEndPoints(usedConfig.authWellknownEndpoint)\r\n .pipe(catchError((error) => {\r\n this.loggerService.logError('Getting auth well known endpoints failed on start', error);\r\n return throwError(error);\r\n }), tap((wellknownEndPoints) => this.publicEventsService.fireEvent(EventTypes.ConfigLoaded, {\r\n configuration: passedConfig,\r\n wellknown: wellknownEndPoints,\r\n })))\r\n .subscribe(() => resolve(), () => reject());\r\n }\r\n else {\r\n this.publicEventsService.fireEvent(EventTypes.ConfigLoaded, {\r\n configuration: passedConfig,\r\n wellknown: null,\r\n });\r\n resolve();\r\n }\r\n });\r\n }\r\n}\nOidcConfigService.ɵfac = function OidcConfigService_Factory(t) { return new (t || OidcConfigService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(PublicEventsService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(AuthWellKnownService), ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(ConfigValidationService)); };\nOidcConfigService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: OidcConfigService, factory: OidcConfigService.ɵfac });\r\nOidcConfigService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: PublicEventsService },\r\n { type: ConfigurationProvider },\r\n { type: AuthWellKnownService },\r\n { type: StoragePersistenceService },\r\n { type: ConfigValidationService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OidcConfigService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: PublicEventsService }, { type: ConfigurationProvider }, { type: AuthWellKnownService }, { type: StoragePersistenceService }, { type: ConfigValidationService }]; }, null); })();\n\nclass RedirectService {\r\n constructor(doc) {\r\n this.doc = doc;\r\n }\r\n redirectTo(url) {\r\n this.doc.location.href = url;\r\n }\r\n}\nRedirectService.ɵfac = function RedirectService_Factory(t) { return new (t || RedirectService)(ɵngcc0.ɵɵinject(DOCUMENT)); };\r\nRedirectService.ɵprov = ɵɵdefineInjectable({ factory: function RedirectService_Factory() { return new RedirectService(ɵɵinject(DOCUMENT)); }, token: RedirectService, providedIn: \"root\" });\r\nRedirectService.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RedirectService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\nclass ResponseTypeValidationService {\r\n constructor(loggerService, flowHelper) {\r\n this.loggerService = loggerService;\r\n this.flowHelper = flowHelper;\r\n }\r\n hasConfigValidResponseType() {\r\n if (this.flowHelper.isCurrentFlowAnyImplicitFlow()) {\r\n return true;\r\n }\r\n if (this.flowHelper.isCurrentFlowCodeFlow()) {\r\n return true;\r\n }\r\n this.loggerService.logWarning('module configured incorrectly, invalid response_type. Check the responseType in the config');\r\n return false;\r\n }\r\n}\nResponseTypeValidationService.ɵfac = function ResponseTypeValidationService_Factory(t) { return new (t || ResponseTypeValidationService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(FlowHelper)); };\nResponseTypeValidationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ResponseTypeValidationService, factory: ResponseTypeValidationService.ɵfac });\r\nResponseTypeValidationService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: FlowHelper }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResponseTypeValidationService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: FlowHelper }]; }, null); })();\n\nclass ParService {\r\n constructor(loggerService, urlService, dataService, storagePersistenceService) {\r\n this.loggerService = loggerService;\r\n this.urlService = urlService;\r\n this.dataService = dataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n }\r\n postParRequest(customParams) {\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n const authWellKnown = this.storagePersistenceService.read('authWellKnownEndPoints');\r\n if (!authWellKnown) {\r\n return throwError('Could not read PAR endpoint because authWellKnownEndPoints are not given');\r\n }\r\n const parEndpoint = authWellKnown.parEndpoint;\r\n if (!parEndpoint) {\r\n return throwError('Could not read PAR endpoint from authWellKnownEndpoints');\r\n }\r\n const data = this.urlService.createBodyForParCodeFlowRequest(customParams);\r\n return this.dataService.post(parEndpoint, data, headers).pipe(retry(2), map((response) => {\r\n this.loggerService.logDebug('par response: ', response);\r\n return {\r\n expiresIn: response.expires_in,\r\n requestUri: response.request_uri,\r\n };\r\n }), catchError((error) => {\r\n const errorMessage = `There was an error on ParService postParRequest`;\r\n this.loggerService.logError(errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n}\nParService.ɵfac = function ParService_Factory(t) { return new (t || ParService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(DataService), ɵngcc0.ɵɵinject(StoragePersistenceService)); };\nParService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ParService, factory: ParService.ɵfac });\r\nParService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: UrlService },\r\n { type: DataService },\r\n { type: StoragePersistenceService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ParService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: UrlService }, { type: DataService }, { type: StoragePersistenceService }]; }, null); })();\n\nclass ParLoginService {\r\n constructor(loggerService, responseTypeValidationService, urlService, redirectService, configurationProvider, authWellKnownService, popupService, checkAuthService, userService, authStateService, parService) {\r\n this.loggerService = loggerService;\r\n this.responseTypeValidationService = responseTypeValidationService;\r\n this.urlService = urlService;\r\n this.redirectService = redirectService;\r\n this.configurationProvider = configurationProvider;\r\n this.authWellKnownService = authWellKnownService;\r\n this.popupService = popupService;\r\n this.checkAuthService = checkAuthService;\r\n this.userService = userService;\r\n this.authStateService = authStateService;\r\n this.parService = parService;\r\n }\r\n loginPar(authOptions) {\r\n if (!this.responseTypeValidationService.hasConfigValidResponseType()) {\r\n this.loggerService.logError('Invalid response type!');\r\n return;\r\n }\r\n const { authWellknownEndpoint } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!authWellknownEndpoint) {\r\n this.loggerService.logError('no authWellknownEndpoint given!');\r\n return;\r\n }\r\n this.loggerService.logDebug('BEGIN Authorize OIDC Flow, no auth data');\r\n const { urlHandler, customParams } = authOptions || {};\r\n this.authWellKnownService\r\n .getAuthWellKnownEndPoints(authWellknownEndpoint)\r\n .pipe(switchMap(() => this.parService.postParRequest(customParams)))\r\n .subscribe((response) => {\r\n this.loggerService.logDebug('par response: ', response);\r\n const url = this.urlService.getAuthorizeParUrl(response.requestUri);\r\n this.loggerService.logDebug('par request url: ', url);\r\n if (!url) {\r\n this.loggerService.logError(`Could not create url with param ${response.requestUri}: '${url}'`);\r\n return;\r\n }\r\n if (urlHandler) {\r\n urlHandler(url);\r\n }\r\n else {\r\n this.redirectService.redirectTo(url);\r\n }\r\n });\r\n }\r\n loginWithPopUpPar(authOptions, popupOptions) {\r\n if (!this.responseTypeValidationService.hasConfigValidResponseType()) {\r\n const errorMessage = 'Invalid response type!';\r\n this.loggerService.logError(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n const { authWellknownEndpoint } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!authWellknownEndpoint) {\r\n const errorMessage = 'no authWellknownEndpoint given!';\r\n this.loggerService.logError(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n this.loggerService.logDebug('BEGIN Authorize OIDC Flow with popup, no auth data');\r\n const { customParams } = authOptions || {};\r\n return this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpoint).pipe(switchMap(() => this.parService.postParRequest(customParams)), switchMap((response) => {\r\n this.loggerService.logDebug('par response: ', response);\r\n const url = this.urlService.getAuthorizeParUrl(response.requestUri);\r\n this.loggerService.logDebug('par request url: ', url);\r\n if (!url) {\r\n const errorMessage = `Could not create url with param ${response.requestUri}: 'url'`;\r\n this.loggerService.logError(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n this.popupService.openPopUp(url, popupOptions);\r\n return this.popupService.result$.pipe(take(1), switchMap((result) => result.userClosed === true\r\n ? of({ isAuthenticated: false, errorMessage: 'User closed popup' })\r\n : this.checkAuthService.checkAuth(result.receivedUrl).pipe(map((isAuthenticated) => ({\r\n isAuthenticated,\r\n userData: this.userService.getUserDataFromStore(),\r\n accessToken: this.authStateService.getAccessToken(),\r\n })))));\r\n }));\r\n }\r\n}\nParLoginService.ɵfac = function ParLoginService_Factory(t) { return new (t || ParLoginService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ResponseTypeValidationService), ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(RedirectService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(AuthWellKnownService), ɵngcc0.ɵɵinject(PopUpService), ɵngcc0.ɵɵinject(CheckAuthService), ɵngcc0.ɵɵinject(UserService), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(ParService)); };\nParLoginService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ParLoginService, factory: ParLoginService.ɵfac });\r\nParLoginService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: ResponseTypeValidationService },\r\n { type: UrlService },\r\n { type: RedirectService },\r\n { type: ConfigurationProvider },\r\n { type: AuthWellKnownService },\r\n { type: PopUpService },\r\n { type: CheckAuthService },\r\n { type: UserService },\r\n { type: AuthStateService },\r\n { type: ParService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ParLoginService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: ResponseTypeValidationService }, { type: UrlService }, { type: RedirectService }, { type: ConfigurationProvider }, { type: AuthWellKnownService }, { type: PopUpService }, { type: CheckAuthService }, { type: UserService }, { type: AuthStateService }, { type: ParService }]; }, null); })();\n\nclass PopUpLoginService {\r\n constructor(loggerService, responseTypeValidationService, urlService, configurationProvider, authWellKnownService, popupService, checkAuthService, userService, authStateService) {\r\n this.loggerService = loggerService;\r\n this.responseTypeValidationService = responseTypeValidationService;\r\n this.urlService = urlService;\r\n this.configurationProvider = configurationProvider;\r\n this.authWellKnownService = authWellKnownService;\r\n this.popupService = popupService;\r\n this.checkAuthService = checkAuthService;\r\n this.userService = userService;\r\n this.authStateService = authStateService;\r\n }\r\n loginWithPopUpStandard(authOptions, popupOptions) {\r\n if (!this.responseTypeValidationService.hasConfigValidResponseType()) {\r\n const errorMessage = 'Invalid response type!';\r\n this.loggerService.logError(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n const { authWellknownEndpoint } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!authWellknownEndpoint) {\r\n const errorMessage = 'no authWellknownEndpoint given!';\r\n this.loggerService.logError(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n this.loggerService.logDebug('BEGIN Authorize OIDC Flow with popup, no auth data');\r\n return this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpoint).pipe(switchMap(() => {\r\n const { customParams } = authOptions || {};\r\n const authUrl = this.urlService.getAuthorizeUrl(customParams);\r\n this.popupService.openPopUp(authUrl, popupOptions);\r\n return this.popupService.result$.pipe(take(1), switchMap((result) => result.userClosed === true\r\n ? of({ isAuthenticated: false, errorMessage: 'User closed popup' })\r\n : this.checkAuthService.checkAuth(result.receivedUrl).pipe(map((isAuthenticated) => ({\r\n isAuthenticated,\r\n userData: this.userService.getUserDataFromStore(),\r\n accessToken: this.authStateService.getAccessToken(),\r\n })))));\r\n }));\r\n }\r\n}\nPopUpLoginService.ɵfac = function PopUpLoginService_Factory(t) { return new (t || PopUpLoginService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ResponseTypeValidationService), ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(AuthWellKnownService), ɵngcc0.ɵɵinject(PopUpService), ɵngcc0.ɵɵinject(CheckAuthService), ɵngcc0.ɵɵinject(UserService), ɵngcc0.ɵɵinject(AuthStateService)); };\nPopUpLoginService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PopUpLoginService, factory: PopUpLoginService.ɵfac });\r\nPopUpLoginService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: ResponseTypeValidationService },\r\n { type: UrlService },\r\n { type: ConfigurationProvider },\r\n { type: AuthWellKnownService },\r\n { type: PopUpService },\r\n { type: CheckAuthService },\r\n { type: UserService },\r\n { type: AuthStateService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PopUpLoginService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: ResponseTypeValidationService }, { type: UrlService }, { type: ConfigurationProvider }, { type: AuthWellKnownService }, { type: PopUpService }, { type: CheckAuthService }, { type: UserService }, { type: AuthStateService }]; }, null); })();\n\nclass StandardLoginService {\r\n constructor(loggerService, responseTypeValidationService, urlService, redirectService, configurationProvider, authWellKnownService) {\r\n this.loggerService = loggerService;\r\n this.responseTypeValidationService = responseTypeValidationService;\r\n this.urlService = urlService;\r\n this.redirectService = redirectService;\r\n this.configurationProvider = configurationProvider;\r\n this.authWellKnownService = authWellKnownService;\r\n }\r\n loginStandard(authOptions) {\r\n if (!this.responseTypeValidationService.hasConfigValidResponseType()) {\r\n this.loggerService.logError('Invalid response type!');\r\n return;\r\n }\r\n const { authWellknownEndpoint } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!authWellknownEndpoint) {\r\n this.loggerService.logError('no authWellknownEndpoint given!');\r\n return;\r\n }\r\n this.loggerService.logDebug('BEGIN Authorize OIDC Flow, no auth data');\r\n this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpoint).subscribe(() => {\r\n const { urlHandler, customParams } = authOptions || {};\r\n const url = this.urlService.getAuthorizeUrl(customParams);\r\n if (!url) {\r\n this.loggerService.logError('Could not create url', url);\r\n return;\r\n }\r\n if (urlHandler) {\r\n urlHandler(url);\r\n }\r\n else {\r\n this.redirectService.redirectTo(url);\r\n }\r\n });\r\n }\r\n}\nStandardLoginService.ɵfac = function StandardLoginService_Factory(t) { return new (t || StandardLoginService)(ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(ResponseTypeValidationService), ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(RedirectService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(AuthWellKnownService)); };\nStandardLoginService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: StandardLoginService, factory: StandardLoginService.ɵfac });\r\nStandardLoginService.ctorParameters = () => [\r\n { type: LoggerService },\r\n { type: ResponseTypeValidationService },\r\n { type: UrlService },\r\n { type: RedirectService },\r\n { type: ConfigurationProvider },\r\n { type: AuthWellKnownService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StandardLoginService, [{\n type: Injectable\n }], function () { return [{ type: LoggerService }, { type: ResponseTypeValidationService }, { type: UrlService }, { type: RedirectService }, { type: ConfigurationProvider }, { type: AuthWellKnownService }]; }, null); })();\n\nclass LoginService {\r\n constructor(configurationProvider, parLoginService, popUpLoginService, standardLoginService) {\r\n this.configurationProvider = configurationProvider;\r\n this.parLoginService = parLoginService;\r\n this.popUpLoginService = popUpLoginService;\r\n this.standardLoginService = standardLoginService;\r\n }\r\n login(authOptions) {\r\n const { usePushedAuthorisationRequests } = this.configurationProvider.getOpenIDConfiguration();\r\n if (usePushedAuthorisationRequests) {\r\n return this.parLoginService.loginPar(authOptions);\r\n }\r\n else {\r\n return this.standardLoginService.loginStandard(authOptions);\r\n }\r\n }\r\n loginWithPopUp(authOptions, popupOptions) {\r\n const { usePushedAuthorisationRequests } = this.configurationProvider.getOpenIDConfiguration();\r\n if (usePushedAuthorisationRequests) {\r\n return this.parLoginService.loginWithPopUpPar(authOptions, popupOptions);\r\n }\r\n else {\r\n return this.popUpLoginService.loginWithPopUpStandard(authOptions, popupOptions);\r\n }\r\n }\r\n}\nLoginService.ɵfac = function LoginService_Factory(t) { return new (t || LoginService)(ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(ParLoginService), ɵngcc0.ɵɵinject(PopUpLoginService), ɵngcc0.ɵɵinject(StandardLoginService)); };\nLoginService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LoginService, factory: LoginService.ɵfac });\r\nLoginService.ctorParameters = () => [\r\n { type: ConfigurationProvider },\r\n { type: ParLoginService },\r\n { type: PopUpLoginService },\r\n { type: StandardLoginService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LoginService, [{\n type: Injectable\n }], function () { return [{ type: ConfigurationProvider }, { type: ParLoginService }, { type: PopUpLoginService }, { type: StandardLoginService }]; }, null); })();\n\nclass LogoffRevocationService {\r\n constructor(dataService, storagePersistenceService, loggerService, urlService, checkSessionService, resetAuthDataService, redirectService, configurationProvider) {\r\n this.dataService = dataService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.loggerService = loggerService;\r\n this.urlService = urlService;\r\n this.checkSessionService = checkSessionService;\r\n this.resetAuthDataService = resetAuthDataService;\r\n this.redirectService = redirectService;\r\n this.configurationProvider = configurationProvider;\r\n }\r\n // Logs out on the server and the local client.\r\n // If the server state has changed, checksession, then only a local logout.\r\n logoff(urlHandler) {\r\n this.loggerService.logDebug('logoff, remove auth ');\r\n const endSessionUrl = this.getEndSessionUrl();\r\n this.resetAuthDataService.resetAuthorizationData();\r\n if (!endSessionUrl) {\r\n this.loggerService.logDebug('only local login cleaned up, no end_session_endpoint');\r\n return;\r\n }\r\n if (this.checkSessionService.serverStateChanged()) {\r\n this.loggerService.logDebug('only local login cleaned up, server session has changed');\r\n }\r\n else if (urlHandler) {\r\n urlHandler(endSessionUrl);\r\n }\r\n else {\r\n this.redirectService.redirectTo(endSessionUrl);\r\n }\r\n }\r\n logoffLocal() {\r\n this.resetAuthDataService.resetAuthorizationData();\r\n this.checkSessionService.stop();\r\n }\r\n // The refresh token and and the access token are revoked on the server. If the refresh token does not exist\r\n // only the access token is revoked. Then the logout run.\r\n logoffAndRevokeTokens(urlHandler) {\r\n var _a;\r\n if (!((_a = this.storagePersistenceService.read('authWellKnownEndPoints')) === null || _a === void 0 ? void 0 : _a.revocationEndpoint)) {\r\n this.loggerService.logDebug('revocation endpoint not supported');\r\n this.logoff(urlHandler);\r\n }\r\n if (this.storagePersistenceService.getRefreshToken()) {\r\n return this.revokeRefreshToken().pipe(switchMap((result) => this.revokeAccessToken(result)), catchError((error) => {\r\n const errorMessage = `revoke token failed`;\r\n this.loggerService.logError(errorMessage, error);\r\n return throwError(errorMessage);\r\n }), tap(() => this.logoff(urlHandler)));\r\n }\r\n else {\r\n return this.revokeAccessToken().pipe(catchError((error) => {\r\n const errorMessage = `revoke access token failed`;\r\n this.loggerService.logError(errorMessage, error);\r\n return throwError(errorMessage);\r\n }), tap(() => this.logoff(urlHandler)));\r\n }\r\n }\r\n // https://tools.ietf.org/html/rfc7009\r\n // revokes an access token on the STS. If no token is provided, then the token from\r\n // the storage is revoked. You can pass any token to revoke. This makes it possible to\r\n // manage your own tokens. The is a public API.\r\n revokeAccessToken(accessToken) {\r\n const accessTok = accessToken || this.storagePersistenceService.getAccessToken();\r\n const body = this.urlService.createRevocationEndpointBodyAccessToken(accessTok);\r\n const url = this.urlService.getRevocationEndpointUrl();\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.dataService.post(url, body, headers).pipe(retry(2), switchMap((response) => {\r\n this.loggerService.logDebug('revocation endpoint post response: ', response);\r\n return of(response);\r\n }), catchError((error) => {\r\n const errorMessage = `Revocation request failed`;\r\n this.loggerService.logError(errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n // https://tools.ietf.org/html/rfc7009\r\n // revokes an refresh token on the STS. This is only required in the code flow with refresh tokens.\r\n // If no token is provided, then the token from the storage is revoked. You can pass any token to revoke.\r\n // This makes it possible to manage your own tokens.\r\n revokeRefreshToken(refreshToken) {\r\n const refreshTok = refreshToken || this.storagePersistenceService.getRefreshToken();\r\n const body = this.urlService.createRevocationEndpointBodyRefreshToken(refreshTok);\r\n const url = this.urlService.getRevocationEndpointUrl();\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.dataService.post(url, body, headers).pipe(retry(2), switchMap((response) => {\r\n this.loggerService.logDebug('revocation endpoint post response: ', response);\r\n return of(response);\r\n }), catchError((error) => {\r\n const errorMessage = `Revocation request failed`;\r\n this.loggerService.logError(errorMessage, error);\r\n return throwError(errorMessage);\r\n }));\r\n }\r\n getEndSessionUrl(customParams) {\r\n const idToken = this.storagePersistenceService.getIdToken();\r\n const { customParamsEndSession } = this.configurationProvider.getOpenIDConfiguration();\r\n const mergedParams = Object.assign(Object.assign({}, customParams), customParamsEndSession);\r\n return this.urlService.createEndSessionUrl(idToken, mergedParams);\r\n }\r\n}\nLogoffRevocationService.ɵfac = function LogoffRevocationService_Factory(t) { return new (t || LogoffRevocationService)(ɵngcc0.ɵɵinject(DataService), ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(LoggerService), ɵngcc0.ɵɵinject(UrlService), ɵngcc0.ɵɵinject(CheckSessionService), ɵngcc0.ɵɵinject(ResetAuthDataService), ɵngcc0.ɵɵinject(RedirectService), ɵngcc0.ɵɵinject(ConfigurationProvider)); };\nLogoffRevocationService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LogoffRevocationService, factory: LogoffRevocationService.ɵfac });\r\nLogoffRevocationService.ctorParameters = () => [\r\n { type: DataService },\r\n { type: StoragePersistenceService },\r\n { type: LoggerService },\r\n { type: UrlService },\r\n { type: CheckSessionService },\r\n { type: ResetAuthDataService },\r\n { type: RedirectService },\r\n { type: ConfigurationProvider }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LogoffRevocationService, [{\n type: Injectable\n }], function () { return [{ type: DataService }, { type: StoragePersistenceService }, { type: LoggerService }, { type: UrlService }, { type: CheckSessionService }, { type: ResetAuthDataService }, { type: RedirectService }, { type: ConfigurationProvider }]; }, null); })();\n\nclass OidcSecurityService {\r\n constructor(checkSessionService, checkAuthService, userService, tokenHelperService, configurationProvider, authStateService, flowsDataService, callbackService, logoffRevocationService, loginService, storagePersistenceService, refreshSessionService) {\r\n this.checkSessionService = checkSessionService;\r\n this.checkAuthService = checkAuthService;\r\n this.userService = userService;\r\n this.tokenHelperService = tokenHelperService;\r\n this.configurationProvider = configurationProvider;\r\n this.authStateService = authStateService;\r\n this.flowsDataService = flowsDataService;\r\n this.callbackService = callbackService;\r\n this.logoffRevocationService = logoffRevocationService;\r\n this.loginService = loginService;\r\n this.storagePersistenceService = storagePersistenceService;\r\n this.refreshSessionService = refreshSessionService;\r\n }\r\n /**\r\n * Gets the currently active OpenID configuration.\r\n */\r\n get configuration() {\r\n const openIDConfiguration = this.configurationProvider.getOpenIDConfiguration();\r\n return {\r\n configuration: openIDConfiguration,\r\n wellknown: this.storagePersistenceService.read('authWellKnownEndPoints'),\r\n };\r\n }\r\n /**\r\n * Provides information about the user after they have logged in.\r\n */\r\n get userData$() {\r\n return this.userService.userData$;\r\n }\r\n /**\r\n * Emits each time an authorization event occurs. Returns true if the user is authenticated and false if they are not.\r\n */\r\n get isAuthenticated$() {\r\n return this.authStateService.authorized$;\r\n }\r\n /**\r\n * Emits each time the server sends a CheckSession event and the value changed. This property will always return\r\n * true.\r\n */\r\n get checkSessionChanged$() {\r\n return this.checkSessionService.checkSessionChanged$;\r\n }\r\n /**\r\n * Emits on possible STS callback. The observable will never contain a value.\r\n */\r\n get stsCallback$() {\r\n return this.callbackService.stsCallback$;\r\n }\r\n /**\r\n * Starts the complete setup flow. Calling will start the entire authentication flow, and the returned observable\r\n * will denote whether the user was successfully authenticated.\r\n *\r\n * @param url The url to perform the authorization on the behalf of.\r\n */\r\n checkAuth(url) {\r\n return this.checkAuthService.checkAuth(url);\r\n }\r\n /**\r\n * Checks the server for an authenticated session using the iframe silent renew if not locally authenticated.\r\n */\r\n checkAuthIncludingServer() {\r\n return this.checkAuthService.checkAuthIncludingServer();\r\n }\r\n /**\r\n * Returns the access token for the login scenario.\r\n */\r\n getToken() {\r\n return this.authStateService.getAccessToken();\r\n }\r\n /**\r\n * Returns the ID token for the login scenario.\r\n */\r\n getIdToken() {\r\n return this.authStateService.getIdToken();\r\n }\r\n /**\r\n * Returns the refresh token, if present, for the login scenario.\r\n */\r\n getRefreshToken() {\r\n return this.authStateService.getRefreshToken();\r\n }\r\n /**\r\n * Returns the payload from the ID token.\r\n *\r\n * @param encode Set to true if the payload is base64 encoded\r\n */\r\n getPayloadFromIdToken(encode = false) {\r\n const token = this.getIdToken();\r\n return this.tokenHelperService.getPayloadFromToken(token, encode);\r\n }\r\n /**\r\n * Sets a custom state for the authorize request.\r\n *\r\n * @param state The state to set.\r\n */\r\n setState(state) {\r\n this.flowsDataService.setAuthStateControl(state);\r\n }\r\n /**\r\n * Gets the state value used for the authorize request.\r\n */\r\n getState() {\r\n return this.flowsDataService.getAuthStateControl();\r\n }\r\n /**\r\n * Redirects the user to the STS to begin the authentication process.\r\n *\r\n * @param authOptions The custom options for the the authentication request.\r\n */\r\n // Code Flow with PCKE or Implicit Flow\r\n authorize(authOptions) {\r\n if (authOptions === null || authOptions === void 0 ? void 0 : authOptions.customParams) {\r\n this.storagePersistenceService.write('storageCustomRequestParams', authOptions.customParams);\r\n }\r\n this.loginService.login(authOptions);\r\n }\r\n /**\r\n * Opens the STS in a new window to begin the authentication process.\r\n *\r\n * @param authOptions The custom options for the authentication request.\r\n * @param popupOptions The configuration for the popup window.\r\n */\r\n authorizeWithPopUp(authOptions, popupOptions) {\r\n if (authOptions === null || authOptions === void 0 ? void 0 : authOptions.customParams) {\r\n this.storagePersistenceService.write('storageCustomRequestParams', authOptions.customParams);\r\n }\r\n return this.loginService.loginWithPopUp(authOptions, popupOptions);\r\n }\r\n /**\r\n * Manually refreshes the session.\r\n *\r\n * @param customParams Custom parameters to pass to the refresh request.\r\n */\r\n forceRefreshSession(customParams) {\r\n const { useRefreshToken } = this.configurationProvider.getOpenIDConfiguration();\r\n if (customParams) {\r\n if (useRefreshToken) {\r\n this.storagePersistenceService.write('storageCustomParamsRefresh', customParams);\r\n }\r\n else {\r\n this.storagePersistenceService.write('storageCustomRequestParams', customParams);\r\n }\r\n }\r\n return this.refreshSessionService.forceRefreshSession(customParams);\r\n }\r\n /**\r\n * Revokes the refresh token (if present) and the access token on the server and then performs the logoff operation.\r\n *\r\n * @param urlHandler An optional url handler for the logoff request.\r\n */\r\n // The refresh token and and the access token are revoked on the server. If the refresh token does not exist\r\n // only the access token is revoked. Then the logout run.\r\n logoffAndRevokeTokens(urlHandler) {\r\n return this.logoffRevocationService.logoffAndRevokeTokens(urlHandler);\r\n }\r\n /**\r\n * Logs out on the server and the local client. If the server state has changed, confirmed via checksession,\r\n * then only a local logout is performed.\r\n *\r\n * @param urlHandler\r\n */\r\n logoff(urlHandler) {\r\n return this.logoffRevocationService.logoff(urlHandler);\r\n }\r\n /**\r\n * Logs the user out of the application without logging them out of the server.\r\n */\r\n logoffLocal() {\r\n return this.logoffRevocationService.logoffLocal();\r\n }\r\n /**\r\n * Revokes an access token on the STS. This is only required in the code flow with refresh tokens. If no token is\r\n * provided, then the token from the storage is revoked. You can pass any token to revoke.\r\n * https://tools.ietf.org/html/rfc7009\r\n *\r\n * @param accessToken The access token to revoke.\r\n */\r\n revokeAccessToken(accessToken) {\r\n return this.logoffRevocationService.revokeAccessToken(accessToken);\r\n }\r\n /**\r\n * Revokes a refresh token on the STS. This is only required in the code flow with refresh tokens. If no token is\r\n * provided, then the token from the storage is revoked. You can pass any token to revoke.\r\n * https://tools.ietf.org/html/rfc7009\r\n *\r\n * @param refreshToken The access token to revoke.\r\n */\r\n revokeRefreshToken(refreshToken) {\r\n return this.logoffRevocationService.revokeRefreshToken(refreshToken);\r\n }\r\n /**\r\n * Creates the end session URL which can be used to implement an alternate server logout.\r\n */\r\n getEndSessionUrl(customParams) {\r\n return this.logoffRevocationService.getEndSessionUrl(customParams);\r\n }\r\n}\nOidcSecurityService.ɵfac = function OidcSecurityService_Factory(t) { return new (t || OidcSecurityService)(ɵngcc0.ɵɵinject(CheckSessionService), ɵngcc0.ɵɵinject(CheckAuthService), ɵngcc0.ɵɵinject(UserService), ɵngcc0.ɵɵinject(TokenHelperService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(FlowsDataService), ɵngcc0.ɵɵinject(CallbackService), ɵngcc0.ɵɵinject(LogoffRevocationService), ɵngcc0.ɵɵinject(LoginService), ɵngcc0.ɵɵinject(StoragePersistenceService), ɵngcc0.ɵɵinject(RefreshSessionService)); };\nOidcSecurityService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: OidcSecurityService, factory: OidcSecurityService.ɵfac });\r\nOidcSecurityService.ctorParameters = () => [\r\n { type: CheckSessionService },\r\n { type: CheckAuthService },\r\n { type: UserService },\r\n { type: TokenHelperService },\r\n { type: ConfigurationProvider },\r\n { type: AuthStateService },\r\n { type: FlowsDataService },\r\n { type: CallbackService },\r\n { type: LogoffRevocationService },\r\n { type: LoginService },\r\n { type: StoragePersistenceService },\r\n { type: RefreshSessionService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OidcSecurityService, [{\n type: Injectable\n }], function () { return [{ type: CheckSessionService }, { type: CheckAuthService }, { type: UserService }, { type: TokenHelperService }, { type: ConfigurationProvider }, { type: AuthStateService }, { type: FlowsDataService }, { type: CallbackService }, { type: LogoffRevocationService }, { type: LoginService }, { type: StoragePersistenceService }, { type: RefreshSessionService }]; }, null); })();\n\nclass BrowserStorageService {\r\n constructor(configProvider, loggerService) {\r\n this.configProvider = configProvider;\r\n this.loggerService = loggerService;\r\n }\r\n read(key) {\r\n var _a;\r\n if (!this.hasStorage()) {\r\n this.loggerService.logDebug(`Wanted to read '${key}' but Storage was undefined`);\r\n return false;\r\n }\r\n const item = (_a = this.getStorage()) === null || _a === void 0 ? void 0 : _a.getItem(key);\r\n if (!item) {\r\n this.loggerService.logDebug(`Wanted to read '${key}' but nothing was found`);\r\n return null;\r\n }\r\n return JSON.parse(item);\r\n }\r\n write(key, value) {\r\n if (!this.hasStorage()) {\r\n this.loggerService.logDebug(`Wanted to write '${key}/${value}' but Storage was falsy`);\r\n return false;\r\n }\r\n const storage = this.getStorage();\r\n if (!storage) {\r\n this.loggerService.logDebug(`Wanted to write '${key}/${value}' but Storage was falsy`);\r\n return false;\r\n }\r\n value = value || null;\r\n storage.setItem(`${key}`, JSON.stringify(value));\r\n return true;\r\n }\r\n remove(key) {\r\n if (!this.hasStorage()) {\r\n this.loggerService.logDebug(`Wanted to remove '${key}' but Storage was falsy`);\r\n return false;\r\n }\r\n const storage = this.getStorage();\r\n if (!storage) {\r\n this.loggerService.logDebug(`Wanted to write '${key}' but Storage was falsy`);\r\n return false;\r\n }\r\n storage.removeItem(`${key}`);\r\n return true;\r\n }\r\n getStorage() {\r\n const config = this.configProvider.getOpenIDConfiguration();\r\n if (!config) {\r\n return null;\r\n }\r\n return config.storage;\r\n }\r\n hasStorage() {\r\n return typeof Storage !== 'undefined';\r\n }\r\n}\nBrowserStorageService.ɵfac = function BrowserStorageService_Factory(t) { return new (t || BrowserStorageService)(ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(LoggerService)); };\nBrowserStorageService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BrowserStorageService, factory: BrowserStorageService.ɵfac });\r\nBrowserStorageService.ctorParameters = () => [\r\n { type: ConfigurationProvider },\r\n { type: LoggerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BrowserStorageService, [{\n type: Injectable\n }], function () { return [{ type: ConfigurationProvider }, { type: LoggerService }]; }, null); })();\n\nclass AuthModule {\r\n static forRoot(token = {}) {\r\n return {\r\n ngModule: AuthModule,\r\n providers: [\r\n OidcConfigService,\r\n PublicEventsService,\r\n FlowHelper,\r\n OidcSecurityService,\r\n TokenValidationService,\r\n PlatformProvider,\r\n CheckSessionService,\r\n FlowsDataService,\r\n FlowsService,\r\n SilentRenewService,\r\n ConfigurationProvider,\r\n LogoffRevocationService,\r\n UserService,\r\n RandomService,\r\n HttpBaseService,\r\n UrlService,\r\n AuthStateService,\r\n SigninKeyDataService,\r\n StoragePersistenceService,\r\n TokenHelperService,\r\n LoggerService,\r\n IFrameService,\r\n EqualityService,\r\n LoginService,\r\n ParService,\r\n AuthWellKnownDataService,\r\n AuthWellKnownService,\r\n DataService,\r\n StateValidationService,\r\n ConfigValidationService,\r\n CheckAuthService,\r\n ResetAuthDataService,\r\n ImplicitFlowCallbackService,\r\n HistoryJwtKeysCallbackHandlerService,\r\n ResponseTypeValidationService,\r\n UserCallbackHandlerService,\r\n StateValidationCallbackHandlerService,\r\n RefreshSessionCallbackHandlerService,\r\n RefreshTokenCallbackHandlerService,\r\n CodeFlowCallbackHandlerService,\r\n ImplicitFlowCallbackHandlerService,\r\n ParLoginService,\r\n PopUpLoginService,\r\n StandardLoginService,\r\n AutoLoginService,\r\n {\r\n provide: AbstractSecurityStorage,\r\n useClass: token.storage || BrowserStorageService,\r\n },\r\n ],\r\n };\r\n }\r\n}\nAuthModule.ɵfac = function AuthModule_Factory(t) { return new (t || AuthModule)(); };\nAuthModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AuthModule });\nAuthModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, HttpClientModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AuthModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, HttpClientModule],\n declarations: [],\n exports: []\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AuthModule, { imports: function () { return [CommonModule, HttpClientModule]; } }); })();\n\nclass AutoLoginGuard {\r\n constructor(autoLoginService, authStateService, checkAuthService, loginService, router) {\r\n this.autoLoginService = autoLoginService;\r\n this.authStateService = authStateService;\r\n this.checkAuthService = checkAuthService;\r\n this.loginService = loginService;\r\n this.router = router;\r\n }\r\n canLoad(route, segments) {\r\n const routeToRedirect = segments.join('/');\r\n return this.checkAuth(routeToRedirect);\r\n }\r\n canActivate(route, state) {\r\n return this.checkAuth(state.url);\r\n }\r\n checkAuth(url) {\r\n const isAuthenticated = this.authStateService.areAuthStorageTokensValid();\r\n if (isAuthenticated) {\r\n return of(true);\r\n }\r\n return this.checkAuthService.checkAuth().pipe(map((isAuthorized) => {\r\n const storedRoute = this.autoLoginService.getStoredRedirectRoute();\r\n if (isAuthorized) {\r\n if (storedRoute) {\r\n this.autoLoginService.deleteStoredRedirectRoute();\r\n this.router.navigateByUrl(storedRoute);\r\n }\r\n return true;\r\n }\r\n this.autoLoginService.saveStoredRedirectRoute(url);\r\n this.loginService.login();\r\n return false;\r\n }));\r\n }\r\n}\nAutoLoginGuard.ɵfac = function AutoLoginGuard_Factory(t) { return new (t || AutoLoginGuard)(ɵngcc0.ɵɵinject(AutoLoginService), ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(CheckAuthService), ɵngcc0.ɵɵinject(LoginService), ɵngcc0.ɵɵinject(ɵngcc2.Router)); };\r\nAutoLoginGuard.ɵprov = ɵɵdefineInjectable({ factory: function AutoLoginGuard_Factory() { return new AutoLoginGuard(ɵɵinject(AutoLoginService), ɵɵinject(AuthStateService), ɵɵinject(CheckAuthService), ɵɵinject(LoginService), ɵɵinject(Router)); }, token: AutoLoginGuard, providedIn: \"root\" });\r\nAutoLoginGuard.ctorParameters = () => [\r\n { type: AutoLoginService },\r\n { type: AuthStateService },\r\n { type: CheckAuthService },\r\n { type: LoginService },\r\n { type: Router }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AutoLoginGuard, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: AutoLoginService }, { type: AuthStateService }, { type: CheckAuthService }, { type: LoginService }, { type: ɵngcc2.Router }]; }, null); })();\n\nclass AuthInterceptor {\r\n constructor(authStateService, configurationProvider, loggerService) {\r\n this.authStateService = authStateService;\r\n this.configurationProvider = configurationProvider;\r\n this.loggerService = loggerService;\r\n }\r\n intercept(req, next) {\r\n // Ensure we send the token only to routes which are secured\r\n const { secureRoutes } = this.configurationProvider.getOpenIDConfiguration();\r\n if (!secureRoutes) {\r\n this.loggerService.logDebug(`No routes to check configured`);\r\n return next.handle(req);\r\n }\r\n const matchingRoute = secureRoutes.find((x) => req.url.startsWith(x));\r\n if (!matchingRoute) {\r\n this.loggerService.logDebug(`Did not find matching route for ${req.url}`);\r\n return next.handle(req);\r\n }\r\n this.loggerService.logDebug(`'${req.url}' matches configured route '${matchingRoute}'`);\r\n const token = this.authStateService.getAccessToken();\r\n if (!token) {\r\n this.loggerService.logDebug(`Wanted to add token to ${req.url} but found no token: '${token}'`);\r\n return next.handle(req);\r\n }\r\n this.loggerService.logDebug(`'${req.url}' matches configured route '${matchingRoute}', adding token`);\r\n req = req.clone({\r\n headers: req.headers.set('Authorization', 'Bearer ' + token),\r\n });\r\n return next.handle(req);\r\n }\r\n}\nAuthInterceptor.ɵfac = function AuthInterceptor_Factory(t) { return new (t || AuthInterceptor)(ɵngcc0.ɵɵinject(AuthStateService), ɵngcc0.ɵɵinject(ConfigurationProvider), ɵngcc0.ɵɵinject(LoggerService)); };\nAuthInterceptor.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AuthInterceptor, factory: AuthInterceptor.ɵfac });\r\nAuthInterceptor.ctorParameters = () => [\r\n { type: AuthStateService },\r\n { type: ConfigurationProvider },\r\n { type: LoggerService }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AuthInterceptor, [{\n type: Injectable\n }], function () { return [{ type: AuthStateService }, { type: ConfigurationProvider }, { type: LoggerService }]; }, null); })();\n\n// Public classes.\n\n/*\r\n * Public API Surface of angular-auth-oidc-client\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { AbstractSecurityStorage, AuthInterceptor, AuthModule, AuthorizedState, AutoLoginGuard, EventTypes, LogLevel, LoggerService, OidcConfigService, OidcSecurityService, PublicEventsService, StateValidationResult, TokenHelperService, TokenValidationService, ValidationResult, ConfigurationProvider as ɵa, PlatformProvider as ɵb, StateValidationService as ɵba, EqualityService as ɵbb, RefreshSessionCallbackHandlerService as ɵbc, RefreshTokenCallbackHandlerService as ɵbd, ImplicitFlowCallbackService as ɵbe, IntervallService as ɵbf, CallbackService as ɵbg, CodeFlowCallbackService as ɵbh, RefreshSessionService as ɵbi, RefreshSessionIframeService as ɵbj, RefreshSessionRefreshTokenService as ɵbk, PeriodicallyTokenCheckService as ɵbl, PopUpService as ɵbm, AutoLoginService as ɵbn, LogoffRevocationService as ɵbo, RedirectService as ɵbp, LoginService as ɵbq, ParLoginService as ɵbr, ResponseTypeValidationService as ɵbs, ParService as ɵbt, PopUpLoginService as ɵbu, StandardLoginService as ɵbv, BrowserStorageService as ɵbw, AuthWellKnownService as ɵc, AuthWellKnownDataService as ɵd, DataService as ɵe, HttpBaseService as ɵf, StoragePersistenceService as ɵg, ConfigValidationService as ɵh, FlowHelper as ɵi, CheckSessionService as ɵj, IFrameService as ɵk, CheckAuthService as ɵl, SilentRenewService as ɵm, FlowsService as ɵn, CodeFlowCallbackHandlerService as ɵo, UrlService as ɵp, FlowsDataService as ɵq, RandomService as ɵr, ImplicitFlowCallbackHandlerService as ɵs, ResetAuthDataService as ɵt, AuthStateService as ɵu, UserService as ɵv, HistoryJwtKeysCallbackHandlerService as ɵw, SigninKeyDataService as ɵx, UserCallbackHandlerService as ɵy, StateValidationCallbackHandlerService as ɵz };\n\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","var navigator = {};navigator.userAgent = false;var window = {};if(YAHOO===undefined){var YAHOO={}}YAHOO.lang={extend:function(g,h,f){if(!h||!g){throw new Error(\"YAHOO.lang.extend failed, please check that all dependencies are included.\")}var d=function(){};d.prototype=h.prototype;g.prototype=new d();g.prototype.constructor=g;g.superclass=h.prototype;if(h.prototype.constructor==Object.prototype.constructor){h.prototype.constructor=h}if(f){var b;for(b in f){g.prototype[b]=f[b]}var e=function(){},c=[\"toString\",\"valueOf\"];try{if(/MSIE/.test(navigator.userAgent)){e=function(j,i){for(b=0;b>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n>>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error(\"Malformed UTF-8 data\")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n==\"string\"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;p>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join(\"\")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}})();(function(k){for(var g=CryptoJS,h=g.lib,v=h.WordArray,j=h.Hasher,h=g.algo,s=[],t=[],u=function(q){return 4294967296*(q-(q|0))|0},l=2,b=0;64>b;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]=q[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes;b[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math);(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words,F=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<<3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0

>>0?1:0),b=b+c,j=j+u+(b>>>0>>0?1:0),b=b+t,j=j+q+(b>>>0>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0>>0?1:0),c=c+t,q=q+W+(c>>>0>>0?1:0),c=c+da,q=q+fa+(c>>>0>>0?1:0),c=c+b,q=q+j+(c>>>0>>0?1:0),b=u+T,s=p+s+(b>>>0>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0>>0?1:0);P=I.low=P+D;I.high=ba+S+(P>>>0>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})();(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384=d._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})();var b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";function hex2b64(d){var b;var e;var a=\"\";for(b=0;b+3<=d.length;b+=3){e=parseInt(d.substring(b,b+3),16);a+=b64map.charAt(e>>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d=\"\";var e;var b=0;var c;var a;for(e=0;e>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)==\"-\"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<>(this.DB-f))}else{this[this.t-1]|=a<=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return\"-\"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<0){if(j>j)>0){a=true;h=int2char(l)}while(f>=0){if(j>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:\"0\"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<>b;for(var c=e+1;c>b}if(b>0){d[this.t-e-1]|=(this.s&f)<>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d=0){d[b]=0}for(b=0;b=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);function bnClone(){var a=nbi();this.copyTo(a);return a}function bnIntValue(){if(this.s<0){if(this.t==1){return this[0]-this.DV}else{if(this.t==0){return -1}}}else{if(this.t==1){return this[0]}else{if(this.t==0){return 0}}}return((this[1]&((1<<(32-this.DB))-1))<>24}function bnShortValue(){return(this.t==0)?this.s:(this[0]<<16)>>16}function bnpChunkSize(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function bnSigNum(){if(this.s<0){return -1}else{if(this.t<=0||(this.t==1&&this[0]<=0)){return 0}else{return 1}}}function bnpToRadix(c){if(c==null){c=10}if(this.signum()==0||c<2||c>36){return\"0\"}var f=this.chunkSize(c);var e=Math.pow(c,f);var i=nbv(e),j=nbi(),h=nbi(),g=\"\";this.divRemTo(i,j,h);while(j.signum()>0){g=(e+h.intValue()).toString(c).substr(1)+g;j.divRemTo(i,j,h)}return h.intValue().toString(c)+g}function bnpFromRadix(m,h){this.fromInt(0);if(h==null){h=10}var f=this.chunkSize(h);var g=Math.pow(h,f),e=false,a=0,l=0;for(var c=0;c=f){this.dMultiply(g);this.dAddOffset(l,0);a=0;l=0}}if(a>0){this.dMultiply(Math.pow(h,a));this.dAddOffset(l,0)}if(e){BigInteger.ZERO.subTo(this,this)}}function bnpFromNumber(f,e,h){if(\"number\"==typeof e){if(f<2){this.fromInt(1)}else{this.fromNumber(f,h);if(!this.testBit(f-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(f-1),op_or,this)}if(this.isEven()){this.dAddOffset(1,0)}while(!this.isProbablePrime(e)){this.dAddOffset(2,0);if(this.bitLength()>f){this.subTo(BigInteger.ONE.shiftLeft(f-1),this)}}}}else{var d=new Array(),g=f&7;d.length=(f>>3)+1;e.nextBytes(d);if(g>0){d[0]&=((1<0){if(e>e)!=(this.s&this.DM)>>e){c[a++]=f|(this.s<<(this.DB-e))}while(b>=0){if(e<8){f=(this[b]&((1<>(e+=this.DB-8)}else{f=(this[b]>>(e-=8))&255;if(e<=0){e+=this.DB;--b}}if((f&128)!=0){f|=-256}if(a==0&&(this.s&128)!=(f&128)){++a}if(a>0||f!=this.s){c[a++]=f}}}return c}function bnEquals(b){return(this.compareTo(b)==0)}function bnMin(b){return(this.compareTo(b)<0)?this:b}function bnMax(b){return(this.compareTo(b)>0)?this:b}function bnpBitwiseTo(c,h,e){var d,g,b=Math.min(c.t,this.t);for(d=0;d>=16;b+=16}if((a&255)==0){a>>=8;b+=8}if((a&15)==0){a>>=4;b+=4}if((a&3)==0){a>>=2;b+=2}if((a&1)==0){++b}return b}function bnGetLowestSetBit(){for(var a=0;a=this.t){return(this.s!=0)}return((this[a]&(1<<(b%this.DB)))!=0)}function bnpChangeBit(c,b){var a=BigInteger.ONE.shiftLeft(c);this.bitwiseTo(a,b,a);return a}function bnSetBit(a){return this.changeBit(a,op_or)}function bnClearBit(a){return this.changeBit(a,op_andnot)}function bnFlipBit(a){return this.changeBit(a,op_xor)}function bnpAddTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g+=d.s}f.s=(g<0)?-1:0;if(g>0){f[e++]=g}else{if(g<-1){f[e++]=this.DV+g}}f.t=e;f.clamp()}function bnAdd(b){var c=nbi();this.addTo(b,c);return c}function bnSubtract(b){var c=nbi();this.subTo(b,c);return c}function bnMultiply(b){var c=nbi();this.multiplyTo(b,c);return c}function bnSquare(){var a=nbi();this.squareTo(a);return a}function bnDivide(b){var c=nbi();this.divRemTo(b,c,null);return c}function bnRemainder(b){var c=nbi();this.divRemTo(b,null,c);return c}function bnDivideAndRemainder(b){var d=nbi(),c=nbi();this.divRemTo(b,d,c);return new Array(d,c)}function bnpDMultiply(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(b,a){if(b==0){return}while(this.t<=a){this[this.t++]=0}this[a]+=b;while(this[a]>=this.DV){this[a]-=this.DV;if(++a>=this.t){this[this.t++]=0}++this[a]}}function NullExp(){}function nNop(a){return a}function nMulTo(a,c,b){a.multiplyTo(c,b)}function nSqrTo(a,b){a.squareTo(b)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(a){return this.exp(a,new NullExp())}function bnpMultiplyLowerTo(b,f,e){var d=Math.min(this.t+b.t,f);e.s=0;e.t=d;while(d>0){e[--d]=0}var c;for(c=e.t-this.t;d=0){d[c]=0}for(c=Math.max(e-this.t,0);c2*this.m.t){return a.mod(this.m)}else{if(a.compareTo(this.m)<0){return a}else{var b=nbi();a.copyTo(b);this.reduce(b);return b}}}function barrettRevert(a){return a}function barrettReduce(a){a.drShiftTo(this.m.t-1,this.r2);if(a.t>this.m.t+1){a.t=this.m.t+1;a.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(a.compareTo(this.r2)<0){a.dAddOffset(1,this.m.t+1)}a.subTo(this.r2,a);while(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function barrettSqrTo(a,b){a.squareTo(b);this.reduce(b)}function barrettMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(q,f){var o=q.bitLength(),h,b=nbv(1),v;if(o<=0){return b}else{if(o<18){h=1}else{if(o<48){h=3}else{if(o<144){h=4}else{if(o<768){h=5}else{h=6}}}}}if(o<8){v=new Classic(f)}else{if(f.isEven()){v=new Barrett(f)}else{v=new Montgomery(f)}}var p=new Array(),d=3,s=h-1,a=(1<1){var A=nbi();v.sqrTo(p[1],A);while(d<=a){p[d]=nbi();v.mulTo(A,p[d-2],p[d]);d+=2}}var l=q.t-1,x,u=true,c=nbi(),y;o=nbits(q[l])-1;while(l>=0){if(o>=s){x=(q[l]>>(o-s))&a}else{x=(q[l]&((1<<(o+1))-1))<<(s-o);if(l>0){x|=q[l-1]>>(this.DB+o-s)}}d=h;while((x&1)==0){x>>=1;--d}if((o-=d)<0){o+=this.DB;--l}if(u){p[x].copyTo(b);u=false}else{while(d>1){v.sqrTo(b,c);v.sqrTo(c,b);d-=2}if(d>0){v.sqrTo(b,c)}else{y=b;b=c;c=y}v.mulTo(c,p[x],b)}while(l>=0&&(q[l]&(1<0){b.rShiftTo(f,b);h.rShiftTo(f,h)}while(b.signum()>0){if((d=b.getLowestSetBit())>0){b.rShiftTo(d,b)}if((d=h.getLowestSetBit())>0){h.rShiftTo(d,h)}if(b.compareTo(h)>=0){b.subTo(h,b);b.rShiftTo(1,b)}else{h.subTo(b,h);h.rShiftTo(1,h)}}if(f>0){h.lShiftTo(f,h)}return h}function bnpModInt(e){if(e<=0){return 0}var c=this.DV%e,b=(this.s<0)?e-1:0;if(this.t>0){if(c==0){b=this[0]%e}else{for(var a=this.t-1;a>=0;--a){b=(c*b+this[a])%e}}}return b}function bnModInverse(f){var j=f.isEven();if((this.isEven()&&j)||f.signum()==0){return BigInteger.ZERO}var i=f.clone(),h=this.clone();var g=nbv(1),e=nbv(0),l=nbv(0),k=nbv(1);while(i.signum()!=0){while(i.isEven()){i.rShiftTo(1,i);if(j){if(!g.isEven()||!e.isEven()){g.addTo(this,g);e.subTo(f,e)}g.rShiftTo(1,g)}else{if(!e.isEven()){e.subTo(f,e)}}e.rShiftTo(1,e)}while(h.isEven()){h.rShiftTo(1,h);if(j){if(!l.isEven()||!k.isEven()){l.addTo(this,l);k.subTo(f,k)}l.rShiftTo(1,l)}else{if(!k.isEven()){k.subTo(f,k)}}k.rShiftTo(1,k)}if(i.compareTo(h)>=0){i.subTo(h,i);if(j){g.subTo(l,g)}e.subTo(k,e)}else{h.subTo(i,h);if(j){l.subTo(g,l)}k.subTo(e,k)}}if(h.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO}if(k.compareTo(f)>=0){return k.subtract(f)}if(k.signum()<0){k.addTo(f,k)}else{return k}if(k.signum()<0){return k.add(f)}else{return k}}var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var d,b=this.abs();if(b.t==1&&b[0]<=lowprimes[lowprimes.length-1]){for(d=0;d>1;if(f>lowprimes.length){f=lowprimes.length}var b=nbi();for(var e=0;e>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=new Array();rng_pptr=0;var t;if(window!==undefined&&(window.crypto!==undefined||window.msCrypto!==undefined)){var crypto=window.crypto||window.msCrypto;if(crypto.getRandomValues){var ua=new Uint8Array(32);crypto.getRandomValues(ua);for(t=0;t<32;++t){rng_pool[rng_pptr++]=ua[t]}}else{if(navigator.appName==\"Netscape\"&&navigator.appVersion<\"5\"){var z=window.crypto.random(32);for(t=0;t>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr=0&&h>0){var f=e.charCodeAt(d--);if(f<128){g[--h]=f}else{if((f>127)&&(f<2048)){g[--h]=(f&63)|128;g[--h]=(f>>6)|192}else{g[--h]=(f&63)|128;g[--h]=((f>>6)&63)|128;g[--h]=(f>>12)|224}}}g[--h]=0;var b=new SecureRandom();var a=new Array();while(h>2){a[0]=0;while(a[0]==0){b.nextBytes(a)}g[--h]=a[0]}g[--h]=2;g[--h]=0;return new BigInteger(g)}function oaep_mgf1_arr(c,a,e){var b=\"\",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255])));d+=1}return b}function oaep_pad(q,a,f,l){var c=KJUR.crypto.MessageDigest;var o=KJUR.crypto.Util;var b=null;if(!f){f=\"sha1\"}if(typeof f===\"string\"){b=c.getCanonicalAlgName(f);l=c.getHashLength(b);f=function(i){return hextorstr(o.hashHex(rstrtohex(i),b))}}if(q.length+2*l+2>a){throw\"Message too long for RSA\"}var k=\"\",e;for(e=0;e0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{throw\"Invalid RSA public key\"}}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}function RSAEncrypt(d){var a=pkcs1pad2(d,(this.n.bitLength()+7)>>3);if(a==null){return null}var e=this.doPublic(a);if(e==null){return null}var b=e.toString(16);if((b.length&1)==0){return b}else{return\"0\"+b}}function RSAEncryptOAEP(f,e,b){var a=oaep_pad(f,(this.n.bitLength()+7)>>3,e,b);if(a==null){return null}var g=this.doPublic(a);if(g==null){return null}var d=g.toString(16);if((d.length&1)==0){return d}else{return\"0\"+d}}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt;RSAKey.prototype.encryptOAEP=RSAEncryptOAEP;RSAKey.prototype.type=\"RSA\";function ECFieldElementFp(b,a){this.x=a;this.q=b}function feFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.x.equals(a.x))}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(a){return new ECFieldElementFp(this.q,this.x.add(a.toBigInteger()).mod(this.q))}function feFpSubtract(a){return new ECFieldElementFp(this.q,this.x.subtract(a.toBigInteger()).mod(this.q))}function feFpMultiply(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q))}ECFieldElementFp.prototype.equals=feFpEquals;ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger;ECFieldElementFp.prototype.negate=feFpNegate;ECFieldElementFp.prototype.add=feFpAdd;ECFieldElementFp.prototype.subtract=feFpSubtract;ECFieldElementFp.prototype.multiply=feFpMultiply;ECFieldElementFp.prototype.square=feFpSquare;ECFieldElementFp.prototype.divide=feFpDivide;function ECPointFp(c,a,d,b){this.curve=c;this.x=a;this.y=d;if(b==null){this.z=BigInteger.ONE}else{this.z=b}this.zinv=null}function pointFpGetX(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(a){if(a==this){return true}if(this.isInfinity()){return a.isInfinity()}if(a.isInfinity()){return this.isInfinity()}var c,b;c=a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q);if(!c.equals(BigInteger.ZERO)){return false}b=a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);return b.equals(BigInteger.ZERO)}function pointFpIsInfinity(){if((this.x==null)&&(this.y==null)){return true}return this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(l){if(this.isInfinity()){return l}if(l.isInfinity()){return this}var p=l.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(l.z)).mod(this.curve.q);var o=l.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(l.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(o)){if(BigInteger.ZERO.equals(p)){return this.twice()}return this.curve.getInfinity()}var j=new BigInteger(\"3\");var e=this.x.toBigInteger();var n=this.y.toBigInteger();var c=l.x.toBigInteger();var k=l.y.toBigInteger();var m=o.square();var i=m.multiply(o);var d=e.multiply(m);var g=p.square().multiply(this.z);var a=g.subtract(d.shiftLeft(1)).multiply(l.z).subtract(i).multiply(o).mod(this.curve.q);var h=d.multiply(j).multiply(p).subtract(n.multiply(i)).subtract(g.multiply(p)).multiply(l.z).add(p.multiply(i)).mod(this.curve.q);var f=i.multiply(this.z).multiply(l.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(h),f)}function pointFpTwice(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var g=new BigInteger(\"3\");var c=this.x.toBigInteger();var h=this.y.toBigInteger();var e=h.multiply(this.z);var j=e.multiply(h).mod(this.curve.q);var i=this.curve.a.toBigInteger();var k=c.square().multiply(g);if(!BigInteger.ZERO.equals(i)){k=k.add(this.z.square().multiply(i))}k=k.mod(this.curve.q);var b=k.square().subtract(c.shiftLeft(3).multiply(j)).shiftLeft(1).multiply(e).mod(this.curve.q);var f=k.multiply(g).multiply(c).subtract(j.shiftLeft(1)).shiftLeft(2).multiply(j).subtract(k.square().multiply(k)).mod(this.curve.q);var d=e.square().multiply(e).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(b),this.curve.fromBigInteger(f),d)}function pointFpMultiply(d){if(this.isInfinity()){return this}if(d.signum()==0){return this.curve.getInfinity()}var m=d;var l=m.multiply(new BigInteger(\"3\"));var b=this.negate();var j=this;var q=this.curve.q.subtract(d);var o=q.multiply(new BigInteger(\"3\"));var c=new ECPointFp(this.curve,this.x,this.y);var a=c.negate();var g;for(g=l.bitLength()-2;g>0;--g){j=j.twice();var n=l.testBit(g);var f=m.testBit(g);if(n!=f){j=j.add(n?this:b)}}for(g=o.bitLength()-2;g>0;--g){c=c.twice();var p=o.testBit(g);var r=q.testBit(g);if(p!=r){c=c.add(p?c:a)}}return j}function pointFpMultiplyTwo(c,a,b){var d;if(c.bitLength()>b.bitLength()){d=c.bitLength()-1}else{d=b.bitLength()-1}var f=this.curve.getInfinity();var e=this.add(a);while(d>=0){f=f.twice();if(c.testBit(d)){if(b.testBit(d)){f=f.add(e)}else{f=f.add(this)}}else{if(b.testBit(d)){f=f.add(a)}}--d}return f}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(e,d,c){this.q=e;this.a=this.fromBigInteger(d);this.b=this.fromBigInteger(c);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.a.equals(a.a)&&this.b.equals(a.b))}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(a){return new ECFieldElementFp(this.q,a)}function curveFpDecodePointHex(d){switch(parseInt(d.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var a=(d.length-2)/2;var c=d.substr(2,a);var b=d.substr(a+2,a);return new ECPointFp(this,this.fromBigInteger(new BigInteger(c,16)),this.fromBigInteger(new BigInteger(b,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex;ECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(c){var d=function(h,f){var g=h.toByteArrayUnsigned();if(fg.length){g.unshift(0)}}return g};var a=this.getX().toBigInteger();var e=this.getY().toBigInteger();var b=d(a,32);if(c){if(e.isEven()){b.unshift(2)}else{b.unshift(3)}}else{b.unshift(4);b=b.concat(d(e,32))}return b};ECPointFp.decodeFrom=function(g,c){var f=c[0];var e=c.length-1;var d=c.slice(1,1+e/2);var b=c.slice(1+e/2,1+e);d.unshift(0);b.unshift(0);var a=new BigInteger(d);var h=new BigInteger(b);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.decodeFromHex=function(g,c){var f=c.substr(0,2);var e=c.length-2;var d=c.substr(2,e/2);var b=c.substr(2+e/2,e/2);var a=new BigInteger(d,16);var h=new BigInteger(b,16);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.prototype.add2D=function(c){if(this.isInfinity()){return c}if(c.isInfinity()){return this}if(this.x.equals(c.x)){if(this.y.equals(c.y)){return this.twice()}return this.curve.getInfinity()}var g=c.x.subtract(this.x);var e=c.y.subtract(this.y);var a=e.divide(g);var d=a.square().subtract(this.x).subtract(c.x);var f=a.multiply(this.x.subtract(d)).subtract(this.y);return new ECPointFp(this.curve,d,f)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var b=this.curve.fromBigInteger(BigInteger.valueOf(2));var e=this.curve.fromBigInteger(BigInteger.valueOf(3));var a=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));var c=a.square().subtract(this.x.multiply(b));var d=a.multiply(this.x.subtract(c)).subtract(this.y);return new ECPointFp(this.curve,c,d)};ECPointFp.prototype.multiply2D=function(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger(\"3\"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add2D(a?this:l)}}return d};ECPointFp.prototype.isOnCurve=function(){var d=this.getX().toBigInteger();var i=this.getY().toBigInteger();var f=this.curve.getA().toBigInteger();var c=this.curve.getB().toBigInteger();var h=this.curve.getQ();var e=i.multiply(i).mod(h);var g=d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);return e.equals(g)};ECPointFp.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"};ECPointFp.prototype.validate=function(){var c=this.curve.getQ();if(this.isInfinity()){throw new Error(\"Point is at infinity.\")}var a=this.getX().toBigInteger();var b=this.getY().toBigInteger();if(a.compareTo(BigInteger.ONE)<0||a.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"x coordinate out of bounds\")}if(b.compareTo(BigInteger.ONE)<0||b.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"y coordinate out of bounds\")}if(!this.isOnCurve()){throw new Error(\"Point is not on the curve.\")}if(this.multiply(c).isInfinity()){throw new Error(\"Point is not a scalar multiple of G.\")}return true};var jsonParse=(function(){var e=\"(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)\";var j='(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:\"'+j+'*\")';var d=new RegExp(\"(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|\"+e+\"|\"+i+\")\",\"g\");var k=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\");var g={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String(\"\");var a=\"\\\\\";var f={\"{\":Object,\"[\":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if(\"{\"===v){x={}}else{if(\"[\"===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({\"\":x},\"\")}return x}})();if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.asn1==\"undefined\"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b=\"0\"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!=\"-\"){if(f.length%2==1){f=\"0\"+f}else{if(!f.match(/^[0-7]/)){f=\"00\"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g=\"\";for(var d=0;d15){throw\"ASN.1 length too long to represent by 8x: n = \"+i.toString(16)}var f=128+g;return f.toString(16)+h}};this.getEncodedHex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getValueHex=function(){this.getEncodedHex();return this.hV};this.getFreshValueHex=function(){return\"\"}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!=\"undefined\"){if(typeof c==\"string\"){this.setString(c)}else{if(typeof c.str!=\"undefined\"){this.setString(c.str)}else{if(typeof c.hex!=\"undefined\"){this.setStringHex(c.hex)}}}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o==\"utc\"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,\"\");r=r+\".\"+k}}return r+\"Z\"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join(\"0\")+e};this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=stohex(d)};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};YAHOO.lang.extend(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!=\"undefined\"){if(typeof b.array!=\"undefined\"){this.asn1Array=b.array}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT=\"01\";this.hTLV=\"0101ff\"};YAHOO.lang.extend(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT=\"02\";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!=\"undefined\"){if(typeof a.bigint!=\"undefined\"){this.setByBigInteger(a.bigint)}else{if(typeof a[\"int\"]!=\"undefined\"){this.setByInteger(a[\"int\"])}else{if(typeof a==\"number\"){this.setByInteger(a)}else{if(typeof a.hex!=\"undefined\"){this.setValueHex(a.hex)}}}}}};YAHOO.lang.extend(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=\"00\"+a.getEncodedHex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT=\"03\";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7=(l*2))){break}if(d>=200){break}g.push(b);c=b;d++}return g};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){throw\"checking tag doesn't match: \"+e.substr(d,2)+\"!=\"+i}}return d}f=c.shift();b=g.getChildIdx(e,d);return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getTLVbyList=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyList(d,c,b);if(a===undefined){throw\"can't find nthList object\"}if(f!==undefined){if(d.substr(a,2)!=f){throw\"checking tag doesn't match: \"+d.substr(a,2)+\"!=\"+f}}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a===undefined){throw\"can't find nthList object\"}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join(\"0\")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g0){n=n+\".\"+j.join(\".\")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.getEncodedHex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+\"..(total \"+A.length/2+\"bytes)..\"+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=\"\"}var x=c.ommit_long_octet;if(e.substr(l,2)==\"01\"){var h=j(e,l);if(h==\"00\"){return g+\"BOOLEAN FALSE\\n\"}else{return g+\"BOOLEAN TRUE\\n\"}}if(e.substr(l,2)==\"02\"){var h=j(e,l);return g+\"INTEGER \"+q(h,x)+\"\\n\"}if(e.substr(l,2)==\"03\"){var h=j(e,l);return g+\"BITSTRING \"+q(h,x)+\"\\n\"}if(e.substr(l,2)==\"04\"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+\"OCTETSTRING, encapsulates\\n\";k=k+y(h,c,0,g+\" \");return k}else{return g+\"OCTETSTRING \"+q(h,x)+\"\\n\"}}if(e.substr(l,2)==\"05\"){return g+\"NULL\\n\"}if(e.substr(l,2)==\"06\"){var m=j(e,l);var a=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(a);var b=a.replace(/\\./g,\" \");if(o!=\"\"){return g+\"ObjectIdentifier \"+o+\" (\"+b+\")\\n\"}else{return g+\"ObjectIdentifier (\"+b+\")\\n\"}}if(e.substr(l,2)==\"0c\"){return g+\"UTF8String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(e.substr(l,2)==\"13\"){return g+\"PrintableString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(e.substr(l,2)==\"14\"){return g+\"TeletexString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(e.substr(l,2)==\"16\"){return g+\"IA5String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(e.substr(l,2)==\"17\"){return g+\"UTCTime \"+hextoutf8(j(e,l))+\"\\n\"}if(e.substr(l,2)==\"18\"){return g+\"GeneralizedTime \"+hextoutf8(j(e,l))+\"\\n\"}if(e.substr(l,2)==\"30\"){if(e.substr(l,4)==\"3000\"){return g+\"SEQUENCE {}\\n\"}var k=g+\"SEQUENCE\\n\";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)==\"06\"&&e.substr(d[d.length-1],2)==\"04\"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;uf.length){f=c[d]}}e=e.replace(f,\"::\");return e.slice(1,-1)}function hextoip(b){var d=\"malformed hex value\";if(!b.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)){throw d}if(b.length==8){var c;try{c=parseInt(b.substr(0,2),16)+\".\"+parseInt(b.substr(2,2),16)+\".\"+parseInt(b.substr(4,2),16)+\".\"+parseInt(b.substr(6,2),16);return c}catch(a){throw d}}else{if(b.length==32){return hextoipv6(b)}else{return b}}}function iptohex(f){var j=\"malformed IP address\";f=f.toLowerCase(f);if(f.match(/^[0-9.]+$/)){var b=f.split(\".\");if(b.length!==4){throw j}var g=\"\";try{for(var e=0;e<4;e++){var h=parseInt(b[e]);g+=(\"0\"+h.toString(16)).slice(-2)}return g}catch(c){throw j}}else{if(f.match(/^[0-9a-f:]+$/)&&f.indexOf(\":\")!==-1){return ipv6tohex(f)}else{throw j}}}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b=\"\";for(var c=0;c\"7\"){return\"00\"+a}return a}function intarystrtohex(b){b=b.replace(/^\\s*\\[\\s*/,\"\");b=b.replace(/\\s*\\]\\s*$/,\"\");b=b.replace(/\\s*/g,\"\");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;bd){throw\"key is too short for SigAlg: keylen=\"+j+\",\"+a}var b=\"0001\";var k=\"00\"+c;var g=\"\";var l=d-b.length-k.length;for(var f=0;f=0;--q){r=r.twice2D();r.z=e.ONE;if(p.testBit(q)){if(o.testBit(q)){r=r.add2D(u)}else{r=r.add2D(t)}}else{if(o.testBit(q)){r=r.add2D(s)}}}return r}this.getBigRandom=function(m){return new e(m.bitLength(),a).mod(m.subtract(e.ONE)).add(e.ONE)};this.setNamedCurve=function(m){this.ecparams=c.getByName(m);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=m};this.setPrivateKeyHex=function(m){this.isPrivate=true;this.prvKeyHex=m};this.setPublicKeyHex=function(m){this.isPublic=true;this.pubKeyHex=m};this.getPublicKeyXYHex=function(){var o=this.pubKeyHex;if(o.substr(0,2)!==\"04\"){throw\"this method supports uncompressed format(04) only\"}var n=this.ecparams.keylen/4;if(o.length!==2+n*2){throw\"malformed public key hex length\"}var m={};m.x=o.substr(2,n);m.y=o.substr(2+n);return m};this.getShortNISTPCurveName=function(){var m=this.curveName;if(m===\"secp256r1\"||m===\"NIST P-256\"||m===\"P-256\"||m===\"prime256v1\"){return\"P-256\"}if(m===\"secp384r1\"||m===\"NIST P-384\"||m===\"P-384\"){return\"P-384\"}return null};this.generateKeyPairHex=function(){var o=this.ecparams.n;var r=this.getBigRandom(o);var p=this.ecparams.G.multiply(r);var u=p.getX().toBigInteger();var s=p.getY().toBigInteger();var m=this.ecparams.keylen/4;var q=(\"0000000000\"+r.toString(16)).slice(-m);var v=(\"0000000000\"+u.toString(16)).slice(-m);var t=(\"0000000000\"+s.toString(16)).slice(-m);var n=\"04\"+v+t;this.setPrivateKeyHex(q);this.setPublicKeyHex(n);return{ecprvhex:q,ecpubhex:n}};this.signWithMessageHash=function(m){return this.signHex(m,this.prvKeyHex)};this.signHex=function(t,o){var w=new e(o,16);var p=this.ecparams.n;var v=new e(t.substring(0,this.ecparams.keylen/4),16);do{var q=this.getBigRandom(p);var x=this.ecparams.G;var u=x.multiply(q);var m=u.getX().toBigInteger().mod(p)}while(m.compareTo(e.ZERO)<=0);var y=q.modInverse(p).multiply(v.add(w.multiply(m))).mod(p);return j.biRSSigToASN1Sig(m,y)};this.sign=function(q,x){var v=x;var o=this.ecparams.n;var u=e.fromByteArrayUnsigned(q);do{var p=this.getBigRandom(o);var w=this.ecparams.G;var t=w.multiply(p);var m=t.getX().toBigInteger().mod(o)}while(m.compareTo(BigInteger.ZERO)<=0);var y=p.modInverse(o).multiply(u.add(v.multiply(m))).mod(o);return this.serializeSig(m,y)};this.verifyWithMessageHash=function(n,m){return this.verifyHex(n,m,this.pubKeyHex)};this.verifyHex=function(q,m,v){var p,n;var u=j.parseSigHex(m);p=u.r;n=u.s;var o=g.decodeFromHex(this.ecparams.curve,v);var t=new e(q.substring(0,this.ecparams.keylen/4),16);return this.verifyRaw(t,p,n,o)};this.verify=function(u,v,n){var p,m;if(Bitcoin.Util.isArray(v)){var t=this.parseSig(v);p=t.r;m=t.s}else{if(\"object\"===typeof v&&v.r&&v.s){p=v.r;m=v.s}else{throw\"Invalid value for signature\"}}var o;if(n instanceof ECPointFp){o=n}else{if(Bitcoin.Util.isArray(n)){o=g.decodeFrom(this.ecparams.curve,n)}else{throw\"Invalid format for pubkey value, must be byte array or ECPointFp\"}}var q=e.fromByteArrayUnsigned(u);return this.verifyRaw(q,p,m,o)};this.verifyRaw=function(u,m,A,t){var q=this.ecparams.n;var z=this.ecparams.G;if(m.compareTo(e.ONE)<0||m.compareTo(q)>=0){return false}if(A.compareTo(e.ONE)<0||A.compareTo(q)>=0){return false}var w=A.modInverse(q);var p=u.multiply(w).mod(q);var o=m.multiply(w).mod(q);var x=z.multiply(p).add(t.multiply(o));var y=x.getX().toBigInteger().mod(q);return y.equals(m)};this.serializeSig=function(o,n){var p=o.toByteArraySigned();var m=n.toByteArraySigned();var q=[];q.push(2);q.push(p.length);q=q.concat(p);q.push(2);q.push(m.length);q=q.concat(m);q.unshift(q.length);q.unshift(48);return q};this.parseSig=function(t){var q;if(t[0]!=48){throw new Error(\"Signature not a valid DERSequence\")}q=2;if(t[q]!=2){throw new Error(\"First element in signature must be a DERInteger\")}var p=t.slice(q+2,q+2+t[q+1]);q+=2+t[q+1];if(t[q]!=2){throw new Error(\"Second element in signature must be a DERInteger\")}var m=t.slice(q+2,q+2+t[q+1]);q+=2+t[q+1];var o=e.fromByteArrayUnsigned(p);var n=e.fromByteArrayUnsigned(m);return{r:o,s:n}};this.parseSigCompact=function(q){if(q.length!==65){throw\"Signature has the wrong length\"}var m=q[0]-27;if(m<0||m>7){throw\"Invalid signature type\"}var t=this.ecparams.n;var p=e.fromByteArrayUnsigned(q.slice(1,33)).mod(t);var o=e.fromByteArrayUnsigned(q.slice(33,65)).mod(t);return{r:p,s:o,i:m}};this.readPKCS5PrvKeyHex=function(p){var r=ASN1HEX,q=j.getName,t=r.getVbyList;if(r.isASN1HEX(p)===false){throw\"not ASN.1 hex string\"}var m,o,s;try{m=t(p,0,[2,0],\"06\");o=t(p,0,[1],\"04\");try{s=t(p,0,[3,0],\"03\").substr(2)}catch(n){}}catch(n){throw\"malformed PKCS#1/5 plain ECC private key\"}this.curveName=q(m);if(this.curveName===undefined){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(s);this.setPrivateKeyHex(o);this.isPublic=false};this.readPKCS8PrvKeyHex=function(p){var u=ASN1HEX;var m=KJUR.crypto.ECDSA.getName;var r=u.getVbyList;if(u.isASN1HEX(p)===false){throw\"not ASN.1 hex string\"}var n,t,q,o;try{n=r(p,0,[1,0],\"06\");t=r(p,0,[1,1],\"06\");q=r(p,0,[2,0,1],\"04\");try{o=r(p,0,[2,0,2,0],\"03\").substr(2)}catch(s){}}catch(s){throw\"malformed PKCS#8 plain ECC private key\"}this.curveName=m(t);if(this.curveName===undefined){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(o);this.setPrivateKeyHex(q);this.isPublic=false};this.readPKCS8PubKeyHex=function(p){var r=ASN1HEX;var q=KJUR.crypto.ECDSA.getName;var t=r.getVbyList;if(r.isASN1HEX(p)===false){throw\"not ASN.1 hex string\"}var o,m,s;try{o=t(p,0,[0,0],\"06\");m=t(p,0,[0,1],\"06\");s=t(p,0,[1],\"03\").substr(2)}catch(n){throw\"malformed PKCS#8 ECC public key\"}this.curveName=q(m);if(this.curveName===null){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(s)};this.readCertPubKeyHex=function(o,t){if(t!==5){t=6}var q=ASN1HEX;var p=j.getName;var s=q.getVbyList;if(q.isASN1HEX(o)===false){throw\"not ASN.1 hex string\"}var m,r;try{m=s(o,0,[0,t,0,1],\"06\");r=s(o,0,[0,t,1],\"03\").substr(2)}catch(n){throw\"malformed X.509 certificate ECC public key\"}this.curveName=p(m);if(this.curveName===null){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(r)};if(d!==undefined){if(d.curve!==undefined){this.curveName=d.curve}}if(this.curveName===undefined){this.curveName=f}this.setNamedCurve(this.curveName);if(d!==undefined){if(d.prv!==undefined){this.setPrivateKeyHex(d.prv)}if(d.pub!==undefined){this.setPublicKeyHex(d.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;if(f.substr(0,2)!=\"30\"){throw\"signature is not a ASN.1 sequence\"}var h=i(f,0);if(h.length!=2){throw\"number of signature ASN.1 sequence elements seem wrong\"}var e=h[0];var d=h[1];if(f.substr(e,2)!=\"02\"){throw\"1st item of sequene of signature is not ASN.1 integer\"}if(f.substr(d,2)!=\"02\"){throw\"2nd item of sequene of signature is not ASN.1 integer\"}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(c){var d=KJUR.crypto.ECDSA.parseSigHexInHexRS(c);var b=d.r;var a=d.s;if(b.substr(0,2)==\"00\"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)==\"00\"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b=\"00\"+b}if((a.length%32)==30){a=\"00\"+a}if(b.length%32!=0){throw\"unknown ECDSA sig r length error\"}if(a.length%32!=0){throw\"unknown ECDSA sig s length error\"}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if((((a.length/2)*8)%(16*8))!=0){throw\"unknown ECDSA concatinated r-s sig length error\"}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.getEncodedHex()};KJUR.crypto.ECDSA.getName=function(a){if(a===\"2b8104001f\"){return\"secp192k1\"}if(a===\"2a8648ce3d030107\"){return\"secp256r1\"}if(a===\"2b8104000a\"){return\"secp256k1\"}if(a===\"2b81040021\"){return\"secp224r1\"}if(a===\"2b81040022\"){return\"secp384r1\"}if(\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(a)!==-1){return\"secp256r1\"}if(\"|secp256k1|\".indexOf(a)!==-1){return\"secp256k1\"}if(\"|secp224r1|NIST P-224|P-224|\".indexOf(a)!==-1){return\"secp224r1\"}if(\"|secp384r1|NIST P-384|P-384|\".indexOf(a)!==-1){return\"secp384r1\"}return null};if(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!=\"undefined\"){d=c[e]}if(typeof b[d]!=\"undefined\"){return b[d]}throw\"unregistered EC curve name: \"+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex(\"04\"+f+k);b[A][\"name\"]=A;b[A][\"keylen\"]=l;b[A][\"curve\"]=r;b[A][\"G\"]=q;b[A][\"n\"]=t;b[A][\"h\"]=w;b[A][\"oid\"]=d;b[A][\"info\"]=x;for(var v=0;v=u*2){break}}var z={};z.keyhex=x.substr(0,i[q][\"keylen\"]*2);z.ivhex=x.substr(i[q][\"keylen\"]*2,i[q][\"ivlen\"]*2);return z};var b=function(p,v,r,w){var s=CryptoJS.enc.Base64.parse(p);var q=CryptoJS.enc.Hex.stringify(s);var u=i[v][\"proc\"];var t=u(q,r,w);return t};var h=function(p,s,q,u){var r=i[s][\"eproc\"];var t=r(p,q,u);return t};return{version:\"1.0.0\",parsePKCS5PEM:function(p){return n(p)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(q,p,r){return j(q,p,r)},decryptKeyB64:function(p,r,q,s){return b(p,r,q,s)},getDecryptedKeyHex:function(y,x){var q=n(y);var t=q.type;var r=q.cipher;var p=q.ivsalt;var s=q.data;var w=j(r,x,p);var v=w.keyhex;var u=b(s,r,v,p);return u},getEncryptedPKCS5PEMFromPrvKeyHex:function(x,s,A,t,r){var p=\"\";if(typeof t==\"undefined\"||t==null){t=\"AES-256-CBC\"}if(typeof i[t]==\"undefined\"){throw\"KEYUTIL unsupported algorithm: \"+t}if(typeof r==\"undefined\"||r==null){var v=i[t][\"ivlen\"];var u=m(v);r=u.toUpperCase()}var z=j(t,A,r);var y=z.keyhex;var w=h(s,t,y,r);var q=w.replace(/(.{64})/g,\"$1\\r\\n\");var p=\"-----BEGIN \"+x+\" PRIVATE KEY-----\\r\\n\";p+=\"Proc-Type: 4,ENCRYPTED\\r\\n\";p+=\"DEK-Info: \"+t+\",\"+r+\"\\r\\n\";p+=\"\\r\\n\";p+=q;p+=\"\\r\\n-----END \"+x+\" PRIVATE KEY-----\\r\\n\";return p},parseHexOfEncryptedPKCS8:function(y){var B=ASN1HEX;var z=B.getChildIdx;var w=B.getV;var t={};var r=z(y,0);if(r.length!=2){throw\"malformed format: SEQUENCE(0).items != 2: \"+r.length}t.ciphertext=w(y,r[1]);var A=z(y,r[0]);if(A.length!=2){throw\"malformed format: SEQUENCE(0.0).items != 2: \"+A.length}if(w(y,A[0])!=\"2a864886f70d01050d\"){throw\"this only supports pkcs5PBES2\"}var p=z(y,A[1]);if(A.length!=2){throw\"malformed format: SEQUENCE(0.0.1).items != 2: \"+p.length}var q=z(y,p[1]);if(q.length!=2){throw\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+q.length}if(w(y,q[0])!=\"2a864886f70d0307\"){throw\"this only supports TripleDES\"}t.encryptionSchemeAlg=\"TripleDES\";t.encryptionSchemeIV=w(y,q[1]);var s=z(y,p[0]);if(s.length!=2){throw\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+s.length}if(w(y,s[0])!=\"2a864886f70d01050c\"){throw\"this only supports pkcs5PBKDF2\"}var x=z(y,s[1]);if(x.length<2){throw\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+x.length}t.pbkdf2Salt=w(y,x[0]);var u=w(y,x[1]);try{t.pbkdf2Iter=parseInt(u,16)}catch(v){throw\"malformed format pbkdf2Iter: \"+u}return t},getPBKDF2KeyHexFromParam:function(u,p){var t=CryptoJS.enc.Hex.parse(u.pbkdf2Salt);var q=u.pbkdf2Iter;var s=CryptoJS.PBKDF2(p,t,{keySize:192/32,iterations:q});var r=CryptoJS.enc.Hex.stringify(s);return r},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(x,y){var r=pemtohex(x,\"ENCRYPTED PRIVATE KEY\");var p=this.parseHexOfEncryptedPKCS8(r);var u=KEYUTIL.getPBKDF2KeyHexFromParam(p,y);var v={};v.ciphertext=CryptoJS.enc.Hex.parse(p.ciphertext);var t=CryptoJS.enc.Hex.parse(u);var s=CryptoJS.enc.Hex.parse(p.encryptionSchemeIV);var w=CryptoJS.TripleDES.decrypt(v,t,{iv:s});var q=CryptoJS.enc.Hex.stringify(w);return q},getKeyFromEncryptedPKCS8PEM:function(s,q){var p=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(s,q);var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},parsePlainPrivatePKCS8Hex:function(s){var v=ASN1HEX;var u=v.getChildIdx;var t=v.getV;var q={};q.algparam=null;if(s.substr(0,2)!=\"30\"){throw\"malformed plain PKCS8 private key(code:001)\"}var r=u(s,0);if(r.length!=3){throw\"malformed plain PKCS8 private key(code:002)\"}if(s.substr(r[1],2)!=\"30\"){throw\"malformed PKCS8 private key(code:003)\"}var p=u(s,r[1]);if(p.length!=2){throw\"malformed PKCS8 private key(code:004)\"}if(s.substr(p[0],2)!=\"06\"){throw\"malformed PKCS8 private key(code:005)\"}q.algoid=t(s,p[0]);if(s.substr(p[1],2)==\"06\"){q.algparam=t(s,p[1])}if(s.substr(r[2],2)!=\"04\"){throw\"malformed PKCS8 private key(code:006)\"}q.keyidx=v.getVidx(s,r[2]);return q},getKeyFromPlainPrivatePKCS8PEM:function(q){var p=pemtohex(q,\"PRIVATE KEY\");var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},getKeyFromPlainPrivatePKCS8Hex:function(p){var q=this.parsePlainPrivatePKCS8Hex(p);var r;if(q.algoid==\"2a864886f70d010101\"){r=new RSAKey()}else{if(q.algoid==\"2a8648ce380401\"){r=new KJUR.crypto.DSA()}else{if(q.algoid==\"2a8648ce3d0201\"){r=new KJUR.crypto.ECDSA()}else{throw\"unsupported private key algorithm\"}}}r.readPKCS8PrvKeyHex(p);return r},_getKeyFromPublicPKCS8Hex:function(q){var p;var r=ASN1HEX.getVbyList(q,0,[0,0],\"06\");if(r===\"2a864886f70d010101\"){p=new RSAKey()}else{if(r===\"2a8648ce380401\"){p=new KJUR.crypto.DSA()}else{if(r===\"2a8648ce3d0201\"){p=new KJUR.crypto.ECDSA()}else{throw\"unsupported PKCS#8 public key hex\"}}}p.readPKCS8PubKeyHex(q);return p},parsePublicRawRSAKeyHex:function(r){var u=ASN1HEX;var t=u.getChildIdx;var s=u.getV;var p={};if(r.substr(0,2)!=\"30\"){throw\"malformed RSA key(code:001)\"}var q=t(r,0);if(q.length!=2){throw\"malformed RSA key(code:002)\"}if(r.substr(q[0],2)!=\"02\"){throw\"malformed RSA key(code:003)\"}p.n=s(r,q[0]);if(r.substr(q[1],2)!=\"02\"){throw\"malformed RSA key(code:004)\"}p.e=s(r,q[1]);return p},parsePublicPKCS8Hex:function(t){var v=ASN1HEX;var u=v.getChildIdx;var s=v.getV;var q={};q.algparam=null;var r=u(t,0);if(r.length!=2){throw\"outer DERSequence shall have 2 elements: \"+r.length}var w=r[0];if(t.substr(w,2)!=\"30\"){throw\"malformed PKCS8 public key(code:001)\"}var p=u(t,w);if(p.length!=2){throw\"malformed PKCS8 public key(code:002)\"}if(t.substr(p[0],2)!=\"06\"){throw\"malformed PKCS8 public key(code:003)\"}q.algoid=s(t,p[0]);if(t.substr(p[1],2)==\"06\"){q.algparam=s(t,p[1])}else{if(t.substr(p[1],2)==\"30\"){q.algparam={};q.algparam.p=v.getVbyList(t,p[1],[0],\"02\");q.algparam.q=v.getVbyList(t,p[1],[1],\"02\");q.algparam.g=v.getVbyList(t,p[1],[2],\"02\")}}if(t.substr(r[1],2)!=\"03\"){throw\"malformed PKCS8 public key(code:004)\"}q.key=s(t,r[1]).substr(2);return q},}}();KEYUTIL.getKey=function(l,k,n){var G=ASN1HEX,L=G.getChildIdx,v=G.getV,d=G.getVbyList,c=KJUR.crypto,i=c.ECDSA,C=c.DSA,w=RSAKey,M=pemtohex,F=KEYUTIL;if(typeof w!=\"undefined\"&&l instanceof w){return l}if(typeof i!=\"undefined\"&&l instanceof i){return l}if(typeof C!=\"undefined\"&&l instanceof C){return l}if(l.curve!==undefined&&l.xy!==undefined&&l.d===undefined){return new i({pub:l.xy,curve:l.curve})}if(l.curve!==undefined&&l.d!==undefined){return new i({prv:l.d,curve:l.curve})}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(l.n,l.e);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.co!==undefined&&l.qi===undefined){var P=new w();P.setPrivateEx(l.n,l.e,l.d,l.p,l.q,l.dp,l.dq,l.co);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p===undefined){var P=new w();P.setPrivate(l.n,l.e,l.d);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x===undefined){var P=new C();P.setPublic(l.p,l.q,l.g,l.y);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x!==undefined){var P=new C();P.setPrivate(l.p,l.q,l.g,l.y,l.x);return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(b64utohex(l.n),b64utohex(l.e));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.qi!==undefined){var P=new w();P.setPrivateEx(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d),b64utohex(l.p),b64utohex(l.q),b64utohex(l.dp),b64utohex(l.dq),b64utohex(l.qi));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined){var P=new w();P.setPrivate(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d));return P}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d===undefined){var j=new i({curve:l.crv});var t=j.ecparams.keylen/4;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;j.setPublicKeyHex(u);return j}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d!==undefined){var j=new i({curve:l.crv});var t=j.ecparams.keylen/4;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;var b=(\"0000000000\"+b64utohex(l.d)).slice(-t);j.setPublicKeyHex(u);j.setPrivateKeyHex(b);return j}if(n===\"pkcs5prv\"){var J=l,G=ASN1HEX,N,P;N=L(J,0);if(N.length===9){P=new w();P.readPKCS5PrvKeyHex(J)}else{if(N.length===6){P=new C();P.readPKCS5PrvKeyHex(J)}else{if(N.length>2&&J.substr(N[1],2)===\"04\"){P=new i();P.readPKCS5PrvKeyHex(J)}else{throw\"unsupported PKCS#1/5 hexadecimal key\"}}}return P}if(n===\"pkcs8prv\"){var P=F.getKeyFromPlainPrivatePKCS8Hex(l);return P}if(n===\"pkcs8pub\"){return F._getKeyFromPublicPKCS8Hex(l)}if(n===\"x509pub\"){return X509.getPublicKeyFromCertHex(l)}if(l.indexOf(\"-END CERTIFICATE-\",0)!=-1||l.indexOf(\"-END X509 CERTIFICATE-\",0)!=-1||l.indexOf(\"-END TRUSTED CERTIFICATE-\",0)!=-1){return X509.getPublicKeyFromCertPEM(l)}if(l.indexOf(\"-END PUBLIC KEY-\")!=-1){var O=pemtohex(l,\"PUBLIC KEY\");return F._getKeyFromPublicPKCS8Hex(O)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"RSA PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var I=M(l,\"DSA PRIVATE KEY\");var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"EC PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END PRIVATE KEY-\")!=-1){return F.getKeyFromPlainPrivatePKCS8PEM(l)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var o=F.getDecryptedKeyHex(l,k);var H=new RSAKey();H.readPKCS5PrvKeyHex(o);return H}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var P=d(I,0,[1],\"04\");var f=d(I,0,[2,0],\"06\");var A=d(I,0,[3,0],\"03\").substr(2);var e=\"\";if(KJUR.crypto.OID.oidhex2name[f]!==undefined){e=KJUR.crypto.OID.oidhex2name[f]}else{throw\"undefined OID(hex) in KJUR.crypto.OID: \"+f}var j=new i({curve:e});j.setPublicKeyHex(A);j.setPrivateKeyHex(P);j.isPublic=false;return j}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END ENCRYPTED PRIVATE KEY-\")!=-1){return F.getKeyFromEncryptedPKCS8PEM(l,k)}throw\"not supported argument\"};KEYUTIL.generateKeypair=function(a,c){if(a==\"RSA\"){var b=c;var h=new RSAKey();h.generate(b,\"10001\");h.isPrivate=true;h.isPublic=true;var f=new RSAKey();var e=h.n.toString(16);var i=h.e.toString(16);f.setPublic(e,i);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{if(a==\"EC\"){var d=c;var g=new KJUR.crypto.ECDSA({curve:d});var j=g.generateKeyPairHex();var h=new KJUR.crypto.ECDSA({curve:d});h.setPublicKeyHex(j.ecpubhex);h.setPrivateKeyHex(j.ecprvhex);h.isPrivate=true;h.isPublic=false;var f=new KJUR.crypto.ECDSA({curve:d});f.setPublicKeyHex(j.ecpubhex);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{throw\"unknown algorithm: \"+a}}};KEYUTIL.getPEM=function(b,D,y,m,q,j){var F=KJUR,k=F.asn1,z=k.DERObjectIdentifier,f=k.DERInteger,l=k.ASN1Util.newObject,a=k.x509,C=a.SubjectPublicKeyInfo,e=F.crypto,u=e.DSA,r=e.ECDSA,n=RSAKey;function A(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.n}},{\"int\":s.e},{\"int\":{bigint:s.d}},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.dmp1}},{\"int\":{bigint:s.dmq1}},{\"int\":{bigint:s.coeff}}]});return G}function B(G){var s=l({seq:[{\"int\":1},{octstr:{hex:G.prvKeyHex}},{tag:[\"a0\",true,{oid:{name:G.curveName}}]},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+G.pubKeyHex}}]}]});return s}function x(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.g}},{\"int\":{bigint:s.y}},{\"int\":{bigint:s.x}}]});return G}if(((n!==undefined&&b instanceof n)||(u!==undefined&&b instanceof u)||(r!==undefined&&b instanceof r))&&b.isPublic==true&&(D===undefined||D==\"PKCS8PUB\")){var E=new C(b);var w=E.getEncodedHex();return hextopem(w,\"PUBLIC KEY\")}if(D==\"PKCS1PRV\"&&n!==undefined&&b instanceof n&&(y===undefined||y==null)&&b.isPrivate==true){var E=A(b);var w=E.getEncodedHex();return hextopem(w,\"RSA PRIVATE KEY\")}if(D==\"PKCS1PRV\"&&r!==undefined&&b instanceof r&&(y===undefined||y==null)&&b.isPrivate==true){var i=new z({name:b.curveName});var v=i.getEncodedHex();var h=B(b);var t=h.getEncodedHex();var p=\"\";p+=hextopem(v,\"EC PARAMETERS\");p+=hextopem(t,\"EC PRIVATE KEY\");return p}if(D==\"PKCS1PRV\"&&u!==undefined&&b instanceof u&&(y===undefined||y==null)&&b.isPrivate==true){var E=x(b);var w=E.getEncodedHex();return hextopem(w,\"DSA PRIVATE KEY\")}if(D==\"PKCS5PRV\"&&n!==undefined&&b instanceof n&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=A(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",w,y,m,j)}if(D==\"PKCS5PRV\"&&r!==undefined&&b instanceof r&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=B(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",w,y,m,j)}if(D==\"PKCS5PRV\"&&u!==undefined&&b instanceof u&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=x(b);var w=E.getEncodedHex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",w,y,m,j)}var o=function(G,s){var I=c(G,s);var H=new l({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:I.pbkdf2Salt}},{\"int\":I.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:I.encryptionSchemeIV}}]}]}]},{octstr:{hex:I.ciphertext}}]});return H.getEncodedHex()};var c=function(N,O){var H=100;var M=CryptoJS.lib.WordArray.random(8);var L=\"DES-EDE3-CBC\";var s=CryptoJS.lib.WordArray.random(8);var I=CryptoJS.PBKDF2(O,M,{keySize:192/32,iterations:H});var J=CryptoJS.enc.Hex.parse(N);var K=CryptoJS.TripleDES.encrypt(J,I,{iv:s})+\"\";var G={};G.ciphertext=K;G.pbkdf2Salt=CryptoJS.enc.Hex.stringify(M);G.pbkdf2Iter=H;G.encryptionSchemeAlg=L;G.encryptionSchemeIV=CryptoJS.enc.Hex.stringify(s);return G};if(D==\"PKCS8PRV\"&&n!=undefined&&b instanceof n&&b.isPrivate==true){var g=A(b);var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"rsaEncryption\"}},{\"null\":true}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&r!==undefined&&b instanceof r&&b.isPrivate==true){var g=new l({seq:[{\"int\":1},{octstr:{hex:b.prvKeyHex}},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+b.pubKeyHex}}]}]});var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:b.curveName}}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&u!==undefined&&b instanceof u&&b.isPrivate==true){var g=new f({bigint:b.x});var d=g.getEncodedHex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"dsa\"}},{seq:[{\"int\":{bigint:b.p}},{\"int\":{bigint:b.q}},{\"int\":{bigint:b.g}}]}]},{octstr:{hex:d}}]});var w=E.getEncodedHex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}throw\"unsupported object nor format\"};KEYUTIL.getKeyFromCSRPEM=function(b){var a=pemtohex(b,\"CERTIFICATE REQUEST\");var c=KEYUTIL.getKeyFromCSRHex(a);return c};KEYUTIL.getKeyFromCSRHex=function(a){var c=KEYUTIL.parseCSRHex(a);var b=KEYUTIL.getKey(c.p8pubkeyhex,null,\"pkcs8pub\");return b};KEYUTIL.parseCSRHex=function(d){var i=ASN1HEX;var f=i.getChildIdx;var c=i.getTLV;var b={};var g=d;if(g.substr(0,2)!=\"30\"){throw\"malformed CSR(code:001)\"}var e=f(g,0);if(e.length<1){throw\"malformed CSR(code:002)\"}if(g.substr(e[0],2)!=\"30\"){throw\"malformed CSR(code:003)\"}var a=f(g,e[0]);if(a.length<3){throw\"malformed CSR(code:004)\"}b.p8pubkeyhex=c(g,a[2]);return b};KEYUTIL.getJWKFromKey=function(d){var b={};if(d instanceof RSAKey&&d.isPrivate){b.kty=\"RSA\";b.n=hextob64u(d.n.toString(16));b.e=hextob64u(d.e.toString(16));b.d=hextob64u(d.d.toString(16));b.p=hextob64u(d.p.toString(16));b.q=hextob64u(d.q.toString(16));b.dp=hextob64u(d.dmp1.toString(16));b.dq=hextob64u(d.dmq1.toString(16));b.qi=hextob64u(d.coeff.toString(16));return b}else{if(d instanceof RSAKey&&d.isPublic){b.kty=\"RSA\";b.n=hextob64u(d.n.toString(16));b.e=hextob64u(d.e.toString(16));return b}else{if(d instanceof KJUR.crypto.ECDSA&&d.isPrivate){var a=d.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"){throw\"unsupported curve name for JWT: \"+a}var c=d.getPublicKeyXYHex();b.kty=\"EC\";b.crv=a;b.x=hextob64u(c.x);b.y=hextob64u(c.y);b.d=hextob64u(d.prvKeyHex);return b}else{if(d instanceof KJUR.crypto.ECDSA&&d.isPublic){var a=d.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"){throw\"unsupported curve name for JWT: \"+a}var c=d.getPublicKeyXYHex();b.kty=\"EC\";b.crv=a;b.x=hextob64u(c.x);b.y=hextob64u(c.y);return b}}}}throw\"not supported key object\"};RSAKey.getPosArrayOfChildrenFromHex=function(a){return ASN1HEX.getChildIdx(a,0)};RSAKey.getHexValueArrayOfChildrenFromHex=function(f){var n=ASN1HEX;var i=n.getV;var k=RSAKey.getPosArrayOfChildrenFromHex(f);var e=i(f,k[0]);var j=i(f,k[1]);var b=i(f,k[2]);var c=i(f,k[3]);var h=i(f,k[4]);var g=i(f,k[5]);var m=i(f,k[6]);var l=i(f,k[7]);var d=i(f,k[8]);var k=new Array();k.push(e,j,b,c,h,g,m,l,d);return k};RSAKey.prototype.readPrivateKeyFromPEMString=function(d){var c=pemtohex(d);var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS5PrvKeyHex=function(c){var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS8PrvKeyHex=function(e){var c,j,l,b,a,f,d,k;var m=ASN1HEX;var g=m.getVbyList;if(m.isASN1HEX(e)===false){throw\"not ASN.1 hex string\"}try{c=g(e,0,[2,0,1],\"02\");j=g(e,0,[2,0,2],\"02\");l=g(e,0,[2,0,3],\"02\");b=g(e,0,[2,0,4],\"02\");a=g(e,0,[2,0,5],\"02\");f=g(e,0,[2,0,6],\"02\");d=g(e,0,[2,0,7],\"02\");k=g(e,0,[2,0,8],\"02\")}catch(i){throw\"malformed PKCS#8 plain RSA private key\"}this.setPrivateEx(c,j,l,b,a,f,d,k)};RSAKey.prototype.readPKCS5PubKeyHex=function(c){var e=ASN1HEX;var b=e.getV;if(e.isASN1HEX(c)===false){throw\"keyHex is not ASN.1 hex string\"}var a=e.getChildIdx(c,0);if(a.length!==2||c.substr(a[0],2)!==\"02\"||c.substr(a[1],2)!==\"02\"){throw\"wrong hex for PKCS#5 public key\"}var f=b(c,a[0]);var d=b(c,a[1]);this.setPublic(f,d)};RSAKey.prototype.readPKCS8PubKeyHex=function(b){var c=ASN1HEX;if(c.isASN1HEX(b)===false){throw\"not ASN.1 hex string\"}if(c.getTLVbyList(b,0,[0,0])!==\"06092a864886f70d010101\"){throw\"not PKCS8 RSA public key\"}var a=c.getTLVbyList(b,0,[1,0]);this.readPKCS5PubKeyHex(a)};RSAKey.prototype.readCertPubKeyHex=function(b,d){var a,c;a=new X509();a.readCertHex(b);c=a.getPublicKeyHex();this.readPKCS8PubKeyHex(c)};var _RE_HEXDECONLY=new RegExp(\"[^0-9a-f]\",\"gi\");function _rsasign_getHexPaddedDigestInfoForString(d,e,a){var b=function(f){return KJUR.crypto.Util.hashString(f,a)};var c=b(d);return KJUR.crypto.Util.getPaddedDigestInfoHex(c,a,e)}function _zeroPaddingOfSignature(e,d){var c=\"\";var a=d/4-e.length;for(var b=0;b>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}RSAKey.prototype.signPSS=function(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)};RSAKey.prototype.signWithMessageHashPSS=function(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw\"invalid salt length\"}}}if(c<(g+k+2)){throw\"data too long\"}var f=\"\";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+b+f)));var j=[];for(d=0;d>(8*c-m))&255;q[0]&=~p;for(d=0;dthis.n.bitLength()){return 0}var i=this.doPublic(b);var e=i.toString(16).replace(/^1f+00/,\"\");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(k){return KJUR.crypto.Util.hashString(k,d)};var c=a(f);return(h==c)};RSAKey.prototype.verifyWithMessageHash=function(e,a){a=a.replace(_RE_HEXDECONLY,\"\");a=a.replace(/[ \\n]+/g,\"\");var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,\"\");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)};RSAKey.prototype.verifyPSS=function(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)};RSAKey.prototype.verifyWithMessageHashPSS=function(f,s,l,c){var k=new BigInteger(s,16);if(k.bitLength()>this.n.bitLength()){return false}var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw\"invalid salt length\"}}}if(m<(h+c+2)){throw\"data too long\"}var a=this.doPublic(k).toByteArray();for(q=0;q>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw\"bits beyond keysize not zero\"}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q0){var b=\":\"+n.join(\":\")+\":\";if(b.indexOf(\":\"+k+\":\")==-1){throw\"algorithm '\"+k+\"' not accepted in the list\"}}if(k!=\"none\"&&B===null){throw\"key shall be specified to verify.\"}if(typeof B==\"string\"&&B.indexOf(\"-----BEGIN \")!=-1){B=KEYUTIL.getKey(B)}if(z==\"RS\"||z==\"PS\"){if(!(B instanceof m)){throw\"key shall be a RSAKey obj for RS* and PS* algs\"}}if(z==\"ES\"){if(!(B instanceof p)){throw\"key shall be a ECDSA obj for ES* algs\"}}if(k==\"none\"){}var u=null;if(t.jwsalg2sigalg[l.alg]===undefined){throw\"unsupported alg name: \"+k}else{u=t.jwsalg2sigalg[k]}if(u==\"none\"){throw\"not supported\"}else{if(u.substr(0,4)==\"Hmac\"){var o=null;if(B===undefined){throw\"hexadecimal key shall be specified for HMAC\"}var j=new s({alg:u,pass:B});j.updateString(c);o=j.doFinal();return A==o}else{if(u.indexOf(\"withECDSA\")!=-1){var h=null;try{h=p.concatSigToASN1Sig(A)}catch(v){return false}var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(h)}else{var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(A)}}}};KJUR.jws.JWS.parse=function(g){var c=g.split(\".\");var b={};var f,e,d;if(c.length!=2&&c.length!=3){throw\"malformed sJWS: wrong number of '.' splitted elements\"}f=c[0];e=c[1];if(c.length==3){d=c[2]}b.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));b.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));b.headerPP=JSON.stringify(b.headerObj,null,\" \");if(b.payloadObj==null){b.payloadPP=b64utoutf8(e)}else{b.payloadPP=JSON.stringify(b.payloadObj,null,\" \")}if(d!==undefined){b.sigHex=b64utohex(d)}return b};KJUR.jws.JWS.verifyJWT=function(e,l,r){var d=KJUR,j=d.jws,o=j.JWS,n=o.readSafeJSONString,p=o.inArray,f=o.includedArray;var k=e.split(\".\");var c=k[0];var i=k[1];var q=c+\".\"+i;var m=b64utohex(k[2]);var h=n(b64utoutf8(c));var g=n(b64utoutf8(i));if(h.alg===undefined){return false}if(r.alg===undefined){throw\"acceptField.alg shall be specified\"}if(!p(h.alg,r.alg)){return false}if(g.iss!==undefined&&typeof r.iss===\"object\"){if(!p(g.iss,r.iss)){return false}}if(g.sub!==undefined&&typeof r.sub===\"object\"){if(!p(g.sub,r.sub)){return false}}if(g.aud!==undefined&&typeof r.aud===\"object\"){if(typeof g.aud==\"string\"){if(!p(g.aud,r.aud)){return false}}else{if(typeof g.aud==\"object\"){if(!f(g.aud,r.aud)){return false}}}}var b=j.IntDate.getNow();if(r.verifyAt!==undefined&&typeof r.verifyAt===\"number\"){b=r.verifyAt}if(r.gracePeriod===undefined||typeof r.gracePeriod!==\"number\"){r.gracePeriod=0}if(g.exp!==undefined&&typeof g.exp==\"number\"){if(g.exp+r.gracePeriod= 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 (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//! 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 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 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: 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 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 format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\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 : 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: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en 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.29.4\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 if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\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\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 }\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\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\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\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\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 function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\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 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 return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\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 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 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 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 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 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 // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\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 var dayOfMonth;\n\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 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\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 for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\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 for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\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 // 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 // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\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 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 // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\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 // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\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 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\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 // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\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);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\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 return name.match('^[^/\\\\\\\\]*$') != null;\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 eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\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 addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\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(),\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 // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\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 // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\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 // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\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 // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\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 // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\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 // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\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 // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\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\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.29.4';\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 { ɵɵdefineInjectable, Injectable, Component, Input, EventEmitter, Inject, Output, HostBinding, NgModule } from '@angular/core';\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { CommonModule } from '@angular/common';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\n\n/**\n * Configuration service, provides default values for the AccordionComponent.\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from 'ngx-bootstrap/collapse';\n\nconst _c0 = [\"*\"];\nconst _c1 = function (a0) { return { \"text-muted\": a0 }; };\nfunction AccordionPanelComponent_button_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 7);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(2, _c1, ctx_r0.isDisabled));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.heading, \" \");\n} }\nconst _c2 = [[[\"\", \"accordion-heading\", \"\"]], \"*\"];\nconst _c3 = [\"[accordion-heading]\", \"*\"];\nclass AccordionConfig {\n constructor() {\n /** Whether the other panels should be closed when a panel is opened */\n this.closeOthers = false;\n /** turn on/off animation */\n this.isAnimated = false;\n }\n}\nAccordionConfig.ɵfac = function AccordionConfig_Factory(t) { return new (t || AccordionConfig)(); };\nAccordionConfig.ɵprov = ɵɵdefineInjectable({ factory: function AccordionConfig_Factory() { return new AccordionConfig(); }, token: AccordionConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AccordionConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\n\n/** Displays collapsible content panels for presenting information in a limited amount of space. */\nclass AccordionComponent {\n constructor(config) {\n /** turn on/off animation */\n this.isAnimated = false;\n /** if `true` expanding one item will close all others */\n this.closeOthers = false;\n this.groups = [];\n Object.assign(this, config);\n }\n closeOtherPanels(openGroup) {\n if (!this.closeOthers) {\n return;\n }\n this.groups.forEach((group) => {\n if (group !== openGroup) {\n group.isOpen = false;\n }\n });\n }\n addGroup(group) {\n group.isAnimated = this.isAnimated;\n this.groups.push(group);\n }\n removeGroup(group) {\n const index = this.groups.indexOf(group);\n if (index !== -1) {\n this.groups.splice(index, 1);\n }\n }\n}\nAccordionComponent.ɵfac = function AccordionComponent_Factory(t) { return new (t || AccordionComponent)(ɵngcc0.ɵɵdirectiveInject(AccordionConfig)); };\nAccordionComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AccordionComponent, selectors: [[\"accordion\"]], hostAttrs: [\"role\", \"tablist\", 1, \"panel-group\", 2, \"display\", \"block\"], hostVars: 1, hostBindings: function AccordionComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-multiselectable\", ctx.closeOthers);\n } }, inputs: { isAnimated: \"isAnimated\", closeOthers: \"closeOthers\" }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function AccordionComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\nAccordionComponent.ctorParameters = () => [\n { type: AccordionConfig }\n];\nAccordionComponent.propDecorators = {\n isAnimated: [{ type: Input }],\n closeOthers: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AccordionComponent, [{\n type: Component,\n args: [{\n selector: 'accordion',\n template: ``,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.aria-multiselectable]': 'closeOthers',\n role: 'tablist',\n class: 'panel-group',\n style: 'display: block'\n }\n }]\n }], function () { return [{ type: AccordionConfig }]; }, { isAnimated: [{\n type: Input\n }], closeOthers: [{\n type: Input\n }] }); })();\n\n/**\n * ### Accordion heading\n * Instead of using `heading` attribute on the `accordion-group`, you can use\n * an `accordion-heading` attribute on `any` element inside of a group that\n * will be used as group's header template.\n */\nclass AccordionPanelComponent {\n constructor(accordion) {\n /** turn on/off animation */\n this.isAnimated = false;\n /** Provides an ability to use Bootstrap's contextual panel classes\n * (`panel-primary`, `panel-success`, `panel-info`, etc...).\n * List of all available classes [available here]\n * (https://getbootstrap.com/docs/3.3/components/#panels-alternatives)\n */\n this.panelClass = 'panel-default';\n /** if true — disables accordion group */\n this.isDisabled = false;\n /** Emits when the opened state changes */\n this.isOpenChange = new EventEmitter();\n this._isOpen = false;\n this.accordion = accordion;\n }\n // Questionable, maybe .panel-open should be on child div.panel element?\n /** Is accordion group open or closed. This property supports two-way binding */\n get isOpen() {\n return this._isOpen;\n }\n set isOpen(value) {\n if (value !== this.isOpen) {\n if (value) {\n this.accordion.closeOtherPanels(this);\n }\n this._isOpen = value;\n Promise.resolve(null)\n .then(() => {\n this.isOpenChange.emit(value);\n });\n }\n }\n get isBs3() {\n return isBs3();\n }\n ngOnInit() {\n this.accordion.addGroup(this);\n }\n ngOnDestroy() {\n this.accordion.removeGroup(this);\n }\n toggleOpen() {\n if (!this.isDisabled) {\n this.isOpen = !this.isOpen;\n }\n }\n}\nAccordionPanelComponent.ɵfac = function AccordionPanelComponent_Factory(t) { return new (t || AccordionPanelComponent)(ɵngcc0.ɵɵdirectiveInject(AccordionComponent)); };\nAccordionPanelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AccordionPanelComponent, selectors: [[\"accordion-group\"], [\"accordion-panel\"]], hostAttrs: [1, \"panel\", 2, \"display\", \"block\"], hostVars: 2, hostBindings: function AccordionPanelComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"panel-open\", ctx.isOpen);\n } }, inputs: { panelClass: \"panelClass\", isDisabled: \"isDisabled\", isOpen: \"isOpen\", heading: \"heading\" }, outputs: { isOpenChange: \"isOpenChange\" }, ngContentSelectors: _c3, decls: 9, vars: 6, consts: [[1, \"panel\", \"card\", 3, \"ngClass\"], [\"role\", \"tab\", 1, \"panel-heading\", \"card-header\", 3, \"ngClass\", \"click\"], [1, \"panel-title\"], [\"role\", \"button\", 1, \"accordion-toggle\"], [\"class\", \"btn btn-link\", \"type\", \"button\", 3, \"ngClass\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 1, \"panel-collapse\", \"collapse\", 3, \"collapse\", \"isAnimated\"], [1, \"panel-body\", \"card-block\", \"card-body\"], [\"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"ngClass\"]], template: function AccordionPanelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c2);\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function AccordionPanelComponent_Template_div_click_1_listener() { return ctx.toggleOpen(); });\n ɵngcc0.ɵɵelementStart(2, \"div\", 2)(3, \"div\", 3);\n ɵngcc0.ɵɵtemplate(4, AccordionPanelComponent_button_4_Template, 2, 4, \"button\", 4);\n ɵngcc0.ɵɵprojection(5);\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5)(7, \"div\", 6);\n ɵngcc0.ɵɵprojection(8, 1);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.panelClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.isDisabled ? \"panel-disabled\" : \"panel-enabled\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.isOpen);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.heading);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"collapse\", !ctx.isOpen)(\"isAnimated\", ctx.isAnimated);\n } }, directives: [ɵngcc1.NgClass, ɵngcc1.NgIf, ɵngcc2.CollapseDirective], styles: [\"[_nghost-%COMP%] .card-header.panel-enabled[_ngcontent-%COMP%]{cursor:pointer}[_nghost-%COMP%] .card-header.panel-disabled[_ngcontent-%COMP%] .btn.btn-link[_ngcontent-%COMP%]{cursor:default;text-decoration:none}\"] });\nAccordionPanelComponent.ctorParameters = () => [\n { type: AccordionComponent, decorators: [{ type: Inject, args: [AccordionComponent,] }] }\n];\nAccordionPanelComponent.propDecorators = {\n heading: [{ type: Input }],\n panelClass: [{ type: Input }],\n isDisabled: [{ type: Input }],\n isOpenChange: [{ type: Output }],\n isOpen: [{ type: HostBinding, args: ['class.panel-open',] }, { type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AccordionPanelComponent, [{\n type: Component,\n args: [{\n selector: 'accordion-group, accordion-panel',\n template: \"

\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n\\n\",\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'panel',\n style: 'display: block'\n },\n styles: [\":host .card-header.panel-enabled{cursor:pointer}:host .card-header.panel-disabled .btn.btn-link{cursor:default;text-decoration:none}\"]\n }]\n }], function () { return [{ type: AccordionComponent, decorators: [{\n type: Inject,\n args: [AccordionComponent]\n }] }]; }, { panelClass: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isOpenChange: [{\n type: Output\n }], isOpen: [{\n type: HostBinding,\n args: ['class.panel-open']\n }, {\n type: Input\n }], heading: [{\n type: Input\n }] }); })();\n\nclass AccordionModule {\n static forRoot() {\n return { ngModule: AccordionModule, providers: [] };\n }\n}\nAccordionModule.ɵfac = function AccordionModule_Factory(t) { return new (t || AccordionModule)(); };\nAccordionModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AccordionModule });\nAccordionModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, CollapseModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AccordionModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, CollapseModule],\n declarations: [AccordionComponent, AccordionPanelComponent],\n exports: [AccordionComponent, AccordionPanelComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AccordionModule, { declarations: function () { return [AccordionComponent, AccordionPanelComponent]; }, imports: function () { return [CommonModule, CollapseModule]; }, exports: function () { return [AccordionComponent, AccordionPanelComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AccordionComponent, AccordionConfig, AccordionModule, AccordionPanelComponent };\n\n","function mod(n, x) {\n return (n % x + x) % x;\n}\nfunction absFloor(num) {\n return num < 0 ? Math.ceil(num) || 0 : Math.floor(num);\n}\n\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nfunction isBoolean(value) {\n return value === true || value === false;\n}\nfunction isDateValid(date) {\n return date && date.getTime && !isNaN(date.getTime());\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isFunction(fn) {\n return (fn instanceof Function ||\n Object.prototype.toString.call(fn) === '[object Function]');\n}\nfunction isNumber(value) {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\nfunction isArray(input) {\n return (input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]');\n}\nfunction hasOwnProp(a /*object*/, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\nfunction isObject(input /*object*/) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (input != null && Object.prototype.toString.call(input) === '[object Object]');\n}\nfunction isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n }\n let k;\n for (k in obj) {\n // eslint-disable-next-line no-prototype-builtins\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n}\nfunction isUndefined(input) {\n return input === void 0;\n}\nfunction toInt(argumentForCoercion) {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n}\n\nconst aliases = {};\nconst _mapUnits = {\n date: 'day',\n hour: 'hours',\n minute: 'minutes',\n second: 'seconds',\n millisecond: 'milliseconds'\n};\nfunction addUnitAlias(unit, shorthand) {\n const lowerCase = unit.toLowerCase();\n let _unit = unit;\n if (lowerCase in _mapUnits) {\n _unit = _mapUnits[lowerCase];\n }\n aliases[lowerCase] = aliases[`${lowerCase}s`] = aliases[shorthand] = _unit;\n}\nfunction normalizeUnits(units) {\n return isString(units) ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\nfunction normalizeObjectUnits(inputObject) {\n const normalizedInput = {};\n let normalizedProp;\n let prop;\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 return normalizedInput;\n}\n\n// place in new Date([array])\nconst YEAR = 0;\nconst MONTH = 1;\nconst DATE = 2;\nconst HOUR = 3;\nconst MINUTE = 4;\nconst SECOND = 5;\nconst MILLISECOND = 6;\nconst WEEK = 7;\nconst WEEKDAY = 8;\n\nfunction zeroFill(num, targetLength, forceSign) {\n const absNumber = `${Math.abs(num)}`;\n const zerosToFill = targetLength - absNumber.length;\n const sign = num >= 0;\n const _sign = sign ? (forceSign ? '+' : '') : '-';\n // todo: this is crazy slow\n const _zeros = Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1);\n return (_sign + _zeros + absNumber);\n}\n\nconst formatFunctions = {};\nconst formatTokenFunctions = {};\nconst formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken(token, padded, ordinal, callback) {\n if (token) {\n formatTokenFunctions[token] = callback;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(callback.apply(null, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function (date, opts) {\n return opts.locale.ordinal(callback.apply(null, arguments), token);\n };\n }\n}\nfunction makeFormatFunction(format) {\n const array = format.match(formattingTokens);\n const length = array.length;\n const formatArr = new Array(length);\n for (let i = 0; i < length; i++) {\n formatArr[i] = formatTokenFunctions[array[i]]\n ? formatTokenFunctions[array[i]]\n : removeFormattingTokens(array[i]);\n }\n return function (date, locale, isUTC, offset = 0) {\n let output = '';\n for (let j = 0; j < length; j++) {\n output += isFunction(formatArr[j])\n ? formatArr[j].call(null, date, { format, locale, isUTC, offset })\n : formatArr[j];\n }\n return output;\n };\n}\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction createUTCDate(y, m, d) {\n // eslint-disable-next-line prefer-rest-params\n const date = new Date(Date.UTC.apply(null, arguments));\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\nfunction createDate(y, m = 0, d = 1, h = 0, M = 0, s = 0, ms = 0) {\n const date = new Date(y, m, d, h, M, s, ms);\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction getHours(date, isUTC = false) {\n return isUTC ? date.getUTCHours() : date.getHours();\n}\nfunction getMinutes(date, isUTC = false) {\n return isUTC ? date.getUTCMinutes() : date.getMinutes();\n}\nfunction getSeconds(date, isUTC = false) {\n return isUTC ? date.getUTCSeconds() : date.getSeconds();\n}\nfunction getMilliseconds(date, isUTC = false) {\n return isUTC ? date.getUTCMilliseconds() : date.getMilliseconds();\n}\nfunction getTime(date) {\n return date.getTime();\n}\nfunction getDay(date, isUTC = false) {\n return isUTC ? date.getUTCDay() : date.getDay();\n}\nfunction getDate(date, isUTC = false) {\n return isUTC ? date.getUTCDate() : date.getDate();\n}\nfunction getMonth(date, isUTC = false) {\n return isUTC ? date.getUTCMonth() : date.getMonth();\n}\nfunction getFullYear(date, isUTC = false) {\n return isUTC ? date.getUTCFullYear() : date.getFullYear();\n}\nfunction getUnixTime(date) {\n return Math.floor(date.valueOf() / 1000);\n}\nfunction unix(date) {\n return Math.floor(date.valueOf() / 1000);\n}\nfunction getFirstDayOfMonth(date) {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds());\n}\nfunction daysInMonth(date) {\n return _daysInMonth(date.getFullYear(), date.getMonth());\n}\nfunction _daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\nfunction isFirstDayOfWeek(date, firstDayOfWeek) {\n return date.getDay() === Number(firstDayOfWeek);\n}\nfunction isSameMonth(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return isSameYear(date1, date2) && getMonth(date1) === getMonth(date2);\n}\nfunction isSameYear(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return getFullYear(date1) === getFullYear(date2);\n}\nfunction isSameDay(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return (isSameYear(date1, date2) &&\n isSameMonth(date1, date2) &&\n getDate(date1) === getDate(date2));\n}\n\nconst match1 = /\\d/; // 0 - 9\nconst match2 = /\\d\\d/; // 00 - 99\nconst match3 = /\\d{3}/; // 000 - 999\nconst match4 = /\\d{4}/; // 0000 - 9999\nconst match6 = /[+-]?\\d{6}/; // -999999 - 999999\nconst match1to2 = /\\d\\d?/; // 0 - 99\nconst match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nconst match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nconst match1to3 = /\\d{1,3}/; // 0 - 999\nconst match1to4 = /\\d{1,4}/; // 0 - 9999\nconst match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\nconst matchUnsigned = /\\d+/; // 0 - inf\nconst matchSigned = /[+-]?\\d+/; // -inf - inf\nconst matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nconst matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\nconst 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\nconst matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\nconst regexes = {};\nfunction addRegexToken(token, regex, strictRegex) {\n if (isFunction(regex)) {\n regexes[token] = regex;\n return;\n }\n regexes[token] = function (isStrict, locale) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\nfunction getParseRegexForToken(token, locale) {\n const _strict = false;\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n return regexes[token](_strict, locale);\n}\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(str) {\n return regexEscape(str\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, (matched, p1, p2, p3, p4) => p1 || p2 || p3 || p4));\n}\nfunction regexEscape(str) {\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nconst tokens = {};\nfunction addParseToken(token, callback) {\n const _token = isString(token) ? [token] : token;\n let func = callback;\n if (isNumber(callback)) {\n func = function (input, array, config) {\n array[callback] = toInt(input);\n return config;\n };\n }\n if (isArray(_token) && isFunction(func)) {\n let i;\n for (i = 0; i < _token.length; i++) {\n tokens[_token[i]] = func;\n }\n }\n}\nfunction addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, _token) {\n config._w = config._w || {};\n return callback(input, config._w, config, _token);\n });\n}\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n return config;\n}\n\nconst priorities = {};\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n/*\nexport function getPrioritizedUnits(unitsObj) {\n const units = [];\n let unit;\n for (unit in unitsObj) {\n if (unitsObj.hasOwnProperty(unit)) {\n units.push({ unit, priority: priorities[unit] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n\n return units;\n}\n*/\n\nfunction initDayOfMonth() {\n // FORMATTING\n addFormatToken('D', ['DD', 2, false], 'Do', function (date, opts) {\n return getDate(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('date', 'D');\n // PRIOROITY\n addUnitPriority('date', 9);\n // PARSING\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n return locale._dayOfMonthOrdinalParse || locale._ordinalParse;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array, config) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n return config;\n });\n}\n\nfunction 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 invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n}\nfunction getParsingFlags(config) {\n if (config._pf == null) {\n config._pf = defaultParsingFlags();\n }\n return config._pf;\n}\n\n// FORMATTING\nfunction getYear(date, opts) {\n if (opts.locale.getFullYear) {\n return opts.locale.getFullYear(date, opts.isUTC).toString();\n }\n return getFullYear(date, opts.isUTC).toString();\n}\nfunction initYear() {\n addFormatToken('Y', null, null, function (date, opts) {\n const y = getFullYear(date, opts.isUTC);\n return y <= 9999 ? y.toString(10) : `+${y}`;\n });\n addFormatToken(null, ['YY', 2, false], null, function (date, opts) {\n return (getFullYear(date, opts.isUTC) % 100).toString(10);\n });\n addFormatToken(null, ['YYYY', 4, false], null, getYear);\n addFormatToken(null, ['YYYYY', 5, false], null, getYear);\n addFormatToken(null, ['YYYYYY', 6, true], null, getYear);\n // ALIASES\n addUnitAlias('year', 'y');\n // PRIORITIES\n addUnitPriority('year', 1);\n // PARSING\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 addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array, config) {\n array[YEAR] = input.length === 2 ? parseTwoDigitYear(input) : toInt(input);\n return config;\n });\n addParseToken('YY', function (input, array, config) {\n array[YEAR] = parseTwoDigitYear(input);\n return config;\n });\n addParseToken('Y', function (input, array, config) {\n array[YEAR] = parseInt(input, 10);\n return config;\n });\n}\nfunction parseTwoDigitYear(input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n}\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// todo: this is duplicate, source in date-getters.ts\nfunction daysInMonth$1(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n const modMonth = mod(month, 12);\n const _year = year + (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(_year) ? 29 : 28\n : (31 - modMonth % 7 % 2);\n}\nfunction initMonth() {\n // FORMATTING\n addFormatToken('M', ['MM', 2, false], 'Mo', function (date, opts) {\n return (getMonth(date, opts.isUTC) + 1).toString(10);\n });\n addFormatToken('MMM', null, null, function (date, opts) {\n return opts.locale.monthsShort(date, opts.format, opts.isUTC);\n });\n addFormatToken('MMMM', null, null, function (date, opts) {\n return opts.locale.months(date, opts.format, opts.isUTC);\n });\n // ALIASES\n addUnitAlias('month', 'M');\n // PRIORITY\n addUnitPriority('month', 8);\n // PARSING\n addRegexToken('M', match1to2);\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 addParseToken(['M', 'MM'], function (input, array, config) {\n array[MONTH] = toInt(input) - 1;\n return config;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n const 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 }\n else {\n getParsingFlags(config).invalidMonth = !!input;\n }\n return config;\n });\n}\n\nconst defaultTimeUnit = {\n year: 0,\n month: 0,\n day: 0,\n hour: 0,\n minute: 0,\n seconds: 0\n};\nfunction shiftDate(date, unit) {\n const _unit = Object.assign({}, defaultTimeUnit, unit);\n const year = date.getFullYear() + (_unit.year || 0);\n const month = date.getMonth() + (_unit.month || 0);\n let day = date.getDate() + (_unit.day || 0);\n if (_unit.month && !_unit.day) {\n day = Math.min(day, daysInMonth$1(year, month));\n }\n return createDate(year, month, day, date.getHours() + (_unit.hour || 0), date.getMinutes() + (_unit.minute || 0), date.getSeconds() + (_unit.seconds || 0));\n}\nfunction setFullDate(date, unit) {\n return createDate(getNum(date.getFullYear(), unit.year), getNum(date.getMonth(), unit.month), 1, // day, to avoid issue with wrong months selection at the end of current month (#5371)\n getNum(date.getHours(), unit.hour), getNum(date.getMinutes(), unit.minute), getNum(date.getSeconds(), unit.seconds), getNum(date.getMilliseconds(), unit.milliseconds));\n}\nfunction getNum(def, num) {\n return isNumber(num) ? num : def;\n}\nfunction setFullYear(date, value, isUTC) {\n const _month = getMonth(date, isUTC);\n const _date = getDate(date, isUTC);\n const _year = getFullYear(date, isUTC);\n if (isLeapYear(_year) && _month === 1 && _date === 29) {\n const _daysInMonth = daysInMonth$1(value, _month);\n isUTC ? date.setUTCFullYear(value, _month, _daysInMonth) : date.setFullYear(value, _month, _daysInMonth);\n }\n isUTC ? date.setUTCFullYear(value) : date.setFullYear(value);\n return date;\n}\nfunction setMonth(date, value, isUTC) {\n const dayOfMonth = Math.min(getDate(date), daysInMonth$1(getFullYear(date), value));\n isUTC ? date.setUTCMonth(value, dayOfMonth) : date.setMonth(value, dayOfMonth);\n return date;\n}\nfunction setDay(date, value, isUTC) {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n return date;\n}\nfunction setHours(date, value, isUTC) {\n isUTC ? date.setUTCHours(value) : date.setHours(value);\n return date;\n}\nfunction setMinutes(date, value, isUTC) {\n isUTC ? date.setUTCMinutes(value) : date.setMinutes(value);\n return date;\n}\nfunction setSeconds(date, value, isUTC) {\n isUTC ? date.setUTCSeconds(value) : date.setSeconds(value);\n return date;\n}\nfunction setMilliseconds(date, value, isUTC) {\n isUTC ? date.setUTCMilliseconds(value) : date.setMilliseconds(value);\n return date;\n}\nfunction setDate(date, value, isUTC) {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n return date;\n}\nfunction setTime(date, value) {\n date.setTime(value);\n return date;\n}\n\n// fastest way to clone date\n// https://jsperf.com/clone-date-object2\nfunction cloneDate(date) {\n return new Date(date.getTime());\n}\n\nfunction startOf(date, unit, isUTC) {\n const _date = cloneDate(date);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (unit) {\n case 'year':\n setMonth(_date, 0, isUTC);\n /* falls through */\n case 'quarter':\n case 'month':\n setDate(_date, 1, isUTC);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n setHours(_date, 0, isUTC);\n /* falls through */\n case 'hours':\n setMinutes(_date, 0, isUTC);\n /* falls through */\n case 'minutes':\n setSeconds(_date, 0, isUTC);\n /* falls through */\n case 'seconds':\n setMilliseconds(_date, 0, isUTC);\n }\n // weeks are a special case\n if (unit === 'week') {\n setLocaleDayOfWeek(_date, 0, { isUTC });\n }\n if (unit === 'isoWeek') {\n setISODayOfWeek(_date, 1);\n }\n // quarters are also special\n if (unit === 'quarter') {\n setMonth(_date, Math.floor(getMonth(_date, isUTC) / 3) * 3, isUTC);\n }\n return _date;\n}\nfunction endOf(date, unit, isUTC) {\n let _unit = unit;\n // 'date' is an alias for 'day', so it should be considered as such.\n if (_unit === 'date') {\n _unit = 'day';\n }\n const start = startOf(date, _unit, isUTC);\n const _step = add(start, 1, _unit === 'isoWeek' ? 'week' : _unit, isUTC);\n const res = subtract(_step, 1, 'milliseconds', isUTC);\n return res;\n}\n\nfunction initDayOfYear() {\n // FORMATTING\n addFormatToken('DDD', ['DDDD', 3, false], 'DDDo', function (date) {\n return getDayOfYear(date)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('dayOfYear', 'DDD');\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n return config;\n });\n}\nfunction getDayOfYear(date, isUTC) {\n const date1 = +startOf(date, 'day', isUTC);\n const date2 = +startOf(date, 'year', isUTC);\n const someDate = date1 - date2;\n const oneDay = 1000 * 60 * 60 * 24;\n return Math.round(someDate / oneDay) + 1;\n}\nfunction setDayOfYear(date, input) {\n const dayOfYear = getDayOfYear(date);\n return add(date, (input - dayOfYear), 'day');\n}\n\n/**\n *\n * @param {number} year\n * @param {number} dow - start-of-first-week\n * @param {number} doy - start-of-year\n * @returns {number}\n */\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n const fwd = dow - doy + 7;\n // first-week day local weekday -- which local weekday is fwd\n const fwdlw = (createUTCDate(year, 0, fwd).getUTCDay() - dow + 7) % 7;\n return -fwdlw + fwd - 1;\n}\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n const localWeekday = (7 + weekday - dow) % 7;\n const weekOffset = firstWeekOffset(year, dow, doy);\n const dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset;\n let resYear;\n let resDayOfYear;\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n }\n else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n }\n else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\nfunction weekOfYear(date, dow, doy, isUTC) {\n const weekOffset = firstWeekOffset(getFullYear(date, isUTC), dow, doy);\n const week = Math.floor((getDayOfYear(date, isUTC) - weekOffset - 1) / 7) + 1;\n let resWeek;\n let resYear;\n if (week < 1) {\n resYear = getFullYear(date, isUTC) - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n }\n else if (week > weeksInYear(getFullYear(date, isUTC), dow, doy)) {\n resWeek = week - weeksInYear(getFullYear(date, isUTC), dow, doy);\n resYear = getFullYear(date, isUTC) + 1;\n }\n else {\n resYear = getFullYear(date, isUTC);\n resWeek = week;\n }\n return {\n week: resWeek,\n year: resYear\n };\n}\nfunction weeksInYear(year, dow, doy) {\n const weekOffset = firstWeekOffset(year, dow, doy);\n const weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\nconst MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nconst defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nconst defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nconst defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nconst defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nconst defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nconst 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};\nconst defaultOrdinal = '%d';\nconst defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\nconst defaultMonthsShortRegex = matchWord;\nconst defaultMonthsRegex = matchWord;\nclass Locale {\n constructor(config) {\n if (config) {\n this.set(config);\n }\n }\n set(config) {\n let confKey;\n for (confKey in config) {\n // eslint-disable-next-line no-prototype-builtins\n if (!config.hasOwnProperty(confKey)) {\n continue;\n }\n const prop = config[confKey];\n const key = (isFunction(prop) ? confKey : `_${confKey}`);\n this[key] = prop;\n }\n this._config = config;\n }\n calendar(key, date, now) {\n const output = this._calendar[key] || this._calendar.sameElse;\n return isFunction(output) ? output.call(null, date, now) : output;\n }\n longDateFormat(key) {\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n return this._longDateFormat[key];\n }\n get invalidDate() {\n return this._invalidDate;\n }\n set invalidDate(val) {\n this._invalidDate = val;\n }\n ordinal(num, token) {\n return this._ordinal.replace('%d', num.toString(10));\n }\n preparse(str, format) {\n return str;\n }\n getFullYear(date, isUTC = false) {\n return getFullYear(date, isUTC);\n }\n postformat(str) {\n return str;\n }\n relativeTime(num, withoutSuffix, str, isFuture) {\n const output = this._relativeTime[str];\n return (isFunction(output)) ?\n output(num, withoutSuffix, str, isFuture) :\n output.replace(/%d/i, num.toString(10));\n }\n pastFuture(diff, output) {\n const format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n months(date, format, isUTC = false) {\n if (!date) {\n return isArray(this._months)\n ? this._months\n : this._months.standalone;\n }\n if (isArray(this._months)) {\n return this._months[getMonth(date, isUTC)];\n }\n const key = (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone';\n return this._months[key][getMonth(date, isUTC)];\n }\n monthsShort(date, format, isUTC = false) {\n if (!date) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort.standalone;\n }\n if (isArray(this._monthsShort)) {\n return this._monthsShort[getMonth(date, isUTC)];\n }\n const key = MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone';\n return this._monthsShort[key][getMonth(date, isUTC)];\n }\n monthsParse(monthName, format, strict) {\n let date;\n let regex;\n if (this._monthsParseExact) {\n return this.handleMonthStrictParse(monthName, format, strict);\n }\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\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 let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(Date.UTC(2000, i));\n if (strict && !this._longMonthsParse[i]) {\n const _months = this.months(date, '', true).replace('.', '');\n const _shortMonths = this.monthsShort(date, '', true).replace('.', '');\n this._longMonthsParse[i] = new RegExp(`^${_months}$`, 'i');\n this._shortMonthsParse[i] = new RegExp(`^${_shortMonths}$`, 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = `^${this.months(date, '', true)}|^${this.monthsShort(date, '', true)}`;\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // testing the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n }\n if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n }\n if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n }\n return this._monthsRegex;\n }\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n }\n return this._monthsShortRegex;\n }\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n /** Week */\n week(date, isUTC) {\n return weekOfYear(date, this._week.dow, this._week.doy, isUTC).week;\n }\n firstDayOfWeek() {\n return this._week.dow;\n }\n firstDayOfYear() {\n return this._week.doy;\n }\n weekdays(date, format, isUTC) {\n if (!date) {\n return isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays.standalone;\n }\n if (isArray(this._weekdays)) {\n return this._weekdays[getDay(date, isUTC)];\n }\n const _key = this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone';\n return this._weekdays[_key][getDay(date, isUTC)];\n }\n weekdaysMin(date, format, isUTC) {\n return date ? this._weekdaysMin[getDay(date, isUTC)] : this._weekdaysMin;\n }\n weekdaysShort(date, format, isUTC) {\n return date ? this._weekdaysShort[getDay(date, isUTC)] : this._weekdaysShort;\n }\n // proto.weekdaysParse = localeWeekdaysParse;\n weekdaysParse(weekdayName, format, strict) {\n let i;\n let regex;\n if (this._weekdaysParseExact) {\n return this.handleWeekStrictParse(weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // fix: here is the issue\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(`^${this.weekdays(date, '', true).replace('.', '\\.?')}$`, 'i');\n this._shortWeekdaysParse[i] = new RegExp(`^${this.weekdaysShort(date, '', true).replace('.', '\\.?')}$`, 'i');\n this._minWeekdaysParse[i] = new RegExp(`^${this.weekdaysMin(date, '', true).replace('.', '\\.?')}$`, 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = `^${this.weekdays(date, '', true)}|^${this.weekdaysShort(date, '', true)}|^${this.weekdaysMin(date, '', true)}`;\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n if (!isArray(this._fullWeekdaysParse)\n || !isArray(this._shortWeekdaysParse)\n || !isArray(this._minWeekdaysParse)\n || !isArray(this._weekdaysParse)) {\n return;\n }\n // testing the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n // proto.weekdaysRegex = weekdaysRegex;\n weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n }\n else {\n return this._weekdaysRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = matchWord;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n // proto.weekdaysShortRegex = weekdaysShortRegex;\n // proto.weekdaysMinRegex = weekdaysMinRegex;\n weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n }\n else {\n return this._weekdaysShortRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = matchWord;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n }\n else {\n return this._weekdaysMinRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = matchWord;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n isPM(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 meridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n }\n return isLower ? 'am' : 'AM';\n }\n formatLongDate(key) {\n this._longDateFormat = this._longDateFormat ? this._longDateFormat : defaultLongDateFormat;\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, (val) => {\n return val.slice(1);\n });\n return this._longDateFormat[key];\n }\n handleMonthStrictParse(monthName, format, strict) {\n const llc = monthName.toLocaleLowerCase();\n let i;\n let ii;\n let mom;\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 = new Date(2000, i);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'MMM') {\n ii = this._shortMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n ii = this._longMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n if (format === 'MMM') {\n ii = this._shortMonthsParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._longMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n ii = this._longMonthsParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n handleWeekStrictParse(weekdayName, format, strict) {\n let ii;\n const llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n let i;\n for (i = 0; i < 7; ++i) {\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n this._minWeekdaysParse[i] = this.weekdaysMin(date).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(date).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(date, '').toLocaleLowerCase();\n }\n }\n if (!isArray(this._weekdaysParse)\n || !isArray(this._shortWeekdaysParse)\n || !isArray(this._minWeekdaysParse)) {\n return;\n }\n if (strict) {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else {\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n }\n else {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else {\n ii = this._minWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n computeMonthsParse() {\n const shortPieces = [];\n const longPieces = [];\n const mixedPieces = [];\n let date;\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(2000, i);\n shortPieces.push(this.monthsShort(date, ''));\n longPieces.push(this.months(date, ''));\n mixedPieces.push(this.months(date, ''));\n mixedPieces.push(this.monthsShort(date, ''));\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 for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._monthsRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._monthsShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n }\n computeWeekdaysParse() {\n const minPieces = [];\n const shortPieces = [];\n const longPieces = [];\n const mixedPieces = [];\n let i;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // let mom = createUTC([2000, 1]).day(i);\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n const minp = this.weekdaysMin(date);\n const shortp = this.weekdaysShort(date);\n const longp = this.weekdays(date);\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 for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._weekdaysRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._weekdaysShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n this._weekdaysMinStrictRegex = new RegExp(`^(${minPieces.join('|')})`, 'i');\n }\n}\nfunction cmpLenRev(a, b) {\n return b.length - a.length;\n}\n\nconst 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\nconst defaultInvalidDate = 'Invalid date';\nconst defaultLocaleWeek = {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n};\nconst defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nconst 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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n};\nconst baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n const len = Math.min(array1.length, array2.length);\n const lengthDiff = Math.abs(array1.length - array2.length);\n let diffs = 0;\n let i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i])\n || (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\n// FORMATTING\nfunction initWeek() {\n addFormatToken('w', ['ww', 2, false], 'wo', function (date, opts) {\n return getWeek(date, opts.locale)\n .toString(10);\n });\n addFormatToken('W', ['WW', 2, false], 'Wo', function (date) {\n return getISOWeek(date)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n // PRIORITIES\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n // PARSING\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n return config;\n });\n // export function getSetWeek (input) {\n // var week = this.localeData().week(this);\n // return input == null ? week : this.add((input - week) * 7, 'd');\n // }\n}\nfunction setWeek(date, input, locale = getLocale()) {\n const week = getWeek(date, locale);\n return add(date, (input - week) * 7, 'day');\n}\nfunction getWeek(date, locale = getLocale(), isUTC) {\n return locale.week(date, isUTC);\n}\n// export function getSetISOWeek (input) {\n// var week = weekOfYear(this, 1, 4).week;\n// return input == null ? week : this.add((input - week) * 7, 'd');\n// }\nfunction setISOWeek(date, input) {\n const week = getISOWeek(date);\n return add(date, (input - week) * 7, 'day');\n}\nfunction getISOWeek(date, isUTC) {\n return weekOfYear(date, 1, 4, isUTC).week;\n}\n\n// FORMATTING\nfunction initWeekYear() {\n addFormatToken(null, ['gg', 2, false], null, function (date, opts) {\n // return this.weekYear() % 100;\n return (getWeekYear(date, opts.locale) % 100).toString();\n });\n addFormatToken(null, ['GG', 2, false], null, function (date) {\n // return this.isoWeekYear() % 100;\n return (getISOWeekYear(date) % 100).toString();\n });\n addWeekYearFormatToken('gggg', _getWeekYearFormatCb);\n addWeekYearFormatToken('ggggg', _getWeekYearFormatCb);\n addWeekYearFormatToken('GGGG', _getISOWeekYearFormatCb);\n addWeekYearFormatToken('GGGGG', _getISOWeekYearFormatCb);\n // ALIASES\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n // PRIORITY\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n // PARSING\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 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n return config;\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = parseTwoDigitYear(input);\n return config;\n });\n}\nfunction addWeekYearFormatToken(token, getter) {\n addFormatToken(null, [token, token.length, false], null, getter);\n}\nfunction _getWeekYearFormatCb(date, opts) {\n return getWeekYear(date, opts.locale).toString();\n}\nfunction _getISOWeekYearFormatCb(date) {\n return getISOWeekYear(date).toString();\n}\n// MOMENTS\nfunction getSetWeekYear(date, input, locale = getLocale(), isUTC) {\n return getSetWeekYearHelper(date, input, \n // this.week(),\n getWeek(date, locale, isUTC), \n // this.weekday(),\n getLocaleDayOfWeek(date, locale, isUTC), locale.firstDayOfWeek(), locale.firstDayOfYear(), isUTC);\n}\nfunction getWeekYear(date, locale = getLocale(), isUTC) {\n return weekOfYear(date, locale.firstDayOfWeek(), locale.firstDayOfYear(), isUTC).year;\n}\nfunction getSetISOWeekYear(date, input, isUTC) {\n return getSetWeekYearHelper(date, input, getISOWeek(date, isUTC), getISODayOfWeek(date, isUTC), 1, 4);\n}\nfunction getISOWeekYear(date, isUTC) {\n return weekOfYear(date, 1, 4, isUTC).year;\n}\nfunction getISOWeeksInYear(date, isUTC) {\n return weeksInYear(getFullYear(date, isUTC), 1, 4);\n}\nfunction getWeeksInYear(date, isUTC, locale = getLocale()) {\n return weeksInYear(getFullYear(date, isUTC), locale.firstDayOfWeek(), locale.firstDayOfYear());\n}\nfunction getSetWeekYearHelper(date, input, week, weekday, dow, doy, isUTC) {\n if (!input) {\n return getWeekYear(date, void 0, isUTC);\n }\n const weeksTarget = weeksInYear(input, dow, doy);\n const _week = week > weeksTarget ? weeksTarget : week;\n return setWeekAll(date, input, _week, weekday, dow, doy);\n}\nfunction setWeekAll(date, weekYear, week, weekday, dow, doy) {\n const dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n const _date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n setFullYear(date, getFullYear(_date, true), true);\n setMonth(date, getMonth(_date, true), true);\n setDate(date, getDate(_date, true), true);\n return date;\n}\n\n// todo: add support for timezones\nfunction initTimezone() {\n // FORMATTING\n addFormatToken('z', null, null, function (date, opts) {\n return opts.isUTC ? 'UTC' : '';\n });\n addFormatToken('zz', null, null, function (date, opts) {\n return opts.isUTC ? 'Coordinated Universal Time' : '';\n });\n}\n// MOMENTS\nfunction getZoneAbbr(isUTC) {\n return isUTC ? 'UTC' : '';\n}\nfunction getZoneName(isUTC) {\n return isUTC ? 'Coordinated Universal Time' : '';\n}\n\nfunction initTimestamp() {\n // FORMATTING\n addFormatToken('X', null, null, function (date) {\n return unix(date)\n .toString(10);\n });\n addFormatToken('x', null, null, function (date) {\n return date.valueOf()\n .toString(10);\n });\n // PARSING\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n return config;\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n return config;\n });\n}\n\nfunction initSecond() {\n // FORMATTING\n addFormatToken('s', ['ss', 2, false], null, function (date, opts) {\n return getSeconds(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('second', 's');\n // PRIORITY\n addUnitPriority('second', 15);\n // PARSING\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n}\n\nfunction initQuarter() {\n // FORMATTING\n addFormatToken('Q', null, 'Qo', function (date, opts) {\n return getQuarter(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('quarter', 'Q');\n // PRIORITY\n addUnitPriority('quarter', 7);\n // PARSING\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array, config) {\n array[MONTH] = (toInt(input) - 1) * 3;\n return config;\n });\n}\n// MOMENTS\nfunction getQuarter(date, isUTC = false) {\n return Math.ceil((getMonth(date, isUTC) + 1) / 3);\n}\nfunction setQuarter(date, quarter, isUTC) {\n return setMonth(date, (quarter - 1) * 3 + getMonth(date, isUTC) % 3, isUTC);\n}\n// export 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\nfunction addOffsetFormatToken(token, separator) {\n addFormatToken(token, null, null, function (date, config) {\n let offset = getUTCOffset(date, { _isUTC: config.isUTC, _offset: config.offset });\n let sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\nfunction initOffset() {\n addOffsetFormatToken('Z', ':');\n addOffsetFormatToken('ZZ', '');\n // PARSING\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 return config;\n });\n}\n// HELPERS\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nconst chunkOffset = /([\\+\\-]|\\d\\d)/gi;\nfunction offsetFromString(matcher, str) {\n const matches = (str || '').match(matcher);\n if (matches === null) {\n return null;\n }\n const chunk = matches[matches.length - 1];\n const parts = chunk.match(chunkOffset) || ['-', '0', '0'];\n const minutes = parseInt(parts[1], 10) * 60 + toInt(parts[2]);\n const _min = parts[0] === '+' ? minutes : -minutes;\n return minutes === 0 ? 0 : _min;\n}\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, date, config = {}) {\n if (!config._isUTC) {\n return input;\n }\n const res = cloneDate(date);\n // todo: input._d - res._d + ((res._offset || 0) - (input._offset || 0))*60000\n const offsetDiff = (config._offset || 0) * 60000;\n const diff = input.valueOf() - res.valueOf() + offsetDiff;\n // Use low-level api, because this fn is low-level api.\n res.setTime(res.valueOf() + diff);\n // todo: add timezone handling\n // hooks.updateOffset(res, false);\n return res;\n}\nfunction getDateOffset(date) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n// HOOKS\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// todo: it's from moment timezones\n// hooks.updateOffset = function () {\n// };\n// MOMENTS\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.\nfunction getUTCOffset(date, config = {}) {\n const _offset = config._offset || 0;\n return config._isUTC ? _offset : getDateOffset(date);\n}\nfunction setUTCOffset(date, input, keepLocalTime, keepMinutes, config = {}) {\n const offset = config._offset || 0;\n let localAdjust;\n let _input = input;\n let _date = date;\n if (isString(_input)) {\n _input = offsetFromString(matchShortOffset, _input);\n if (_input === null) {\n return _date;\n }\n }\n else if (isNumber(_input) && Math.abs(_input) < 16 && !keepMinutes) {\n _input = _input * 60;\n }\n if (!config._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(_date);\n }\n config._offset = _input;\n config._isUTC = true;\n if (localAdjust != null) {\n _date = add(_date, localAdjust, 'minutes');\n }\n if (offset !== _input) {\n if (!keepLocalTime || config._changeInProgress) {\n _date = add(_date, _input - offset, 'minutes', config._isUTC);\n // addSubtract(this, createDuration(_input - offset, 'm'), 1, false);\n }\n else if (!config._changeInProgress) {\n config._changeInProgress = true;\n // todo: add timezone handling\n // hooks.updateOffset(this, true);\n config._changeInProgress = null;\n }\n }\n return _date;\n}\n/*\nexport 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*/\nfunction setOffsetToUTC(date, keepLocalTime) {\n return setUTCOffset(date, 0, keepLocalTime);\n}\nfunction isDaylightSavingTime(date) {\n return (getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 0))\n || getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 5)));\n}\n/*export function setOffsetToLocal(date: Date, isUTC?: boolean, keepLocalTime?: boolean) {\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}*/\nfunction setOffsetToParsedOffset(date, input, config = {}) {\n if (config._tzm != null) {\n return setUTCOffset(date, config._tzm, false, true, config);\n }\n if (isString(input)) {\n const tZone = offsetFromString(matchOffset, input);\n if (tZone != null) {\n return setUTCOffset(date, tZone, false, false, config);\n }\n return setUTCOffset(date, 0, true, false, config);\n }\n return date;\n}\nfunction hasAlignedHourOffset(date, input) {\n const _input = input ? getUTCOffset(input, { _isUTC: false }) : 0;\n return (getUTCOffset(date) - _input) % 60 === 0;\n}\n// DEPRECATED\n/*export function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n const c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n const other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}*/\n// in Khronos\n/*export function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nexport function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nexport function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}*/\n\nfunction initMinute() {\n // FORMATTING\n addFormatToken('m', ['mm', 2, false], null, function (date, opts) {\n return getMinutes(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('minute', 'm');\n // PRIORITY\n addUnitPriority('minute', 14);\n // PARSING\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n}\n\n// FORMATTING\nfunction initMillisecond() {\n addFormatToken('S', null, null, function (date, opts) {\n return (~~(getMilliseconds(date, opts.isUTC) / 100)).toString(10);\n });\n addFormatToken(null, ['SS', 2, false], null, function (date, opts) {\n return (~~(getMilliseconds(date, opts.isUTC) / 10)).toString(10);\n });\n addFormatToken(null, ['SSS', 3, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC)).toString(10);\n });\n addFormatToken(null, ['SSSS', 4, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 10).toString(10);\n });\n addFormatToken(null, ['SSSSS', 5, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 100).toString(10);\n });\n addFormatToken(null, ['SSSSSS', 6, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 1000).toString(10);\n });\n addFormatToken(null, ['SSSSSSS', 7, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 10000).toString(10);\n });\n addFormatToken(null, ['SSSSSSSS', 8, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 100000).toString(10);\n });\n addFormatToken(null, ['SSSSSSSSS', 9, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 1000000).toString(10);\n });\n // ALIASES\n addUnitAlias('millisecond', 'ms');\n // PRIORITY\n addUnitPriority('millisecond', 16);\n // PARSING\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n let token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n function parseMs(input, array, config) {\n array[MILLISECOND] = toInt(parseFloat(`0.${input}`) * 1000);\n return config;\n }\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n}\n\nfunction initHour() {\n // FORMATTING\n function hFormat(date, isUTC) {\n return getHours(date, isUTC) % 12 || 12;\n }\n function kFormat(date, isUTC) {\n return getHours(date, isUTC) || 24;\n }\n addFormatToken('H', ['HH', 2, false], null, function (date, opts) {\n return getHours(date, opts.isUTC)\n .toString(10);\n });\n addFormatToken('h', ['hh', 2, false], null, function (date, opts) {\n return hFormat(date, opts.isUTC)\n .toString(10);\n });\n addFormatToken('k', ['kk', 2, false], null, function (date, opts) {\n return kFormat(date, opts.isUTC)\n .toString(10);\n });\n addFormatToken('hmm', null, null, function (date, opts) {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n return `${_h}${_mm}`;\n });\n addFormatToken('hmmss', null, null, function (date, opts) {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n return `${_h}${_mm}${_ss}`;\n });\n addFormatToken('Hmm', null, null, function (date, opts) {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n return `${_H}${_mm}`;\n });\n addFormatToken('Hmmss', null, null, function (date, opts) {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n return `${_H}${_mm}${_ss}`;\n });\n function meridiem(token, lowercase) {\n addFormatToken(token, null, null, function (date, opts) {\n return opts.locale.meridiem(getHours(date, opts.isUTC), getMinutes(date, opts.isUTC), lowercase);\n });\n }\n meridiem('a', true);\n meridiem('A', false);\n // ALIASES\n addUnitAlias('hour', 'h');\n // PRIORITY\n addUnitPriority('hour', 13);\n // PARSING\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n const kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n return config;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n return config;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n return config;\n });\n addParseToken('hmm', function (input, array, config) {\n const 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 return config;\n });\n addParseToken('hmmss', function (input, array, config) {\n const pos1 = input.length - 4;\n const 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 return config;\n });\n addParseToken('Hmm', function (input, array, config) {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n return config;\n });\n addParseToken('Hmmss', function (input, array, config) {\n const pos1 = input.length - 4;\n const 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 return config;\n });\n}\n\n// internal storage for locale config files\nconst locales = {};\nconst localeFamilies = {};\nlet globalLocale;\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\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,\n// but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n let next;\n let locale;\n let i = 0;\n while (i < names.length) {\n const split = normalizeLocale(names[i]).split('-');\n let 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 (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\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 null;\n}\nfunction mergeConfigs(parentConfig, childConfig) {\n const res = Object.assign({}, parentConfig);\n for (const childProp in childConfig) {\n if (!hasOwnProp(childConfig, childProp)) {\n continue;\n }\n if (isObject(parentConfig[childProp]) && isObject(childConfig[childProp])) {\n res[childProp] = {};\n Object.assign(res[childProp], parentConfig[childProp]);\n Object.assign(res[childProp], childConfig[childProp]);\n }\n else if (childConfig[childProp] != null) {\n res[childProp] = childConfig[childProp];\n }\n else {\n delete res[childProp];\n }\n }\n for (const parentProp in parentConfig) {\n if (hasOwnProp(parentConfig, parentProp) &&\n !hasOwnProp(childConfig, parentProp) &&\n isObject(parentConfig[parentProp])) {\n // make sure changes to properties don't modify parent config\n res[parentProp] = Object.assign({}, res[parentProp]);\n }\n }\n return res;\n}\nfunction loadLocale(name) {\n // no way!\n /* var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }*/\n if (!locales[name]) {\n console.error(`Khronos locale error: please load locale \"${name}\" before using it`);\n // throw new Error(`Khronos locale error: please load locale \"${name}\" before using it`);\n }\n return locales[name];\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.\nfunction getSetGlobalLocale(key, values) {\n let data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else if (isString(key)) {\n data = defineLocale(key, values);\n }\n if (data) {\n globalLocale = data;\n }\n }\n return globalLocale && globalLocale._abbr;\n}\nfunction defineLocale(name, config) {\n if (config === null) {\n // useful for testing\n delete locales[name];\n globalLocale = getLocale('en');\n return null;\n }\n if (!config) {\n return;\n }\n let parentConfig = baseConfig;\n config.abbr = name;\n if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n }\n else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({ name, config });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\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 return locales[name];\n}\nfunction updateLocale(name, config) {\n let _config = config;\n if (_config != null) {\n let parentConfig = baseConfig;\n // MERGE\n const tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n _config = mergeConfigs(parentConfig, _config);\n const locale = new Locale(_config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n }\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 }\n else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n// returns locale data\nfunction getLocale(key) {\n setDefaultLocale();\n if (!key) {\n return globalLocale;\n }\n // let locale;\n const _key = isArray(key) ? key : [key];\n return chooseLocale(_key);\n}\nfunction listLocales() {\n return Object.keys(locales);\n}\nfunction setDefaultLocale() {\n if (locales[`en`]) {\n return undefined;\n }\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal(num) {\n const b = num % 10;\n const output = toInt((num % 100) / 10) === 1\n ? 'th'\n : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return num + output;\n }\n });\n initWeek();\n initWeekYear();\n initYear();\n initTimezone();\n initTimestamp();\n initSecond();\n initQuarter();\n initOffset();\n initMonth();\n initMinute();\n initMillisecond();\n initHour();\n initDayOfYear();\n initDayOfWeek();\n initDayOfMonth();\n}\n\nconst ordering = ['year', 'quarter', 'month', 'week', 'day', 'hours', 'minutes', 'seconds', 'milliseconds'];\nconst ɵ0 = (mem, order) => {\n mem[order] = true;\n return mem;\n};\nconst orderingHash = ordering.reduce(ɵ0, {});\nfunction isDurationValid(duration) {\n const durationKeys = Object.keys(duration);\n if (durationKeys\n .some((key) => {\n return (key in orderingHash)\n && duration[key] === null\n || isNaN(duration[key]);\n })) {\n return false;\n }\n // for (let key in duration) {\n // if (!(indexOf.call(ordering, key) !== -1 && (duration[key] == null || !isNaN(duration[key])))) {\n // return false;\n // }\n // }\n let unitHasDecimal = false;\n for (let i = 0; i < ordering.length; ++i) {\n if (duration[ordering[i]]) {\n // only allow non-integers for smallest unit\n if (unitHasDecimal) {\n return false;\n }\n if (duration[ordering[i]] !== toInt(duration[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n return true;\n}\n// export function isValid() {\n// return this._isValid;\n// }\n//\n// export function createInvalid(): Duration {\n// return createDuration(NaN);\n// }\n\nfunction absCeil(number) {\n return number < 0 ? Math.floor(number) : Math.ceil(number);\n}\n\nfunction bubble(dur) {\n let milliseconds = dur._milliseconds;\n let days = dur._days;\n let months = dur._months;\n const data = dur._data;\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 (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n const seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n const minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n const hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24);\n // convert days to months\n const monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n // 12 months -> 1 year\n const years = absFloor(months / 12);\n months %= 12;\n data.day = days;\n data.month = months;\n data.year = years;\n return dur;\n}\nfunction daysToMonths(day) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return day * 4800 / 146097;\n}\nfunction monthsToDays(month) {\n // the reverse of daysToMonths\n return month * 146097 / 4800;\n}\n\nlet round = Math.round;\nconst thresholds = {\n ss: 44,\n s: 45,\n m: 45,\n h: 22,\n d: 26,\n M: 11 // months to year\n};\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(str, num, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(num || 1, !!withoutSuffix, str, isFuture);\n}\nfunction relativeTime(posNegDuration, withoutSuffix, locale) {\n const duration = createDuration(posNegDuration).abs();\n const seconds = round(duration.as('s'));\n const minutes = round(duration.as('m'));\n const hours = round(duration.as('h'));\n const days = round(duration.as('d'));\n const months = round(duration.as('M'));\n const years = round(duration.as('y'));\n const a = 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 months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n const b = [a[0], a[1], withoutSuffix, +posNegDuration > 0, locale];\n // a[2] = withoutSuffix;\n // a[3] = +posNegDuration > 0;\n // a[4] = locale;\n return substituteTimeAgo.apply(null, b);\n}\n// This function allows you to set the rounding function for relative time strings\nfunction 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// This function allows you to set a threshold for relative time strings\nfunction 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// export function humanize(withSuffix) {\n// if (!this.isValid()) {\n// return this.localeData().invalidDate();\n// }\n//\n// const locale = this.localeData();\n// let output = relativeTime(this, !withSuffix, locale);\n//\n// if (withSuffix) {\n// output = locale.pastFuture(+this, output);\n// }\n//\n// return locale.postformat(output);\n// }\n\nclass Duration {\n constructor(duration, config = {}) {\n this._data = {};\n this._locale = getLocale();\n this._locale = config && config._locale || getLocale();\n // const normalizedInput = normalizeObjectUnits(duration);\n const normalizedInput = duration;\n const years = normalizedInput.year || 0;\n const quarters = normalizedInput.quarter || 0;\n const months = normalizedInput.month || 0;\n const weeks = normalizedInput.week || 0;\n const days = normalizedInput.day || 0;\n const hours = normalizedInput.hours || 0;\n const minutes = normalizedInput.minutes || 0;\n const seconds = normalizedInput.seconds || 0;\n const milliseconds = normalizedInput.milliseconds || 0;\n this._isValid = isDurationValid(normalizedInput);\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1000 +\n minutes * 60 * 1000 + // 1000 * 60\n hours * 1000 * 60 * 60; // using 1000 * 60 * 60\n // 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 +\n 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 +\n quarters * 3 +\n years * 12;\n // this._data = {};\n // this._locale = getLocale();\n // this._bubble();\n return bubble(this);\n }\n isValid() {\n return this._isValid;\n }\n humanize(withSuffix) {\n // throw new Error(`TODO: implement`);\n if (!this.isValid()) {\n return this.localeData().invalidDate;\n }\n const locale = this.localeData();\n let output = relativeTime(this, !withSuffix, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n localeData() {\n return this._locale;\n }\n locale(localeKey) {\n if (!localeKey) {\n return this._locale._abbr;\n }\n this._locale = getLocale(localeKey) || this._locale;\n return this;\n }\n abs() {\n const mathAbs = Math.abs;\n const data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\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.month = mathAbs(data.month);\n data.year = mathAbs(data.year);\n return this;\n }\n as(_units) {\n if (!this.isValid()) {\n return NaN;\n }\n let days;\n let months;\n const milliseconds = this._milliseconds;\n const units = normalizeUnits(_units);\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n }\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 'hours':\n return days * 24 + milliseconds / 36e5;\n case 'minutes':\n return days * 1440 + milliseconds / 6e4;\n case 'seconds':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'milliseconds':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error(`Unknown unit ${units}`);\n }\n }\n valueOf() {\n if (!this.isValid()) {\n return NaN;\n }\n return (this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6);\n }\n}\nfunction isDuration(obj) {\n return obj instanceof Duration;\n}\n\nfunction isValid(config) {\n if (config._isValid == null) {\n const flags = getParsingFlags(config);\n const parsedParts = Array.prototype.some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n let isNowValid = !isNaN(config._d && config._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\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 (config._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n if (Object.isFrozen == null || !Object.isFrozen(config)) {\n config._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return config._isValid;\n}\nfunction createInvalid(config, flags) {\n config._d = new Date(NaN);\n Object.assign(getParsingFlags(config), flags || { userInvalidated: true });\n return config;\n}\nfunction markInvalid(config) {\n config._isValid = false;\n return config;\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)\nconst extendedIsoRegex = /^\\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)?)?$/;\nconst basicIsoRegex = /^\\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)?)?$/;\nconst tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\nconst isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/, true],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/, true],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/, true],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/, true],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/, true],\n ['YYYYMMDD', /\\d{8}/, true],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/, true],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/, true]\n];\n// iso time formats and regexes\nconst 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];\nconst aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\nconst 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// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\nconst rfc2822 = /^(?:(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// date from iso format\nfunction configFromISO(config) {\n if (!isString(config._i)) {\n return config;\n }\n const input = config._i;\n const match = extendedIsoRegex.exec(input) || basicIsoRegex.exec(input);\n let allowTime;\n let dateFormat;\n let timeFormat;\n let tzFormat;\n if (!match) {\n config._isValid = false;\n return config;\n }\n // getParsingFlags(config).iso = true;\n let i;\n let l;\n for (i = 0, l = isoDates.length; 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 config;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; 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 config;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return config;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n }\n else {\n config._isValid = false;\n return config;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n return configFromStringAndFormat(config);\n}\nfunction extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\n}\nfunction untruncateYear(yearStr) {\n const year = parseInt(yearStr, 10);\n return year <= 49 ? year + 2000 : year;\n}\nfunction preprocessRFC2822(str) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return str\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ').trim();\n}\nfunction checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n const weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr);\n const weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n}\nfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n }\n else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n }\n else {\n const hm = parseInt(numOffset, 10);\n const m = hm % 100;\n const h = (hm - m) / 100;\n return h * 60 + m;\n }\n}\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n if (!isString(config._i)) {\n return config;\n }\n const match = rfc2822.exec(preprocessRFC2822(config._i));\n if (!match) {\n return markInvalid(config);\n }\n const parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return config;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n getParsingFlags(config).rfc2822 = true;\n return config;\n}\n// date from iso format or fallback\nfunction configFromString(config) {\n if (!isString(config._i)) {\n return config;\n }\n const matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return config;\n }\n // todo: update logic processing\n // isISO -> configFromISO\n // isRFC -> configFromRFC\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n }\n else {\n return config;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n }\n else {\n return config;\n }\n // Final attempt, use Input Fallback\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\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 and will be removed in an upcoming major release. Please refer to ' +\n// '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// moment.js\nfunction formatDate(date, format, locale, isUTC, offset = 0) {\n const _locale = getLocale(locale || 'en');\n if (!_locale) {\n throw new Error(`Locale \"${locale}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n const _format = format || (isUTC ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ssZ');\n const output = formatMoment(date, _format, _locale, isUTC, offset);\n if (!output) {\n return output;\n }\n return _locale.postformat(output);\n}\n// format date using native date object\nfunction formatMoment(date, _format, locale, isUTC, offset = 0) {\n if (!isDateValid(date)) {\n return locale.invalidDate;\n }\n const format = expandFormat(_format, locale);\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](date, locale, isUTC, offset);\n}\nfunction expandFormat(_format, locale) {\n let format = _format;\n let i = 5;\n const localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n const replaceLongDateFormatTokens = (input) => {\n return locale.formatLongDate(input) || input;\n };\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\n}\n\n// Pick the first defined of two or three arguments.\nfunction 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\nfunction currentDateArray(config) {\n const nowValue = new Date();\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\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]\nfunction configFromArray(config) {\n const input = [];\n let i;\n let date;\n let yearToUse;\n if (config._d) {\n return config;\n }\n const currentDate = currentDateArray(config);\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 // 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 if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n date = new Date(Date.UTC(yearToUse, 0, config._dayOfYear));\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\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 // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n // eslint-disable-next-line prefer-spread\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n const expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\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 if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n return config;\n}\nfunction dayOfYearFromWeekInfo(config) {\n let weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n const w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\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(w.GG, config._a[YEAR], weekOfYear(new Date(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n }\n else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n const curWeek = weekOfYear(new Date(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n // Default to current week.\n week = defaults(w.w, curWeek.week);\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 }\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 }\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 }\n else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n }\n else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n return config;\n}\n\nfunction checkOverflow(config) {\n let overflow;\n const a = config._a;\n if (a && getParsingFlags(config).overflow === -2) {\n // todo: fix this sh*t\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth$1(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n if (getParsingFlags(config)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(config)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(config)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n getParsingFlags(config).overflow = overflow;\n }\n return config;\n}\n\n// constant that refers to the ISO standard\n// hooks.ISO_8601 = function () {};\nconst ISO_8601 = 'ISO_8601';\n// constant that refers to the RFC 2822 form\n// hooks.RFC_2822 = function () {};\nconst RFC_2822 = 'RFC_2822';\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === ISO_8601) {\n return configFromISO(config);\n }\n if (config._f === RFC_2822) {\n return configFromRFC2822(config);\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n if (isArray(config._f) || (!config._i && config._i !== 0)) {\n return config;\n }\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n let input = config._i.toString();\n let totalParsedInputLength = 0;\n const inputLength = input.length;\n const tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n let i;\n let token;\n let parsedInput;\n let skipped;\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (input.match(getParseRegexForToken(token, config._locale)) || [])[0];\n if (parsedInput) {\n skipped = input.substr(0, input.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n input = input.slice(input.indexOf(parsedInput) + parsedInput.length);\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 }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = inputLength - totalParsedInputLength;\n if (input.length > 0) {\n getParsingFlags(config).unusedInput.push(input);\n }\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = void 0;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n configFromArray(config);\n return checkOverflow(config);\n}\nfunction meridiemFixWrap(locale, _hour, meridiem) {\n let hour = _hour;\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n }\n if (locale.isPM == null) {\n // this is not supposed to happen\n return hour;\n }\n // Fallback\n const 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}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n let tempConfig;\n let bestMoment;\n let scoreToBeat;\n let currentScore;\n if (!config._f || config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n return createInvalid(config);\n }\n let i;\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = Object.assign({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n if (!isValid(tempConfig)) {\n continue;\n }\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n // or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n return Object.assign(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return config;\n }\n const input = config._i;\n if (isObject(input)) {\n const i = normalizeObjectUnits(input);\n config._a = [i.year, i.month, i.day, i.hours, i.minutes, i.seconds, i.milliseconds]\n // todo: obsolete -> remove it\n .map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n }\n return configFromArray(config);\n}\n\nfunction createFromConfig(config) {\n const res = checkOverflow(prepareConfig(config));\n // todo: remove, in moment.js it's never called cuz of moment constructor\n res._d = new Date(res._d != null ? res._d.getTime() : NaN);\n if (!isValid(Object.assign({}, res, { _isValid: null }))) {\n res._d = new Date(NaN);\n }\n // todo: update offset\n /*if (res._nextDay) {\n // Adding is smart enough around DST\n res._d = add(res._d, 1, 'day');\n res._nextDay = undefined;\n }*/\n return res;\n}\nfunction prepareConfig(config) {\n let input = config._i;\n const format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || (format === undefined && input === '')) {\n return createInvalid(config, { nullInput: true });\n }\n if (isString(input)) {\n config._i = input = config._locale.preparse(input, format);\n }\n if (isDate(input)) {\n config._d = cloneDate(input);\n return config;\n }\n // todo: add check for recursion\n if (isArray(format)) {\n configFromStringAndArray(config);\n }\n else if (format) {\n configFromStringAndFormat(config);\n }\n else {\n configFromInput(config);\n }\n if (!isValid(config)) {\n config._d = null;\n }\n return config;\n}\nfunction configFromInput(config) {\n const input = config._i;\n if (isUndefined(input)) {\n config._d = new Date();\n }\n else if (isDate(input)) {\n config._d = cloneDate(input);\n }\n else if (isString(input)) {\n configFromString(config);\n }\n else if (isArray(input) && input.length) {\n const _arr = input.slice(0);\n config._a = _arr.map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n configFromArray(config);\n }\n else if (isObject(input)) {\n configFromObject(config);\n }\n else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n }\n else {\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n }\n return config;\n}\nfunction createLocalOrUTC(input, format, localeKey, strict, isUTC) {\n const config = {};\n let _input = input;\n // params switch -> skip; testing it well\n // if (localeKey === true || localeKey === false) {\n // strict = localeKey;\n // localeKey = undefined;\n // }\n // todo: fail fast and return not valid date\n if ((isObject(_input) && isObjectEmpty(_input)) || (isArray(_input) && _input.length === 0)) {\n _input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n // config._isAMomentObject = true;\n config._useUTC = config._isUTC = isUTC;\n config._l = localeKey;\n config._i = _input;\n config._f = format;\n config._strict = strict;\n return createFromConfig(config);\n}\n\nfunction parseDate(input, format, localeKey, strict, isUTC) {\n if (isDate(input)) {\n return input;\n }\n const config = createLocalOrUTC(input, format, localeKey, strict, isUTC);\n return config._d;\n}\nfunction utcAsLocal(date) {\n if (!(date instanceof Date)) {\n return null;\n }\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n}\n\nfunction absRound(num) {\n return num < 0 ? Math.round(num * -1) * -1 : Math.round(num);\n}\n\nfunction isAfter(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() > date2.valueOf();\n }\n return date2.valueOf() < startOf(date1, units).valueOf();\n}\nfunction isBefore(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() < date2.valueOf();\n }\n return endOf(date1, units).valueOf() < date2.valueOf();\n}\nfunction isDisabledDay(date, daysDisabled) {\n if (typeof daysDisabled === 'undefined' || !daysDisabled || !daysDisabled.length) {\n return false;\n }\n return daysDisabled.some((day) => day === date.getDay());\n}\nfunction isBetween(date, from, to, units, inclusivity = '()') {\n const leftBound = inclusivity[0] === '('\n ? isAfter(date, from, units)\n : !isBefore(date, from, units);\n const rightBound = inclusivity[1] === ')'\n ? isBefore(date, to, units)\n : !isAfter(date, to, units);\n return leftBound && rightBound;\n}\nfunction isSame(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() === date2.valueOf();\n }\n const inputMs = date2.valueOf();\n return (startOf(date1, units).valueOf() <= inputMs &&\n inputMs <= endOf(date1, units).valueOf());\n}\nfunction isSameDay$1(date1, date2) {\n return (date1.getDay() == date2.getDay());\n}\nfunction isSameOrAfter(date1, date2, units) {\n return isSame(date1, date2, units) || isAfter(date1, date2, units);\n}\nfunction isSameOrBefore(date1, date2, units) {\n return isSame(date1, date2, units) || isBefore(date1, date2, units);\n}\n\n// ASP.NET json date format regex\nconst 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\nconst isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\nfunction createDuration(input, key, config = {}) {\n const duration = convertDuration(input, key);\n // matching against regexp is expensive, do it on demand\n return new Duration(duration, config);\n}\nfunction convertDuration(input, key) {\n // checks for null or undefined\n if (input == null) {\n return {};\n }\n if (isDuration(input)) {\n return {\n milliseconds: input._milliseconds,\n day: input._days,\n month: input._months\n };\n }\n if (isNumber(input)) {\n // duration = {};\n return key ? { [key]: input } : { milliseconds: input };\n }\n if (isString(input)) {\n let match = aspNetRegex.exec(input);\n if (match) {\n const sign = (match[1] === '-') ? -1 : 1;\n return {\n year: 0,\n day: toInt(match[DATE]) * sign,\n hours: toInt(match[HOUR]) * sign,\n minutes: toInt(match[MINUTE]) * sign,\n seconds: toInt(match[SECOND]) * sign,\n // the millisecond decimal point is included in the match\n milliseconds: toInt(absRound(toInt(match[MILLISECOND]) * 1000)) * sign\n };\n }\n match = isoRegex.exec(input);\n if (match) {\n const sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n return {\n year: parseIso(match[2], sign),\n month: parseIso(match[3], sign),\n week: parseIso(match[4], sign),\n day: parseIso(match[5], sign),\n hours: parseIso(match[6], sign),\n minutes: parseIso(match[7], sign),\n seconds: parseIso(match[8], sign)\n };\n }\n }\n if (isObject(input) && ('from' in input || 'to' in input)) {\n const diffRes = momentsDifference(parseDate(input.from), parseDate(input.to));\n return {\n milliseconds: diffRes.milliseconds,\n month: diffRes.months\n };\n }\n return input;\n}\n// createDuration.fn = Duration.prototype;\n// createDuration.invalid = invalid;\nfunction 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 const res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\nfunction positiveMomentsDifference(base, other) {\n const res = { milliseconds: 0, months: 0 };\n res.months = getMonth(other) - getMonth(base) +\n (getFullYear(other) - getFullYear(base)) * 12;\n const _basePlus = add(cloneDate(base), res.months, 'month');\n if (isAfter(_basePlus, other)) {\n --res.months;\n }\n res.milliseconds = +other - +(add(cloneDate(base), res.months, 'month'));\n return res;\n}\nfunction momentsDifference(base, other) {\n if (!(isDateValid(base) && isDateValid(other))) {\n return { milliseconds: 0, months: 0 };\n }\n let res;\n const _other = cloneWithOffset(other, base, { _offset: base.getTimezoneOffset() });\n if (isBefore(base, _other)) {\n res = positiveMomentsDifference(base, _other);\n }\n else {\n res = positiveMomentsDifference(_other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n return res;\n}\n\nfunction add(date, val, period, isUTC) {\n const dur = createDuration(val, period);\n return addSubtract(date, dur, 1, isUTC);\n}\nfunction subtract(date, val, period, isUTC) {\n const dur = createDuration(val, period);\n return addSubtract(date, dur, -1, isUTC);\n}\nfunction addSubtract(date, duration, isAdding, isUTC) {\n const milliseconds = duration._milliseconds;\n const days = absRound(duration._days);\n const months = absRound(duration._months);\n // todo: add timezones support\n // const _updateOffset = updateOffset == null ? true : updateOffset;\n if (months) {\n setMonth(date, getMonth(date, isUTC) + months * isAdding, isUTC);\n }\n if (days) {\n setDate(date, getDate(date, isUTC) + days * isAdding, isUTC);\n }\n if (milliseconds) {\n setTime(date, getTime(date) + milliseconds * isAdding);\n }\n return cloneDate(date);\n // todo: add timezones support\n // if (_updateOffset) {\n // hooks.updateOffset(date, days || months);\n // }\n}\n\nfunction initDayOfWeek() {\n // FORMATTING\n addFormatToken('d', null, 'do', function (date, opts) {\n return getDay(date, opts.isUTC)\n .toString(10);\n });\n addFormatToken('dd', null, null, function (date, opts) {\n return opts.locale.weekdaysMin(date, opts.format, opts.isUTC);\n });\n addFormatToken('ddd', null, null, function (date, opts) {\n return opts.locale.weekdaysShort(date, opts.format, opts.isUTC);\n });\n addFormatToken('dddd', null, null, function (date, opts) {\n return opts.locale.weekdays(date, opts.format, opts.isUTC);\n });\n addFormatToken('e', null, null, function (date, opts) {\n return getLocaleDayOfWeek(date, opts.locale, opts.isUTC)\n .toString(10);\n // return getDay(date, opts.isUTC).toString(10);\n });\n addFormatToken('E', null, null, function (date, opts) {\n return getISODayOfWeek(date, opts.isUTC)\n .toString(10);\n });\n // ALIASES\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n // PARSING\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 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n const 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 }\n else {\n getParsingFlags(config).invalidWeekday = !!input;\n }\n return config;\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n return config;\n });\n}\n// HELPERS\nfunction parseWeekday(input, locale) {\n if (!isString(input)) {\n return input;\n }\n const _num = parseInt(input, 10);\n if (!isNaN(_num)) {\n return _num;\n }\n const _weekDay = locale.weekdaysParse(input);\n if (isNumber(_weekDay)) {\n return _weekDay;\n }\n return null;\n}\nfunction parseIsoWeekday(input, locale = getLocale()) {\n if (isString(input)) {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNumber(input) && isNaN(input) ? null : input;\n}\n// MOMENTS\nfunction getSetDayOfWeek(date, input, opts) {\n if (!input) {\n return getDayOfWeek(date, opts.isUTC);\n }\n return setDayOfWeek(date, input, opts.locale, opts.isUTC);\n}\nfunction setDayOfWeek(date, input, locale = getLocale(), isUTC) {\n const day = getDay(date, isUTC);\n const _input = parseWeekday(input, locale);\n return add(date, _input - day, 'day');\n}\nfunction getDayOfWeek(date, isUTC) {\n return getDay(date, isUTC);\n}\n/********************************************/\n// todo: utc\n// getSetLocaleDayOfWeek\nfunction getLocaleDayOfWeek(date, locale = getLocale(), isUTC) {\n return (getDay(date, isUTC) + 7 - locale.firstDayOfWeek()) % 7;\n}\nfunction setLocaleDayOfWeek(date, input, opts = {}) {\n const weekday = getLocaleDayOfWeek(date, opts.locale, opts.isUTC);\n return add(date, input - weekday, 'day');\n}\n// getSetISODayOfWeek\nfunction getISODayOfWeek(date, isUTC) {\n return getDay(date, isUTC) || 7;\n}\nfunction setISODayOfWeek(date, input, opts = {}) {\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 const weekday = parseIsoWeekday(input, opts.locale);\n return setDayOfWeek(date, getDayOfWeek(date) % 7 ? weekday : weekday - 7);\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\nconst symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n};\nconst numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\nconst pluralForm = function (num) {\n return num === 0 ? 0 : num === 1 ? 1 : num === 2 ? 2 : num % 100 >= 3 && num % 100 <= 10 ? 3 : num % 100 >= 11 ? 4 : 5;\n};\nconst ɵ0$1 = pluralForm;\nconst plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nconst pluralize = function (u) {\n return function (num, withoutSuffix) {\n const f = pluralForm(num);\n let str = plurals[u][pluralForm(num)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, num.toString());\n };\n};\nconst ɵ1 = pluralize;\nconst months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n];\nconst arLocale = {\n abbr: 'ar',\n 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(input) {\n return 'م' === input;\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n }\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(str) {\n return str.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat(str) {\n return str.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n doy: 12 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\nconst ɵ0$2 = function (d) {\n switch (d) {\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//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Iskren Ivov Chernev : https://github.com/ichernev\n//! author : Kunal Marwaha : https://github.com/marwahaha\n//! author : Matt Grande : https://github.com/mattgrande\n//! author : Isaac Cambron : https://github.com/icambron\n//! author : Venelin Manchev : https://github.com/vmanchev\nconst bgLocale = {\n abbr: 'bg',\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\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: ɵ0$2,\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 (_num) {\n const number = Number(_num);\n let lastDigit = number % 10, last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n }\n else if (last2Digits === 0) {\n return number + '-ен';\n }\n else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n }\n else if (lastDigit === 1) {\n return number + '-ви';\n }\n else if (lastDigit === 2) {\n return number + '-ри';\n }\n else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n }\n else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Xavier Arbat : https://github.com/XavisaurusRex\nlet monthsShortDot = 'gen._feb._mar._abr._mai._jun._jul._ago._set._oct._nov._des.'.split('_'), monthsShort = 'ene_feb_mar_abr_mai_jun_jul_ago_set_oct_nov_des'.split('_');\nlet monthsParse = [/^gen/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^jun/i, /^jul/i, /^ago/i, /^set/i, /^oct/i, /^nov/i, /^des/i];\nlet monthsRegex = /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre|gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i;\nconst caLocale = {\n abbr: 'ca',\n months: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot;\n }\n if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i,\n monthsShortStrictRegex: /^(gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'diu._dil._dim._dix._dij._div._dis.'.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 [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(date) {\n return '[avui a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n nextDay(date) {\n return '[dema a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n lastDay(date) {\n return '[ahir a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [' + ('passada la ' + (getHours(date) !== 1) ? 'passades les' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %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}(er|on|er|rt|é)/,\n ordinal(_num) {\n const num = Number(_num);\n const output = (num > 4) ? 'é' :\n (num === 1 || num === 3) ? 'r' :\n (num === 2) ? 'n' :\n (num === 4) ? 't' : 'é';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\nconst months$1 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\nconst monthsShort$1 = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\nfunction plural(num) {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\nfunction translate(num, withoutSuffix, key, isFuture) {\n const result = num + ' ';\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(num) ? 'sekundy' : 'sekund');\n }\n else {\n return result + 'sekundami';\n }\n // break;\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(num) ? 'minuty' : 'minut');\n }\n else {\n return result + 'minutami';\n }\n // break;\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(num) ? 'hodiny' : 'hodin');\n }\n else {\n return result + 'hodinami';\n }\n // break;\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(num) ? 'dny' : 'dní');\n }\n else {\n return result + 'dny';\n }\n // break;\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(num) ? 'měsíce' : 'měsíců');\n }\n else {\n return result + 'měsíci';\n }\n // break;\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(num) ? 'roky' : 'let');\n }\n else {\n return result + 'lety';\n }\n // break;\n }\n}\nconst ɵ0$3 = function (months, monthsShort) {\n let i, _monthsParse = [];\n for (i = 0; i < 12; i++) {\n // use custom parser to solve problem with July (červenec)\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n }\n return _monthsParse;\n}, ɵ1$1 = function (monthsShort) {\n let i, _shortMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n }\n return _shortMonthsParse;\n}, ɵ2 = function (months) {\n let i, _longMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n }\n return _longMonthsParse;\n};\nconst csLocale = {\n abbr: 'cs',\n months: months$1,\n monthsShort: monthsShort$1,\n monthsParse: (ɵ0$3(months$1, monthsShort$1)),\n shortMonthsParse: (ɵ1$1(monthsShort$1)),\n longMonthsParse: (ɵ2(months$1)),\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(date) {\n switch (getDayOfWeek(date)) {\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(date) {\n switch (getDayOfWeek(date)) {\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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Danish (Denmark) [da]\n//! author : Per Hansen : https://github.com/perhp\nconst daLocale = {\n abbr: 'da',\n months: 'Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December'.split('_'),\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 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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\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\nfunction processRelativeTime(num, withoutSuffix, key, isFuture) {\n const format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [num + ' Tage', num + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [num + ' Monate', num + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [num + ' Jahre', num + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\nconst deLocale = {\n abbr: 'de',\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\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 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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\nconst enGbLocale = {\n abbr: 'en-gb',\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\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 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(_num) {\n const num = Number(_num);\n const b = num % 10, output = (~~(num % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\nlet monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nlet monthsParse$1 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex$1 = /^(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;\nconst esDoLocale = {\n abbr: 'es-do',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$1;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShort$2[getMonth(date, isUTC)];\n }\n else {\n return monthsShortDot$1[getMonth(date, isUTC)];\n }\n },\n monthsRegex: monthsRegex$1,\n monthsShortRegex: monthsRegex$1,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$1,\n longMonthsParse: monthsParse$1,\n shortMonthsParse: monthsParse$1,\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(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\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 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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\nlet monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nlet monthsParse$2 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex$2 = /^(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;\nconst esLocale = {\n abbr: 'es',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$2;\n }\n if (/-MMM-/.test(format)) {\n return monthsShort$3[getMonth(date, isUTC)];\n }\n return monthsShortDot$2[getMonth(date, isUTC)];\n },\n monthsRegex: monthsRegex$2,\n monthsShortRegex: monthsRegex$2,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$2,\n longMonthsParse: monthsParse$2,\n shortMonthsParse: monthsParse$2,\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(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\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 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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\nlet monthsShortDot$3 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nlet monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nconst esUsLocale = {\n abbr: 'es-us',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$3;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShort$4[getMonth(date, isUTC)];\n }\n else {\n return monthsShortDot$3[getMonth(date, isUTC)];\n }\n },\n monthsParseExact: true,\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: 'MMMM [de] D [de] YYYY',\n LLL: 'MMMM [de] D [de] YYYY h:mm A',\n LLLL: 'dddd, MMMM [de] D [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\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 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,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Chris Gedrim : https://github.com/a90machado\nconst processRelativeTime$1 = function (num, withoutSuffix, key, isFuture) {\n const format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [num + 'sekundi', num + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [num + ' minuti', num + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [num + ' tunni', num + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [num + ' kuu', num + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [num + ' aasta', num + ' 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};\nconst ɵ0$4 = processRelativeTime$1;\nconst etLocale = {\n abbr: 'et',\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\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$1,\n ss: processRelativeTime$1,\n m: processRelativeTime$1,\n mm: processRelativeTime$1,\n h: processRelativeTime$1,\n hh: processRelativeTime$1,\n d: processRelativeTime$1,\n dd: '%d päeva',\n M: processRelativeTime$1,\n MM: processRelativeTime$1,\n y: processRelativeTime$1,\n yy: processRelativeTime$1\n },\n dayOfMonthOrdinalParse: /\\d{1,2}./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n// https://github.com/moment/moment/blob/develop/locale/fi.js\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n];\nfunction translate$1(num, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\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(num, isFuture) + ' ' + result;\n return result;\n}\nfunction verbalNumber(num, isFuture) {\n return num < 10 ? (isFuture ? numbersFuture[num] : numbersPast[num]) : num;\n}\nconst fiLocale = {\n abbr: 'fi',\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\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$1,\n ss: translate$1,\n m: translate$1,\n mm: translate$1,\n h: translate$1,\n hh: translate$1,\n d: translate$1,\n dd: translate$1,\n M: translate$1,\n MM: translate$1,\n y: translate$1,\n yy: translate$1\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\nconst frLocale = {\n abbr: 'fr',\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\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|)/,\n ordinal(_num, period) {\n const num = Number(_num);\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 num + (num === 1 ? 'er' : '');\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 num + (num === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return num + (num === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Darío Beiró : https://github.com/quinobravo\nlet monthsShortDot$4 = 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), monthsShort$5 = 'xan_feb_mar_abr_mai_xuñ_xul_ago_set_out_nov_dec'.split('_');\nlet monthsParse$3 = [/^xan/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^xuñ/i, /^xul/i, /^ago/i, /^set/i, /^out/i, /^nov/i, /^dec/i];\nlet monthsRegex$3 = /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro|xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i;\nconst glLocale = {\n abbr: 'gl',\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot$4;\n }\n if (/-MMM-/.test(format)) {\n return monthsShort$5[getMonth(date, isUTC)];\n }\n return monthsShortDot$4[getMonth(date, isUTC)];\n },\n monthsRegex: monthsRegex$3,\n monthsShortRegex: monthsRegex$3,\n monthsStrictRegex: /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro)/i,\n monthsShortStrictRegex: /^(xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse$3,\n longMonthsParse: monthsParse$3,\n shortMonthsParse: monthsParse$3,\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(date) {\n return '[hoxe á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañan á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[onte á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[o] dddd [pasado á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'fai %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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\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\nconst heLocale = {\n abbr: 'he',\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\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: '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(num) {\n if (num === 2) {\n return 'שעתיים';\n }\n return num + ' שעות';\n },\n d: 'יום',\n dd(num) {\n if (num === 2) {\n return 'יומיים';\n }\n return num + ' ימים';\n },\n M: 'חודש',\n MM(num) {\n if (num === 2) {\n return 'חודשיים';\n }\n return num + ' חודשים';\n },\n y: 'שנה',\n yy(num) {\n if (num === 2) {\n return 'שנתיים';\n }\n else if (num % 10 === 0 && num !== 10) {\n return num + ' שנה';\n }\n return num + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM(input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n }\n else if (hour < 10) {\n return 'בבוקר';\n }\n else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n }\n else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n }\n else {\n return 'בערב';\n }\n }\n};\n\n//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\nlet symbolMap$1 = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n}, numberMap$1 = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\nconst hiLocale = {\n abbr: 'hi',\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\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: 'कुछ ही क्षण',\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(str) {\n return str.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$1[match];\n });\n },\n postformat(str) {\n return str.replace(/\\d/g, function (match) {\n return symbolMap$1[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(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n }\n else if (meridiem === 'सुबह') {\n return hour;\n }\n else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n }\n else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n }\n else if (hour < 10) {\n return 'सुबह';\n }\n else if (hour < 17) {\n return 'दोपहर';\n }\n else if (hour < 20) {\n return 'शाम';\n }\n else {\n return 'रात';\n }\n },\n week: {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\nlet weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\nfunction translate$2(num, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + ((isFuture || withoutSuffix) ? ' másodperc' : ' 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}\nfunction week(date, isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[getDayOfWeek(date)] + '] LT[-kor]';\n}\nconst huLocale = {\n abbr: 'hu',\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\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(input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n }\n else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek(date) {\n return week(date, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek(date) {\n return week(date, false);\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate$2,\n ss: translate$2,\n m: translate$2,\n mm: translate$2,\n h: translate$2,\n hh: translate$2,\n d: translate$2,\n dd: translate$2,\n M: translate$2,\n MM: translate$2,\n y: translate$2,\n yy: translate$2\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Danijel Grmec : https://github.com/cobaltsis\nconst hrLocale = {\n abbr: 'hr',\n months: 'Siječanj_Veljača_Ožujak_Travanj_Svibanj_Lipanj_Srpanj_Kolovoz_Rujan_Listopad_Studeni_Prosinac'.split('_'),\n monthsShort: 'Sij_Velj_Ožu_Tra_Svi_Lip_Srp_Kol_Ruj_Lis_Stu_Pro'.split('_'),\n weekdays: 'Nedjelja_Ponedjeljak_Utorak_Srijeda_Četvrtak_Petak_Subota'.split('_'),\n weekdaysShort: 'Ned_Pon_Uto_Sri_Čet_Pet_Sub'.split('_'),\n weekdaysMin: 'Ne_Po_Ut_Sr_Če_Pe_Su'.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: '[Danas u] LT',\n nextDay: '[Sutra u] LT',\n nextWeek: 'dddd [u] LT',\n lastDay: '[Jučer u] LT',\n lastWeek: '[Zadnji] dddd [u] LT',\n sameElse: 'L'\n },\n invalidDate: 'Neispravan datum',\n relativeTime: {\n future: 'za %s',\n past: '%s prije',\n s: 'nekoliko sekundi',\n ss: '%d sekundi',\n m: 'minuta',\n mm: '%d minuta',\n h: 'sat',\n hh: '%d sati',\n d: 'dan',\n dd: '%d dana',\n M: 'mjesec',\n MM: '%d mjeseci',\n y: 'godina',\n yy: '%d godina'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal(_num) {\n const num = Number(_num);\n const b = num % 10, output = (~~(num % 100 / 10) === 1) ? '.' :\n (b === 1) ? '.' :\n (b === 2) ? '.' :\n (b === 3) ? '.' : '.';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Indonesia [id]\n//! author : Romy Kusuma : https://github.com/rkusuma\n//! reference: https://github.com/moment/moment/blob/develop/locale/id.js\nconst idLocale = {\n abbr: 'id',\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_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(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n }\n else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n }\n else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n }\n else if (hours < 15) {\n return 'siang';\n }\n else if (hours < 19) {\n return 'sore';\n }\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: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\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\nconst itLocale = {\n abbr: 'it',\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\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 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(date) {\n switch (getDayOfWeek(date)) {\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(num) {\n return ((/^[0-9].+$/).test(num.toString(10)) ? 'tra' : 'in') + ' ' + num;\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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\nconst jaLocale = {\n abbr: 'ja',\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 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日 HH:mm dddd',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日 HH:mm dddd'\n },\n meridiemParse: /午前|午後/i,\n isPM(input) {\n return input === '午後';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n }\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(num, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n default:\n return num.toString(10);\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//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\n//! author : Levan Tskipuri : https://github.com/tskipa\nconst kaLocale = {\n abbr: 'ka',\n months: {\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_'),\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_')\n },\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.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: '[დღეს] 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 var st = s.toString();\n return (/(წამი|წუთი|საათი|წელი)/).test(st) ?\n st.replace(/ი$/, 'ში') :\n st + 'ში';\n },\n past(s) {\n var st = s.toString();\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(st)) {\n return st.replace(/(ი|ე)$/, 'ის წინ');\n }\n if ((/წელი/).test(st)) {\n return st.replace(/წელი$/, 'წლის წინ');\n }\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(_num, _period) {\n const num = Number(_num);\n if (num === 0) {\n return num.toString();\n }\n if (num === 1) {\n return num + '-ლი';\n }\n if ((num < 20) || (num <= 100 && (num % 20 === 0)) || (num % 100 === 0)) {\n return 'მე-' + num;\n }\n return num + '-ე';\n },\n week: {\n dow: 1,\n doy: 4\n }\n};\n\n// ! moment.js locale configuration\n// ! locale : Kazakh [kk]\n// ! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\nconst 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};\nconst kkLocale = {\n abbr: 'kk',\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\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: '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(_num) {\n const a = _num % 10;\n const b = _num >= 100 ? 100 : null;\n return _num + (suffixes[_num] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \nconst koLocale = {\n abbr: '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 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 (num, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '일';\n case 'M':\n return num + '월';\n case 'w':\n case 'W':\n return num + '주';\n default:\n return num.toString(10);\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//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Stanislavas Guk : https://github.com/ixoster\nconst 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};\nfunction translateSeconds(num, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n }\n else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n}\nfunction translateSingular(num, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n}\nfunction special(num) {\n return num % 10 === 0 || (num > 10 && num < 20);\n}\nfunction forms(key) {\n return units[key].split('_');\n}\nfunction translate$3(num, withoutSuffix, key, isFuture) {\n let result = num + ' ';\n if (num === 1) {\n return result + translateSingular(num, withoutSuffix, key[0], isFuture);\n }\n else if (withoutSuffix) {\n return result + (special(num) ? forms(key)[1] : forms(key)[0]);\n }\n else {\n if (isFuture) {\n return result + forms(key)[1];\n }\n else {\n return result + (special(num) ? forms(key)[1] : forms(key)[2]);\n }\n }\n}\nconst ltLocale = {\n abbr: '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 standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\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 standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\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$3,\n m: translateSingular,\n mm: translate$3,\n h: translateSingular,\n hh: translate$3,\n d: translateSingular,\n dd: translate$3,\n M: translateSingular,\n MM: translate$3,\n y: translateSingular,\n yy: translate$3\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal(num) {\n return num + '-oji';\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Matiss Janis Aboltins : https://github.com/matissjanis\nconst lvLocale = {\n abbr: 'lv',\n months: 'Janvāris_Februāris_Marts_Aprīlis_Maijs_Jūnijs_Jūlijs_Augusts_Septembris_Oktobris_Novembris_Decembris'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mai_Jūn_Jūl_Aug_Sep_Okt_Nov_Dec'.split('_'),\n weekdays: 'Svētdiena_Pirmdiena_Otrdiena_Trešdiena_Ceturtdiena_Piektdiena_Sestdiena'.split('_'),\n weekdaysShort: 'Svētd_Pirmd_Otrd_Trešd_Ceturtd_Piektd_Sestd'.split('_'),\n weekdaysMin: 'Sv_Pi_Ot_Tr_Ce_Pk_Se'.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: 'pēc %s',\n past: 'pirms %s',\n s: 'dažām sekundēm',\n ss: '%d sekundēm',\n m: 'minūtes',\n mm: '%d minūtēm',\n h: 'stundas',\n hh: '%d stundām',\n d: 'dienas',\n dd: '%d dienām',\n M: 'mēneša',\n MM: '%d mēnešiem',\n y: 'gada',\n yy: '%d gadiem'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal(num) {\n return num + '.';\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\nfunction translate$4(num, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return num + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return num + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return num + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return num + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return num + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return num + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return num.toString(10);\n }\n}\nconst mnLocale = {\n abbr: 'mn',\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\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 }\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$4,\n ss: translate$4,\n m: translate$4,\n mm: translate$4,\n h: translate$4,\n hh: translate$4,\n d: translate$4,\n dd: translate$4,\n M: translate$4,\n MM: translate$4,\n y: translate$4,\n yy: translate$4\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (num, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + ' өдөр';\n default:\n return num.toString(10);\n }\n }\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\nconst nbLocale = {\n abbr: 'nb',\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_april_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: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en 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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\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\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nlet monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\nlet monthsParse$4 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex$4 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\nconst nlBeLocale = {\n abbr: 'nl-be',\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortWithDots;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[getMonth(date, isUTC)];\n }\n else {\n return monthsShortWithDots[getMonth(date, isUTC)];\n }\n },\n monthsRegex: monthsRegex$4,\n monthsShortRegex: monthsRegex$4,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse$4,\n longMonthsParse: monthsParse$4,\n shortMonthsParse: monthsParse$4,\n weekdays: '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(_num) {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\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\nlet monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\nlet monthsParse$5 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex$5 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\nconst nlLocale = {\n abbr: 'nl',\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortWithDots$1;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$1[getMonth(date, isUTC)];\n }\n else {\n return monthsShortWithDots$1[getMonth(date, isUTC)];\n }\n },\n monthsRegex: monthsRegex$5,\n monthsShortRegex: monthsRegex$5,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse$5,\n longMonthsParse: monthsParse$5,\n shortMonthsParse: monthsParse$5,\n weekdays: '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(_num) {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\nlet monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\nlet monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\nfunction plural$1(num) {\n return (num % 10 < 5) && (num % 10 > 1) && ((~~(num / 10) % 10) !== 1);\n}\nfunction translate$5(num, withoutSuffix, key) {\n let result = num + ' ';\n switch (key) {\n case 'ss':\n return result + (plural$1(num) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural$1(num) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural$1(num) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural$1(num) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural$1(num) ? 'lata' : 'lat');\n }\n}\nconst plLocale = {\n abbr: 'pl',\n months(date, format, isUTC) {\n if (!date) {\n return monthsNominative;\n }\n else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[getMonth(date, isUTC)] + '|' + monthsNominative[getMonth(date, isUTC)] + ')';\n }\n else if (/D MMMM/.test(format)) {\n return monthsSubjective[getMonth(date, isUTC)];\n }\n else {\n return monthsNominative[getMonth(date, isUTC)];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: '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(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W niedzielę o] LT';\n case 2:\n return '[We wtorek o] LT';\n case 3:\n return '[W środę o] LT';\n case 5:\n return '[W piątek o] LT';\n case 6:\n return '[W sobotę o] LT';\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 4:\n return '[W zeszłą czwartek o] LT';\n case 5:\n return '[W zeszłą piątek 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$5,\n m: translate$5,\n mm: translate$5,\n h: translate$5,\n hh: translate$5,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate$5,\n y: 'rok',\n yy: translate$5\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\nconst ptBrLocale = {\n abbr: 'pt-br',\n months: 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\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(date) {\n return (getDayOfWeek(date) === 0 || getDayOfWeek(date) === 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: '%s atrá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};\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 : Earle white: https://github.com/5earle\nfunction relativeTimeWithPlural(num, withoutSuffix, key) {\n let format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani'\n };\n let separator = ' ';\n if (num % 100 >= 20 || (num >= 100 && num % 100 === 0)) {\n separator = ' de ';\n }\n return num + separator + format[key];\n}\nconst roLocale = {\n abbr: 'ro',\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\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 M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\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\nfunction plural$2(word, num) {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural$1(num, withoutSuffix, key) {\n let format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n return num + ' ' + plural$2(format[key], +num);\n}\nlet monthsParse$6 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\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\nconst ruLocale = {\n abbr: 'ru',\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse$6,\n longMonthsParse: monthsParse$6,\n shortMonthsParse: monthsParse$6,\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/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(date, now) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\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 }\n else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n }\n else {\n return '[В] dddd [в] LT';\n }\n }\n },\n lastWeek(date, now) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\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 }\n else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n }\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$1,\n m: relativeTimeWithPlural$1,\n mm: relativeTimeWithPlural$1,\n h: 'час',\n hh: relativeTimeWithPlural$1,\n d: 'день',\n dd: relativeTimeWithPlural$1,\n M: 'месяц',\n MM: relativeTimeWithPlural$1,\n y: 'год',\n yy: relativeTimeWithPlural$1\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM(input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n }\n else if (hour < 12) {\n return 'утра';\n }\n else if (hour < 17) {\n return 'дня';\n }\n else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return num + '-й';\n case 'D':\n return num + '-го';\n case 'w':\n case 'W':\n return num + '-я';\n default:\n return num.toString(10);\n }\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Jozef Pažin : https://github.com/atiris\nconst months$2 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\nconst monthsShort$6 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\nfunction plural$3(num) {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\nfunction translate$6(num, withoutSuffix, key, isFuture) {\n const result = num + ' ';\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$3(num) ? 'sekundy' : 'sekúnd');\n }\n else {\n return result + 'sekundami';\n }\n // break;\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$3(num) ? 'minúty' : 'minút');\n }\n else {\n return result + 'minútami';\n }\n // break;\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$3(num) ? 'hodiny' : 'hodín');\n }\n else {\n return result + 'hodinami';\n }\n // break;\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$3(num) ? 'dni' : 'dní');\n }\n else {\n return result + 'dňami';\n }\n // break;\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$3(num) ? 'mesiace' : 'mesiacov');\n }\n else {\n return result + 'mesiacmi';\n }\n // break;\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$3(num) ? 'roky' : 'rokov');\n }\n else {\n return result + 'rokmi';\n }\n // break;\n }\n}\nconst skLocale = {\n abbr: 'sk',\n months: months$2,\n monthsShort: monthsShort$6,\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 l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek(date) {\n switch (getDayOfWeek(date)) {\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(date) {\n switch (getDayOfWeek(date)) {\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: 'o %s',\n past: 'pred %s',\n s: translate$6,\n ss: translate$6,\n m: translate$6,\n mm: translate$6,\n h: translate$6,\n hh: translate$6,\n d: translate$6,\n dd: translate$6,\n M: translate$6,\n MM: translate$6,\n y: translate$6,\n yy: translate$6\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : mihan : https://github.com/mihan\nfunction processRelativeTime$2(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n }\n else {\n result += withoutSuffix || isFuture ? 'sekund' : '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 }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n }\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 }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n }\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 }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n }\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 }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n }\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 }\n else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n }\n else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n }\n else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n}\nconst slLocale = {\n abbr: 'sl',\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\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 nextWeek(date) {\n switch (getDayOfWeek(date)) {\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(date) {\n switch (getDayOfWeek(date)) {\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$2,\n ss: processRelativeTime$2,\n m: processRelativeTime$2,\n mm: processRelativeTime$2,\n h: processRelativeTime$2,\n hh: processRelativeTime$2,\n d: processRelativeTime$2,\n dd: processRelativeTime$2,\n M: processRelativeTime$2,\n MM: processRelativeTime$2,\n y: processRelativeTime$2,\n yy: processRelativeTime$2\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Agon Cecelia : https://github.com/agoncecelia\nconst sqLocale = {\n abbr: 'sq',\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\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 weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'Di_He_Ma_Me_En_Pr_Sh'.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: '[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: 'para %sve',\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,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\nconst svLocale = {\n abbr: 'sv',\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\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(_num) {\n const num = Number(_num);\n let b = num % 10, output = (~~(num % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n// moment.js locale configuration\n// locale : Thai [th]\n// author : Watcharapol Sanitwong : https://github.com/tumit\nconst thLocale = {\n abbr: 'th',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.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: '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(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n }\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};\n\n// moment.js locale configuration\n// locale : Thai-Buddhist Era [th-be]\n// author : Watcharapol Sanitwong : https://github.com/tumit\nconst thBeLocale = {\n abbr: 'th-be',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.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: '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(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n }\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 preparse(str, format) {\n const _format = thBeLocale.longDateFormat[format]\n ? thBeLocale.longDateFormat[format]\n : format;\n // endsWith('YYYY')\n if (_format.indexOf('YYYY', _format.length - 'YYYY'.length) !== -1) {\n const ddMM = str.substr(0, str.length - 4);\n const yyyy = parseInt(str.substr(str.length - 4), 10) - 543;\n return ddMM + yyyy;\n }\n return str;\n },\n getFullYear(date, isUTC = false) {\n return 543 + (isUTC ? date.getUTCFullYear() : date.getFullYear());\n }\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\nlet suffixes$1 = {\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};\nconst trLocale = {\n abbr: 'tr',\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\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 weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.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 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 M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n ordinal(_num) {\n const num = Number(_num);\n if (num === 0) { // special case for zero\n return num + '\\'ıncı';\n }\n let a = num % 10, b = num % 100 - a, c = num >= 100 ? 100 : null;\n return num + (suffixes$1[a] || suffixes$1[b] || suffixes$1[c]);\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\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\nfunction plural$4(word, num) {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural$2(num, withoutSuffix, key) {\n let 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 }\n if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n return num + ' ' + plural$4(format[key], +num);\n}\nfunction weekdaysCaseReplace(date, format, isUTC) {\n let weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n if (!date) {\n return weekdays.nominative;\n }\n let nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][getDayOfWeek(date, isUTC)];\n}\nfunction processHoursFunction(str) {\n return function (date) {\n return str + 'о' + (getHours(date) === 11 ? 'б' : '') + '] LT';\n };\n}\nconst ukLocale = {\n abbr: 'uk',\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\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(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [')(date);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [')(date);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural$2,\n m: relativeTimeWithPlural$2,\n mm: relativeTimeWithPlural$2,\n h: 'годину',\n hh: relativeTimeWithPlural$2,\n d: 'день',\n dd: relativeTimeWithPlural$2,\n M: 'місяць',\n MM: relativeTimeWithPlural$2,\n y: 'рік',\n yy: relativeTimeWithPlural$2\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(input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n }\n else if (hour < 12) {\n return 'ранку';\n }\n else if (hour < 17) {\n return 'дня';\n }\n else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return num + '-й';\n case 'D':\n return num + '-го';\n default:\n return num.toString();\n }\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n//! moment.js locale configuration\n//! locale : Việt Nam [vi]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\nconst viLocale = {\n abbr: '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 monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\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 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(input) {\n return /^ch$/i.test(input);\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n }\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 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(_num) {\n return '' + _num;\n },\n week: {\n dow: 1,\n doy: 4 // Tuần chứa ngày 4 tháng 1 là tuần đầu tiên trong năm.\n }\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\nconst zhCnLocale = {\n abbr: 'zh-cn',\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\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(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n }\n else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n let hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n }\n else if (hm < 900) {\n return '早上';\n }\n else if (hm < 1130) {\n return '上午';\n }\n else if (hm < 1230) {\n return '中午';\n }\n else if (hm < 1800) {\n return '下午';\n }\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(_num, period) {\n const num = Number(_num);\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n case 'M':\n return num + '月';\n case 'w':\n case 'W':\n return num + '周';\n default:\n return num.toString();\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 week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { add, arLocale, bgLocale, caLocale, csLocale, daLocale, deLocale, defineLocale, enGbLocale, endOf, esDoLocale, esLocale, esUsLocale, etLocale, fiLocale, formatDate, frLocale, getDay, getFirstDayOfMonth, getFullYear, getLocale, getMonth, getSetGlobalLocale, glLocale, heLocale, hiLocale, hrLocale, huLocale, idLocale, isAfter, isArray, isBefore, isDate, isDateValid, isDisabledDay, isFirstDayOfWeek, isSame, isSameDay, isSameMonth, isSameYear, itLocale, jaLocale, kaLocale, kkLocale, koLocale, listLocales, ltLocale, lvLocale, mnLocale, nbLocale, nlBeLocale, nlLocale, parseDate, plLocale, ptBrLocale, roLocale, ruLocale, setFullDate, shiftDate, skLocale, slLocale, sqLocale, startOf, subtract, svLocale, thBeLocale, thLocale, trLocale, ukLocale, updateLocale, utcAsLocal, viLocale, zhCnLocale, createDate as ɵa };\n\n","import { style, animate, AnimationBuilder } from '@angular/animations';\nimport { EventEmitter, Directive, ElementRef, Renderer2, Output, HostBinding, Input, NgModule } from '@angular/core';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/animations';\nconst COLLAPSE_ANIMATION_TIMING = '400ms cubic-bezier(0.4,0.0,0.2,1)';\nconst expandAnimation = [\n style({ height: 0, visibility: 'hidden' }),\n animate(COLLAPSE_ANIMATION_TIMING, style({ height: '*', visibility: 'visible' }))\n];\nconst collapseAnimation = [\n style({ height: '*', visibility: 'visible' }),\n animate(COLLAPSE_ANIMATION_TIMING, style({ height: 0, visibility: 'hidden' }))\n];\n\nclass CollapseDirective {\n constructor(_el, _renderer, _builder) {\n this._el = _el;\n this._renderer = _renderer;\n /** This event fires as soon as content collapses */\n this.collapsed = new EventEmitter();\n /** This event fires when collapsing is started */\n this.collapses = new EventEmitter();\n /** This event fires as soon as content becomes visible */\n this.expanded = new EventEmitter();\n /** This event fires when expansion is started */\n this.expands = new EventEmitter();\n // shown\n this.isExpanded = true;\n this.collapseNewValue = true;\n // hidden\n this.isCollapsed = false;\n // stale state\n this.isCollapse = true;\n // animation state\n this.isCollapsing = false;\n /** turn on/off animation */\n this.isAnimated = false;\n this._display = 'block';\n this._stylesLoaded = false;\n this._COLLAPSE_ACTION_NAME = 'collapse';\n this._EXPAND_ACTION_NAME = 'expand';\n this._factoryCollapseAnimation = _builder.build(collapseAnimation);\n this._factoryExpandAnimation = _builder.build(expandAnimation);\n }\n set display(value) {\n this._display = value;\n if (value === 'none') {\n this.hide();\n return;\n }\n this.isAnimated ? this.toggle() : this.show();\n }\n /** A flag indicating visibility of content (shown or hidden) */\n set collapse(value) {\n this.collapseNewValue = value;\n if (!this._player || this._isAnimationDone) {\n this.isExpanded = value;\n this.toggle();\n }\n }\n get collapse() {\n return this.isExpanded;\n }\n ngAfterViewChecked() {\n this._stylesLoaded = true;\n if (!this._player || !this._isAnimationDone) {\n return;\n }\n this._player.reset();\n this._renderer.setStyle(this._el.nativeElement, 'height', '*');\n }\n /** allows to manually toggle content visibility */\n toggle() {\n if (this.isExpanded) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n /** allows to manually hide content */\n hide() {\n this.isCollapsing = true;\n this.isExpanded = false;\n this.isCollapsed = true;\n this.isCollapsing = false;\n this.collapses.emit(this);\n this._isAnimationDone = false;\n this.animationRun(this.isAnimated, this._COLLAPSE_ACTION_NAME)(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.show();\n return;\n }\n this.collapsed.emit(this);\n this._renderer.setStyle(this._el.nativeElement, 'display', 'none');\n });\n }\n /** allows to manually show collapsed content */\n show() {\n this._renderer.setStyle(this._el.nativeElement, 'display', this._display);\n this.isCollapsing = true;\n this.isExpanded = true;\n this.isCollapsed = false;\n this.isCollapsing = false;\n this.expands.emit(this);\n this._isAnimationDone = false;\n this.animationRun(this.isAnimated, this._EXPAND_ACTION_NAME)(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.hide();\n return;\n }\n this.expanded.emit(this);\n this._renderer.removeStyle(this._el.nativeElement, 'overflow');\n });\n }\n animationRun(isAnimated, action) {\n if (!isAnimated || !this._stylesLoaded) {\n return (callback) => callback();\n }\n this._renderer.setStyle(this._el.nativeElement, 'overflow', 'hidden');\n this._renderer.addClass(this._el.nativeElement, 'collapse');\n const factoryAnimation = (action === this._EXPAND_ACTION_NAME)\n ? this._factoryExpandAnimation\n : this._factoryCollapseAnimation;\n if (this._player) {\n this._player.destroy();\n }\n this._player = factoryAnimation.create(this._el.nativeElement);\n this._player.play();\n return (callback) => { var _a; return (_a = this._player) === null || _a === void 0 ? void 0 : _a.onDone(callback); };\n }\n}\nCollapseDirective.ɵfac = function CollapseDirective_Factory(t) { return new (t || CollapseDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.AnimationBuilder)); };\nCollapseDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CollapseDirective, selectors: [[\"\", \"collapse\", \"\"]], hostVars: 9, hostBindings: function CollapseDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-hidden\", ctx.isCollapsed);\n ɵngcc0.ɵɵclassProp(\"collapse\", ctx.isCollapse)(\"in\", ctx.isExpanded)(\"show\", ctx.isExpanded)(\"collapsing\", ctx.isCollapsing);\n } }, inputs: { isAnimated: \"isAnimated\", display: \"display\", collapse: \"collapse\" }, outputs: { collapsed: \"collapsed\", collapses: \"collapses\", expanded: \"expanded\", expands: \"expands\" }, exportAs: [\"bs-collapse\"] });\nCollapseDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: AnimationBuilder }\n];\nCollapseDirective.propDecorators = {\n collapsed: [{ type: Output }],\n collapses: [{ type: Output }],\n expanded: [{ type: Output }],\n expands: [{ type: Output }],\n isExpanded: [{ type: HostBinding, args: ['class.in',] }, { type: HostBinding, args: ['class.show',] }],\n isCollapsed: [{ type: HostBinding, args: ['attr.aria-hidden',] }],\n isCollapse: [{ type: HostBinding, args: ['class.collapse',] }],\n isCollapsing: [{ type: HostBinding, args: ['class.collapsing',] }],\n display: [{ type: Input }],\n isAnimated: [{ type: Input }],\n collapse: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CollapseDirective, [{\n type: Directive,\n args: [{\n selector: '[collapse]',\n exportAs: 'bs-collapse',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.collapse]': 'true'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc1.AnimationBuilder }]; }, { collapsed: [{\n type: Output\n }], collapses: [{\n type: Output\n }], expanded: [{\n type: Output\n }], expands: [{\n type: Output\n }], isExpanded: [{\n type: HostBinding,\n args: ['class.in']\n }, {\n type: HostBinding,\n args: ['class.show']\n }], isCollapsed: [{\n type: HostBinding,\n args: ['attr.aria-hidden']\n }], isCollapse: [{\n type: HostBinding,\n args: ['class.collapse']\n }], isCollapsing: [{\n type: HostBinding,\n args: ['class.collapsing']\n }], isAnimated: [{\n type: Input\n }], display: [{\n type: Input\n }], collapse: [{\n type: Input\n }] }); })();\n\nclass CollapseModule {\n static forRoot() {\n return { ngModule: CollapseModule, providers: [] };\n }\n}\nCollapseModule.ɵfac = function CollapseModule_Factory(t) { return new (t || CollapseModule)(); };\nCollapseModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CollapseModule });\nCollapseModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CollapseModule, [{\n type: NgModule,\n args: [{\n declarations: [CollapseDirective],\n exports: [CollapseDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CollapseModule, { declarations: [CollapseDirective], exports: [CollapseDirective] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CollapseDirective, CollapseModule };\n\n","import { EventEmitter, Injector, ElementRef, TemplateRef, ɵɵdefineInjectable, ɵɵinject, ComponentFactoryResolver, NgZone, INJECTOR, ApplicationRef, Injectable } from '@angular/core';\nimport { listenToTriggersV2, registerOutsideClick, registerEscClick } from 'ngx-bootstrap/utils';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from 'ngx-bootstrap/positioning';\nclass BsComponentRef {\n}\n\n/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nclass ContentRef {\n constructor(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodes, viewRef, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\n\n// todo: add delay support\nclass ComponentLoader {\n /**\n * Do not use this directly, it should be instanced via\n * `ComponentLoadFactory.attach`\n * @internal\n */\n constructor(_viewContainerRef, _renderer, _elementRef, _injector, _componentFactoryResolver, _ngZone, _applicationRef, _posService) {\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._injector = _injector;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._applicationRef = _applicationRef;\n this._posService = _posService;\n this.onBeforeShow = new EventEmitter();\n this.onShown = new EventEmitter();\n this.onBeforeHide = new EventEmitter();\n this.onHidden = new EventEmitter();\n this._providers = [];\n this._isHiding = false;\n /**\n * A selector used if container element was not found\n */\n this.containerDefaultSelector = 'body';\n this._listenOpts = {};\n this._globalListener = Function.prototype;\n }\n get isShown() {\n if (this._isHiding) {\n return false;\n }\n return !!this._componentRef;\n }\n attach(compType) {\n this._componentFactory = this._componentFactoryResolver\n .resolveComponentFactory(compType);\n return this;\n }\n // todo: add behaviour: to target element, `body`, custom element\n to(container) {\n this.container = container || this.container;\n return this;\n }\n position(opts) {\n if (!opts) {\n return this;\n }\n this.attachment = opts.attachment || this.attachment;\n this._elementRef = opts.target || this._elementRef;\n return this;\n }\n provide(provider) {\n this._providers.push(provider);\n return this;\n }\n // todo: appendChild to element or document.querySelector(this.container)\n show(opts = {}) {\n this._subscribePositioning();\n this._innerComponent = void 0;\n if (!this._componentRef) {\n this.onBeforeShow.emit();\n this._contentRef = this._getContentRef(opts.content, opts.context, opts.initialState);\n const injector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n if (!this._componentFactory) {\n return;\n }\n this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);\n this._applicationRef.attachView(this._componentRef.hostView);\n // this._componentRef = this._viewContainerRef\n // .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);\n this.instance = this._componentRef.instance;\n Object.assign(this._componentRef.instance, opts);\n if (this.container instanceof ElementRef) {\n this.container.nativeElement.appendChild(this._componentRef.location.nativeElement);\n }\n if (typeof this.container === 'string' && typeof document !== 'undefined') {\n const selectedElement = document.querySelector(this.container) ||\n document.querySelector(this.containerDefaultSelector);\n if (!selectedElement) {\n return;\n }\n selectedElement.appendChild(this._componentRef.location.nativeElement);\n }\n if (!this.container &&\n this._elementRef &&\n this._elementRef.nativeElement.parentElement) {\n this._elementRef.nativeElement.parentElement.appendChild(this._componentRef.location.nativeElement);\n }\n // we need to manually invoke change detection since events registered\n // via\n // Renderer::listen() are not picked up by change detection with the\n // OnPush strategy\n if (this._contentRef.componentRef) {\n this._innerComponent = this._contentRef.componentRef.instance;\n this._contentRef.componentRef.changeDetectorRef.markForCheck();\n this._contentRef.componentRef.changeDetectorRef.detectChanges();\n }\n this._componentRef.changeDetectorRef.markForCheck();\n this._componentRef.changeDetectorRef.detectChanges();\n this.onShown.emit(opts.id ? { id: opts.id } : this._componentRef.instance);\n }\n this._registerOutsideClick();\n return this._componentRef;\n }\n hide(id) {\n var _a, _b, _c;\n if (!this._componentRef) {\n return this;\n }\n this._posService.deletePositionElement(this._componentRef.location);\n this.onBeforeHide.emit(this._componentRef.instance);\n const componentEl = this._componentRef.location.nativeElement;\n componentEl.parentNode.removeChild(componentEl);\n if ((_a = this._contentRef) === null || _a === void 0 ? void 0 : _a.componentRef) {\n this._contentRef.componentRef.destroy();\n }\n if (this._viewContainerRef && ((_b = this._contentRef) === null || _b === void 0 ? void 0 : _b.viewRef)) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));\n }\n if ((_c = this._contentRef) === null || _c === void 0 ? void 0 : _c.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._contentRef = void 0;\n this._componentRef = void 0;\n this._removeGlobalListener();\n this.onHidden.emit(id ? { id } : null);\n return this;\n }\n toggle() {\n if (this.isShown) {\n this.hide();\n return;\n }\n this.show();\n }\n dispose() {\n if (this.isShown) {\n this.hide();\n }\n this._unsubscribePositioning();\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n }\n listen(listenOpts) {\n var _a;\n this.triggers = listenOpts.triggers || this.triggers;\n this._listenOpts.outsideClick = listenOpts.outsideClick;\n this._listenOpts.outsideEsc = listenOpts.outsideEsc;\n listenOpts.target = listenOpts.target || ((_a = this._elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement);\n const hide = (this._listenOpts.hide = () => listenOpts.hide ? listenOpts.hide() : void this.hide());\n const show = (this._listenOpts.show = (registerHide) => {\n listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);\n registerHide();\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toggle = (registerHide) => {\n this.isShown ? hide() : show(registerHide);\n };\n if (this._renderer) {\n this._unregisterListenersFn = listenToTriggersV2(this._renderer, {\n target: listenOpts.target,\n triggers: listenOpts.triggers,\n show,\n hide,\n toggle\n });\n }\n return this;\n }\n _removeGlobalListener() {\n if (this._globalListener) {\n this._globalListener();\n this._globalListener = Function.prototype;\n }\n }\n attachInline(vRef, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template) {\n if (vRef && template) {\n this._inlineViewRef = vRef.createEmbeddedView(template);\n }\n return this;\n }\n _registerOutsideClick() {\n if (!this._componentRef || !this._componentRef.location) {\n return;\n }\n // why: should run after first event bubble\n if (this._listenOpts.outsideClick) {\n const target = this._componentRef.location.nativeElement;\n setTimeout(() => {\n if (this._renderer && this._elementRef) {\n this._globalListener = registerOutsideClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideClick: this._listenOpts.outsideClick,\n hide: () => this._listenOpts.hide && this._listenOpts.hide()\n });\n }\n });\n }\n if (this._listenOpts.outsideEsc && this._renderer && this._elementRef) {\n const target = this._componentRef.location.nativeElement;\n this._globalListener = registerEscClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideEsc: this._listenOpts.outsideEsc,\n hide: () => this._listenOpts.hide && this._listenOpts.hide()\n });\n }\n }\n getInnerComponent() {\n return this._innerComponent;\n }\n _subscribePositioning() {\n if (this._zoneSubscription || !this.attachment) {\n return;\n }\n this.onShown.subscribe(() => {\n var _a;\n this._posService.position({\n element: (_a = this._componentRef) === null || _a === void 0 ? void 0 : _a.location,\n target: this._elementRef,\n attachment: this.attachment,\n appendToBody: this.container === 'body'\n });\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\n if (!this._componentRef) {\n return;\n }\n this._posService.calcPosition();\n });\n }\n _unsubscribePositioning() {\n if (!this._zoneSubscription) {\n return;\n }\n this._zoneSubscription.unsubscribe();\n this._zoneSubscription = void 0;\n }\n _getContentRef(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n content, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n initialState) {\n if (!content) {\n return new ContentRef([]);\n }\n if (content instanceof TemplateRef) {\n if (this._viewContainerRef) {\n const _viewRef = this._viewContainerRef\n .createEmbeddedView(content, context);\n _viewRef.markForCheck();\n return new ContentRef([_viewRef.rootNodes], _viewRef);\n }\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n if (typeof content === 'function') {\n const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(content);\n const modalContentInjector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n const componentRef = contentCmptFactory.create(modalContentInjector);\n Object.assign(componentRef.instance, initialState);\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);\n }\n const nodes = this._renderer\n ? [this._renderer.createText(`${content}`)]\n : [];\n return new ContentRef([nodes]);\n }\n}\n\nclass ComponentLoaderFactory {\n constructor(_componentFactoryResolver, _ngZone, _injector, _posService, _applicationRef) {\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._injector = _injector;\n this._posService = _posService;\n this._applicationRef = _applicationRef;\n }\n /**\n *\n * @param _elementRef\n * @param _viewContainerRef\n * @param _renderer\n */\n createLoader(_elementRef, _viewContainerRef, _renderer) {\n return new ComponentLoader(_viewContainerRef, _renderer, _elementRef, this._injector, this._componentFactoryResolver, this._ngZone, this._applicationRef, this._posService);\n }\n}\nComponentLoaderFactory.ɵfac = function ComponentLoaderFactory_Factory(t) { return new (t || ComponentLoaderFactory)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(ɵngcc1.PositioningService), ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef)); };\nComponentLoaderFactory.ɵprov = ɵɵdefineInjectable({ factory: function ComponentLoaderFactory_Factory() { return new ComponentLoaderFactory(ɵɵinject(ComponentFactoryResolver), ɵɵinject(NgZone), ɵɵinject(INJECTOR), ɵɵinject(PositioningService), ɵɵinject(ApplicationRef)); }, token: ComponentLoaderFactory, providedIn: \"root\" });\nComponentLoaderFactory.ctorParameters = () => [\n { type: ComponentFactoryResolver },\n { type: NgZone },\n { type: Injector },\n { type: PositioningService },\n { type: ApplicationRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ComponentLoaderFactory, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Injector }, { type: ɵngcc1.PositioningService }, { type: ɵngcc0.ApplicationRef }]; }, null); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsComponentRef, ComponentLoader, ComponentLoaderFactory, ContentRef };\n\n","import { BehaviorSubject, queueScheduler, Observable } from 'rxjs';\nimport { observeOn, scan, map, distinctUntilChanged } from 'rxjs/operators';\n\nclass MiniState extends BehaviorSubject {\n constructor(_initialState, actionsDispatcher$, reducer) {\n super(_initialState);\n const actionInQueue$ = actionsDispatcher$.pipe(observeOn(queueScheduler));\n const state$ = actionInQueue$.pipe(scan((state, action) => {\n if (!action) {\n return state;\n }\n return reducer(state, action);\n }, _initialState));\n state$.subscribe((value) => this.next(value));\n }\n}\n\n/**\n * @copyright ngrx\n */\nclass MiniStore extends Observable {\n constructor(_dispatcher, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _reducer, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state$) {\n super();\n this._dispatcher = _dispatcher;\n this._reducer = _reducer;\n this.source = state$;\n }\n select(pathOrMapFn) {\n const mapped$ = this.source.pipe(map(pathOrMapFn));\n return mapped$.pipe(distinctUntilChanged());\n }\n lift(operator) {\n const store = new MiniStore(this._dispatcher, this._reducer, this);\n store.operator = operator;\n return store;\n }\n dispatch(action) {\n this._dispatcher.next(action);\n }\n next(action) {\n this._dispatcher.next(action);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(err) {\n this._dispatcher.error(err);\n }\n complete() {\n /*noop*/\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MiniState, MiniStore };\n\n","import { Injectable, ɵɵdefineInjectable, forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, Input, Output, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { MiniStore, MiniState } from 'ngx-bootstrap/mini-ngrx';\nimport { CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction TimepickerComponent_td_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0\\u00A0\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_7_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"a\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function TimepickerComponent_td_7_Template_a_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.changeMinutes(ctx_r18.minuteStep); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", !ctx_r1.canIncrementMinutes || !ctx_r1.isEditable);\n} }\nfunction TimepickerComponent_td_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_9_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"a\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function TimepickerComponent_td_9_Template_a_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.changeSeconds(ctx_r20.secondsStep); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", !ctx_r3.canIncrementSeconds || !ctx_r3.isEditable);\n} }\nfunction TimepickerComponent_td_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0\\u00A0\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_11_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\");\n} }\nfunction TimepickerComponent_td_15_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0:\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_16_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 4)(1, \"input\", 5);\n ɵngcc0.ɵɵlistener(\"wheel\", function TimepickerComponent_td_16_Template_input_wheel_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r22 = ɵngcc0.ɵɵnextContext(); ctx_r22.prevDef($event); return ctx_r22.changeMinutes(ctx_r22.minuteStep * ctx_r22.wheelSign($event), \"wheel\"); })(\"keydown.ArrowUp\", function TimepickerComponent_td_16_Template_input_keydown_ArrowUp_1_listener() { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.changeMinutes(ctx_r24.minuteStep, \"key\"); })(\"keydown.ArrowDown\", function TimepickerComponent_td_16_Template_input_keydown_ArrowDown_1_listener() { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.changeMinutes(-ctx_r25.minuteStep, \"key\"); })(\"change\", function TimepickerComponent_td_16_Template_input_change_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r26 = ɵngcc0.ɵɵnextContext(); return ctx_r26.updateMinutes($event.target); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"has-error\", ctx_r7.invalidMinutes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"is-invalid\", ctx_r7.invalidMinutes);\n ɵngcc0.ɵɵproperty(\"placeholder\", ctx_r7.minutesPlaceholder)(\"readonly\", ctx_r7.readonlyInput)(\"disabled\", ctx_r7.disabled)(\"value\", ctx_r7.minutes);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r7.labelMinutes);\n} }\nfunction TimepickerComponent_td_17_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0:\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_18_Template(rf, ctx) { if (rf & 1) {\n const _r28 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 4)(1, \"input\", 5);\n ɵngcc0.ɵɵlistener(\"wheel\", function TimepickerComponent_td_18_Template_input_wheel_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r27 = ɵngcc0.ɵɵnextContext(); ctx_r27.prevDef($event); return ctx_r27.changeSeconds(ctx_r27.secondsStep * ctx_r27.wheelSign($event), \"wheel\"); })(\"keydown.ArrowUp\", function TimepickerComponent_td_18_Template_input_keydown_ArrowUp_1_listener() { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r29 = ɵngcc0.ɵɵnextContext(); return ctx_r29.changeSeconds(ctx_r29.secondsStep, \"key\"); })(\"keydown.ArrowDown\", function TimepickerComponent_td_18_Template_input_keydown_ArrowDown_1_listener() { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r30 = ɵngcc0.ɵɵnextContext(); return ctx_r30.changeSeconds(-ctx_r30.secondsStep, \"key\"); })(\"change\", function TimepickerComponent_td_18_Template_input_change_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r31 = ɵngcc0.ɵɵnextContext(); return ctx_r31.updateSeconds($event.target); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"has-error\", ctx_r9.invalidSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"is-invalid\", ctx_r9.invalidSeconds);\n ɵngcc0.ɵɵproperty(\"placeholder\", ctx_r9.secondsPlaceholder)(\"readonly\", ctx_r9.readonlyInput)(\"disabled\", ctx_r9.disabled)(\"value\", ctx_r9.seconds);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r9.labelSeconds);\n} }\nfunction TimepickerComponent_td_19_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0\\u00A0\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_20_Template(rf, ctx) { if (rf & 1) {\n const _r33 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"button\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function TimepickerComponent_td_20_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r33); const ctx_r32 = ɵngcc0.ɵɵnextContext(); return ctx_r32.toggleMeridian(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r11 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", !ctx_r11.isEditable || !ctx_r11.canToggleMeridian);\n ɵngcc0.ɵɵproperty(\"disabled\", !ctx_r11.isEditable || !ctx_r11.canToggleMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\", ctx_r11.meridian, \" \");\n} }\nfunction TimepickerComponent_td_25_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0\\u00A0\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_26_Template(rf, ctx) { if (rf & 1) {\n const _r35 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"a\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function TimepickerComponent_td_26_Template_a_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r35); const ctx_r34 = ɵngcc0.ɵɵnextContext(); return ctx_r34.changeMinutes(-ctx_r34.minuteStep); });\n ɵngcc0.ɵɵelement(2, \"span\", 7);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", !ctx_r13.canDecrementMinutes || !ctx_r13.isEditable);\n} }\nfunction TimepickerComponent_td_27_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_28_Template(rf, ctx) { if (rf & 1) {\n const _r37 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"a\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function TimepickerComponent_td_28_Template_a_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r37); const ctx_r36 = ɵngcc0.ɵɵnextContext(); return ctx_r36.changeSeconds(-ctx_r36.secondsStep); });\n ɵngcc0.ɵɵelement(2, \"span\", 7);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", !ctx_r15.canDecrementSeconds || !ctx_r15.isEditable);\n} }\nfunction TimepickerComponent_td_29_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\");\n ɵngcc0.ɵɵtext(1, \"\\u00A0\\u00A0\\u00A0\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TimepickerComponent_td_30_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\");\n} }\nclass TimepickerActions {\n writeValue(value) {\n return {\n type: TimepickerActions.WRITE_VALUE,\n payload: value\n };\n }\n changeHours(event) {\n return {\n type: TimepickerActions.CHANGE_HOURS,\n payload: event\n };\n }\n changeMinutes(event) {\n return {\n type: TimepickerActions.CHANGE_MINUTES,\n payload: event\n };\n }\n changeSeconds(event) {\n return {\n type: TimepickerActions.CHANGE_SECONDS,\n payload: event\n };\n }\n setTime(value) {\n return {\n type: TimepickerActions.SET_TIME_UNIT,\n payload: value\n };\n }\n updateControls(value) {\n return {\n type: TimepickerActions.UPDATE_CONTROLS,\n payload: value\n };\n }\n}\nTimepickerActions.ɵfac = function TimepickerActions_Factory(t) { return new (t || TimepickerActions)(); };\nTimepickerActions.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TimepickerActions, factory: TimepickerActions.ɵfac });\nTimepickerActions.WRITE_VALUE = '[timepicker] write value from ng model';\nTimepickerActions.CHANGE_HOURS = '[timepicker] change hours';\nTimepickerActions.CHANGE_MINUTES = '[timepicker] change minutes';\nTimepickerActions.CHANGE_SECONDS = '[timepicker] change seconds';\nTimepickerActions.SET_TIME_UNIT = '[timepicker] set time unit';\nTimepickerActions.UPDATE_CONTROLS = '[timepicker] update controls';\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimepickerActions, [{\n type: Injectable\n }], null, null); })();\n\nconst dex = 10;\nconst hoursPerDay = 24;\nconst hoursPerDayHalf = 12;\nconst minutesPerHour = 60;\nconst secondsPerMinute = 60;\nfunction isValidDate(value) {\n if (!value) {\n return false;\n }\n if (value instanceof Date && isNaN(value.getHours())) {\n return false;\n }\n if (typeof value === 'string') {\n return isValidDate(new Date(value));\n }\n return true;\n}\nfunction isValidLimit(controls, newDate) {\n if (controls.min && newDate < controls.min) {\n return false;\n }\n if (controls.max && newDate > controls.max) {\n return false;\n }\n return true;\n}\nfunction toNumber(value) {\n if (typeof value === 'undefined') {\n return NaN;\n }\n if (typeof value === 'number') {\n return value;\n }\n return parseInt(value, dex);\n}\nfunction isNumber(value) {\n return !isNaN(toNumber(value));\n}\nfunction parseHours(value, isPM = false) {\n const hour = toNumber(value);\n if (isNaN(hour) ||\n hour < 0 ||\n hour > (isPM ? hoursPerDayHalf : hoursPerDay)) {\n return NaN;\n }\n return hour;\n}\nfunction parseMinutes(value) {\n const minute = toNumber(value);\n if (isNaN(minute) || minute < 0 || minute > minutesPerHour) {\n return NaN;\n }\n return minute;\n}\nfunction parseSeconds(value) {\n const seconds = toNumber(value);\n if (isNaN(seconds) || seconds < 0 || seconds > secondsPerMinute) {\n return NaN;\n }\n return seconds;\n}\nfunction parseTime(value) {\n if (typeof value === 'string') {\n return new Date(value);\n }\n return value;\n}\nfunction changeTime(value, diff) {\n if (!value) {\n return changeTime(createDate(new Date(), 0, 0, 0), diff);\n }\n if (!diff) {\n return value;\n }\n let hour = value.getHours();\n let minutes = value.getMinutes();\n let seconds = value.getSeconds();\n if (diff.hour) {\n hour = hour + toNumber(diff.hour);\n }\n if (diff.minute) {\n minutes = minutes + toNumber(diff.minute);\n }\n if (diff.seconds) {\n seconds = seconds + toNumber(diff.seconds);\n }\n return createDate(value, hour, minutes, seconds);\n}\nfunction setTime(value, opts) {\n let hour = parseHours(opts.hour);\n const minute = parseMinutes(opts.minute);\n const seconds = parseSeconds(opts.seconds) || 0;\n if (opts.isPM && hour !== 12) {\n hour += hoursPerDayHalf;\n }\n if (!value) {\n if (!isNaN(hour) && !isNaN(minute)) {\n return createDate(new Date(), hour, minute, seconds);\n }\n return value;\n }\n if (isNaN(hour) || isNaN(minute)) {\n return value;\n }\n return createDate(value, hour, minute, seconds);\n}\nfunction createDate(value, hours, minutes, seconds) {\n const newValue = new Date(value.getFullYear(), value.getMonth(), value.getDate(), hours, minutes, seconds, value.getMilliseconds());\n // #3139 ensure date part remains unchanged\n newValue.setFullYear(value.getFullYear());\n newValue.setMonth(value.getMonth());\n newValue.setDate(value.getDate());\n return newValue;\n}\nfunction padNumber(value) {\n const _value = value.toString();\n if (_value.length > 1) {\n return _value;\n }\n return `0${_value}`;\n}\nfunction isHourInputValid(hours, isPM) {\n return !isNaN(parseHours(hours, isPM));\n}\nfunction isMinuteInputValid(minutes) {\n return !isNaN(parseMinutes(minutes));\n}\nfunction isSecondInputValid(seconds) {\n return !isNaN(parseSeconds(seconds));\n}\nfunction isInputLimitValid(diff, max, min) {\n const newDate = setTime(new Date(), diff);\n if (!newDate) {\n return false;\n }\n if (max && newDate > max) {\n return false;\n }\n if (min && newDate < min) {\n return false;\n }\n return true;\n}\nfunction isOneOfDatesEmpty(hours, minutes, seconds) {\n return hours.length === 0 || minutes.length === 0 || seconds.length === 0;\n}\nfunction isInputValid(hours, minutes = '0', seconds = '0', isPM) {\n return isHourInputValid(hours, isPM)\n && isMinuteInputValid(minutes)\n && isSecondInputValid(seconds);\n}\n\nfunction canChangeValue(state, event) {\n if (state.readonlyInput || state.disabled) {\n return false;\n }\n if (event) {\n if (event.source === 'wheel' && !state.mousewheel) {\n return false;\n }\n if (event.source === 'key' && !state.arrowkeys) {\n return false;\n }\n }\n return true;\n}\nfunction canChangeHours(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementHours) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementHours) {\n return false;\n }\n return true;\n}\nfunction canChangeMinutes(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementMinutes) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementMinutes) {\n return false;\n }\n return true;\n}\nfunction canChangeSeconds(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementSeconds) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementSeconds) {\n return false;\n }\n return true;\n}\nfunction getControlsValue(state) {\n const { hourStep, minuteStep, secondsStep, readonlyInput, disabled, mousewheel, arrowkeys, showSpinners, showMeridian, showSeconds, meridians, min, max } = state;\n return {\n hourStep,\n minuteStep,\n secondsStep,\n readonlyInput,\n disabled,\n mousewheel,\n arrowkeys,\n showSpinners,\n showMeridian,\n showSeconds,\n meridians,\n min,\n max\n };\n}\nfunction timepickerControls(value, state) {\n const hoursPerDay = 24;\n const hoursPerDayHalf = 12;\n const { min, max, hourStep, minuteStep, secondsStep, showSeconds } = state;\n const res = {\n canIncrementHours: true,\n canIncrementMinutes: true,\n canIncrementSeconds: true,\n canDecrementHours: true,\n canDecrementMinutes: true,\n canDecrementSeconds: true,\n canToggleMeridian: true\n };\n if (!value) {\n return res;\n }\n // compare dates\n if (max) {\n const _newHour = changeTime(value, { hour: hourStep });\n res.canIncrementHours = max > _newHour && (value.getHours() + hourStep) < hoursPerDay;\n if (!res.canIncrementHours) {\n const _newMinutes = changeTime(value, { minute: minuteStep });\n res.canIncrementMinutes = showSeconds\n ? max > _newMinutes\n : max >= _newMinutes;\n }\n if (!res.canIncrementMinutes) {\n const _newSeconds = changeTime(value, { seconds: secondsStep });\n res.canIncrementSeconds = max >= _newSeconds;\n }\n if (value.getHours() < hoursPerDayHalf) {\n res.canToggleMeridian = changeTime(value, { hour: hoursPerDayHalf }) < max;\n }\n }\n if (min) {\n const _newHour = changeTime(value, { hour: -hourStep });\n res.canDecrementHours = min < _newHour;\n if (!res.canDecrementHours) {\n const _newMinutes = changeTime(value, { minute: -minuteStep });\n res.canDecrementMinutes = showSeconds\n ? min < _newMinutes\n : min <= _newMinutes;\n }\n if (!res.canDecrementMinutes) {\n const _newSeconds = changeTime(value, { seconds: -secondsStep });\n res.canDecrementSeconds = min <= _newSeconds;\n }\n if (value.getHours() >= hoursPerDayHalf) {\n res.canToggleMeridian = changeTime(value, { hour: -hoursPerDayHalf }) > min;\n }\n }\n return res;\n}\n\n/** Provides default configuration values for timepicker */\nclass TimepickerConfig {\n constructor() {\n /** hours change step */\n this.hourStep = 1;\n /** minutes change step */\n this.minuteStep = 5;\n /** seconds changes step */\n this.secondsStep = 10;\n /** if true works in 12H mode and displays AM/PM. If false works in 24H mode and hides AM/PM */\n this.showMeridian = true;\n /** meridian labels based on locale */\n this.meridians = ['AM', 'PM'];\n /** if true hours and minutes fields will be readonly */\n this.readonlyInput = false;\n /** if true hours and minutes fields will be disabled */\n this.disabled = false;\n /** if true emptyTime is not marked as invalid */\n this.allowEmptyTime = false;\n /** if true scroll inside hours and minutes inputs will change time */\n this.mousewheel = true;\n /** if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard */\n this.arrowkeys = true;\n /** if true spinner arrows above and below the inputs will be shown */\n this.showSpinners = true;\n /** show seconds in timepicker */\n this.showSeconds = false;\n /** show minutes in timepicker */\n this.showMinutes = true;\n /** placeholder for hours field in timepicker */\n this.hoursPlaceholder = 'HH';\n /** placeholder for minutes field in timepicker */\n this.minutesPlaceholder = 'MM';\n /** placeholder for seconds field in timepicker */\n this.secondsPlaceholder = 'SS';\n /** hours aria label */\n this.ariaLabelHours = 'hours';\n /** minutes aria label */\n this.ariaLabelMinutes = 'minutes';\n /** seconds aria label */\n this.ariaLabelSeconds = 'seconds';\n }\n}\nTimepickerConfig.ɵfac = function TimepickerConfig_Factory(t) { return new (t || TimepickerConfig)(); };\nTimepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function TimepickerConfig_Factory() { return new TimepickerConfig(); }, token: TimepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimepickerConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\n\nconst initialState = {\n value: void 0,\n config: new TimepickerConfig(),\n controls: {\n canIncrementHours: true,\n canIncrementMinutes: true,\n canIncrementSeconds: true,\n canDecrementHours: true,\n canDecrementMinutes: true,\n canDecrementSeconds: true,\n canToggleMeridian: true\n }\n};\nfunction timepickerReducer(state = initialState, action) {\n switch (action.type) {\n case TimepickerActions.WRITE_VALUE: {\n return Object.assign({}, state, { value: action.payload });\n }\n case TimepickerActions.CHANGE_HOURS: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeHours(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, { hour: action.payload.step });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.CHANGE_MINUTES: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeMinutes(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, { minute: action.payload.step });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.CHANGE_SECONDS: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeSeconds(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, {\n seconds: action.payload.step\n });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.SET_TIME_UNIT: {\n if (!canChangeValue(state.config)) {\n return state;\n }\n const _newTime = setTime(state.value, action.payload);\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.UPDATE_CONTROLS: {\n const _newControlsState = timepickerControls(state.value, action.payload);\n const _newState = {\n value: state.value,\n config: action.payload,\n controls: _newControlsState\n };\n if (state.config.showMeridian !== _newState.config.showMeridian) {\n if (state.value) {\n _newState.value = new Date(state.value);\n }\n }\n return Object.assign({}, state, _newState);\n }\n default:\n return state;\n }\n}\n\nclass TimepickerStore extends MiniStore {\n constructor() {\n const _dispatcher = new BehaviorSubject({\n type: '[mini-ngrx] dispatcher init'\n });\n const state = new MiniState(initialState, _dispatcher, timepickerReducer);\n super(_dispatcher, timepickerReducer, state);\n }\n}\nTimepickerStore.ɵfac = function TimepickerStore_Factory(t) { return new (t || TimepickerStore)(); };\nTimepickerStore.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TimepickerStore, factory: TimepickerStore.ɵfac });\nTimepickerStore.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimepickerStore, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\nconst TIMEPICKER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimepickerComponent),\n multi: true\n};\nclass TimepickerComponent {\n constructor(_config, _cd, _store, _timepickerActions) {\n this._cd = _cd;\n this._store = _store;\n this._timepickerActions = _timepickerActions;\n /** hours change step */\n this.hourStep = 1;\n /** minutes change step */\n this.minuteStep = 5;\n /** seconds change step */\n this.secondsStep = 10;\n /** if true hours and minutes fields will be readonly */\n this.readonlyInput = false;\n /** if true hours and minutes fields will be disabled */\n this.disabled = false;\n /** if true scroll inside hours and minutes inputs will change time */\n this.mousewheel = true;\n /** if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard */\n this.arrowkeys = true;\n /** if true spinner arrows above and below the inputs will be shown */\n this.showSpinners = true;\n /** if true meridian button will be shown */\n this.showMeridian = true;\n /** show minutes in timepicker */\n this.showMinutes = true;\n /** show seconds in timepicker */\n this.showSeconds = false;\n /** meridian labels based on locale */\n this.meridians = ['AM', 'PM'];\n /** placeholder for hours field in timepicker */\n this.hoursPlaceholder = 'HH';\n /** placeholder for minutes field in timepicker */\n this.minutesPlaceholder = 'MM';\n /** placeholder for seconds field in timepicker */\n this.secondsPlaceholder = 'SS';\n /** emits true if value is a valid date */\n this.isValid = new EventEmitter();\n /** emits value of meridian*/\n this.meridianChange = new EventEmitter();\n // ui variables\n this.hours = '';\n this.minutes = '';\n this.seconds = '';\n this.meridian = '';\n // min\\max validation for input fields\n this.invalidHours = false;\n this.invalidMinutes = false;\n this.invalidSeconds = false;\n // aria-label variables\n this.labelHours = 'hours';\n this.labelMinutes = 'minutes';\n this.labelSeconds = 'seconds';\n // time picker controls state\n this.canIncrementHours = true;\n this.canIncrementMinutes = true;\n this.canIncrementSeconds = true;\n this.canDecrementHours = true;\n this.canDecrementMinutes = true;\n this.canDecrementSeconds = true;\n this.canToggleMeridian = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.onChange = Function.prototype;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.onTouched = Function.prototype;\n this.config = _config;\n Object.assign(this, this.config);\n this.timepickerSub = _store\n .select(state => state.value)\n .subscribe((value) => {\n // update UI values if date changed\n this._renderTime(value);\n this.onChange(value);\n this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));\n });\n _store\n .select(state => state.controls)\n .subscribe((controlsState) => {\n const isTimepickerInputValid = isInputValid(this.hours, this.minutes, this.seconds, this.isPM());\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n this.isValid.emit(isValid);\n Object.assign(this, controlsState);\n _cd.markForCheck();\n });\n }\n /** @deprecated - please use `isEditable` instead */\n get isSpinnersVisible() {\n return this.showSpinners && !this.readonlyInput;\n }\n get isEditable() {\n return !(this.readonlyInput || this.disabled);\n }\n resetValidation() {\n this.invalidHours = false;\n this.invalidMinutes = false;\n this.invalidSeconds = false;\n }\n isPM() {\n return this.showMeridian && this.meridian === this.meridians[1];\n }\n prevDef($event) {\n $event.preventDefault();\n }\n wheelSign($event) {\n return Math.sign($event.deltaY || 0) * -1;\n }\n ngOnChanges() {\n this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));\n }\n changeHours(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeHours({ step, source }));\n }\n changeMinutes(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeMinutes({ step, source }));\n }\n changeSeconds(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeSeconds({ step, source }));\n }\n updateHours(target) {\n this.resetValidation();\n this.hours = target.value;\n const isTimepickerInputValid = isHourInputValid(this.hours, this.isPM()) && this.isValidLimit();\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n if (!isValid) {\n this.invalidHours = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n updateMinutes(target) {\n this.resetValidation();\n this.minutes = target.value;\n const isTimepickerInputValid = isMinuteInputValid(this.minutes) && this.isValidLimit();\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n if (!isValid) {\n this.invalidMinutes = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n updateSeconds(target) {\n this.resetValidation();\n this.seconds = target.value;\n const isTimepickerInputValid = isSecondInputValid(this.seconds) && this.isValidLimit();\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n if (!isValid) {\n this.invalidSeconds = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n isValidLimit() {\n return isInputLimitValid({\n hour: this.hours,\n minute: this.minutes,\n seconds: this.seconds,\n isPM: this.isPM()\n }, this.max, this.min);\n }\n isOneOfDatesIsEmpty() {\n return isOneOfDatesEmpty(this.hours, this.minutes, this.seconds);\n }\n _updateTime() {\n const _seconds = this.showSeconds ? this.seconds : void 0;\n const _minutes = this.showMinutes ? this.minutes : void 0;\n const isTimepickerInputValid = isInputValid(this.hours, _minutes, _seconds, this.isPM());\n const isValid = this.config.allowEmptyTime ?\n this.isOneOfDatesIsEmpty() || isTimepickerInputValid\n : isTimepickerInputValid;\n if (!isValid) {\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._store.dispatch(this._timepickerActions.setTime({\n hour: this.hours,\n minute: this.minutes,\n seconds: this.seconds,\n isPM: this.isPM()\n }));\n }\n toggleMeridian() {\n if (!this.showMeridian || !this.isEditable) {\n return;\n }\n const _hoursPerDayHalf = 12;\n this._store.dispatch(this._timepickerActions.changeHours({\n step: _hoursPerDayHalf,\n source: ''\n }));\n }\n /**\n * Write a new value to the element.\n */\n writeValue(obj) {\n if (isValidDate(obj)) {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.writeValue(parseTime(obj)));\n }\n else if (obj == null) {\n this._store.dispatch(this._timepickerActions.writeValue());\n }\n }\n /**\n * Set the function to be called when the control receives a change event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Set the function to be called when the control receives a touch event.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * This function is called when the control status changes to or from \"disabled\".\n * Depending on the value, it will enable or disable the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._cd.markForCheck();\n }\n ngOnDestroy() {\n this.timepickerSub.unsubscribe();\n }\n _renderTime(value) {\n if (!value || !isValidDate(value)) {\n this.hours = '';\n this.minutes = '';\n this.seconds = '';\n this.meridian = this.meridians[0];\n this.meridianChange.emit(this.meridian);\n return;\n }\n const _value = parseTime(value);\n if (!_value) {\n return;\n }\n const _hoursPerDayHalf = 12;\n let _hours = _value.getHours();\n if (this.showMeridian) {\n this.meridian = this.meridians[_hours >= _hoursPerDayHalf ? 1 : 0];\n this.meridianChange.emit(this.meridian);\n _hours = _hours % _hoursPerDayHalf;\n // should be 12 PM, not 00 PM\n if (_hours === 0) {\n _hours = _hoursPerDayHalf;\n }\n }\n this.hours = padNumber(_hours);\n this.minutes = padNumber(_value.getMinutes());\n this.seconds = padNumber(_value.getUTCSeconds());\n }\n}\nTimepickerComponent.ɵfac = function TimepickerComponent_Factory(t) { return new (t || TimepickerComponent)(ɵngcc0.ɵɵdirectiveInject(TimepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(TimepickerStore), ɵngcc0.ɵɵdirectiveInject(TimepickerActions)); };\nTimepickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TimepickerComponent, selectors: [[\"timepicker\"]], inputs: { hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondsStep: \"secondsStep\", readonlyInput: \"readonlyInput\", disabled: \"disabled\", mousewheel: \"mousewheel\", arrowkeys: \"arrowkeys\", showSpinners: \"showSpinners\", showMeridian: \"showMeridian\", showMinutes: \"showMinutes\", showSeconds: \"showSeconds\", meridians: \"meridians\", hoursPlaceholder: \"hoursPlaceholder\", minutesPlaceholder: \"minutesPlaceholder\", secondsPlaceholder: \"secondsPlaceholder\", min: \"min\", max: \"max\" }, outputs: { isValid: \"isValid\", meridianChange: \"meridianChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 31, vars: 33, consts: [[1, \"text-center\", 3, \"hidden\"], [1, \"btn\", \"btn-link\", 3, \"click\"], [1, \"bs-chevron\", \"bs-chevron-up\"], [4, \"ngIf\"], [1, \"form-group\", \"mb-3\"], [\"type\", \"text\", \"maxlength\", \"2\", 1, \"form-control\", \"text-center\", \"bs-timepicker-field\", 3, \"placeholder\", \"readonly\", \"disabled\", \"value\", \"wheel\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"change\"], [\"class\", \"form-group mb-3\", 3, \"has-error\", 4, \"ngIf\"], [1, \"bs-chevron\", \"bs-chevron-down\"], [\"type\", \"button\", 1, \"btn\", \"btn-default\", \"text-center\", 3, \"disabled\", \"click\"]], template: function TimepickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\")(1, \"tbody\")(2, \"tr\", 0)(3, \"td\")(4, \"a\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function TimepickerComponent_Template_a_click_4_listener() { return ctx.changeHours(ctx.hourStep); });\n ɵngcc0.ɵɵelement(5, \"span\", 2);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(6, TimepickerComponent_td_6_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(7, TimepickerComponent_td_7_Template, 3, 2, \"td\", 3);\n ɵngcc0.ɵɵtemplate(8, TimepickerComponent_td_8_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(9, TimepickerComponent_td_9_Template, 3, 2, \"td\", 3);\n ɵngcc0.ɵɵtemplate(10, TimepickerComponent_td_10_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(11, TimepickerComponent_td_11_Template, 1, 0, \"td\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(12, \"tr\")(13, \"td\", 4)(14, \"input\", 5);\n ɵngcc0.ɵɵlistener(\"wheel\", function TimepickerComponent_Template_input_wheel_14_listener($event) { ctx.prevDef($event); return ctx.changeHours(ctx.hourStep * ctx.wheelSign($event), \"wheel\"); })(\"keydown.ArrowUp\", function TimepickerComponent_Template_input_keydown_ArrowUp_14_listener() { return ctx.changeHours(ctx.hourStep, \"key\"); })(\"keydown.ArrowDown\", function TimepickerComponent_Template_input_keydown_ArrowDown_14_listener() { return ctx.changeHours(-ctx.hourStep, \"key\"); })(\"change\", function TimepickerComponent_Template_input_change_14_listener($event) { return ctx.updateHours($event.target); });\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(15, TimepickerComponent_td_15_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(16, TimepickerComponent_td_16_Template, 2, 9, \"td\", 6);\n ɵngcc0.ɵɵtemplate(17, TimepickerComponent_td_17_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(18, TimepickerComponent_td_18_Template, 2, 9, \"td\", 6);\n ɵngcc0.ɵɵtemplate(19, TimepickerComponent_td_19_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(20, TimepickerComponent_td_20_Template, 3, 4, \"td\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(21, \"tr\", 0)(22, \"td\")(23, \"a\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function TimepickerComponent_Template_a_click_23_listener() { return ctx.changeHours(-ctx.hourStep); });\n ɵngcc0.ɵɵelement(24, \"span\", 7);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(25, TimepickerComponent_td_25_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(26, TimepickerComponent_td_26_Template, 3, 2, \"td\", 3);\n ɵngcc0.ɵɵtemplate(27, TimepickerComponent_td_27_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(28, TimepickerComponent_td_28_Template, 3, 2, \"td\", 3);\n ɵngcc0.ɵɵtemplate(29, TimepickerComponent_td_29_Template, 2, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(30, TimepickerComponent_td_30_Template, 1, 0, \"td\", 3);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"hidden\", !ctx.showSpinners);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"disabled\", !ctx.canIncrementHours || !ctx.isEditable);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMinutes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMinutes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMeridian);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"has-error\", ctx.invalidHours);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"is-invalid\", ctx.invalidHours);\n ɵngcc0.ɵɵproperty(\"placeholder\", ctx.hoursPlaceholder)(\"readonly\", ctx.readonlyInput)(\"disabled\", ctx.disabled)(\"value\", ctx.hours);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.labelHours);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMinutes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMinutes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"hidden\", !ctx.showSpinners);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"disabled\", !ctx.canDecrementHours || !ctx.isEditable);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMinutes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMinutes);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showMeridian);\n } }, directives: [ɵngcc1.NgIf], styles: [\"\\n .bs-chevron {\\n border-style: solid;\\n display: block;\\n width: 9px;\\n height: 9px;\\n position: relative;\\n border-width: 3px 0px 0 3px;\\n }\\n\\n .bs-chevron-up {\\n -webkit-transform: rotate(45deg);\\n transform: rotate(45deg);\\n top: 2px;\\n }\\n\\n .bs-chevron-down {\\n -webkit-transform: rotate(-135deg);\\n transform: rotate(-135deg);\\n top: -2px;\\n }\\n\\n .bs-timepicker-field {\\n width: 65px;\\n padding: .375rem .55rem;\\n }\\n \"], encapsulation: 2, changeDetection: 0 });\nTimepickerComponent.ctorParameters = () => [\n { type: TimepickerConfig },\n { type: ChangeDetectorRef },\n { type: TimepickerStore },\n { type: TimepickerActions }\n];\nTimepickerComponent.propDecorators = {\n hourStep: [{ type: Input }],\n minuteStep: [{ type: Input }],\n secondsStep: [{ type: Input }],\n readonlyInput: [{ type: Input }],\n disabled: [{ type: Input }],\n mousewheel: [{ type: Input }],\n arrowkeys: [{ type: Input }],\n showSpinners: [{ type: Input }],\n showMeridian: [{ type: Input }],\n showMinutes: [{ type: Input }],\n showSeconds: [{ type: Input }],\n meridians: [{ type: Input }],\n min: [{ type: Input }],\n max: [{ type: Input }],\n hoursPlaceholder: [{ type: Input }],\n minutesPlaceholder: [{ type: Input }],\n secondsPlaceholder: [{ type: Input }],\n isValid: [{ type: Output }],\n meridianChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimepickerComponent, [{\n type: Component,\n args: [{\n selector: 'timepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore],\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 \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n    \\n \\n  \\n \\n \\n \\n    
\\n  : \\n \\n  : \\n \\n    \\n \\n
\\n \\n \\n \\n    \\n \\n \\n \\n  \\n \\n \\n \\n    
\\n\",\n encapsulation: ViewEncapsulation.None,\n styles: [`\n .bs-chevron {\n border-style: solid;\n display: block;\n width: 9px;\n height: 9px;\n position: relative;\n border-width: 3px 0px 0 3px;\n }\n\n .bs-chevron-up {\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n top: 2px;\n }\n\n .bs-chevron-down {\n -webkit-transform: rotate(-135deg);\n transform: rotate(-135deg);\n top: -2px;\n }\n\n .bs-timepicker-field {\n width: 65px;\n padding: .375rem .55rem;\n }\n `]\n }]\n }], function () { return [{ type: TimepickerConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: TimepickerStore }, { type: TimepickerActions }]; }, { hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondsStep: [{\n type: Input\n }], readonlyInput: [{\n type: Input\n }], disabled: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }], arrowkeys: [{\n type: Input\n }], showSpinners: [{\n type: Input\n }], showMeridian: [{\n type: Input\n }], showMinutes: [{\n type: Input\n }], showSeconds: [{\n type: Input\n }], meridians: [{\n type: Input\n }], hoursPlaceholder: [{\n type: Input\n }], minutesPlaceholder: [{\n type: Input\n }], secondsPlaceholder: [{\n type: Input\n }], isValid: [{\n type: Output\n }], meridianChange: [{\n type: Output\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }] }); })();\n\nclass TimepickerModule {\n static forRoot() {\n return {\n ngModule: TimepickerModule,\n providers: [TimepickerActions, TimepickerStore]\n };\n }\n}\nTimepickerModule.ɵfac = function TimepickerModule_Factory(t) { return new (t || TimepickerModule)(); };\nTimepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TimepickerModule });\nTimepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TimepickerModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [TimepickerComponent],\n exports: [TimepickerComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TimepickerModule, { declarations: function () { return [TimepickerComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [TimepickerComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TimepickerActions, TimepickerComponent, TimepickerConfig, TimepickerModule, TimepickerStore, TIMEPICKER_CONTROL_VALUE_ACCESSOR as ɵa };\n\n","import { ɵɵdefineInjectable, Injectable, Component, ChangeDetectionStrategy, EventEmitter, Directive, ViewContainerRef, ElementRef, Renderer2, Input, Output, NgModule } from '@angular/core';\nimport { getBsVer, warnOnce, parseTriggers, OnChange } from 'ngx-bootstrap/utils';\nimport { PlacementForBs5, PositioningService } from 'ngx-bootstrap/positioning';\nimport { __decorate, __metadata } from 'tslib';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { timer } from 'rxjs';\nimport { CommonModule } from '@angular/common';\n\n/** Default values provider for tooltip */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from 'ngx-bootstrap/component-loader';\nimport * as ɵngcc2 from 'ngx-bootstrap/positioning';\n\nconst _c0 = [\"*\"];\nclass TooltipConfig {\n constructor() {\n /** sets disable adaptive position */\n this.adaptivePosition = true;\n /** tooltip placement, supported positions: 'top', 'bottom', 'left', 'right' */\n this.placement = 'top';\n /** array of event names which triggers tooltip opening */\n this.triggers = 'hover focus';\n /** delay before showing the tooltip */\n this.delay = 0;\n }\n}\nTooltipConfig.ɵfac = function TooltipConfig_Factory(t) { return new (t || TooltipConfig)(); };\nTooltipConfig.ɵprov = ɵɵdefineInjectable({ factory: function TooltipConfig_Factory() { return new TooltipConfig(); }, token: TooltipConfig, providedIn: \"root\" });\n\nclass TooltipContainerComponent {\n constructor(config) {\n Object.assign(this, config);\n }\n get _bsVersions() {\n return getBsVer();\n }\n ngAfterViewInit() {\n this.classMap = { in: false, fade: false };\n if (this.placement) {\n if (this._bsVersions.isBs5) {\n this.placement = PlacementForBs5[this.placement];\n }\n this.classMap[this.placement] = true;\n }\n this.classMap[`tooltip-${this.placement}`] = true;\n this.classMap.in = true;\n if (this.animation) {\n this.classMap.fade = true;\n }\n if (this.containerClass) {\n this.classMap[this.containerClass] = true;\n }\n }\n}\nTooltipContainerComponent.ɵfac = function TooltipContainerComponent_Factory(t) { return new (t || TooltipContainerComponent)(ɵngcc0.ɵɵdirectiveInject(TooltipConfig)); };\nTooltipContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TooltipContainerComponent, selectors: [[\"bs-tooltip-container\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 7, hostBindings: function TooltipContainerComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"tooltip in tooltip-\" + ctx.placement + \" \" + \"bs-tooltip-\" + ctx.placement + \" \" + ctx.placement + \" \" + ctx.containerClass);\n ɵngcc0.ɵɵclassProp(\"show\", !ctx._bsVersions.isBs3)(\"bs3\", ctx._bsVersions.isBs3);\n } }, ngContentSelectors: _c0, decls: 3, vars: 0, consts: [[1, \"tooltip-arrow\", \"arrow\"], [1, \"tooltip-inner\"]], template: function TooltipContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } }, styles: [\".tooltip[_nghost-%COMP%] {\\n display: block;\\n pointer-events: none;\\n }\\n .bs3.tooltip.top[_nghost-%COMP%] > .arrow[_ngcontent-%COMP%] {\\n margin-left: -2px;\\n }\\n .bs3.tooltip.bottom[_nghost-%COMP%] {\\n margin-top: 0px;\\n }\\n .bs3.bs-tooltip-left[_nghost-%COMP%], .bs3.bs-tooltip-right[_nghost-%COMP%]{\\n margin: 0px;\\n }\\n .bs3.bs-tooltip-right[_nghost-%COMP%] .arrow[_ngcontent-%COMP%], .bs3.bs-tooltip-left[_nghost-%COMP%] .arrow[_ngcontent-%COMP%] {\\n margin: .3rem 0;\\n }\"], changeDetection: 0 });\nTooltipContainerComponent.ctorParameters = () => [\n { type: TooltipConfig }\n];\n\nlet id = 0;\nclass TooltipDirective {\n constructor(_viewContainerRef, cis, config, _elementRef, _renderer, _positionService) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._positionService = _positionService;\n this.tooltipId = id++;\n /** sets disable adaptive position */\n this.adaptivePosition = true;\n /** Fired when tooltip content changes */\n this.tooltipChange = new EventEmitter();\n /**\n * Placement of a tooltip. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'top';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'hover focus';\n /**\n * Css class for tooltip container\n */\n this.containerClass = '';\n /**\n * Allows to disable tooltip\n */\n this.isDisabled = false;\n /**\n * Delay before showing the tooltip\n */\n this.delay = 0;\n /** @deprecated - removed, will be added to configuration */\n this.tooltipAnimation = true;\n /** @deprecated */\n this.tooltipFadeDuration = 150;\n /** @deprecated */\n this.tooltipStateChanged = new EventEmitter();\n this._tooltip = cis\n .createLoader(this._elementRef, _viewContainerRef, this._renderer)\n .provide({ provide: TooltipConfig, useValue: config });\n Object.assign(this, config);\n this.onShown = this._tooltip.onShown;\n this.onHidden = this._tooltip.onHidden;\n }\n /**\n * Returns whether or not the tooltip is currently being shown\n */\n get isOpen() {\n return this._tooltip.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n /** @deprecated - please use `tooltip` instead */\n set htmlContent(value) {\n warnOnce('tooltipHtml was deprecated, please use `tooltip` instead');\n this.tooltip = value;\n }\n /** @deprecated - please use `placement` instead */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _placement(value) {\n warnOnce('tooltipPlacement was deprecated, please use `placement` instead');\n this.placement = value;\n }\n /** @deprecated - please use `isOpen` instead */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _isOpen(value) {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n this.isOpen = value;\n }\n get _isOpen() {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n return this.isOpen;\n }\n /** @deprecated - please use `isDisabled` instead */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _enable(value) {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n this.isDisabled = !value;\n }\n get _enable() {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n return this.isDisabled;\n }\n /** @deprecated - please use `container=\"body\"` instead */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _appendToBody(value) {\n warnOnce('tooltipAppendToBody was deprecated, please use `container=\"body\"` instead');\n this.container = value ? 'body' : this.container;\n }\n get _appendToBody() {\n warnOnce('tooltipAppendToBody was deprecated, please use `container=\"body\"` instead');\n return this.container === 'body';\n }\n /** @deprecated - will replaced with customClass */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _popupClass(value) {\n warnOnce('tooltipClass deprecated');\n }\n /** @deprecated - removed */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _tooltipContext(value) {\n warnOnce('tooltipContext deprecated');\n }\n /** @deprecated */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n set _tooltipPopupDelay(value) {\n warnOnce('tooltipPopupDelay is deprecated, use `delay` instead');\n this.delay = value;\n }\n /** @deprecated - please use `triggers` instead */\n get _tooltipTrigger() {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n return this.triggers;\n }\n set _tooltipTrigger(value) {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n this.triggers = (value || '').toString();\n }\n ngOnInit() {\n this._tooltip.listen({\n triggers: this.triggers,\n show: () => this.show()\n });\n this.tooltipChange.subscribe((value) => {\n if (!value) {\n this._tooltip.hide();\n }\n });\n this.onShown.subscribe(() => {\n this.setAriaDescribedBy();\n });\n this.onHidden.subscribe(() => {\n this.setAriaDescribedBy();\n });\n }\n setAriaDescribedBy() {\n this._ariaDescribedby = this.isOpen ? `tooltip-${this.tooltipId}` : void 0;\n if (this._ariaDescribedby) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ariaDescribedby);\n }\n else {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n }\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n /**\n * Opens an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n show() {\n this._positionService.setOptions({\n modifiers: {\n flip: {\n enabled: this.adaptivePosition\n },\n preventOverflow: {\n enabled: this.adaptivePosition,\n boundariesElement: this.boundariesElement || 'scrollParent'\n }\n }\n });\n if (this.isOpen ||\n this.isDisabled ||\n this._delayTimeoutId ||\n !this.tooltip) {\n return;\n }\n const showTooltip = () => {\n if (this._delayTimeoutId) {\n this._delayTimeoutId = undefined;\n }\n this._tooltip\n .attach(TooltipContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({\n content: this.tooltip,\n placement: this.placement,\n containerClass: this.containerClass,\n id: `tooltip-${this.tooltipId}`\n });\n };\n const cancelDelayedTooltipShowing = () => {\n if (this._tooltipCancelShowFn) {\n this._tooltipCancelShowFn();\n }\n };\n if (this.delay) {\n if (this._delaySubscription) {\n this._delaySubscription.unsubscribe();\n }\n this._delaySubscription = timer(this.delay).subscribe(() => {\n showTooltip();\n cancelDelayedTooltipShowing();\n });\n if (this.triggers) {\n parseTriggers(this.triggers)\n .forEach((trigger) => {\n if (!trigger.close) {\n return;\n }\n this._tooltipCancelShowFn = this._renderer.listen(this._elementRef.nativeElement, trigger.close, () => {\n var _a;\n (_a = this._delaySubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n cancelDelayedTooltipShowing();\n });\n });\n }\n }\n else {\n showTooltip();\n }\n }\n /**\n * Closes an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n hide() {\n var _a;\n if (this._delayTimeoutId) {\n clearTimeout(this._delayTimeoutId);\n this._delayTimeoutId = undefined;\n }\n if (!this._tooltip.isShown) {\n return;\n }\n if ((_a = this._tooltip.instance) === null || _a === void 0 ? void 0 : _a.classMap) {\n this._tooltip.instance.classMap.in = false;\n }\n setTimeout(() => {\n this._tooltip.hide();\n }, this.tooltipFadeDuration);\n }\n ngOnDestroy() {\n this._tooltip.dispose();\n this.tooltipChange.unsubscribe();\n if (this._delaySubscription) {\n this._delaySubscription.unsubscribe();\n }\n this.onShown.unsubscribe();\n this.onHidden.unsubscribe();\n }\n}\nTooltipDirective.ɵfac = function TooltipDirective_Factory(t) { return new (t || TooltipDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ComponentLoaderFactory), ɵngcc0.ɵɵdirectiveInject(TooltipConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.PositioningService)); };\nTooltipDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TooltipDirective, selectors: [[\"\", \"tooltip\", \"\"], [\"\", \"tooltipHtml\", \"\"]], inputs: { adaptivePosition: \"adaptivePosition\", placement: \"placement\", triggers: \"triggers\", containerClass: \"containerClass\", isDisabled: \"isDisabled\", delay: \"delay\", tooltipAnimation: \"tooltipAnimation\", tooltipFadeDuration: \"tooltipFadeDuration\", isOpen: \"isOpen\", htmlContent: [\"tooltipHtml\", \"htmlContent\"], tooltip: \"tooltip\", _placement: [\"tooltipPlacement\", \"_placement\"], _isOpen: [\"tooltipIsOpen\", \"_isOpen\"], _enable: [\"tooltipEnable\", \"_enable\"], _appendToBody: [\"tooltipAppendToBody\", \"_appendToBody\"], container: \"container\", _popupClass: [\"tooltipClass\", \"_popupClass\"], _tooltipContext: [\"tooltipContext\", \"_tooltipContext\"], _tooltipPopupDelay: [\"tooltipPopupDelay\", \"_tooltipPopupDelay\"], _tooltipTrigger: [\"tooltipTrigger\", \"_tooltipTrigger\"], boundariesElement: \"boundariesElement\" }, outputs: { tooltipChange: \"tooltipChange\", tooltipStateChanged: \"tooltipStateChanged\", onShown: \"onShown\", onHidden: \"onHidden\" }, exportAs: [\"bs-tooltip\"] });\nTooltipDirective.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: ComponentLoaderFactory },\n { type: TooltipConfig },\n { type: ElementRef },\n { type: Renderer2 },\n { type: PositioningService }\n];\nTooltipDirective.propDecorators = {\n adaptivePosition: [{ type: Input }],\n tooltip: [{ type: Input }],\n tooltipChange: [{ type: Output }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n containerClass: [{ type: Input }],\n boundariesElement: [{ type: Input }],\n isOpen: [{ type: Input }],\n isDisabled: [{ type: Input }],\n delay: [{ type: Input }],\n onShown: [{ type: Output }],\n onHidden: [{ type: Output }],\n htmlContent: [{ type: Input, args: ['tooltipHtml',] }],\n _placement: [{ type: Input, args: ['tooltipPlacement',] }],\n _isOpen: [{ type: Input, args: ['tooltipIsOpen',] }],\n _enable: [{ type: Input, args: ['tooltipEnable',] }],\n _appendToBody: [{ type: Input, args: ['tooltipAppendToBody',] }],\n tooltipAnimation: [{ type: Input }],\n _popupClass: [{ type: Input, args: ['tooltipClass',] }],\n _tooltipContext: [{ type: Input, args: ['tooltipContext',] }],\n _tooltipPopupDelay: [{ type: Input, args: ['tooltipPopupDelay',] }],\n tooltipFadeDuration: [{ type: Input }],\n _tooltipTrigger: [{ type: Input, args: ['tooltipTrigger',] }],\n tooltipStateChanged: [{ type: Output }]\n};\n__decorate([\n OnChange(),\n __metadata(\"design:type\", Object)\n], TooltipDirective.prototype, \"tooltip\", void 0);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipContainerComponent, [{\n type: Component,\n args: [{\n selector: 'bs-tooltip-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class]': '\"tooltip in tooltip-\" + placement + \" \" + \"bs-tooltip-\" + placement + \" \" + placement + \" \" + containerClass',\n '[class.show]': '!_bsVersions.isBs3',\n '[class.bs3]': '_bsVersions.isBs3',\n '[attr.id]': 'this.id',\n role: 'tooltip'\n },\n template: `\n
\n
\n `,\n styles: [`\n :host.tooltip {\n display: block;\n pointer-events: none;\n }\n :host.bs3.tooltip.top>.arrow {\n margin-left: -2px;\n }\n :host.bs3.tooltip.bottom {\n margin-top: 0px;\n }\n :host.bs3.bs-tooltip-left, :host.bs3.bs-tooltip-right{\n margin: 0px;\n }\n :host.bs3.bs-tooltip-right .arrow, :host.bs3.bs-tooltip-left .arrow {\n margin: .3rem 0;\n }\n `]\n }]\n }], function () { return [{ type: TooltipConfig }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipDirective, [{\n type: Directive,\n args: [{\n selector: '[tooltip], [tooltipHtml]',\n exportAs: 'bs-tooltip'\n }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc1.ComponentLoaderFactory }, { type: TooltipConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.PositioningService }]; }, { adaptivePosition: [{\n type: Input\n }], tooltipChange: [{\n type: Output\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], containerClass: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], delay: [{\n type: Input\n }], tooltipAnimation: [{\n type: Input\n }], tooltipFadeDuration: [{\n type: Input\n }], tooltipStateChanged: [{\n type: Output\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], isOpen: [{\n type: Input\n }], htmlContent: [{\n type: Input,\n args: ['tooltipHtml']\n }], tooltip: [{\n type: Input\n }], _placement: [{\n type: Input,\n args: ['tooltipPlacement']\n }], _isOpen: [{\n type: Input,\n args: ['tooltipIsOpen']\n }], _enable: [{\n type: Input,\n args: ['tooltipEnable']\n }], _appendToBody: [{\n type: Input,\n args: ['tooltipAppendToBody']\n }], container: [{\n type: Input\n }], _popupClass: [{\n type: Input,\n args: ['tooltipClass']\n }], _tooltipContext: [{\n type: Input,\n args: ['tooltipContext']\n }], _tooltipPopupDelay: [{\n type: Input,\n args: ['tooltipPopupDelay']\n }], _tooltipTrigger: [{\n type: Input,\n args: ['tooltipTrigger']\n }], boundariesElement: [{\n type: Input\n }] }); })();\n\nclass TooltipModule {\n static forRoot() {\n return {\n ngModule: TooltipModule,\n providers: [ComponentLoaderFactory, PositioningService]\n };\n }\n}\nTooltipModule.ɵfac = function TooltipModule_Factory(t) { return new (t || TooltipModule)(); };\nTooltipModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TooltipModule });\nTooltipModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [TooltipDirective, TooltipContainerComponent],\n exports: [TooltipDirective],\n entryComponents: [TooltipContainerComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TooltipModule, { declarations: function () { return [TooltipDirective, TooltipContainerComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [TooltipDirective]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TooltipConfig, TooltipContainerComponent, TooltipDirective, TooltipModule };\n\n","import { ɵɵdefineInjectable, Injectable, EventEmitter, Component, Renderer2, ElementRef, ViewChild, Directive, ViewContainerRef, Input, Output, forwardRef, Host, ChangeDetectorRef, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { filter, map, take, takeUntil, distinctUntilChanged } from 'rxjs/operators';\nimport { isFirstDayOfWeek, getDay, shiftDate, isBefore, endOf, isAfter, startOf, isArray, isSame, getFirstDayOfMonth, formatDate, getLocale, isSameMonth, isSameDay, isDisabledDay, isSameYear, isDateValid, setFullDate, getMonth, getFullYear, isDate, parseDate, utcAsLocal } from 'ngx-bootstrap/chronos';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { TimepickerActions, TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { Subscription, BehaviorSubject, combineLatest, Subject } from 'rxjs';\nimport { MiniStore, MiniState } from 'ngx-bootstrap/mini-ngrx';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { CommonModule } from '@angular/common';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from 'ngx-bootstrap/positioning';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from 'ngx-bootstrap/timepicker';\nimport * as ɵngcc4 from 'ngx-bootstrap/component-loader';\nimport * as ɵngcc5 from 'ngx-bootstrap/tooltip';\n\nconst _c0 = [\"startTP\"];\nfunction BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-days-calendar-view\", 11);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(3); return ctx_r10.navigateTo($event); })(\"onViewMode\", function BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(3); return ctx_r12.setViewMode($event); })(\"onHover\", function BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r13 = ɵngcc0.ɵɵnextContext(3); return ctx_r13.dayHoverHandler($event); })(\"onHoverWeek\", function BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onHoverWeek_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r14 = ɵngcc0.ɵɵnextContext(3); return ctx_r14.weekHoverHandler($event); })(\"onSelect\", function BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r15 = ɵngcc0.ɵɵnextContext(3); return ctx_r15.daySelectHandler($event); });\n ɵngcc0.ɵɵpipe(1, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r9 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r7.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r9)(\"options\", ɵngcc0.ɵɵpipeBind1(1, 4, ctx_r7.options$));\n} }\nfunction BsDatepickerContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"timepicker\", null, 15);\n} }\nfunction BsDatepickerContainerComponent_div_0_ng_container_4_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵelement(1, \"timepicker\", null, 13);\n ɵngcc0.ɵɵtemplate(3, BsDatepickerContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template, 2, 0, \"timepicker\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r8.isRangePicker);\n} }\nfunction BsDatepickerContainerComponent_div_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 8);\n ɵngcc0.ɵɵtemplate(2, BsDatepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template, 2, 6, \"bs-days-calendar-view\", 9);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, BsDatepickerContainerComponent_div_0_ng_container_4_div_4_Template, 4, 1, \"div\", 10);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(3, 2, ctx_r1.daysCalendar$));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.withTimepicker);\n} }\nfunction BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-month-calendar-view\", 17);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(3); return ctx_r21.navigateTo($event); })(\"onViewMode\", function BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r23 = ɵngcc0.ɵɵnextContext(3); return ctx_r23.setViewMode($event); })(\"onHover\", function BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r24 = ɵngcc0.ɵɵnextContext(3); return ctx_r24.monthHoverHandler($event); })(\"onSelect\", function BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r25 = ɵngcc0.ɵɵnextContext(3); return ctx_r25.monthSelectHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r19.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r20);\n} }\nfunction BsDatepickerContainerComponent_div_0_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDatepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template, 1, 3, \"bs-month-calendar-view\", 16);\n ɵngcc0.ɵɵpipe(2, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r2.monthsCalendar));\n} }\nfunction BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template(rf, ctx) { if (rf & 1) {\n const _r29 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-years-calendar-view\", 17);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r28 = ɵngcc0.ɵɵnextContext(3); return ctx_r28.navigateTo($event); })(\"onViewMode\", function BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r30 = ɵngcc0.ɵɵnextContext(3); return ctx_r30.setViewMode($event); })(\"onHover\", function BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r31 = ɵngcc0.ɵɵnextContext(3); return ctx_r31.yearHoverHandler($event); })(\"onSelect\", function BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r32 = ɵngcc0.ɵɵnextContext(3); return ctx_r32.yearSelectHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r27 = ctx.$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r26.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r27);\n} }\nfunction BsDatepickerContainerComponent_div_0_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDatepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template, 1, 3, \"bs-years-calendar-view\", 16);\n ɵngcc0.ɵɵpipe(2, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r3.yearsCalendar));\n} }\nfunction BsDatepickerContainerComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18)(1, \"button\", 19);\n ɵngcc0.ɵɵtext(2, \"Apply\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"button\", 20);\n ɵngcc0.ɵɵtext(4, \"Cancel\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction BsDatepickerContainerComponent_div_0_div_8_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r36 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerContainerComponent_div_0_div_8_div_1_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r35 = ɵngcc0.ɵɵnextContext(3); return ctx_r35.setToday(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r33 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"today-left\", ctx_r33.todayPos === \"left\")(\"today-right\", ctx_r33.todayPos === \"right\")(\"today-center\", ctx_r33.todayPos === \"center\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r33.todayBtnLbl);\n} }\nfunction BsDatepickerContainerComponent_div_0_div_8_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r38 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 25)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerContainerComponent_div_0_div_8_div_2_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r38); const ctx_r37 = ɵngcc0.ɵɵnextContext(3); return ctx_r37.clearDate(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r34 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"clear-left\", ctx_r34.clearPos === \"left\")(\"clear-right\", ctx_r34.clearPos === \"right\")(\"clear-center\", ctx_r34.clearPos === \"center\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r34.clearBtnLbl);\n} }\nfunction BsDatepickerContainerComponent_div_0_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18);\n ɵngcc0.ɵɵtemplate(1, BsDatepickerContainerComponent_div_0_div_8_div_1_Template, 3, 7, \"div\", 21);\n ɵngcc0.ɵɵtemplate(2, BsDatepickerContainerComponent_div_0_div_8_div_2_Template, 3, 7, \"div\", 22);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showTodayBtn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showClearBtn);\n} }\nfunction BsDatepickerContainerComponent_div_0_div_9_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 26)(1, \"bs-custom-date-view\", 27);\n ɵngcc0.ɵɵlistener(\"onSelect\", function BsDatepickerContainerComponent_div_0_div_9_Template_bs_custom_date_view_onSelect_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(2); return ctx_r39.setRangeOnCalendar($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"selectedRange\", ctx_r6.chosenRange)(\"ranges\", ctx_r6.customRanges)(\"customRangeLabel\", ctx_r6.customRangeBtnLbl);\n} }\nfunction BsDatepickerContainerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r42 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 1)(1, \"div\", 2);\n ɵngcc0.ɵɵlistener(\"@datepickerAnimation.done\", function BsDatepickerContainerComponent_div_0_Template_div_animation_datepickerAnimation_done_1_listener() { ɵngcc0.ɵɵrestoreView(_r42); const ctx_r41 = ɵngcc0.ɵɵnextContext(); return ctx_r41.positionServiceEnable(); });\n ɵngcc0.ɵɵelementStart(2, \"div\", 3);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵtemplate(4, BsDatepickerContainerComponent_div_0_ng_container_4_Template, 5, 4, \"ng-container\", 4);\n ɵngcc0.ɵɵtemplate(5, BsDatepickerContainerComponent_div_0_div_5_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵtemplate(6, BsDatepickerContainerComponent_div_0_div_6_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, BsDatepickerContainerComponent_div_0_div_7_Template, 5, 0, \"div\", 6);\n ɵngcc0.ɵɵtemplate(8, BsDatepickerContainerComponent_div_0_div_8_Template, 3, 2, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, BsDatepickerContainerComponent_div_0_div_9_Template, 2, 3, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.containerClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"@datepickerAnimation\", ctx_r0.animationState);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ɵngcc0.ɵɵpipeBind1(3, 9, ctx_r0.viewMode));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"day\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"month\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"year\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showTodayBtn || ctx_r0.showClearBtn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.customRanges && ctx_r0.customRanges.length > 0);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-days-calendar-view\", 11);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDatepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(3); return ctx_r10.navigateTo($event); })(\"onViewMode\", function BsDatepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(3); return ctx_r12.setViewMode($event); })(\"onHover\", function BsDatepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r13 = ɵngcc0.ɵɵnextContext(3); return ctx_r13.dayHoverHandler($event); })(\"onHoverWeek\", function BsDatepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onHoverWeek_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r14 = ɵngcc0.ɵɵnextContext(3); return ctx_r14.weekHoverHandler($event); })(\"onSelect\", function BsDatepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r15 = ɵngcc0.ɵɵnextContext(3); return ctx_r15.daySelectHandler($event); });\n ɵngcc0.ɵɵpipe(1, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r9 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r7.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r9)(\"options\", ɵngcc0.ɵɵpipeBind1(1, 4, ctx_r7.options$));\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"timepicker\", null, 15);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_ng_container_4_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵelement(1, \"timepicker\", null, 13);\n ɵngcc0.ɵɵtemplate(3, BsDatepickerInlineContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template, 2, 0, \"timepicker\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r8.isRangePicker);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 8);\n ɵngcc0.ɵɵtemplate(2, BsDatepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template, 2, 6, \"bs-days-calendar-view\", 9);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, BsDatepickerInlineContainerComponent_div_0_ng_container_4_div_4_Template, 4, 1, \"div\", 10);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(3, 2, ctx_r1.daysCalendar$));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.withTimepicker);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-month-calendar-view\", 17);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDatepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(3); return ctx_r21.navigateTo($event); })(\"onViewMode\", function BsDatepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r23 = ɵngcc0.ɵɵnextContext(3); return ctx_r23.setViewMode($event); })(\"onHover\", function BsDatepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r24 = ɵngcc0.ɵɵnextContext(3); return ctx_r24.monthHoverHandler($event); })(\"onSelect\", function BsDatepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r25 = ɵngcc0.ɵɵnextContext(3); return ctx_r25.monthSelectHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r19.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r20);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDatepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template, 1, 3, \"bs-month-calendar-view\", 16);\n ɵngcc0.ɵɵpipe(2, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r2.monthsCalendar));\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template(rf, ctx) { if (rf & 1) {\n const _r29 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-years-calendar-view\", 17);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDatepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r28 = ɵngcc0.ɵɵnextContext(3); return ctx_r28.navigateTo($event); })(\"onViewMode\", function BsDatepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r30 = ɵngcc0.ɵɵnextContext(3); return ctx_r30.setViewMode($event); })(\"onHover\", function BsDatepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r31 = ɵngcc0.ɵɵnextContext(3); return ctx_r31.yearHoverHandler($event); })(\"onSelect\", function BsDatepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r32 = ɵngcc0.ɵɵnextContext(3); return ctx_r32.yearSelectHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r27 = ctx.$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r26.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r27);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDatepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template, 1, 3, \"bs-years-calendar-view\", 16);\n ɵngcc0.ɵɵpipe(2, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r3.yearsCalendar));\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18)(1, \"button\", 19);\n ɵngcc0.ɵɵtext(2, \"Apply\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"button\", 20);\n ɵngcc0.ɵɵtext(4, \"Cancel\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_8_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r36 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerInlineContainerComponent_div_0_div_8_div_1_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r35 = ɵngcc0.ɵɵnextContext(3); return ctx_r35.setToday(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r33 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"today-left\", ctx_r33.todayPos === \"left\")(\"today-right\", ctx_r33.todayPos === \"right\")(\"today-center\", ctx_r33.todayPos === \"center\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r33.todayBtnLbl);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_8_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r38 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 25)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerInlineContainerComponent_div_0_div_8_div_2_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r38); const ctx_r37 = ɵngcc0.ɵɵnextContext(3); return ctx_r37.clearDate(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r34 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"clear-left\", ctx_r34.clearPos === \"left\")(\"clear-right\", ctx_r34.clearPos === \"right\")(\"clear-center\", ctx_r34.clearPos === \"center\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r34.clearBtnLbl);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18);\n ɵngcc0.ɵɵtemplate(1, BsDatepickerInlineContainerComponent_div_0_div_8_div_1_Template, 3, 7, \"div\", 21);\n ɵngcc0.ɵɵtemplate(2, BsDatepickerInlineContainerComponent_div_0_div_8_div_2_Template, 3, 7, \"div\", 22);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showTodayBtn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showClearBtn);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_div_9_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 26)(1, \"bs-custom-date-view\", 27);\n ɵngcc0.ɵɵlistener(\"onSelect\", function BsDatepickerInlineContainerComponent_div_0_div_9_Template_bs_custom_date_view_onSelect_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(2); return ctx_r39.setRangeOnCalendar($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"selectedRange\", ctx_r6.chosenRange)(\"ranges\", ctx_r6.customRanges)(\"customRangeLabel\", ctx_r6.customRangeBtnLbl);\n} }\nfunction BsDatepickerInlineContainerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r42 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 1)(1, \"div\", 2);\n ɵngcc0.ɵɵlistener(\"@datepickerAnimation.done\", function BsDatepickerInlineContainerComponent_div_0_Template_div_animation_datepickerAnimation_done_1_listener() { ɵngcc0.ɵɵrestoreView(_r42); const ctx_r41 = ɵngcc0.ɵɵnextContext(); return ctx_r41.positionServiceEnable(); });\n ɵngcc0.ɵɵelementStart(2, \"div\", 3);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵtemplate(4, BsDatepickerInlineContainerComponent_div_0_ng_container_4_Template, 5, 4, \"ng-container\", 4);\n ɵngcc0.ɵɵtemplate(5, BsDatepickerInlineContainerComponent_div_0_div_5_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵtemplate(6, BsDatepickerInlineContainerComponent_div_0_div_6_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, BsDatepickerInlineContainerComponent_div_0_div_7_Template, 5, 0, \"div\", 6);\n ɵngcc0.ɵɵtemplate(8, BsDatepickerInlineContainerComponent_div_0_div_8_Template, 3, 2, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, BsDatepickerInlineContainerComponent_div_0_div_9_Template, 2, 3, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.containerClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"@datepickerAnimation\", ctx_r0.animationState);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ɵngcc0.ɵɵpipeBind1(3, 9, ctx_r0.viewMode));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"day\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"month\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"year\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showTodayBtn || ctx_r0.showClearBtn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.customRanges && ctx_r0.customRanges.length > 0);\n} }\nconst _c1 = [\"endTP\"];\nfunction BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-days-calendar-view\", 11);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(3); return ctx_r10.navigateTo($event); })(\"onViewMode\", function BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(3); return ctx_r12.setViewMode($event); })(\"onHover\", function BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r13 = ɵngcc0.ɵɵnextContext(3); return ctx_r13.dayHoverHandler($event); })(\"onHoverWeek\", function BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onHoverWeek_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r14 = ɵngcc0.ɵɵnextContext(3); return ctx_r14.weekHoverHandler($event); })(\"onSelect\", function BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r15 = ɵngcc0.ɵɵnextContext(3); return ctx_r15.daySelectHandler($event); });\n ɵngcc0.ɵɵpipe(1, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r9 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r7.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r9)(\"options\", ɵngcc0.ɵɵpipeBind1(1, 4, ctx_r7.options$));\n} }\nfunction BsDaterangepickerContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"timepicker\", null, 15);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_ng_container_4_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵelement(1, \"timepicker\", null, 13);\n ɵngcc0.ɵɵtemplate(3, BsDaterangepickerContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template, 2, 0, \"timepicker\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r8.isRangePicker);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 8);\n ɵngcc0.ɵɵtemplate(2, BsDaterangepickerContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template, 2, 6, \"bs-days-calendar-view\", 9);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, BsDaterangepickerContainerComponent_div_0_ng_container_4_div_4_Template, 4, 1, \"div\", 10);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(3, 2, ctx_r1.daysCalendar$));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.withTimepicker);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-month-calendar-view\", 17);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(3); return ctx_r21.navigateTo($event); })(\"onViewMode\", function BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r23 = ɵngcc0.ɵɵnextContext(3); return ctx_r23.setViewMode($event); })(\"onHover\", function BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r24 = ɵngcc0.ɵɵnextContext(3); return ctx_r24.monthHoverHandler($event); })(\"onSelect\", function BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r25 = ɵngcc0.ɵɵnextContext(3); return ctx_r25.monthSelectHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r19.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r20);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDaterangepickerContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template, 1, 3, \"bs-month-calendar-view\", 16);\n ɵngcc0.ɵɵpipe(2, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r2.monthsCalendar));\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template(rf, ctx) { if (rf & 1) {\n const _r29 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-years-calendar-view\", 17);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r28 = ɵngcc0.ɵɵnextContext(3); return ctx_r28.navigateTo($event); })(\"onViewMode\", function BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r30 = ɵngcc0.ɵɵnextContext(3); return ctx_r30.setViewMode($event); })(\"onHover\", function BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r31 = ɵngcc0.ɵɵnextContext(3); return ctx_r31.yearHoverHandler($event); })(\"onSelect\", function BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r32 = ɵngcc0.ɵɵnextContext(3); return ctx_r32.yearSelectHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r27 = ctx.$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r26.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r27);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDaterangepickerContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template, 1, 3, \"bs-years-calendar-view\", 16);\n ɵngcc0.ɵɵpipe(2, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r3.yearsCalendar));\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18)(1, \"button\", 19);\n ɵngcc0.ɵɵtext(2, \"Apply\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"button\", 20);\n ɵngcc0.ɵɵtext(4, \"Cancel\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_8_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r36 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaterangepickerContainerComponent_div_0_div_8_div_1_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r35 = ɵngcc0.ɵɵnextContext(3); return ctx_r35.setToday(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r33 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"today-left\", ctx_r33.todayPos === \"left\")(\"today-right\", ctx_r33.todayPos === \"right\")(\"today-center\", ctx_r33.todayPos === \"center\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r33.todayBtnLbl);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_8_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r38 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 25)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaterangepickerContainerComponent_div_0_div_8_div_2_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r38); const ctx_r37 = ɵngcc0.ɵɵnextContext(3); return ctx_r37.clearDate(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r34 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"clear-left\", ctx_r34.clearPos === \"left\")(\"clear-right\", ctx_r34.clearPos === \"right\")(\"clear-center\", ctx_r34.clearPos === \"center\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r34.clearBtnLbl);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18);\n ɵngcc0.ɵɵtemplate(1, BsDaterangepickerContainerComponent_div_0_div_8_div_1_Template, 3, 7, \"div\", 21);\n ɵngcc0.ɵɵtemplate(2, BsDaterangepickerContainerComponent_div_0_div_8_div_2_Template, 3, 7, \"div\", 22);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showTodayBtn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showClearBtn);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_div_9_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 26)(1, \"bs-custom-date-view\", 27);\n ɵngcc0.ɵɵlistener(\"onSelect\", function BsDaterangepickerContainerComponent_div_0_div_9_Template_bs_custom_date_view_onSelect_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(2); return ctx_r39.setRangeOnCalendar($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"selectedRange\", ctx_r6.chosenRange)(\"ranges\", ctx_r6.customRanges)(\"customRangeLabel\", ctx_r6.customRangeBtnLbl);\n} }\nfunction BsDaterangepickerContainerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r42 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 1)(1, \"div\", 2);\n ɵngcc0.ɵɵlistener(\"@datepickerAnimation.done\", function BsDaterangepickerContainerComponent_div_0_Template_div_animation_datepickerAnimation_done_1_listener() { ɵngcc0.ɵɵrestoreView(_r42); const ctx_r41 = ɵngcc0.ɵɵnextContext(); return ctx_r41.positionServiceEnable(); });\n ɵngcc0.ɵɵelementStart(2, \"div\", 3);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵtemplate(4, BsDaterangepickerContainerComponent_div_0_ng_container_4_Template, 5, 4, \"ng-container\", 4);\n ɵngcc0.ɵɵtemplate(5, BsDaterangepickerContainerComponent_div_0_div_5_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵtemplate(6, BsDaterangepickerContainerComponent_div_0_div_6_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, BsDaterangepickerContainerComponent_div_0_div_7_Template, 5, 0, \"div\", 6);\n ɵngcc0.ɵɵtemplate(8, BsDaterangepickerContainerComponent_div_0_div_8_Template, 3, 2, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, BsDaterangepickerContainerComponent_div_0_div_9_Template, 2, 3, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.containerClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"@datepickerAnimation\", ctx_r0.animationState);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ɵngcc0.ɵɵpipeBind1(3, 9, ctx_r0.viewMode));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"day\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"month\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"year\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showTodayBtn || ctx_r0.showClearBtn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.customRanges && ctx_r0.customRanges.length > 0);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-days-calendar-view\", 11);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(3); return ctx_r10.navigateTo($event); })(\"onViewMode\", function BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(3); return ctx_r12.setViewMode($event); })(\"onHover\", function BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r13 = ɵngcc0.ɵɵnextContext(3); return ctx_r13.dayHoverHandler($event); })(\"onHoverWeek\", function BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onHoverWeek_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r14 = ɵngcc0.ɵɵnextContext(3); return ctx_r14.weekHoverHandler($event); })(\"onSelect\", function BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template_bs_days_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r15 = ɵngcc0.ɵɵnextContext(3); return ctx_r15.daySelectHandler($event); });\n ɵngcc0.ɵɵpipe(1, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r9 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r7.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r9)(\"options\", ɵngcc0.ɵɵpipeBind1(1, 4, ctx_r7.options$));\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"timepicker\", null, 15);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵelement(1, \"timepicker\", null, 13);\n ɵngcc0.ɵɵtemplate(3, BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_div_4_timepicker_3_Template, 2, 0, \"timepicker\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r8.isRangePicker);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 8);\n ɵngcc0.ɵɵtemplate(2, BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_bs_days_calendar_view_2_Template, 2, 6, \"bs-days-calendar-view\", 9);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_div_4_Template, 4, 1, \"div\", 10);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(3, 2, ctx_r1.daysCalendar$));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.withTimepicker);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-month-calendar-view\", 17);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDaterangepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(3); return ctx_r21.navigateTo($event); })(\"onViewMode\", function BsDaterangepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r23 = ɵngcc0.ɵɵnextContext(3); return ctx_r23.setViewMode($event); })(\"onHover\", function BsDaterangepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r24 = ɵngcc0.ɵɵnextContext(3); return ctx_r24.monthHoverHandler($event); })(\"onSelect\", function BsDaterangepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template_bs_month_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r25 = ɵngcc0.ɵɵnextContext(3); return ctx_r25.monthSelectHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r19.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r20);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDaterangepickerInlineContainerComponent_div_0_div_5_bs_month_calendar_view_1_Template, 1, 3, \"bs-month-calendar-view\", 16);\n ɵngcc0.ɵɵpipe(2, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r2.monthsCalendar));\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template(rf, ctx) { if (rf & 1) {\n const _r29 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"bs-years-calendar-view\", 17);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDaterangepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onNavigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r28 = ɵngcc0.ɵɵnextContext(3); return ctx_r28.navigateTo($event); })(\"onViewMode\", function BsDaterangepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onViewMode_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r30 = ɵngcc0.ɵɵnextContext(3); return ctx_r30.setViewMode($event); })(\"onHover\", function BsDaterangepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onHover_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r31 = ɵngcc0.ɵɵnextContext(3); return ctx_r31.yearHoverHandler($event); })(\"onSelect\", function BsDaterangepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template_bs_years_calendar_view_onSelect_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r29); const ctx_r32 = ɵngcc0.ɵɵnextContext(3); return ctx_r32.yearSelectHandler($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const calendar_r27 = ctx.$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"bs-datepicker-multiple\", ctx_r26.multipleCalendars);\n ɵngcc0.ɵɵproperty(\"calendar\", calendar_r27);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDaterangepickerInlineContainerComponent_div_0_div_6_bs_years_calendar_view_1_Template, 1, 3, \"bs-years-calendar-view\", 16);\n ɵngcc0.ɵɵpipe(2, \"async\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r3.yearsCalendar));\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18)(1, \"button\", 19);\n ɵngcc0.ɵɵtext(2, \"Apply\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"button\", 20);\n ɵngcc0.ɵɵtext(4, \"Cancel\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_8_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r36 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaterangepickerInlineContainerComponent_div_0_div_8_div_1_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r35 = ɵngcc0.ɵɵnextContext(3); return ctx_r35.setToday(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r33 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"today-left\", ctx_r33.todayPos === \"left\")(\"today-right\", ctx_r33.todayPos === \"right\")(\"today-center\", ctx_r33.todayPos === \"center\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r33.todayBtnLbl);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_8_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r38 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 25)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaterangepickerInlineContainerComponent_div_0_div_8_div_2_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r38); const ctx_r37 = ɵngcc0.ɵɵnextContext(3); return ctx_r37.clearDate(); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r34 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵclassProp(\"clear-left\", ctx_r34.clearPos === \"left\")(\"clear-right\", ctx_r34.clearPos === \"right\")(\"clear-center\", ctx_r34.clearPos === \"center\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r34.clearBtnLbl);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 18);\n ɵngcc0.ɵɵtemplate(1, BsDaterangepickerInlineContainerComponent_div_0_div_8_div_1_Template, 3, 7, \"div\", 21);\n ɵngcc0.ɵɵtemplate(2, BsDaterangepickerInlineContainerComponent_div_0_div_8_div_2_Template, 3, 7, \"div\", 22);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showTodayBtn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showClearBtn);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_div_9_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 26)(1, \"bs-custom-date-view\", 27);\n ɵngcc0.ɵɵlistener(\"onSelect\", function BsDaterangepickerInlineContainerComponent_div_0_div_9_Template_bs_custom_date_view_onSelect_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(2); return ctx_r39.setRangeOnCalendar($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"selectedRange\", ctx_r6.chosenRange)(\"ranges\", ctx_r6.customRanges)(\"customRangeLabel\", ctx_r6.customRangeBtnLbl);\n} }\nfunction BsDaterangepickerInlineContainerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r42 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 1)(1, \"div\", 2);\n ɵngcc0.ɵɵlistener(\"@datepickerAnimation.done\", function BsDaterangepickerInlineContainerComponent_div_0_Template_div_animation_datepickerAnimation_done_1_listener() { ɵngcc0.ɵɵrestoreView(_r42); const ctx_r41 = ɵngcc0.ɵɵnextContext(); return ctx_r41.positionServiceEnable(); });\n ɵngcc0.ɵɵelementStart(2, \"div\", 3);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵtemplate(4, BsDaterangepickerInlineContainerComponent_div_0_ng_container_4_Template, 5, 4, \"ng-container\", 4);\n ɵngcc0.ɵɵtemplate(5, BsDaterangepickerInlineContainerComponent_div_0_div_5_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵtemplate(6, BsDaterangepickerInlineContainerComponent_div_0_div_6_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(7, BsDaterangepickerInlineContainerComponent_div_0_div_7_Template, 5, 0, \"div\", 6);\n ɵngcc0.ɵɵtemplate(8, BsDaterangepickerInlineContainerComponent_div_0_div_8_Template, 3, 2, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, BsDaterangepickerInlineContainerComponent_div_0_div_9_Template, 2, 3, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r0.containerClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"@datepickerAnimation\", ctx_r0.animationState);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ɵngcc0.ɵɵpipeBind1(3, 9, ctx_r0.viewMode));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"day\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"month\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"year\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showTodayBtn || ctx_r0.showClearBtn);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.customRanges && ctx_r0.customRanges.length > 0);\n} }\nfunction DatePickerInnerComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 1);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c2 = [\"*\"];\nfunction DayPickerComponent_table_0_button_4_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function DayPickerComponent_table_0_button_4_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.datePicker.move(-1); });\n ɵngcc0.ɵɵtext(1, \"\\u2039\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction DayPickerComponent_table_0_button_5_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function DayPickerComponent_table_0_button_5_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.datePicker.move(-1); });\n ɵngcc0.ɵɵtext(1, \"<\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction DayPickerComponent_table_0_button_11_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function DayPickerComponent_table_0_button_11_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.datePicker.move(1); });\n ɵngcc0.ɵɵtext(1, \"\\u203A\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction DayPickerComponent_table_0_button_12_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function DayPickerComponent_table_0_button_12_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.datePicker.move(1); });\n ɵngcc0.ɵɵtext(1, \"> \");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction DayPickerComponent_table_0_th_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"th\");\n} }\nfunction DayPickerComponent_table_0_th_15_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 10)(1, \"small\", 11)(2, \"b\");\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const labelz_r16 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(labelz_r16.abbr);\n} }\nfunction DayPickerComponent_table_0_ng_template_17_tr_0_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 10)(1, \"em\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const index_r18 = ɵngcc0.ɵɵnextContext(2).index;\n const ctx_r20 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r20.weekNumbers[index_r18]);\n} }\nconst _c3 = function (a0, a1, a2, a3, a4) { return { \"btn-secondary\": a0, \"btn-info\": a1, disabled: a2, active: a3, \"btn-default\": a4 }; };\nconst _c4 = function (a0, a1) { return { \"text-muted\": a0, \"text-info\": a1 }; };\nfunction DayPickerComponent_table_0_ng_template_17_tr_0_td_2_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r27 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 16);\n ɵngcc0.ɵɵlistener(\"click\", function DayPickerComponent_table_0_ng_template_17_tr_0_td_2_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r27); const dtz_r23 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r25 = ɵngcc0.ɵɵnextContext(4); return ctx_r25.datePicker.select(dtz_r23.date); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 17);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const dtz_r23 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r24 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵclassMapInterpolate1(\"btn btn-sm \", dtz_r23.customClass, \"\");\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction5(7, _c3, ctx_r24.isBs4 && !dtz_r23.selected && !ctx_r24.datePicker.isActive(dtz_r23), dtz_r23.selected, dtz_r23.disabled, !ctx_r24.isBs4 && ctx_r24.datePicker.isActive(dtz_r23), !ctx_r24.isBs4))(\"disabled\", dtz_r23.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(13, _c4, dtz_r23.secondary || dtz_r23.current, !ctx_r24.isBs4 && dtz_r23.current));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(dtz_r23.label);\n} }\nfunction DayPickerComponent_table_0_ng_template_17_tr_0_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 14);\n ɵngcc0.ɵɵtemplate(1, DayPickerComponent_table_0_ng_template_17_tr_0_td_2_button_1_Template, 3, 16, \"button\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const dtz_r23 = ctx.$implicit;\n const ctx_r21 = ɵngcc0.ɵɵnextContext(4);\n ɵngcc0.ɵɵproperty(\"id\", dtz_r23.uid);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !(ctx_r21.datePicker.onlyCurrentMonth && dtz_r23.secondary));\n} }\nfunction DayPickerComponent_table_0_ng_template_17_tr_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, DayPickerComponent_table_0_ng_template_17_tr_0_td_1_Template, 3, 1, \"td\", 12);\n ɵngcc0.ɵɵtemplate(2, DayPickerComponent_table_0_ng_template_17_tr_0_td_2_Template, 2, 2, \"td\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const rowz_r17 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r19.datePicker.showWeeks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", rowz_r17);\n} }\nfunction DayPickerComponent_table_0_ng_template_17_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DayPickerComponent_table_0_ng_template_17_tr_0_Template, 3, 2, \"tr\", 5);\n} if (rf & 2) {\n const rowz_r17 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !(ctx_r7.datePicker.onlyCurrentMonth && rowz_r17[0].secondary && rowz_r17[6].secondary));\n} }\nconst _c5 = function (a0) { return { disabled: a0 }; };\nfunction DayPickerComponent_table_0_Template(rf, ctx) { if (rf & 1) {\n const _r31 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"table\", 1)(1, \"thead\")(2, \"tr\")(3, \"th\");\n ɵngcc0.ɵɵtemplate(4, DayPickerComponent_table_0_button_4_Template, 2, 0, \"button\", 2);\n ɵngcc0.ɵɵtemplate(5, DayPickerComponent_table_0_button_5_Template, 2, 0, \"button\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"th\")(7, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function DayPickerComponent_table_0_Template_button_click_7_listener() { ɵngcc0.ɵɵrestoreView(_r31); const ctx_r30 = ɵngcc0.ɵɵnextContext(); return ctx_r30.datePicker.toggleMode(0); });\n ɵngcc0.ɵɵelementStart(8, \"strong\");\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelementStart(10, \"th\");\n ɵngcc0.ɵɵtemplate(11, DayPickerComponent_table_0_button_11_Template, 2, 0, \"button\", 4);\n ɵngcc0.ɵɵtemplate(12, DayPickerComponent_table_0_button_12_Template, 2, 0, \"button\", 4);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(13, \"tr\");\n ɵngcc0.ɵɵtemplate(14, DayPickerComponent_table_0_th_14_Template, 1, 0, \"th\", 5);\n ɵngcc0.ɵɵtemplate(15, DayPickerComponent_table_0_th_15_Template, 4, 1, \"th\", 6);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(16, \"tbody\");\n ɵngcc0.ɵɵtemplate(17, DayPickerComponent_table_0_ng_template_17_Template, 1, 1, \"ng-template\", 7);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", ctx_r0.datePicker.uniqueId + \"-title\");\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.isBs4);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.isBs4);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"colspan\", 5 + (ctx_r0.datePicker.showWeeks ? 1 : 0));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r0.datePicker.uniqueId + \"-title\")(\"disabled\", ctx_r0.datePicker.datepickerMode === ctx_r0.datePicker.maxMode)(\"ngClass\", ɵngcc0.ɵɵpureFunction1(13, _c5, ctx_r0.datePicker.datepickerMode === ctx_r0.datePicker.maxMode));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.isBs4);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.isBs4);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.datePicker.showWeeks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.labels);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.rows);\n} }\nconst _c6 = function (a0, a1, a2, a3) { return { \"btn-link\": a0, \"btn-info\": a1, disabled: a2, active: a3 }; };\nconst _c7 = function (a0, a1) { return { \"text-success\": a0, \"text-info\": a1 }; };\nfunction MonthPickerComponent_table_0_tr_14_td_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 7)(1, \"button\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function MonthPickerComponent_table_0_tr_14_td_1_Template_button_click_1_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const dtz_r4 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(3); return ctx_r5.datePicker.select(dtz_r4.date); });\n ɵngcc0.ɵɵelementStart(2, \"span\", 9);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const dtz_r4 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngClass\", dtz_r4.customClass);\n ɵngcc0.ɵɵattribute(\"id\", dtz_r4.uid);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction4(6, _c6, ctx_r3.isBs4 && !dtz_r4.selected && !ctx_r3.datePicker.isActive(dtz_r4), dtz_r4.selected || ctx_r3.isBs4 && !dtz_r4.selected && ctx_r3.datePicker.isActive(dtz_r4), dtz_r4.disabled, !ctx_r3.isBs4 && ctx_r3.datePicker.isActive(dtz_r4)))(\"disabled\", dtz_r4.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(11, _c7, ctx_r3.isBs4 && dtz_r4.current, !ctx_r3.isBs4 && dtz_r4.current));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(dtz_r4.label);\n} }\nfunction MonthPickerComponent_table_0_tr_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, MonthPickerComponent_table_0_tr_14_td_1_Template, 4, 14, \"td\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const rowz_r2 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", rowz_r2);\n} }\nfunction MonthPickerComponent_table_0_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"table\", 1)(1, \"thead\")(2, \"tr\")(3, \"th\")(4, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function MonthPickerComponent_table_0_Template_button_click_4_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.datePicker.move(-1); });\n ɵngcc0.ɵɵtext(5, \"\\u2039\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(6, \"th\")(7, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function MonthPickerComponent_table_0_Template_button_click_7_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.datePicker.toggleMode(0); });\n ɵngcc0.ɵɵelementStart(8, \"strong\");\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelementStart(10, \"th\")(11, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function MonthPickerComponent_table_0_Template_button_click_11_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.datePicker.move(1); });\n ɵngcc0.ɵɵtext(12, \"\\u203A\");\n ɵngcc0.ɵɵelementEnd()()()();\n ɵngcc0.ɵɵelementStart(13, \"tbody\");\n ɵngcc0.ɵɵtemplate(14, MonthPickerComponent_table_0_tr_14_Template, 2, 1, \"tr\", 5);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r0.datePicker.monthColLimit - 2 <= 0 ? 1 : ctx_r0.datePicker.monthColLimit - 2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r0.datePicker.uniqueId + \"-title\")(\"disabled\", ctx_r0.datePicker.datepickerMode === ctx_r0.maxMode)(\"ngClass\", ɵngcc0.ɵɵpureFunction1(6, _c5, ctx_r0.datePicker.datepickerMode === ctx_r0.maxMode));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.rows);\n} }\nfunction YearPickerComponent_table_0_tr_14_td_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 7)(1, \"button\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function YearPickerComponent_table_0_tr_14_td_1_Template_button_click_1_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const dtz_r4 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(3); return ctx_r5.datePicker.select(dtz_r4.date); });\n ɵngcc0.ɵɵelementStart(2, \"span\", 9);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const dtz_r4 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattribute(\"id\", dtz_r4.uid);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction4(5, _c6, ctx_r3.isBs4 && !dtz_r4.selected && !ctx_r3.datePicker.isActive(dtz_r4), dtz_r4.selected || ctx_r3.isBs4 && !dtz_r4.selected && ctx_r3.datePicker.isActive(dtz_r4), dtz_r4.disabled, !ctx_r3.isBs4 && ctx_r3.datePicker.isActive(dtz_r4)))(\"disabled\", dtz_r4.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(10, _c7, ctx_r3.isBs4 && dtz_r4.current, !ctx_r3.isBs4 && dtz_r4.current));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(dtz_r4.label);\n} }\nfunction YearPickerComponent_table_0_tr_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, YearPickerComponent_table_0_tr_14_td_1_Template, 4, 13, \"td\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const rowz_r2 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", rowz_r2);\n} }\nfunction YearPickerComponent_table_0_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"table\", 1)(1, \"thead\")(2, \"tr\")(3, \"th\")(4, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function YearPickerComponent_table_0_Template_button_click_4_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.datePicker.move(-1); });\n ɵngcc0.ɵɵtext(5, \"\\u2039 \");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(6, \"th\")(7, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function YearPickerComponent_table_0_Template_button_click_7_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.datePicker.toggleMode(0); });\n ɵngcc0.ɵɵelementStart(8, \"strong\");\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelementStart(10, \"th\")(11, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function YearPickerComponent_table_0_Template_button_click_11_listener() { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.datePicker.move(1); });\n ɵngcc0.ɵɵtext(12, \"\\u203A \");\n ɵngcc0.ɵɵelementEnd()()()();\n ɵngcc0.ɵɵelementStart(13, \"tbody\");\n ɵngcc0.ɵɵtemplate(14, YearPickerComponent_table_0_tr_14_Template, 2, 1, \"tr\", 5);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r0.datePicker.yearColLimit - 2 <= 0 ? 1 : ctx_r0.datePicker.yearColLimit - 2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r0.datePicker.uniqueId + \"-title\")(\"disabled\", ctx_r0.datePicker.datepickerMode === ctx_r0.datePicker.maxMode)(\"ngClass\", ɵngcc0.ɵɵpureFunction1(6, _c5, ctx_r0.datePicker.datepickerMode === ctx_r0.datePicker.maxMode));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.rows);\n} }\nfunction BsCalendarLayoutComponent_bs_current_date_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"bs-current-date\", 4);\n} }\nfunction BsCalendarLayoutComponent_bs_timepicker_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"bs-timepicker\");\n} }\nconst _c8 = [[[\"bs-datepicker-navigation-view\"]], \"*\"];\nconst _c9 = [\"bs-datepicker-navigation-view\", \"*\"];\nfunction BsCustomDatesViewComponent_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function BsCustomDatesViewComponent_button_1_Template_button_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const range_r1 = restoredCtx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.selectFromRanges(range_r1); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const range_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"selected\", range_r1.value === ctx_r0.selectedRange);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", range_r1.label, \" \");\n} }\nconst _c10 = [\"bsDatepickerDayDecorator\", \"\"];\nfunction BsDatepickerNavigationViewComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1, \" \\u200B \");\n ɵngcc0.ɵɵelementStart(2, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerNavigationViewComponent_ng_container_3_Template_button_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.view(\"month\"); });\n ɵngcc0.ɵɵelementStart(3, \"span\");\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.calendar.monthTitle);\n} }\nfunction BsDaysCalendarViewComponent_th_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"th\");\n} }\nfunction BsDaysCalendarViewComponent_th_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const i_r4 = ctx.index;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\", ctx_r1.calendar.weekdays[i_r4], \" \");\n} }\nfunction BsDaysCalendarViewComponent_tr_8_td_1_span_1_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaysCalendarViewComponent_tr_8_td_1_span_1_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.selectWeek(week_r5); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const i_r6 = ɵngcc0.ɵɵnextContext(2).index;\n const ctx_r9 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r9.calendar.weekNumbers[i_r6]);\n} }\nfunction BsDaysCalendarViewComponent_tr_8_td_1_span_2_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaysCalendarViewComponent_tr_8_td_1_span_2_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit; const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.selectWeek(week_r5); })(\"mouseenter\", function BsDaysCalendarViewComponent_tr_8_td_1_span_2_Template_span_mouseenter_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit; const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.weekHoverHandler(week_r5, true); })(\"mouseleave\", function BsDaysCalendarViewComponent_tr_8_td_1_span_2_Template_span_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit; const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.weekHoverHandler(week_r5, false); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const i_r6 = ɵngcc0.ɵɵnextContext(2).index;\n const ctx_r10 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r10.calendar.weekNumbers[i_r6]);\n} }\nfunction BsDaysCalendarViewComponent_tr_8_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(1, BsDaysCalendarViewComponent_tr_8_td_1_span_1_Template, 2, 1, \"span\", 9);\n ɵngcc0.ɵɵtemplate(2, BsDaysCalendarViewComponent_tr_8_td_1_span_2_Template, 2, 1, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"active-week\", ctx_r7.isWeekHovered);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.isiOS);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r7.isiOS);\n} }\nfunction BsDaysCalendarViewComponent_tr_8_td_2_span_1_Template(rf, ctx) { if (rf & 1) {\n const _r29 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 17);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaysCalendarViewComponent_tr_8_td_2_span_1_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r29); const day_r23 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r27 = ɵngcc0.ɵɵnextContext(2); return ctx_r27.selectDay(day_r23); })(\"mouseenter\", function BsDaysCalendarViewComponent_tr_8_td_2_span_1_Template_span_mouseenter_0_listener() { ɵngcc0.ɵɵrestoreView(_r29); const day_r23 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r30 = ɵngcc0.ɵɵnextContext(2); return ctx_r30.hoverDay(day_r23, true); })(\"mouseleave\", function BsDaysCalendarViewComponent_tr_8_td_2_span_1_Template_span_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r29); const day_r23 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r32 = ɵngcc0.ɵɵnextContext(2); return ctx_r32.hoverDay(day_r23, false); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r23 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵpropertyInterpolate(\"tooltip\", day_r23.tooltipText);\n ɵngcc0.ɵɵproperty(\"day\", day_r23);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\", day_r23.label, \" 3\");\n} }\nfunction BsDaysCalendarViewComponent_tr_8_td_2_span_2_Template(rf, ctx) { if (rf & 1) {\n const _r37 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 18);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaysCalendarViewComponent_tr_8_td_2_span_2_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r37); const day_r23 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r35 = ɵngcc0.ɵɵnextContext(2); return ctx_r35.selectDay(day_r23); })(\"mouseenter\", function BsDaysCalendarViewComponent_tr_8_td_2_span_2_Template_span_mouseenter_0_listener() { ɵngcc0.ɵɵrestoreView(_r37); const day_r23 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r38 = ɵngcc0.ɵɵnextContext(2); return ctx_r38.hoverDay(day_r23, true); })(\"mouseleave\", function BsDaysCalendarViewComponent_tr_8_td_2_span_2_Template_span_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r37); const day_r23 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r40 = ɵngcc0.ɵɵnextContext(2); return ctx_r40.hoverDay(day_r23, false); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r23 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"day\", day_r23);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\", day_r23.label, \" 2\");\n} }\nfunction BsDaysCalendarViewComponent_tr_8_td_2_span_3_Template(rf, ctx) { if (rf & 1) {\n const _r45 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 19);\n ɵngcc0.ɵɵlistener(\"click\", function BsDaysCalendarViewComponent_tr_8_td_2_span_3_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r45); const day_r23 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r43 = ɵngcc0.ɵɵnextContext(2); return ctx_r43.selectDay(day_r23); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r23 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"day\", day_r23);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\", day_r23.label, \" 1\");\n} }\nfunction BsDaysCalendarViewComponent_tr_8_td_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 13);\n ɵngcc0.ɵɵtemplate(1, BsDaysCalendarViewComponent_tr_8_td_2_span_1_Template, 2, 3, \"span\", 14);\n ɵngcc0.ɵɵtemplate(2, BsDaysCalendarViewComponent_tr_8_td_2_span_2_Template, 2, 2, \"span\", 15);\n ɵngcc0.ɵɵtemplate(3, BsDaysCalendarViewComponent_tr_8_td_2_span_3_Template, 2, 2, \"span\", 16);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r8.isiOS && ctx_r8.isShowTooltip);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r8.isiOS && !ctx_r8.isShowTooltip);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r8.isiOS);\n} }\nfunction BsDaysCalendarViewComponent_tr_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, BsDaysCalendarViewComponent_tr_8_td_1_Template, 3, 4, \"td\", 6);\n ɵngcc0.ɵɵtemplate(2, BsDaysCalendarViewComponent_tr_8_td_2_Template, 4, 3, \"td\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.options && ctx_r2.options.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", week_r5.days);\n} }\nfunction BsMonthCalendarViewComponent_tr_4_td_1_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function BsMonthCalendarViewComponent_tr_4_td_1_Template_td_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const month_r3 = restoredCtx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(2); return ctx_r4.viewMonth(month_r3); })(\"mouseenter\", function BsMonthCalendarViewComponent_tr_4_td_1_Template_td_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const month_r3 = restoredCtx.$implicit; const ctx_r6 = ɵngcc0.ɵɵnextContext(2); return ctx_r6.hoverMonth(month_r3, true); })(\"mouseleave\", function BsMonthCalendarViewComponent_tr_4_td_1_Template_td_mouseleave_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const month_r3 = restoredCtx.$implicit; const ctx_r7 = ɵngcc0.ɵɵnextContext(2); return ctx_r7.hoverMonth(month_r3, false); });\n ɵngcc0.ɵɵelementStart(1, \"span\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const month_r3 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"disabled\", month_r3.isDisabled)(\"is-highlighted\", month_r3.isHovered);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"selected\", month_r3.isSelected);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(month_r3.label);\n} }\nfunction BsMonthCalendarViewComponent_tr_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, BsMonthCalendarViewComponent_tr_4_td_1_Template, 3, 7, \"td\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const row_r1 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", row_r1);\n} }\nfunction BsYearsCalendarViewComponent_tr_4_td_1_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function BsYearsCalendarViewComponent_tr_4_td_1_Template_td_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const year_r3 = restoredCtx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(2); return ctx_r4.viewYear(year_r3); })(\"mouseenter\", function BsYearsCalendarViewComponent_tr_4_td_1_Template_td_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const year_r3 = restoredCtx.$implicit; const ctx_r6 = ɵngcc0.ɵɵnextContext(2); return ctx_r6.hoverYear(year_r3, true); })(\"mouseleave\", function BsYearsCalendarViewComponent_tr_4_td_1_Template_td_mouseleave_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const year_r3 = restoredCtx.$implicit; const ctx_r7 = ɵngcc0.ɵɵnextContext(2); return ctx_r7.hoverYear(year_r3, false); });\n ɵngcc0.ɵɵelementStart(1, \"span\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const year_r3 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"disabled\", year_r3.isDisabled)(\"is-highlighted\", year_r3.isHovered);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"selected\", year_r3.isSelected);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(year_r3.label);\n} }\nfunction BsYearsCalendarViewComponent_tr_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\");\n ɵngcc0.ɵɵtemplate(1, BsYearsCalendarViewComponent_tr_4_td_1_Template, 3, 7, \"td\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const row_r1 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", row_r1);\n} }\nclass BsDatepickerConfig {\n constructor() {\n /** sets use adaptive position */\n this.adaptivePosition = false;\n /** sets use UTC date time format */\n this.useUtc = false;\n /** turn on/off animation */\n this.isAnimated = false;\n /**\n * The view that the datepicker should start in\n */\n this.startView = 'day';\n /**\n * If true, returns focus to the datepicker / daterangepicker input after date selection\n */\n this.returnFocusToInput = false;\n /** CSS class which will be applied to datepicker container,\n * usually used to set color theme\n */\n this.containerClass = 'theme-green';\n // DatepickerRenderOptions\n this.displayMonths = 1;\n /**\n * Allows to hide week numbers in datepicker\n */\n this.showWeekNumbers = true;\n this.dateInputFormat = 'L';\n // range picker\n this.rangeSeparator = ' - ';\n /**\n * Date format for date range input field\n */\n this.rangeInputFormat = 'L';\n // DatepickerFormatOptions\n this.monthTitle = 'MMMM';\n this.yearTitle = 'YYYY';\n this.dayLabel = 'D';\n this.monthLabel = 'MMMM';\n this.yearLabel = 'YYYY';\n this.weekNumbers = 'w';\n /**\n * Shows 'today' button\n */\n this.showTodayButton = false;\n /**\n * Shows clear button\n */\n this.showClearButton = false;\n /**\n * Positioning of 'today' button\n */\n this.todayPosition = 'center';\n /**\n * Positioning of 'clear' button\n */\n this.clearPosition = 'right';\n /**\n * Label for 'today' button\n */\n this.todayButtonLabel = 'Today';\n /**\n * Label for 'clear' button\n */\n this.clearButtonLabel = 'Clear';\n /**\n * Label for 'custom range' button\n */\n this.customRangeButtonLabel = 'Custom Range';\n /**\n * Shows timepicker under datepicker\n */\n this.withTimepicker = false;\n }\n}\nBsDatepickerConfig.ɵfac = function BsDatepickerConfig_Factory(t) { return new (t || BsDatepickerConfig)(); };\nBsDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDatepickerConfig_Factory() { return new BsDatepickerConfig(); }, token: BsDatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\n\nconst DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\nconst datepickerAnimation = trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n]);\n\nclass BsDatepickerAbstractComponent {\n constructor() {\n this.containerClass = '';\n this.customRanges = [];\n this.chosenRange = [];\n this._daysCalendarSub = new Subscription();\n this.selectedTimeSub = new Subscription();\n }\n set minDate(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setMinDate(value);\n }\n set maxDate(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setMaxDate(value);\n }\n set daysDisabled(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDaysDisabled(value);\n }\n set datesDisabled(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDatesDisabled(value);\n }\n set datesEnabled(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDatesEnabled(value);\n }\n set isDisabled(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDisabled(value);\n }\n set dateCustomClasses(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDateCustomClasses(value);\n }\n set dateTooltipTexts(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setDateTooltipTexts(value);\n }\n set daysCalendar$(value) {\n this._daysCalendar$ = value;\n this._daysCalendarSub.unsubscribe();\n this._daysCalendarSub.add(this._daysCalendar$.subscribe(value => {\n this.multipleCalendars = !!value && value.length > 1;\n }));\n }\n get daysCalendar$() {\n return this._daysCalendar$;\n }\n // todo: valorkin fix\n // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\n setViewMode(event) { }\n // eslint-disable-next-line\n navigateTo(event) { }\n // eslint-disable-next-line\n dayHoverHandler(event) { }\n // eslint-disable-next-line\n weekHoverHandler(event) { }\n // eslint-disable-next-line\n monthHoverHandler(event) { }\n // eslint-disable-next-line\n yearHoverHandler(event) { }\n // eslint-disable-next-line\n timeSelectHandler(date, index) { }\n // eslint-disable-next-line\n daySelectHandler(day) { }\n // eslint-disable-next-line\n monthSelectHandler(event) { }\n // eslint-disable-next-line\n yearSelectHandler(event) { }\n // eslint-disable-next-line\n setRangeOnCalendar(dates) { }\n // eslint-disable-next-line\n setToday() { }\n // eslint-disable-next-line\n clearDate() { }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _stopPropagation(event) {\n event.stopPropagation();\n }\n}\n\nclass BsDatepickerActions {\n calculate() {\n return { type: BsDatepickerActions.CALCULATE };\n }\n format() {\n return { type: BsDatepickerActions.FORMAT };\n }\n flag() {\n return { type: BsDatepickerActions.FLAG };\n }\n select(date) {\n return {\n type: BsDatepickerActions.SELECT,\n payload: date\n };\n }\n selectTime(date, index) {\n return {\n type: BsDatepickerActions.SELECT_TIME,\n payload: { date, index },\n };\n }\n changeViewMode(event) {\n return {\n type: BsDatepickerActions.CHANGE_VIEWMODE,\n payload: event\n };\n }\n navigateTo(event) {\n return {\n type: BsDatepickerActions.NAVIGATE_TO,\n payload: event\n };\n }\n navigateStep(step) {\n return {\n type: BsDatepickerActions.NAVIGATE_OFFSET,\n payload: step\n };\n }\n setOptions(options) {\n return {\n type: BsDatepickerActions.SET_OPTIONS,\n payload: options\n };\n }\n // date range picker\n selectRange(value) {\n return {\n type: BsDatepickerActions.SELECT_RANGE,\n payload: value\n };\n }\n hoverDay(event) {\n return {\n type: BsDatepickerActions.HOVER,\n payload: event.isHovered ? event.cell.date : null\n };\n }\n minDate(date) {\n return {\n type: BsDatepickerActions.SET_MIN_DATE,\n payload: date\n };\n }\n maxDate(date) {\n return {\n type: BsDatepickerActions.SET_MAX_DATE,\n payload: date\n };\n }\n daysDisabled(days) {\n return {\n type: BsDatepickerActions.SET_DAYSDISABLED,\n payload: days\n };\n }\n datesDisabled(dates) {\n return {\n type: BsDatepickerActions.SET_DATESDISABLED,\n payload: dates\n };\n }\n datesEnabled(dates) {\n return {\n type: BsDatepickerActions.SET_DATESENABLED,\n payload: dates\n };\n }\n isDisabled(value) {\n return {\n type: BsDatepickerActions.SET_IS_DISABLED,\n payload: value\n };\n }\n setDateCustomClasses(value) {\n return {\n type: BsDatepickerActions.SET_DATE_CUSTOM_CLASSES,\n payload: value\n };\n }\n setDateTooltipTexts(value) {\n return {\n type: BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS,\n payload: value\n };\n }\n setLocale(locale) {\n return {\n type: BsDatepickerActions.SET_LOCALE,\n payload: locale\n };\n }\n}\nBsDatepickerActions.ɵfac = function BsDatepickerActions_Factory(t) { return new (t || BsDatepickerActions)(); };\nBsDatepickerActions.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BsDatepickerActions, factory: BsDatepickerActions.ɵfac });\nBsDatepickerActions.CALCULATE = '[datepicker] calculate dates matrix';\nBsDatepickerActions.FORMAT = '[datepicker] format datepicker values';\nBsDatepickerActions.FLAG = '[datepicker] set flags';\nBsDatepickerActions.SELECT = '[datepicker] select date';\nBsDatepickerActions.NAVIGATE_OFFSET = '[datepicker] shift view date';\nBsDatepickerActions.NAVIGATE_TO = '[datepicker] change view date';\nBsDatepickerActions.SET_OPTIONS = '[datepicker] update render options';\nBsDatepickerActions.HOVER = '[datepicker] hover date';\nBsDatepickerActions.CHANGE_VIEWMODE = '[datepicker] switch view mode';\nBsDatepickerActions.SET_MIN_DATE = '[datepicker] set min date';\nBsDatepickerActions.SET_MAX_DATE = '[datepicker] set max date';\nBsDatepickerActions.SET_DAYSDISABLED = '[datepicker] set days disabled';\nBsDatepickerActions.SET_DATESDISABLED = '[datepicker] set dates disabled';\nBsDatepickerActions.SET_DATESENABLED = '[datepicker] set dates enabled';\nBsDatepickerActions.SET_IS_DISABLED = '[datepicker] set is disabled';\nBsDatepickerActions.SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\nBsDatepickerActions.SET_DATE_TOOLTIP_TEXTS = '[datepicker] set date tooltip texts';\nBsDatepickerActions.SET_LOCALE = '[datepicker] set datepicker locale';\nBsDatepickerActions.SELECT_TIME = '[datepicker] select time';\nBsDatepickerActions.SELECT_RANGE = '[daterangepicker] select dates range';\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerActions, [{\n type: Injectable\n }], null, null); })();\n\nclass BsLocaleService {\n constructor() {\n this._defaultLocale = 'en';\n this._locale = new BehaviorSubject(this._defaultLocale);\n this._localeChange = this._locale.asObservable();\n }\n get locale() {\n return this._locale;\n }\n get localeChange() {\n return this._localeChange;\n }\n get currentLocale() {\n return this._locale.getValue();\n }\n use(locale) {\n if (locale === this.currentLocale) {\n return;\n }\n this._locale.next(locale);\n }\n}\nBsLocaleService.ɵfac = function BsLocaleService_Factory(t) { return new (t || BsLocaleService)(); };\nBsLocaleService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BsLocaleService, factory: BsLocaleService.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsLocaleService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\nclass BsDatepickerEffects {\n constructor(_actions, _localeService) {\n this._actions = _actions;\n this._localeService = _localeService;\n this._subs = [];\n }\n init(_bsDatepickerStore) {\n this._store = _bsDatepickerStore;\n return this;\n }\n /** setters */\n setValue(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.select(value));\n }\n setRangeValue(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.selectRange(value));\n }\n setMinDate(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.minDate(value));\n return this;\n }\n setMaxDate(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.maxDate(value));\n return this;\n }\n setDaysDisabled(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.daysDisabled(value));\n return this;\n }\n setDatesDisabled(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.datesDisabled(value));\n return this;\n }\n setDatesEnabled(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.datesEnabled(value));\n return this;\n }\n setDisabled(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.isDisabled(value));\n return this;\n }\n setDateCustomClasses(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.setDateCustomClasses(value));\n return this;\n }\n setDateTooltipTexts(value) {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.setDateTooltipTexts(value));\n return this;\n }\n /* Set rendering options */\n setOptions(_config) {\n var _a;\n const _options = Object.assign({ locale: this._localeService.currentLocale }, _config);\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.setOptions(_options));\n return this;\n }\n /** view to mode bindings */\n setBindings(container) {\n if (!this._store) {\n return this;\n }\n container.selectedTime = this._store.select(state => state.selectedTime)\n .pipe(filter(times => !!times));\n container.daysCalendar$ = this._store.select(state => state.flaggedMonths)\n .pipe(filter(months => !!months));\n // month calendar\n container.monthsCalendar = this._store.select(state => state.flaggedMonthsCalendar)\n .pipe(filter(months => !!months));\n // year calendar\n container.yearsCalendar = this._store.select(state => state.yearsCalendarFlagged)\n .pipe(filter(years => !!years));\n container.viewMode = this._store.select(state => { var _a; return (_a = state.view) === null || _a === void 0 ? void 0 : _a.mode; });\n container.options$ = combineLatest([\n this._store.select(state => state.showWeekNumbers),\n this._store.select(state => state.displayMonths)\n ])\n .pipe(map((latest) => ({\n showWeekNumbers: latest[0],\n displayMonths: latest[1]\n })));\n return this;\n }\n /** event handlers */\n setEventHandlers(container) {\n container.setViewMode = (event) => {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.changeViewMode(event));\n };\n container.navigateTo = (event) => {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.navigateStep(event.step));\n };\n container.dayHoverHandler = (event) => {\n var _a;\n const _cell = event.cell;\n if (_cell.isOtherMonth || _cell.isDisabled) {\n return;\n }\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n container.monthHoverHandler = (event) => {\n event.cell.isHovered = event.isHovered;\n };\n container.yearHoverHandler = (event) => {\n event.cell.isHovered = event.isHovered;\n };\n return this;\n }\n registerDatepickerSideEffects() {\n if (!this._store) {\n return this;\n }\n this._subs.push(this._store.select(state => state.view).subscribe(() => {\n var _a;\n (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.calculate());\n }));\n // format calendar values on month model change\n this._subs.push(this._store\n .select(state => state.monthsModel)\n .pipe(filter(monthModel => !!monthModel))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.format()); }));\n // flag day values\n this._subs.push(this._store\n .select(state => state.formattedMonths)\n .pipe(filter(month => !!month))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // flag day values\n this._subs.push(this._store\n .select(state => state.selectedDate)\n .pipe(filter(selectedDate => !!selectedDate))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // flag for date range picker\n this._subs.push(this._store\n .select(state => state.selectedRange)\n .pipe(filter(selectedRange => !!selectedRange))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // monthsCalendar\n this._subs.push(this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // years calendar\n this._subs.push(this._store\n .select(state => state.yearsCalendarModel)\n .pipe(filter(state => !!state))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // on hover\n this._subs.push(this._store\n .select(state => state.hoveredDate)\n .pipe(filter(hoveredDate => !!hoveredDate))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // date custom classes\n this._subs.push(this._store\n .select(state => state.dateCustomClasses)\n .pipe(filter(dateCustomClasses => !!dateCustomClasses))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // date tooltip texts\n this._subs.push(this._store\n .select(state => state.dateTooltipTexts)\n .pipe(filter(dateTooltipTexts => !!dateTooltipTexts))\n .subscribe(() => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.flag()); }));\n // on locale change\n this._subs.push(this._localeService.localeChange\n .subscribe(locale => { var _a; return (_a = this._store) === null || _a === void 0 ? void 0 : _a.dispatch(this._actions.setLocale(locale)); }));\n return this;\n }\n destroy() {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\nBsDatepickerEffects.ɵfac = function BsDatepickerEffects_Factory(t) { return new (t || BsDatepickerEffects)(ɵngcc0.ɵɵinject(BsDatepickerActions), ɵngcc0.ɵɵinject(BsLocaleService)); };\nBsDatepickerEffects.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BsDatepickerEffects, factory: BsDatepickerEffects.ɵfac });\nBsDatepickerEffects.ctorParameters = () => [\n { type: BsDatepickerActions },\n { type: BsLocaleService }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerEffects, [{\n type: Injectable\n }], function () { return [{ type: BsDatepickerActions }, { type: BsLocaleService }]; }, null); })();\n\nconst defaultMonthOptions = {\n width: 7,\n height: 6\n};\nconst dayInMilliseconds = 24 * 60 * 60 * 1000;\n\nclass BsDatepickerState {\n constructor() {\n // DatepickerRenderOptions\n this.showWeekNumbers = true;\n this.displayMonths = 1;\n }\n}\nconst _initialView = { date: new Date(), mode: 'day' };\nconst initialDatepickerState = Object.assign(new BsDatepickerConfig(), {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n selectedTime: [],\n monthViewOptions: defaultMonthOptions\n});\n\nfunction getStartingDayOfCalendar(date, options) {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n return date;\n }\n const weekDay = getDay(date);\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n return shiftDate(date, { day: -offset });\n}\nfunction calculateDateOffset(weekday, startingDayOffset) {\n const _startingDayOffset = Number(startingDayOffset);\n if (isNaN(_startingDayOffset)) {\n return 0;\n }\n if (_startingDayOffset === 0) {\n return weekday;\n }\n const offset = weekday - _startingDayOffset % 7;\n return offset < 0 ? offset + 7 : offset;\n}\nfunction isMonthDisabled(date, min, max) {\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n return minBound || maxBound || false;\n}\nfunction isYearDisabled(date, min, max) {\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n return minBound || maxBound || false;\n}\nfunction isDisabledDate(date, datesDisabled, unit) {\n if (!datesDisabled || !isArray(datesDisabled) || !datesDisabled.length) {\n return false;\n }\n if (unit && unit === 'year') {\n return datesDisabled.some((dateDisabled) => isSame(date, dateDisabled, 'year'));\n }\n return datesDisabled.some((dateDisabled) => isSame(date, dateDisabled, 'date'));\n}\nfunction isEnabledDate(date, datesEnabled, unit) {\n if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) {\n return false;\n }\n if (unit && unit === 'year') {\n return !datesEnabled.some((dateDisabled) => isSame(date, dateDisabled, 'year'));\n }\n return !datesEnabled.some((enabledDate) => isSame(date, enabledDate, 'date'));\n}\nfunction getYearsCalendarInitialDate(state, calendarIndex = 0) {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n return (model === null || model === void 0 ? void 0 : model.years[0]) && model.years[0][0] && model.years[0][0].date;\n}\nfunction checkRangesWithMaxDate(ranges, maxDate) {\n if (!ranges)\n return ranges;\n if (!maxDate)\n return ranges;\n if (!ranges.length && !ranges[0].value)\n return ranges;\n ranges.forEach((item) => {\n if (!item || !item.value)\n return ranges;\n if (item.value instanceof Date)\n return ranges;\n if (!(item.value instanceof Array && item.value.length))\n return ranges;\n item.value = compareDateWithMaxDateHelper(item.value, maxDate);\n return ranges;\n });\n return ranges;\n}\nfunction checkBsValue(date, maxDate) {\n if (!date)\n return date;\n if (!maxDate)\n return date;\n if (date instanceof Array && !date.length)\n return date;\n if (date instanceof Date)\n return date;\n return compareDateWithMaxDateHelper(date, maxDate);\n}\nfunction compareDateWithMaxDateHelper(date, maxDate) {\n if (date instanceof Array) {\n const editedValues = date.map(item => {\n if (!item)\n return item;\n if (isAfter(item, maxDate, 'date'))\n item = maxDate;\n return item;\n });\n return editedValues;\n }\n return date;\n}\nfunction setCurrentTimeOnDateSelect(value) {\n if (!value)\n return value;\n return setCurrentTimeHelper(value);\n}\nfunction setDateRangesCurrentTimeOnDateSelect(value) {\n if (!(value === null || value === void 0 ? void 0 : value.length))\n return value;\n value.map((date) => {\n if (!date) {\n return date;\n }\n return setCurrentTimeHelper(date);\n });\n return value;\n}\nfunction setCurrentTimeHelper(date) {\n const now = new Date();\n date.setMilliseconds(now.getMilliseconds());\n date.setSeconds(now.getSeconds());\n date.setMinutes(now.getMinutes());\n date.setHours(now.getHours());\n return date;\n}\n\nfunction createMatrix(options, fn) {\n let prevValue = options.initialDate;\n const matrix = new Array(options.height);\n for (let i = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n for (let j = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n return matrix;\n}\n\n// user and model input should handle parsing and validating input values\nfunction calcDaysCalendar(startingDate, options) {\n const firstDay = getFirstDayOfMonth(startingDate);\n const initialDate = getStartingDayOfCalendar(firstDay, options);\n // todo test\n const matrixOptions = {\n width: options.width || 0,\n height: options.height || 0,\n initialDate,\n shift: { day: 1 }\n };\n const daysMatrix = createMatrix(matrixOptions, date => date);\n return {\n daysMatrix,\n month: firstDay\n };\n}\n\nfunction formatDaysCalendar(daysCalendar, formatOptions, monthIndex) {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(daysCalendar.month, formatOptions.monthTitle, formatOptions.locale),\n yearTitle: formatDate(daysCalendar.month, formatOptions.yearTitle, formatOptions.locale),\n weekNumbers: getWeekNumbers(daysCalendar.daysMatrix, formatOptions.weekNumbers, formatOptions.locale),\n weekdays: getShiftedWeekdays(formatOptions.locale),\n weeks: daysCalendar.daysMatrix.map((week, weekIndex) => ({\n days: week.map((date, dayIndex) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n })),\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\nfunction getWeekNumbers(daysMatrix, format, locale) {\n return daysMatrix.map((days) => (days[0] ? formatDate(days[0], format, locale) : ''));\n}\nfunction getShiftedWeekdays(locale) {\n const _locale = getLocale(locale);\n const weekdays = _locale.weekdaysShort();\n const firstDayOfWeek = _locale.firstDayOfWeek();\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n\nfunction flagDaysCalendar(formattedMonth, options) {\n formattedMonth.weeks.forEach((week) => {\n week.days.forEach((day, dayIndex) => {\n // datepicker\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n const isHovered = !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n // date range picker\n const isSelectionStart = !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd = !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[1]);\n const isSelected = (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n isSelectionStart ||\n isSelectionEnd;\n const isInRange = !isOtherMonth &&\n options.selectedRange &&\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n const isDisabled = options.isDisabled ||\n isBefore(day.date, options.minDate, 'day') ||\n isAfter(day.date, options.maxDate, 'day') ||\n isDisabledDay(day.date, options.daysDisabled) ||\n isDisabledDate(day.date, options.datesDisabled) ||\n isEnabledDate(day.date, options.datesEnabled);\n const currentDate = new Date();\n const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\n const customClasses = options.dateCustomClasses && options.dateCustomClasses\n .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n const tooltipText = options.dateTooltipTexts && options.dateTooltipTexts\n .map(tt => isSameDay(day.date, tt.date) ? tt.tooltipText : '')\n .reduce((previousValue, currentValue) => {\n previousValue.push(currentValue);\n return previousValue;\n }, [])\n .join(' ')\n || '';\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday,\n customClasses,\n tooltipText\n });\n if (day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange ||\n day.customClasses !== newDay.customClasses ||\n day.tooltipText !== newDay.tooltipText) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n // todo: add check for linked calendars\n formattedMonth.hideLeftArrow =\n options.isDisabled ||\n (!!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n ((!!options.monthIndex || options.monthIndex === 0) && !!options.displayMonths && options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths);\n formattedMonth.disableLeftArrow = isMonthDisabled(shiftDate(formattedMonth.month, { month: -1 }), options.minDate, options.maxDate);\n formattedMonth.disableRightArrow = isMonthDisabled(shiftDate(formattedMonth.month, { month: 1 }), options.minDate, options.maxDate);\n return formattedMonth;\n}\nfunction isDateInRange(date, selectedRange, hoveredDate) {\n if (!date || !selectedRange || !selectedRange[0]) {\n return false;\n }\n if (selectedRange[1]) {\n return date > selectedRange[0] && date <= selectedRange[1];\n }\n if (hoveredDate) {\n return date > selectedRange[0] && date <= hoveredDate;\n }\n return false;\n}\n\nfunction canSwitchMode(mode, minMode) {\n return minMode ? mode >= minMode : true;\n}\n\nconst height = 4;\nconst width = 3;\nconst shift = { month: 1 };\nfunction formatMonthsCalendar(viewDate, formatOptions) {\n const initialDate = startOf(viewDate, 'year');\n const matrixOptions = { width, height, initialDate, shift };\n const monthMatrix = createMatrix(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(viewDate, formatOptions.yearTitle, formatOptions.locale),\n hideRightArrow: false,\n hideLeftArrow: false,\n disableRightArrow: false,\n disableLeftArrow: false\n };\n}\n\nfunction flagMonthsCalendar(monthCalendar, options) {\n monthCalendar.months.forEach((months, rowIndex) => {\n months.forEach((month, monthIndex) => {\n let isSelected;\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled = options.isDisabled ||\n isDisabledDate(month.date, options.datesDisabled) ||\n isEnabledDate(month.date, options.datesEnabled) ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameMonth(month.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameMonth(month.date, options.selectedRange[1]);\n }\n }\n else {\n isSelected = isSameMonth(month.date, options.selectedDate);\n }\n const newMonth = Object.assign(/*{},*/ month, {\n isHovered,\n isDisabled,\n isSelected\n });\n if (month.isHovered !== newMonth.isHovered ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n });\n // todo: add check for linked calendars\n monthCalendar.hideLeftArrow =\n !!options.monthIndex && options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\n (!!options.monthIndex || options.monthIndex === 0)\n && (!!options.displayMonths || options.displayMonths === 0)\n && options.monthIndex < options.displayMonths\n && options.monthIndex + 1 !== options.displayMonths;\n monthCalendar.disableLeftArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, { year: -1 }), options.minDate, options.maxDate);\n monthCalendar.disableRightArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, { year: 1 }), options.minDate, options.maxDate);\n return monthCalendar;\n}\n\nconst height$1 = 4;\nconst width$1 = 4;\nconst yearsPerCalendar = height$1 * width$1;\nconst initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift$1 = { year: 1 };\nfunction formatYearsCalendar(viewDate, formatOptions, previousInitialDate) {\n const initialDate = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = { width: width$1, height: height$1, initialDate, shift: shift$1 };\n const yearsMatrix = createMatrix(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle,\n hideLeftArrow: false,\n hideRightArrow: false,\n disableLeftArrow: false,\n disableRightArrow: false\n };\n}\nfunction calculateInitialDate(viewDate, previousInitialDate) {\n if (previousInitialDate\n && viewDate.getFullYear() >= previousInitialDate.getFullYear()\n && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n return shiftDate(viewDate, { year: initialYearShift });\n}\nfunction formatYearRangeTitle(yearsMatrix, formatOptions) {\n const from = formatDate(yearsMatrix[0][0].date, formatOptions.yearTitle, formatOptions.locale);\n const to = formatDate(yearsMatrix[height$1 - 1][width$1 - 1].date, formatOptions.yearTitle, formatOptions.locale);\n return `${from} - ${to}`;\n}\n\nfunction flagYearsCalendar(yearsCalendar, options) {\n yearsCalendar.years.forEach((years, rowIndex) => {\n years.forEach((year, yearIndex) => {\n let isSelected;\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled = options.isDisabled ||\n isDisabledDate(year.date, options.datesDisabled, 'year') ||\n isEnabledDate(year.date, options.datesEnabled, 'year') ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameYear(year.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameYear(year.date, options.selectedRange[1]);\n }\n }\n else {\n isSelected = isSameYear(year.date, options.selectedDate);\n }\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\n if (year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isSelected !== newMonth.isSelected) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n });\n // todo: add check for linked calendars\n yearsCalendar.hideLeftArrow =\n !!options.yearIndex && options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\n !!options.yearIndex && !!options.displayMonths &&\n options.yearIndex < options.displayMonths &&\n options.yearIndex + 1 !== options.displayMonths;\n yearsCalendar.disableLeftArrow = isYearDisabled(shiftDate(yearsCalendar.years[0][0].date, { year: -1 }), options.minDate, options.maxDate);\n const i = yearsCalendar.years.length - 1;\n const j = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableRightArrow = isYearDisabled(shiftDate(yearsCalendar.years[i][j].date, { year: 1 }), options.minDate, options.maxDate);\n return yearsCalendar;\n}\n\nfunction copyTime(sourceDate, time) {\n sourceDate.setHours(time.getHours());\n sourceDate.setMinutes(time.getMinutes());\n sourceDate.setSeconds(time.getSeconds());\n sourceDate.setMilliseconds(time.getMilliseconds());\n}\n\nfunction bsDatepickerReducer(state = initialDatepickerState, action) {\n switch (action.type) {\n case BsDatepickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n case BsDatepickerActions.FORMAT: {\n return formatReducer(state);\n }\n case BsDatepickerActions.FLAG: {\n return flagReducer(state);\n }\n case BsDatepickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n case BsDatepickerActions.NAVIGATE_TO: {\n const payload = action.payload;\n if (!state.view || !payload.unit) {\n return state;\n }\n const date = setFullDate(state.view.date, payload.unit);\n let newState;\n let mode;\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = { view: { date, mode } };\n }\n else {\n mode = state.view.mode;\n newState = { selectedDate: date, view: { date, mode } };\n }\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode) || !state.view) {\n return state;\n }\n const date = state.view.date;\n const mode = action.payload;\n const newState = { view: { date, mode } };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.HOVER: {\n return Object.assign({}, state, { hoveredDate: action.payload });\n }\n case BsDatepickerActions.SELECT: {\n if (!state.view) {\n return state;\n }\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n if (Array.isArray(state.selectedTime)) {\n const _time = state.selectedTime[0];\n if (_time) {\n copyTime(newState.selectedDate, _time);\n }\n }\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.SELECT_TIME: {\n const { date, index } = action.payload;\n const selectedTime = state.selectedTime ? [...state.selectedTime] : [];\n selectedTime[index] = date;\n return Object.assign({}, state, { selectedTime });\n }\n case BsDatepickerActions.SET_OPTIONS: {\n if (!state.view) {\n return state;\n }\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n || state.view.date;\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = { mode, date };\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n newState.selectedTime = newState.value.map((i) => i);\n }\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n newState.selectedTime = [newState.value];\n }\n // provided value is not supported :)\n // need to report it somehow\n }\n return Object.assign({}, state, newState);\n }\n // date range picker\n case BsDatepickerActions.SELECT_RANGE: {\n if (!state.view) {\n return state;\n }\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n newState.selectedRange.forEach((dte, index) => {\n if (Array.isArray(state.selectedTime)) {\n const _time = state.selectedTime[index];\n if (_time) {\n copyTime(dte, _time);\n }\n }\n });\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n case BsDatepickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n case BsDatepickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n case BsDatepickerActions.SET_DATE_CUSTOM_CLASSES: {\n return Object.assign({}, state, {\n dateCustomClasses: action.payload\n });\n }\n case BsDatepickerActions.SET_DATE_TOOLTIP_TEXTS: {\n return Object.assign({}, state, {\n dateTooltipTexts: action.payload\n });\n }\n default:\n return state;\n }\n}\nfunction calculateReducer(state) {\n if (!state.view) {\n return state;\n }\n // how many calendars\n let displayMonths;\n if (state.displayOneMonthRange &&\n isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) {\n displayMonths = 1;\n }\n else {\n displayMonths = state.displayMonths || 1;\n }\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n if (state.view.mode === 'day' && state.monthViewOptions) {\n if (state.showPreviousMonth && state.selectedRange && state.selectedRange.length === 0) {\n viewDate = shiftDate(viewDate, { month: -1 });\n }\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n let monthsModel = new Array(displayMonths);\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsModel[monthIndex] = calcDaysCalendar(viewDate, state.monthViewOptions);\n viewDate = shiftDate(viewDate, { month: 1 });\n }\n // Check if parameter enabled and check if it's not months navigation event\n if (state.preventChangeToNextMonth && state.flaggedMonths && state.hoveredDate) {\n const viewMonth = calcDaysCalendar(state.view.date, state.monthViewOptions);\n // Check if viewed right month same as in flaggedMonths state, then override months model with flaggedMonths\n if (state.flaggedMonths.length && state.flaggedMonths[1].month.getMonth() === viewMonth.month.getMonth()) {\n monthsModel = state.flaggedMonths\n .map(item => {\n if (state.monthViewOptions) {\n return calcDaysCalendar(item.month, state.monthViewOptions);\n }\n return null;\n })\n .filter(item => item !== null);\n }\n }\n return Object.assign({}, state, { monthsModel });\n }\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n return Object.assign({}, state, { monthsCalendar });\n }\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state), state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined);\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n }\n return Object.assign({}, state, { yearsCalendarModel });\n }\n return state;\n}\nfunction formatReducer(state) {\n if (!state.view) {\n return state;\n }\n if (state.view.mode === 'day' && state.monthsModel) {\n const formattedMonths = state.monthsModel.map((month, monthIndex) => formatDaysCalendar(month, getFormatOptions(state), monthIndex));\n return Object.assign({}, state, { formattedMonths });\n }\n // how many calendars\n const displayMonths = state.displayMonths || 1;\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n return Object.assign({}, state, { monthsCalendar });\n }\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 16 });\n }\n return Object.assign({}, state, { yearsCalendarModel });\n }\n return state;\n}\nfunction flagReducer(state) {\n if (!state.view) {\n return state;\n }\n const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (state.formattedMonths && state.view.mode === 'day') {\n const flaggedMonths = state.formattedMonths.map((formattedMonth, monthIndex) => flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n daysDisabled: state.daysDisabled,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n dateCustomClasses: state.dateCustomClasses,\n dateTooltipTexts: state.dateTooltipTexts,\n monthIndex\n }));\n return Object.assign({}, state, { flaggedMonths });\n }\n if (state.view.mode === 'month' && state.monthsCalendar) {\n const flaggedMonthsCalendar = state.monthsCalendar.map((formattedMonth, monthIndex) => flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n }));\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n if (state.view.mode === 'year' && state.yearsCalendarModel) {\n const yearsCalendarFlagged = state.yearsCalendarModel.map((formattedMonth, yearIndex) => flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n selectedRange: state.selectedRange,\n displayMonths,\n yearIndex\n }));\n return Object.assign({}, state, { yearsCalendarFlagged });\n }\n return state;\n}\nfunction navigateOffsetReducer(state, action) {\n if (!state.view) {\n return state;\n }\n const date = shiftViewDate(state, action);\n if (!date) {\n return state;\n }\n const newState = {\n view: {\n mode: state.view.mode,\n date\n }\n };\n return Object.assign({}, state, newState);\n}\nfunction shiftViewDate(state, action) {\n if (!state.view) {\n return undefined;\n }\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n if (initialDate) {\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n return shiftDate(middleDate, action.payload);\n }\n }\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\nfunction getFormatOptions(state) {\n return {\n locale: state.locale,\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel,\n weekNumbers: state.weekNumbers\n };\n}\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerStore, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\nclass BsDatepickerContainerComponent extends BsDatepickerAbstractComponent {\n constructor(_renderer, _config, _store, _element, _actions, _effects, _positionService) {\n super();\n this._config = _config;\n this._store = _store;\n this._element = _element;\n this._actions = _actions;\n this._positionService = _positionService;\n this.valueChange = new EventEmitter();\n this.animationState = 'void';\n this.isRangePicker = false;\n this._subs = [];\n this._effects = _effects;\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n set value(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setValue(value);\n }\n ngOnInit() {\n var _a, _b;\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n (_a = this._positionService.event$) === null || _a === void 0 ? void 0 : _a.pipe(take(1)).subscribe(() => {\n this._positionService.disable();\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n return;\n }\n this.animationState = 'unanimated';\n });\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.containerClass = this._config.containerClass;\n this.showTodayBtn = this._config.showTodayButton;\n this.todayBtnLbl = this._config.todayButtonLabel;\n this.todayPos = this._config.todayPosition;\n this.showClearBtn = this._config.showClearButton;\n this.clearBtnLbl = this._config.clearButtonLabel;\n this.clearPos = this._config.clearPosition;\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n this.withTimepicker = this._config.withTimepicker;\n (_b = this._effects) === null || _b === void 0 ? void 0 : _b.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects();\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(this._store\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .select((state) => state.selectedDate)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .subscribe((date) => this.valueChange.emit(date)));\n this._store.dispatch(this._actions.changeViewMode(this._config.startView));\n }\n ngAfterViewInit() {\n var _a, _b;\n this.selectedTimeSub.add((_a = this.selectedTime) === null || _a === void 0 ? void 0 : _a.subscribe((val) => {\n var _a;\n if (Array.isArray(val) && val.length >= 1) {\n (_a = this.startTimepicker) === null || _a === void 0 ? void 0 : _a.writeValue(val[0]);\n }\n }));\n (_b = this.startTimepicker) === null || _b === void 0 ? void 0 : _b.registerOnChange((val) => {\n this.timeSelectHandler(val, 0);\n });\n }\n get isTopPosition() {\n return this._element.nativeElement.classList.contains('top');\n }\n positionServiceEnable() {\n this._positionService.enable();\n }\n timeSelectHandler(date, index) {\n this._store.dispatch(this._actions.selectTime(date, index));\n }\n daySelectHandler(day) {\n if (!day) {\n return;\n }\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n if (isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.select(day.date));\n }\n monthSelectHandler(day) {\n if (!day || day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n }));\n }\n yearSelectHandler(day) {\n if (!day || day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n }));\n }\n setToday() {\n this._store.dispatch(this._actions.select(new Date()));\n }\n clearDate() {\n this._store.dispatch(this._actions.select(undefined));\n }\n ngOnDestroy() {\n var _a;\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this.selectedTimeSub.unsubscribe();\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n}\nBsDatepickerContainerComponent.ɵfac = function BsDatepickerContainerComponent_Factory(t) { return new (t || BsDatepickerContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(BsDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(BsDatepickerStore), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(BsDatepickerActions), ɵngcc0.ɵɵdirectiveInject(BsDatepickerEffects), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.PositioningService)); };\nBsDatepickerContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDatepickerContainerComponent, selectors: [[\"bs-datepicker-container\"]], viewQuery: function BsDatepickerContainerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.startTimepicker = _t.first);\n } }, hostAttrs: [\"role\", \"dialog\", \"aria-label\", \"calendar\", 1, \"bottom\"], hostBindings: function BsDatepickerContainerComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerContainerComponent_click_HostBindingHandler($event) { return ctx._stopPropagation($event); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([BsDatepickerStore, BsDatepickerEffects]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 3, consts: [[\"class\", \"bs-datepicker\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"bs-datepicker\", 3, \"ngClass\"], [1, \"bs-datepicker-container\"], [\"role\", \"application\", 1, \"bs-calendar-container\", 3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [\"class\", \"bs-media-container\", 4, \"ngSwitchCase\"], [\"class\", \"bs-datepicker-buttons\", 4, \"ngIf\"], [\"class\", \"bs-datepicker-custom-range\", 4, \"ngIf\"], [1, \"bs-media-container\"], [3, \"bs-datepicker-multiple\", \"calendar\", \"options\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onHoverWeek\", \"onSelect\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"bs-timepicker-in-datepicker-container\", 4, \"ngIf\"], [3, \"calendar\", \"options\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onHoverWeek\", \"onSelect\"], [1, \"bs-timepicker-in-datepicker-container\"], [\"startTP\", \"\"], [4, \"ngIf\"], [\"endTP\", \"\"], [3, \"bs-datepicker-multiple\", \"calendar\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onSelect\", 4, \"ngFor\", \"ngForOf\"], [3, \"calendar\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onSelect\"], [1, \"bs-datepicker-buttons\"], [\"type\", \"button\", 1, \"btn\", \"btn-success\"], [\"type\", \"button\", 1, \"btn\", \"btn-default\"], [\"class\", \"btn-today-wrapper\", 3, \"today-left\", \"today-right\", \"today-center\", 4, \"ngIf\"], [\"class\", \"btn-clear-wrapper\", 3, \"clear-left\", \"clear-right\", \"clear-center\", 4, \"ngIf\"], [1, \"btn-today-wrapper\"], [1, \"btn\", \"btn-success\", 3, \"click\"], [1, \"btn-clear-wrapper\"], [1, \"bs-datepicker-custom-range\"], [3, \"selectedRange\", \"ranges\", \"customRangeLabel\", \"onSelect\"]], template: function BsDatepickerContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, BsDatepickerContainerComponent_div_0_Template, 10, 11, \"div\", 0);\n ɵngcc0.ɵɵpipe(1, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ɵngcc0.ɵɵpipeBind1(1, 1, ctx.viewMode));\n } }, directives: function () { return [ɵngcc2.NgIf, ɵngcc2.NgClass, ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase, ɵngcc2.NgForOf, BsDaysCalendarViewComponent, ɵngcc3.TimepickerComponent, BsMonthCalendarViewComponent, BsYearsCalendarViewComponent, BsCustomDatesViewComponent]; }, pipes: function () { return [ɵngcc2.AsyncPipe]; }, encapsulation: 2, data: { animation: [datepickerAnimation] } });\nBsDatepickerContainerComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: BsDatepickerConfig },\n { type: BsDatepickerStore },\n { type: ElementRef },\n { type: BsDatepickerActions },\n { type: BsDatepickerEffects },\n { type: PositioningService }\n];\nBsDatepickerContainerComponent.propDecorators = {\n startTimepicker: [{ type: ViewChild, args: ['startTP',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerContainerComponent, [{\n type: Component,\n args: [{\n selector: 'bs-datepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\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 \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\",\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: BsDatepickerConfig }, { type: BsDatepickerStore }, { type: ɵngcc0.ElementRef }, { type: BsDatepickerActions }, { type: BsDatepickerEffects }, { type: ɵngcc1.PositioningService }]; }, { startTimepicker: [{\n type: ViewChild,\n args: ['startTP']\n }] }); })();\n\nclass BsDatepickerDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n /**\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n /**\n * Close datepicker on outside click\n */\n this.outsideClick = true;\n /**\n * A selector specifying the element the datepicker should be appended to.\n */\n this.container = 'body';\n this.outsideEsc = true;\n this.isDestroy$ = new Subject();\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n this.isDisabled = false;\n /**\n * Emits when datepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n this._dateInputFormat$ = new Subject();\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n /**\n * Returns whether or not the datepicker is currently being shown\n */\n get isOpen() {\n return this._datepicker.isShown;\n }\n set isOpen(value) {\n this.isOpen$.next(value);\n }\n /**\n * Initial value of datepicker\n */\n set bsValue(value) {\n var _a;\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\n return;\n }\n if (!this._bsValue && value && !this._config.withTimepicker) {\n const now = new Date();\n copyTime(value, now);\n }\n if (value && ((_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime)) {\n value = setCurrentTimeOnDateSelect(value);\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n get dateInputFormat$() {\n return this._dateInputFormat$;\n }\n ngOnInit() {\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n ngOnChanges(changes) {\n var _a, _b, _c, _d;\n if (changes.bsConfig) {\n if (((_a = changes.bsConfig.currentValue) === null || _a === void 0 ? void 0 : _a.initCurrentTime) && ((_b = changes.bsConfig.currentValue) === null || _b === void 0 ? void 0 : _b.initCurrentTime) !== ((_c = changes.bsConfig.previousValue) === null || _c === void 0 ? void 0 : _c.initCurrentTime) && this._bsValue) {\n this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);\n this.bsValueChange.emit(this._bsValue);\n }\n this.setConfig();\n this._dateInputFormat$.next(this.bsConfig && this.bsConfig.dateInputFormat);\n }\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n if (changes.isDisabled) {\n if ((_d = this._elementRef) === null || _d === void 0 ? void 0 : _d.nativeElement) {\n this._elementRef.nativeElement.setAttribute('readonly', this.isDisabled);\n }\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n if (changes.dateTooltipTexts) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n }\n }\n ngAfterViewInit() {\n this.isOpen$.pipe(filter(isOpen => isOpen !== this.isOpen), takeUntil(this.isDestroy$))\n .subscribe(() => this.toggle());\n }\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show() {\n if (this._datepicker.isShown) {\n return;\n }\n this.setConfig();\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDatepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n }));\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(this._datepickerRef.instance.valueChange.subscribe((value) => {\n this.bsValue = value;\n this.hide();\n }));\n }\n }\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide() {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n /**\n * Set config for datepicker\n */\n setConfig() {\n var _a;\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n minMode: this.minMode || this.bsConfig && this.bsConfig.minMode,\n initCurrentTime: (_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime\n });\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\nBsDatepickerDirective.ɵfac = function BsDatepickerDirective_Factory(t) { return new (t || BsDatepickerDirective)(ɵngcc0.ɵɵdirectiveInject(BsDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.ComponentLoaderFactory)); };\nBsDatepickerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDatepickerDirective, selectors: [[\"\", \"bsDatepicker\", \"\"]], inputs: { placement: \"placement\", triggers: \"triggers\", outsideClick: \"outsideClick\", container: \"container\", outsideEsc: \"outsideEsc\", isDisabled: \"isDisabled\", isOpen: \"isOpen\", bsValue: \"bsValue\", minDate: \"minDate\", maxDate: \"maxDate\", minMode: \"minMode\", daysDisabled: \"daysDisabled\", datesDisabled: \"datesDisabled\", datesEnabled: \"datesEnabled\", dateCustomClasses: \"dateCustomClasses\", dateTooltipTexts: \"dateTooltipTexts\", bsConfig: \"bsConfig\" }, outputs: { bsValueChange: \"bsValueChange\", onShown: \"onShown\", onHidden: \"onHidden\" }, exportAs: [\"bsDatepicker\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nBsDatepickerDirective.ctorParameters = () => [\n { type: BsDatepickerConfig },\n { type: ElementRef },\n { type: Renderer2 },\n { type: ViewContainerRef },\n { type: ComponentLoaderFactory }\n];\nBsDatepickerDirective.propDecorators = {\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n outsideClick: [{ type: Input }],\n container: [{ type: Input }],\n outsideEsc: [{ type: Input }],\n onShown: [{ type: Output }],\n onHidden: [{ type: Output }],\n isDisabled: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n minMode: [{ type: Input }],\n daysDisabled: [{ type: Input }],\n datesDisabled: [{ type: Input }],\n datesEnabled: [{ type: Input }],\n dateCustomClasses: [{ type: Input }],\n dateTooltipTexts: [{ type: Input }],\n bsValueChange: [{ type: Output }],\n isOpen: [{ type: Input }],\n bsValue: [{ type: Input }],\n bsConfig: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerDirective, [{\n type: Directive,\n args: [{\n selector: '[bsDatepicker]',\n exportAs: 'bsDatepicker'\n }]\n }], function () { return [{ type: BsDatepickerConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc4.ComponentLoaderFactory }]; }, { placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], outsideClick: [{\n type: Input\n }], container: [{\n type: Input\n }], outsideEsc: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], bsValueChange: [{\n type: Output\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], isOpen: [{\n type: Input\n }], bsValue: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minMode: [{\n type: Input\n }], daysDisabled: [{\n type: Input\n }], datesDisabled: [{\n type: Input\n }], datesEnabled: [{\n type: Input\n }], dateCustomClasses: [{\n type: Input\n }], dateTooltipTexts: [{\n type: Input\n }], bsConfig: [{\n type: Input\n }] }); })();\n\nclass BsDatepickerInlineConfig extends BsDatepickerConfig {\n}\nBsDatepickerInlineConfig.ɵfac = /*@__PURE__*/ function () { let ɵBsDatepickerInlineConfig_BaseFactory; return function BsDatepickerInlineConfig_Factory(t) { return (ɵBsDatepickerInlineConfig_BaseFactory || (ɵBsDatepickerInlineConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BsDatepickerInlineConfig)))(t || BsDatepickerInlineConfig); }; }();\nBsDatepickerInlineConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDatepickerInlineConfig_Factory() { return new BsDatepickerInlineConfig(); }, token: BsDatepickerInlineConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerInlineConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\nclass BsDatepickerInlineContainerComponent extends BsDatepickerContainerComponent {\n constructor(_renderer, _config, _store, _element, _actions, _effects, _positioningService) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\nBsDatepickerInlineContainerComponent.ɵfac = function BsDatepickerInlineContainerComponent_Factory(t) { return new (t || BsDatepickerInlineContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(BsDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(BsDatepickerStore), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(BsDatepickerActions), ɵngcc0.ɵɵdirectiveInject(BsDatepickerEffects), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.PositioningService)); };\nBsDatepickerInlineContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDatepickerInlineContainerComponent, selectors: [[\"bs-datepicker-inline-container\"]], hostBindings: function BsDatepickerInlineContainerComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerInlineContainerComponent_click_HostBindingHandler($event) { return ctx._stopPropagation($event); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([BsDatepickerStore, BsDatepickerEffects]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 3, consts: [[\"class\", \"bs-datepicker\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"bs-datepicker\", 3, \"ngClass\"], [1, \"bs-datepicker-container\"], [\"role\", \"application\", 1, \"bs-calendar-container\", 3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [\"class\", \"bs-media-container\", 4, \"ngSwitchCase\"], [\"class\", \"bs-datepicker-buttons\", 4, \"ngIf\"], [\"class\", \"bs-datepicker-custom-range\", 4, \"ngIf\"], [1, \"bs-media-container\"], [3, \"bs-datepicker-multiple\", \"calendar\", \"options\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onHoverWeek\", \"onSelect\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"bs-timepicker-in-datepicker-container\", 4, \"ngIf\"], [3, \"calendar\", \"options\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onHoverWeek\", \"onSelect\"], [1, \"bs-timepicker-in-datepicker-container\"], [\"startTP\", \"\"], [4, \"ngIf\"], [\"endTP\", \"\"], [3, \"bs-datepicker-multiple\", \"calendar\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onSelect\", 4, \"ngFor\", \"ngForOf\"], [3, \"calendar\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onSelect\"], [1, \"bs-datepicker-buttons\"], [\"type\", \"button\", 1, \"btn\", \"btn-success\"], [\"type\", \"button\", 1, \"btn\", \"btn-default\"], [\"class\", \"btn-today-wrapper\", 3, \"today-left\", \"today-right\", \"today-center\", 4, \"ngIf\"], [\"class\", \"btn-clear-wrapper\", 3, \"clear-left\", \"clear-right\", \"clear-center\", 4, \"ngIf\"], [1, \"btn-today-wrapper\"], [1, \"btn\", \"btn-success\", 3, \"click\"], [1, \"btn-clear-wrapper\"], [1, \"bs-datepicker-custom-range\"], [3, \"selectedRange\", \"ranges\", \"customRangeLabel\", \"onSelect\"]], template: function BsDatepickerInlineContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, BsDatepickerInlineContainerComponent_div_0_Template, 10, 11, \"div\", 0);\n ɵngcc0.ɵɵpipe(1, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ɵngcc0.ɵɵpipeBind1(1, 1, ctx.viewMode));\n } }, directives: function () { return [ɵngcc2.NgIf, ɵngcc2.NgClass, ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase, ɵngcc2.NgForOf, BsDaysCalendarViewComponent, ɵngcc3.TimepickerComponent, BsMonthCalendarViewComponent, BsYearsCalendarViewComponent, BsCustomDatesViewComponent]; }, pipes: function () { return [ɵngcc2.AsyncPipe]; }, encapsulation: 2, data: { animation: [datepickerAnimation] } });\nBsDatepickerInlineContainerComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: BsDatepickerConfig },\n { type: BsDatepickerStore },\n { type: ElementRef },\n { type: BsDatepickerActions },\n { type: BsDatepickerEffects },\n { type: PositioningService }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerInlineContainerComponent, [{\n type: Component,\n args: [{\n selector: 'bs-datepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\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 \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\",\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: BsDatepickerConfig }, { type: BsDatepickerStore }, { type: ɵngcc0.ElementRef }, { type: BsDatepickerActions }, { type: BsDatepickerEffects }, { type: ɵngcc1.PositioningService }]; }, null); })();\n\nclass BsDatepickerInlineDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n this._elementRef = _elementRef;\n /**\n * Indicates whether datepicker is enabled or not\n */\n this.isDisabled = false;\n /**\n * Emits when datepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n }\n /**\n * Initial value of datepicker\n */\n set bsValue(value) {\n var _a;\n if (this._bsValue === value) {\n return;\n }\n if (!this._bsValue && value && !this._config.withTimepicker) {\n const now = new Date();\n copyTime(value, now);\n }\n if (value && ((_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime)) {\n value = setCurrentTimeOnDateSelect(value);\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n ngOnInit() {\n this.setConfig();\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n }));\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(this._datepickerRef.instance.valueChange.subscribe((value) => {\n this.bsValue = value;\n }));\n }\n }\n ngOnChanges(changes) {\n var _a, _b, _c;\n if (changes.bsConfig) {\n if (((_a = changes.bsConfig.currentValue) === null || _a === void 0 ? void 0 : _a.initCurrentTime) && ((_b = changes.bsConfig.currentValue) === null || _b === void 0 ? void 0 : _b.initCurrentTime) !== ((_c = changes.bsConfig.previousValue) === null || _c === void 0 ? void 0 : _c.initCurrentTime) && this._bsValue) {\n this._bsValue = setCurrentTimeOnDateSelect(this._bsValue);\n this.bsValueChange.emit(this._bsValue);\n }\n }\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n if (changes.dateTooltipTexts) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n }\n this.setConfig();\n }\n /**\n * Set config for datepicker\n */\n setConfig() {\n var _a;\n if (this._datepicker) {\n this._datepicker.hide();\n }\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.bsConfig && this.bsConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n initCurrentTime: (_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime\n });\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDatepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n }\n}\nBsDatepickerInlineDirective.ɵfac = function BsDatepickerInlineDirective_Factory(t) { return new (t || BsDatepickerInlineDirective)(ɵngcc0.ɵɵdirectiveInject(BsDatepickerInlineConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.ComponentLoaderFactory)); };\nBsDatepickerInlineDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDatepickerInlineDirective, selectors: [[\"bs-datepicker-inline\"]], inputs: { isDisabled: \"isDisabled\", bsValue: \"bsValue\", bsConfig: \"bsConfig\", minDate: \"minDate\", maxDate: \"maxDate\", dateCustomClasses: \"dateCustomClasses\", dateTooltipTexts: \"dateTooltipTexts\", datesEnabled: \"datesEnabled\", datesDisabled: \"datesDisabled\" }, outputs: { bsValueChange: \"bsValueChange\" }, exportAs: [\"bsDatepickerInline\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nBsDatepickerInlineDirective.ctorParameters = () => [\n { type: BsDatepickerInlineConfig },\n { type: ElementRef },\n { type: Renderer2 },\n { type: ViewContainerRef },\n { type: ComponentLoaderFactory }\n];\nBsDatepickerInlineDirective.propDecorators = {\n bsConfig: [{ type: Input }],\n isDisabled: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n dateCustomClasses: [{ type: Input }],\n dateTooltipTexts: [{ type: Input }],\n datesEnabled: [{ type: Input }],\n datesDisabled: [{ type: Input }],\n bsValueChange: [{ type: Output }],\n bsValue: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerInlineDirective, [{\n type: Directive,\n args: [{\n selector: 'bs-datepicker-inline',\n exportAs: 'bsDatepickerInline'\n }]\n }], function () { return [{ type: BsDatepickerInlineConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc4.ComponentLoaderFactory }]; }, { isDisabled: [{\n type: Input\n }], bsValueChange: [{\n type: Output\n }], bsValue: [{\n type: Input\n }], bsConfig: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateCustomClasses: [{\n type: Input\n }], dateTooltipTexts: [{\n type: Input\n }], datesEnabled: [{\n type: Input\n }], datesDisabled: [{\n type: Input\n }] }); })();\n\nclass BsDaterangepickerInlineConfig extends BsDatepickerConfig {\n constructor() {\n super(...arguments);\n // DatepickerRenderOptions\n this.displayMonths = 2;\n /** turn on/off animation */\n this.isAnimated = false;\n }\n}\nBsDaterangepickerInlineConfig.ɵfac = /*@__PURE__*/ function () { let ɵBsDaterangepickerInlineConfig_BaseFactory; return function BsDaterangepickerInlineConfig_Factory(t) { return (ɵBsDaterangepickerInlineConfig_BaseFactory || (ɵBsDaterangepickerInlineConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BsDaterangepickerInlineConfig)))(t || BsDaterangepickerInlineConfig); }; }();\nBsDaterangepickerInlineConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDaterangepickerInlineConfig_Factory() { return new BsDaterangepickerInlineConfig(); }, token: BsDaterangepickerInlineConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDaterangepickerInlineConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\nclass BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent {\n constructor(_renderer, _config, _store, _element, _actions, _effects, _positionService) {\n super();\n this._config = _config;\n this._store = _store;\n this._element = _element;\n this._actions = _actions;\n this._positionService = _positionService;\n this.valueChange = new EventEmitter();\n this.animationState = 'void';\n this._rangeStack = [];\n this.chosenRange = [];\n this._subs = [];\n this.isRangePicker = true;\n this._effects = _effects;\n this.customRanges = this._config.ranges || [];\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n set value(value) {\n var _a;\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setRangeValue(value);\n }\n ngOnInit() {\n var _a, _b;\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n (_a = this._positionService.event$) === null || _a === void 0 ? void 0 : _a.pipe(take(1)).subscribe(() => {\n this._positionService.disable();\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n return;\n }\n this.animationState = 'unanimated';\n });\n this.containerClass = this._config.containerClass;\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.withTimepicker = this._config.withTimepicker;\n (_b = this._effects) === null || _b === void 0 ? void 0 : _b.init(this._store).setOptions(this._config).setBindings(this).setEventHandlers(this).registerDatepickerSideEffects();\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(this._store\n .select(state => state.selectedRange)\n .subscribe(dateRange => {\n this.valueChange.emit(dateRange);\n this.chosenRange = dateRange || [];\n }));\n }\n ngAfterViewInit() {\n var _a, _b, _c;\n this.selectedTimeSub.add((_a = this.selectedTime) === null || _a === void 0 ? void 0 : _a.subscribe((val) => {\n var _a, _b;\n if (Array.isArray(val) && val.length >= 2) {\n (_a = this.startTimepicker) === null || _a === void 0 ? void 0 : _a.writeValue(val[0]);\n (_b = this.endTimepicker) === null || _b === void 0 ? void 0 : _b.writeValue(val[1]);\n }\n }));\n (_b = this.startTimepicker) === null || _b === void 0 ? void 0 : _b.registerOnChange((val) => {\n this.timeSelectHandler(val, 0);\n });\n (_c = this.endTimepicker) === null || _c === void 0 ? void 0 : _c.registerOnChange((val) => {\n this.timeSelectHandler(val, 1);\n });\n }\n get isTopPosition() {\n return this._element.nativeElement.classList.contains('top');\n }\n positionServiceEnable() {\n this._positionService.enable();\n }\n timeSelectHandler(date, index) {\n this._store.dispatch(this._actions.selectTime(date, index));\n }\n daySelectHandler(day) {\n if (!day) {\n return;\n }\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n if (isDisabled) {\n return;\n }\n this.rangesProcessing(day);\n }\n monthSelectHandler(day) {\n if (!day || day.isDisabled) {\n return;\n }\n day.isSelected = true;\n if (this._config.minMode !== 'month') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n }));\n return;\n }\n this.rangesProcessing(day);\n }\n yearSelectHandler(day) {\n if (!day || day.isDisabled) {\n return;\n }\n day.isSelected = true;\n if (this._config.minMode !== 'year') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n }));\n return;\n }\n this.rangesProcessing(day);\n }\n rangesProcessing(day) {\n // if only one date is already selected\n // and user clicks on previous date\n // start selection from new date\n // but if new date is after initial one\n // than finish selection\n if (this._rangeStack.length === 1) {\n this._rangeStack =\n day.date >= this._rangeStack[0]\n ? [this._rangeStack[0], day.date]\n : [day.date];\n }\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n }\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n ngOnDestroy() {\n var _a;\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this.selectedTimeSub.unsubscribe();\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n setRangeOnCalendar(dates) {\n if (dates) {\n this._rangeStack = dates.value instanceof Date ? [dates.value] : dates.value;\n }\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\n setMaxDateRangeOnCalendar(currentSelection) {\n var _a;\n let maxDateRange = new Date(currentSelection);\n if (this._config.maxDate) {\n const maxDateValueInMilliseconds = this._config.maxDate.getTime();\n const maxDateRangeInMilliseconds = currentSelection.getTime() + ((this._config.maxDateRange || 0) * dayInMilliseconds);\n maxDateRange = maxDateRangeInMilliseconds > maxDateValueInMilliseconds ?\n new Date(this._config.maxDate) :\n new Date(maxDateRangeInMilliseconds);\n }\n else {\n maxDateRange.setDate(currentSelection.getDate() + (this._config.maxDateRange || 0));\n }\n (_a = this._effects) === null || _a === void 0 ? void 0 : _a.setMaxDate(maxDateRange);\n }\n}\nBsDaterangepickerContainerComponent.ɵfac = function BsDaterangepickerContainerComponent_Factory(t) { return new (t || BsDaterangepickerContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(BsDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(BsDatepickerStore), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(BsDatepickerActions), ɵngcc0.ɵɵdirectiveInject(BsDatepickerEffects), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.PositioningService)); };\nBsDaterangepickerContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDaterangepickerContainerComponent, selectors: [[\"bs-daterangepicker-container\"]], viewQuery: function BsDaterangepickerContainerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n ɵngcc0.ɵɵviewQuery(_c1, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.startTimepicker = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.endTimepicker = _t.first);\n } }, hostAttrs: [\"role\", \"dialog\", \"aria-label\", \"calendar\", 1, \"bottom\"], hostBindings: function BsDaterangepickerContainerComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function BsDaterangepickerContainerComponent_click_HostBindingHandler($event) { return ctx._stopPropagation($event); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([BsDatepickerStore, BsDatepickerEffects]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 3, consts: [[\"class\", \"bs-datepicker\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"bs-datepicker\", 3, \"ngClass\"], [1, \"bs-datepicker-container\"], [\"role\", \"application\", 1, \"bs-calendar-container\", 3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [\"class\", \"bs-media-container\", 4, \"ngSwitchCase\"], [\"class\", \"bs-datepicker-buttons\", 4, \"ngIf\"], [\"class\", \"bs-datepicker-custom-range\", 4, \"ngIf\"], [1, \"bs-media-container\"], [3, \"bs-datepicker-multiple\", \"calendar\", \"options\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onHoverWeek\", \"onSelect\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"bs-timepicker-in-datepicker-container\", 4, \"ngIf\"], [3, \"calendar\", \"options\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onHoverWeek\", \"onSelect\"], [1, \"bs-timepicker-in-datepicker-container\"], [\"startTP\", \"\"], [4, \"ngIf\"], [\"endTP\", \"\"], [3, \"bs-datepicker-multiple\", \"calendar\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onSelect\", 4, \"ngFor\", \"ngForOf\"], [3, \"calendar\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onSelect\"], [1, \"bs-datepicker-buttons\"], [\"type\", \"button\", 1, \"btn\", \"btn-success\"], [\"type\", \"button\", 1, \"btn\", \"btn-default\"], [\"class\", \"btn-today-wrapper\", 3, \"today-left\", \"today-right\", \"today-center\", 4, \"ngIf\"], [\"class\", \"btn-clear-wrapper\", 3, \"clear-left\", \"clear-right\", \"clear-center\", 4, \"ngIf\"], [1, \"btn-today-wrapper\"], [1, \"btn\", \"btn-success\", 3, \"click\"], [1, \"btn-clear-wrapper\"], [1, \"bs-datepicker-custom-range\"], [3, \"selectedRange\", \"ranges\", \"customRangeLabel\", \"onSelect\"]], template: function BsDaterangepickerContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, BsDaterangepickerContainerComponent_div_0_Template, 10, 11, \"div\", 0);\n ɵngcc0.ɵɵpipe(1, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ɵngcc0.ɵɵpipeBind1(1, 1, ctx.viewMode));\n } }, directives: function () { return [ɵngcc2.NgIf, ɵngcc2.NgClass, ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase, ɵngcc2.NgForOf, BsDaysCalendarViewComponent, ɵngcc3.TimepickerComponent, BsMonthCalendarViewComponent, BsYearsCalendarViewComponent, BsCustomDatesViewComponent]; }, pipes: function () { return [ɵngcc2.AsyncPipe]; }, encapsulation: 2, data: { animation: [datepickerAnimation] } });\nBsDaterangepickerContainerComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: BsDatepickerConfig },\n { type: BsDatepickerStore },\n { type: ElementRef },\n { type: BsDatepickerActions },\n { type: BsDatepickerEffects },\n { type: PositioningService }\n];\nBsDaterangepickerContainerComponent.propDecorators = {\n startTimepicker: [{ type: ViewChild, args: ['startTP',] }],\n endTimepicker: [{ type: ViewChild, args: ['endTP',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDaterangepickerContainerComponent, [{\n type: Component,\n args: [{\n selector: 'bs-daterangepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\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 \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\",\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: BsDatepickerConfig }, { type: BsDatepickerStore }, { type: ɵngcc0.ElementRef }, { type: BsDatepickerActions }, { type: BsDatepickerEffects }, { type: ɵngcc1.PositioningService }]; }, { startTimepicker: [{\n type: ViewChild,\n args: ['startTP']\n }], endTimepicker: [{\n type: ViewChild,\n args: ['endTP']\n }] }); })();\n\nclass BsDaterangepickerInlineContainerComponent extends BsDaterangepickerContainerComponent {\n constructor(_renderer, _config, _store, _element, _actions, _effects, _positioningService) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\nBsDaterangepickerInlineContainerComponent.ɵfac = function BsDaterangepickerInlineContainerComponent_Factory(t) { return new (t || BsDaterangepickerInlineContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(BsDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(BsDatepickerStore), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(BsDatepickerActions), ɵngcc0.ɵɵdirectiveInject(BsDatepickerEffects), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.PositioningService)); };\nBsDaterangepickerInlineContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDaterangepickerInlineContainerComponent, selectors: [[\"bs-daterangepicker-inline-container\"]], hostBindings: function BsDaterangepickerInlineContainerComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function BsDaterangepickerInlineContainerComponent_click_HostBindingHandler($event) { return ctx._stopPropagation($event); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([BsDatepickerStore, BsDatepickerEffects]), ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 3, consts: [[\"class\", \"bs-datepicker\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"bs-datepicker\", 3, \"ngClass\"], [1, \"bs-datepicker-container\"], [\"role\", \"application\", 1, \"bs-calendar-container\", 3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [\"class\", \"bs-media-container\", 4, \"ngSwitchCase\"], [\"class\", \"bs-datepicker-buttons\", 4, \"ngIf\"], [\"class\", \"bs-datepicker-custom-range\", 4, \"ngIf\"], [1, \"bs-media-container\"], [3, \"bs-datepicker-multiple\", \"calendar\", \"options\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onHoverWeek\", \"onSelect\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"bs-timepicker-in-datepicker-container\", 4, \"ngIf\"], [3, \"calendar\", \"options\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onHoverWeek\", \"onSelect\"], [1, \"bs-timepicker-in-datepicker-container\"], [\"startTP\", \"\"], [4, \"ngIf\"], [\"endTP\", \"\"], [3, \"bs-datepicker-multiple\", \"calendar\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onSelect\", 4, \"ngFor\", \"ngForOf\"], [3, \"calendar\", \"onNavigate\", \"onViewMode\", \"onHover\", \"onSelect\"], [1, \"bs-datepicker-buttons\"], [\"type\", \"button\", 1, \"btn\", \"btn-success\"], [\"type\", \"button\", 1, \"btn\", \"btn-default\"], [\"class\", \"btn-today-wrapper\", 3, \"today-left\", \"today-right\", \"today-center\", 4, \"ngIf\"], [\"class\", \"btn-clear-wrapper\", 3, \"clear-left\", \"clear-right\", \"clear-center\", 4, \"ngIf\"], [1, \"btn-today-wrapper\"], [1, \"btn\", \"btn-success\", 3, \"click\"], [1, \"btn-clear-wrapper\"], [1, \"bs-datepicker-custom-range\"], [3, \"selectedRange\", \"ranges\", \"customRangeLabel\", \"onSelect\"]], template: function BsDaterangepickerInlineContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, BsDaterangepickerInlineContainerComponent_div_0_Template, 10, 11, \"div\", 0);\n ɵngcc0.ɵɵpipe(1, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ɵngcc0.ɵɵpipeBind1(1, 1, ctx.viewMode));\n } }, directives: function () { return [ɵngcc2.NgIf, ɵngcc2.NgClass, ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase, ɵngcc2.NgForOf, BsDaysCalendarViewComponent, ɵngcc3.TimepickerComponent, BsMonthCalendarViewComponent, BsYearsCalendarViewComponent, BsCustomDatesViewComponent]; }, pipes: function () { return [ɵngcc2.AsyncPipe]; }, encapsulation: 2, data: { animation: [datepickerAnimation] } });\nBsDaterangepickerInlineContainerComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: BsDatepickerConfig },\n { type: BsDatepickerStore },\n { type: ElementRef },\n { type: BsDatepickerActions },\n { type: BsDatepickerEffects },\n { type: PositioningService }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDaterangepickerInlineContainerComponent, [{\n type: Component,\n args: [{\n selector: 'bs-daterangepicker-inline-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\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 \\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n\\n \\n
0\\\">\\n \\n \\n
\\n
\\n\",\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: BsDatepickerConfig }, { type: BsDatepickerStore }, { type: ɵngcc0.ElementRef }, { type: BsDatepickerActions }, { type: BsDatepickerEffects }, { type: ɵngcc1.PositioningService }]; }, null); })();\n\nclass BsDaterangepickerInlineDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n this._elementRef = _elementRef;\n /**\n * Indicates whether datepicker is enabled or not\n */\n this.isDisabled = false;\n /**\n * Emits when daterangepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n }\n /**\n * Initial value of datepicker\n */\n set bsValue(value) {\n var _a;\n if (this._bsValue === value) {\n return;\n }\n if (value && ((_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime)) {\n value = setDateRangesCurrentTimeOnDateSelect(value);\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n ngOnInit() {\n this.setConfig();\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n }));\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(this._datepickerRef.instance.valueChange\n .pipe(filter((range) => range && range[0] && !!range[1]))\n .subscribe((value) => {\n this.bsValue = value;\n }));\n }\n }\n ngOnChanges(changes) {\n if (changes.bsConfig) {\n if (changes.bsConfig.currentValue.initCurrentTime && changes.bsConfig.currentValue.initCurrentTime !== changes.bsConfig.previousValue.initCurrentTime && this._bsValue) {\n this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);\n this.bsValueChange.emit(this._bsValue);\n }\n }\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n this.setConfig();\n }\n /**\n * Set config for datepicker\n */\n setConfig() {\n var _a;\n if (this._datepicker) {\n this._datepicker.hide();\n }\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\n initCurrentTime: (_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime\n });\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n }\n}\nBsDaterangepickerInlineDirective.ɵfac = function BsDaterangepickerInlineDirective_Factory(t) { return new (t || BsDaterangepickerInlineDirective)(ɵngcc0.ɵɵdirectiveInject(BsDaterangepickerInlineConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.ComponentLoaderFactory)); };\nBsDaterangepickerInlineDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDaterangepickerInlineDirective, selectors: [[\"bs-daterangepicker-inline\"]], inputs: { isDisabled: \"isDisabled\", bsValue: \"bsValue\", bsConfig: \"bsConfig\", minDate: \"minDate\", maxDate: \"maxDate\", dateCustomClasses: \"dateCustomClasses\", daysDisabled: \"daysDisabled\", datesDisabled: \"datesDisabled\", datesEnabled: \"datesEnabled\" }, outputs: { bsValueChange: \"bsValueChange\" }, exportAs: [\"bsDaterangepickerInline\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nBsDaterangepickerInlineDirective.ctorParameters = () => [\n { type: BsDaterangepickerInlineConfig },\n { type: ElementRef },\n { type: Renderer2 },\n { type: ViewContainerRef },\n { type: ComponentLoaderFactory }\n];\nBsDaterangepickerInlineDirective.propDecorators = {\n bsValue: [{ type: Input }],\n bsConfig: [{ type: Input }],\n isDisabled: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n dateCustomClasses: [{ type: Input }],\n daysDisabled: [{ type: Input }],\n datesDisabled: [{ type: Input }],\n datesEnabled: [{ type: Input }],\n bsValueChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDaterangepickerInlineDirective, [{\n type: Directive,\n args: [{\n selector: 'bs-daterangepicker-inline',\n exportAs: 'bsDaterangepickerInline'\n }]\n }], function () { return [{ type: BsDaterangepickerInlineConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc4.ComponentLoaderFactory }]; }, { isDisabled: [{\n type: Input\n }], bsValueChange: [{\n type: Output\n }], bsValue: [{\n type: Input\n }], bsConfig: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateCustomClasses: [{\n type: Input\n }], daysDisabled: [{\n type: Input\n }], datesDisabled: [{\n type: Input\n }], datesEnabled: [{\n type: Input\n }] }); })();\n\nconst BS_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\nconst BS_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\nclass BsDatepickerInputDirective {\n constructor(_picker, _localeService, _renderer, _elRef, changeDetection) {\n this._picker = _picker;\n this._localeService = _localeService;\n this._renderer = _renderer;\n this._elRef = _elRef;\n this.changeDetection = changeDetection;\n this._onChange = Function.prototype;\n this._onTouched = Function.prototype;\n this._validatorChange = Function.prototype;\n this._subs = new Subscription();\n }\n ngOnInit() {\n const setBsValue = (value) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n };\n // if value set via [bsValue] it will not get into value change\n if (this._picker._bsValue) {\n setBsValue(this._picker._bsValue);\n }\n // update input value on datepicker value update\n this._subs.add(this._picker.bsValueChange.subscribe(setBsValue));\n // update input value on locale change\n this._subs.add(this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n }));\n this._subs.add(this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n }));\n }\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n _setInputValue(value) {\n const initialDate = !value ? ''\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n }\n onChange(event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.writeValue(event.target.value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n validate(c) {\n const _value = c.value;\n if (_value === null || _value === undefined || _value === '') {\n return null;\n }\n if (isDate(_value)) {\n const _isDateValid = isDateValid(_value);\n if (!_isDateValid) {\n return { bsDate: { invalid: _value } };\n }\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n this.writeValue(this._picker.minDate);\n return { bsDate: { minDate: this._picker.minDate } };\n }\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n this.writeValue(this._picker.maxDate);\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n return null;\n }\n registerOnValidatorChange(fn) {\n this._validatorChange = fn;\n }\n writeValue(value) {\n if (!value) {\n this._value = void 0;\n }\n else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(`Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n if (this._picker._config.useUtc) {\n this._value = utcAsLocal(this._value);\n }\n }\n this._picker.bsValue = this._value;\n }\n setDisabledState(isDisabled) {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n onBlur() {\n this._onTouched();\n }\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\nBsDatepickerInputDirective.ɵfac = function BsDatepickerInputDirective_Factory(t) { return new (t || BsDatepickerInputDirective)(ɵngcc0.ɵɵdirectiveInject(BsDatepickerDirective, 1), ɵngcc0.ɵɵdirectiveInject(BsLocaleService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nBsDatepickerInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDatepickerInputDirective, selectors: [[\"input\", \"bsDatepicker\", \"\"]], hostBindings: function BsDatepickerInputDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function BsDatepickerInputDirective_change_HostBindingHandler($event) { return ctx.onChange($event); })(\"keyup.esc\", function BsDatepickerInputDirective_keyup_esc_HostBindingHandler() { return ctx.hide(); })(\"keydown\", function BsDatepickerInputDirective_keydown_HostBindingHandler($event) { return ctx.onKeydownEvent($event); })(\"blur\", function BsDatepickerInputDirective_blur_HostBindingHandler() { return ctx.onBlur(); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR])] });\nBsDatepickerInputDirective.ctorParameters = () => [\n { type: BsDatepickerDirective, decorators: [{ type: Host }] },\n { type: BsLocaleService },\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerInputDirective, [{\n type: Directive,\n args: [{\n selector: `input[bsDatepicker]`,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n }]\n }], function () { return [{ type: BsDatepickerDirective, decorators: [{\n type: Host\n }] }, { type: BsLocaleService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\nclass BsDaterangepickerConfig extends BsDatepickerConfig {\n constructor() {\n super(...arguments);\n // DatepickerRenderOptions\n this.displayMonths = 2;\n }\n}\nBsDaterangepickerConfig.ɵfac = /*@__PURE__*/ function () { let ɵBsDaterangepickerConfig_BaseFactory; return function BsDaterangepickerConfig_Factory(t) { return (ɵBsDaterangepickerConfig_BaseFactory || (ɵBsDaterangepickerConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BsDaterangepickerConfig)))(t || BsDaterangepickerConfig); }; }();\nBsDaterangepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDaterangepickerConfig_Factory() { return new BsDaterangepickerConfig(); }, token: BsDaterangepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDaterangepickerConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null); })();\n\nclass BsDaterangepickerDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n /**\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n /**\n * Close daterangepicker on outside click\n */\n this.outsideClick = true;\n /**\n * A selector specifying the element the daterangepicker should be appended to.\n */\n this.container = 'body';\n this.outsideEsc = true;\n this.isDestroy$ = new Subject();\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n this.isDisabled = false;\n /**\n * Emits when daterangepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n this._rangeInputFormat$ = new Subject();\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n Object.assign(this, _config);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n /**\n * Returns whether or not the daterangepicker is currently being shown\n */\n get isOpen() {\n return this._datepicker.isShown;\n }\n set isOpen(value) {\n this.isOpen$.next(value);\n }\n /**\n * Initial value of daterangepicker\n */\n set bsValue(value) {\n var _a;\n if (this._bsValue === value) {\n return;\n }\n if (value && ((_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime)) {\n value = setDateRangesCurrentTimeOnDateSelect(value);\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n get rangeInputFormat$() {\n return this._rangeInputFormat$;\n }\n ngOnInit() {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n ngOnChanges(changes) {\n var _a, _b, _c, _d;\n if (changes.bsConfig) {\n if (((_a = changes.bsConfig.currentValue) === null || _a === void 0 ? void 0 : _a.initCurrentTime) && ((_b = changes.bsConfig.currentValue) === null || _b === void 0 ? void 0 : _b.initCurrentTime) !== ((_c = changes.bsConfig.previousValue) === null || _c === void 0 ? void 0 : _c.initCurrentTime) && this._bsValue) {\n this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);\n this.bsValueChange.emit(this._bsValue);\n }\n this.setConfig();\n this._rangeInputFormat$.next(changes.bsConfig.currentValue && changes.bsConfig.currentValue.rangeInputFormat);\n }\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes.isDisabled) {\n if ((_d = this._elementRef) === null || _d === void 0 ? void 0 : _d.nativeElement) {\n this._elementRef.nativeElement.setAttribute('readonly', this.isDisabled);\n }\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n ngAfterViewInit() {\n this.isOpen$.pipe(filter(isOpen => isOpen !== this.isOpen), takeUntil(this.isDestroy$))\n .subscribe(() => this.toggle());\n }\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show() {\n if (this._datepicker.isShown) {\n return;\n }\n this.setConfig();\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n if (this._datepickerRef) {\n this._datepickerRef.instance.value = value;\n }\n }));\n // if date changes from picker (view -> model)\n if (this._datepickerRef) {\n this._subs.push(this._datepickerRef.instance.valueChange\n .pipe(filter((range) => range && range[0] && !!range[1]))\n .subscribe((value) => {\n this.bsValue = value;\n this.hide();\n }));\n }\n }\n /**\n * Set config for daterangepicker\n */\n setConfig() {\n var _a;\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,\n daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,\n ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),\n maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,\n initCurrentTime: (_a = this.bsConfig) === null || _a === void 0 ? void 0 : _a.initCurrentTime\n });\n }\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide() {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\nBsDaterangepickerDirective.ɵfac = function BsDaterangepickerDirective_Factory(t) { return new (t || BsDaterangepickerDirective)(ɵngcc0.ɵɵdirectiveInject(BsDaterangepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.ComponentLoaderFactory)); };\nBsDaterangepickerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDaterangepickerDirective, selectors: [[\"\", \"bsDaterangepicker\", \"\"]], inputs: { placement: \"placement\", triggers: \"triggers\", outsideClick: \"outsideClick\", container: \"container\", outsideEsc: \"outsideEsc\", isDisabled: \"isDisabled\", isOpen: \"isOpen\", bsValue: \"bsValue\", bsConfig: \"bsConfig\", minDate: \"minDate\", maxDate: \"maxDate\", dateCustomClasses: \"dateCustomClasses\", daysDisabled: \"daysDisabled\", datesDisabled: \"datesDisabled\", datesEnabled: \"datesEnabled\" }, outputs: { bsValueChange: \"bsValueChange\", onShown: \"onShown\", onHidden: \"onHidden\" }, exportAs: [\"bsDaterangepicker\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nBsDaterangepickerDirective.ctorParameters = () => [\n { type: BsDaterangepickerConfig },\n { type: ElementRef },\n { type: Renderer2 },\n { type: ViewContainerRef },\n { type: ComponentLoaderFactory }\n];\nBsDaterangepickerDirective.propDecorators = {\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n outsideClick: [{ type: Input }],\n container: [{ type: Input }],\n outsideEsc: [{ type: Input }],\n isOpen: [{ type: Input }],\n onShown: [{ type: Output }],\n onHidden: [{ type: Output }],\n bsValue: [{ type: Input }],\n bsConfig: [{ type: Input }],\n isDisabled: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n dateCustomClasses: [{ type: Input }],\n daysDisabled: [{ type: Input }],\n datesDisabled: [{ type: Input }],\n datesEnabled: [{ type: Input }],\n bsValueChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDaterangepickerDirective, [{\n type: Directive,\n args: [{\n selector: '[bsDaterangepicker]',\n exportAs: 'bsDaterangepicker'\n }]\n }], function () { return [{ type: BsDaterangepickerConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc4.ComponentLoaderFactory }]; }, { placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], outsideClick: [{\n type: Input\n }], container: [{\n type: Input\n }], outsideEsc: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], bsValueChange: [{\n type: Output\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], isOpen: [{\n type: Input\n }], bsValue: [{\n type: Input\n }], bsConfig: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateCustomClasses: [{\n type: Input\n }], daysDisabled: [{\n type: Input\n }], datesDisabled: [{\n type: Input\n }], datesEnabled: [{\n type: Input\n }] }); })();\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\nconst BS_DATERANGEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\nclass BsDaterangepickerInputDirective {\n constructor(_picker, _localeService, _renderer, _elRef, changeDetection) {\n this._picker = _picker;\n this._localeService = _localeService;\n this._renderer = _renderer;\n this._elRef = _elRef;\n this.changeDetection = changeDetection;\n this._onChange = Function.prototype;\n this._onTouched = Function.prototype;\n this._validatorChange = Function.prototype;\n this._subs = new Subscription();\n }\n ngOnInit() {\n const setBsValue = (value) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n };\n // if value set via [bsValue] it will not get into value change\n if (this._picker._bsValue) {\n setBsValue(this._picker._bsValue);\n }\n // update input value on datepicker value update\n this._subs.add(this._picker.bsValueChange.subscribe((value) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n }));\n // update input value on locale change\n this._subs.add(this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n }));\n this._subs.add(\n // update input value on format change\n this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n }));\n }\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n _setInputValue(date) {\n let range = '';\n if (date) {\n const start = !date[0] ? ''\n : formatDate(date[0], this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n const end = !date[1] ? ''\n : formatDate(date[1], this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n }\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n }\n onChange(event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.writeValue(event.target.value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n validate(c) {\n let _value = c.value;\n const errors = [];\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n _value = _value.slice().sort((a, b) => a.getTime() - b.getTime());\n const _isFirstDateValid = isDateValid(_value[0]);\n const _isSecondDateValid = isDateValid(_value[1]);\n if (!_isFirstDateValid) {\n return { bsDate: { invalid: _value[0] } };\n }\n if (!_isSecondDateValid) {\n return { bsDate: { invalid: _value[1] } };\n }\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n _value[0] = this._picker.minDate;\n errors.push({ bsDate: { minDate: this._picker.minDate } });\n }\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n _value[1] = this._picker.maxDate;\n errors.push({ bsDate: { maxDate: this._picker.maxDate } });\n }\n if (errors.length > 0) {\n this.writeValue(_value);\n return errors;\n }\n return null;\n }\n registerOnValidatorChange(fn) {\n this._validatorChange = fn;\n }\n writeValue(value) {\n if (!value) {\n this._value = void 0;\n }\n else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(`Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n let _input = [];\n if (typeof value === 'string') {\n const trimmedSeparator = this._picker._config.rangeSeparator.trim();\n if (value.replace(/[^-]/g, '').length > 1) {\n _input = value.split(this._picker._config.rangeSeparator);\n }\n else {\n _input = value\n .split(trimmedSeparator.length > 0 ? trimmedSeparator : this._picker._config.rangeSeparator)\n .map(_val => _val.trim());\n }\n }\n if (Array.isArray(value)) {\n _input = value;\n }\n this._value = _input\n .map((_val) => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale));\n }\n return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n })\n .map((date) => (isNaN(date.valueOf()) ? void 0 : date));\n }\n this._picker.bsValue = this._value;\n }\n setDisabledState(isDisabled) {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n onBlur() {\n this._onTouched();\n }\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\nBsDaterangepickerInputDirective.ɵfac = function BsDaterangepickerInputDirective_Factory(t) { return new (t || BsDaterangepickerInputDirective)(ɵngcc0.ɵɵdirectiveInject(BsDaterangepickerDirective, 1), ɵngcc0.ɵɵdirectiveInject(BsLocaleService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nBsDaterangepickerInputDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDaterangepickerInputDirective, selectors: [[\"input\", \"bsDaterangepicker\", \"\"]], hostBindings: function BsDaterangepickerInputDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function BsDaterangepickerInputDirective_change_HostBindingHandler($event) { return ctx.onChange($event); })(\"keyup.esc\", function BsDaterangepickerInputDirective_keyup_esc_HostBindingHandler() { return ctx.hide(); })(\"keydown\", function BsDaterangepickerInputDirective_keydown_HostBindingHandler($event) { return ctx.onKeydownEvent($event); })(\"blur\", function BsDaterangepickerInputDirective_blur_HostBindingHandler() { return ctx.onBlur(); });\n } }, features: [ɵngcc0.ɵɵProvidersFeature([BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR])] });\nBsDaterangepickerInputDirective.ctorParameters = () => [\n { type: BsDaterangepickerDirective, decorators: [{ type: Host }] },\n { type: BsLocaleService },\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDaterangepickerInputDirective, [{\n type: Directive,\n args: [{\n selector: `input[bsDaterangepicker]`,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n }]\n }], function () { return [{ type: BsDaterangepickerDirective, decorators: [{\n type: Host\n }] }, { type: BsLocaleService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\nclass DateFormatter {\n format(date, format, locale) {\n return formatDate(date, format, locale);\n }\n}\n\nclass DatePickerInnerComponent {\n constructor() {\n this.monthColLimit = 0;\n this.yearColLimit = 0;\n this.selectionDone = new EventEmitter(undefined);\n this.update = new EventEmitter(false);\n this.activeDateChange = new EventEmitter(undefined);\n this.stepDay = {};\n this.stepMonth = {};\n this.stepYear = {};\n this.modes = ['day', 'month', 'year'];\n this.dateFormatter = new DateFormatter();\n }\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n this._activeDate = value;\n }\n // todo: add formatter value to Date object\n ngOnInit() {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n }\n else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n // this.refreshView should be called here to reflect the changes on the fly\n ngOnChanges(changes) {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes.activeDate);\n }\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n checkIfActiveDateGotUpdated(activeDate) {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (previousValue &&\n previousValue instanceof Date &&\n previousValue.getTime() !== activeDate.currentValue.getTime()) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n setCompareHandler(handler, type) {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n compare(date1, date2) {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n return void 0;\n }\n setRefreshViewHandler(handler, type) {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n refreshView() {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n dateFilter(date, format) {\n return this.dateFormatter.format(date, format, this.locale);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isActive(dateObject) {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n return true;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createDateObject(date, format) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dateObject = {};\n dateObject.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n return dateObject;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n split(arr, size) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const arrays = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n return arrays;\n }\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date) {\n const hours = date.getHours();\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours === 23 ? hours + 2 : 0);\n }\n select(date, isManual = true) {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n }\n else {\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual && this.datepickerMode) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1];\n }\n }\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n move(direction) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let expectedStep;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n if (expectedStep && this.activeDate) {\n const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n toggleMode(_direction) {\n const direction = _direction || 1;\n if ((this.datepickerMode === this.maxMode && direction === 1) ||\n (this.datepickerMode === this.minMode && direction === -1)) {\n return;\n }\n if (this.datepickerMode) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction];\n }\n this.refreshView();\n }\n getCustomClassForDate(date) {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject = this.customClass.find((customClass) => {\n return (customClass.date.valueOf() === date.valueOf() &&\n customClass.mode === this.datepickerMode);\n }, this);\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n compareDateDisabled(date1Disabled, date2) {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n return undefined;\n }\n isDisabled(date) {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach((disabledDate) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n });\n }\n if (this.dayDisabled) {\n isDateDisabled =\n isDateDisabled ||\n this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n if (isDateDisabled) {\n return isDateDisabled;\n }\n const minDate = Number(this.minDate && this.compare(date, this.minDate));\n if (!isNaN(minDate)) {\n return minDate < 0;\n }\n const maxDate = Number(this.maxDate && this.compare(date, this.maxDate));\n if (!isNaN(maxDate)) {\n return maxDate > 0;\n }\n return false;\n }\n}\nDatePickerInnerComponent.ɵfac = function DatePickerInnerComponent_Factory(t) { return new (t || DatePickerInnerComponent)(); };\nDatePickerInnerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DatePickerInnerComponent, selectors: [[\"datepicker-inner\"]], inputs: { monthColLimit: \"monthColLimit\", yearColLimit: \"yearColLimit\", activeDate: \"activeDate\", datepickerMode: \"datepickerMode\", locale: \"locale\", startingDay: \"startingDay\", yearRange: \"yearRange\", minDate: \"minDate\", maxDate: \"maxDate\", minMode: \"minMode\", maxMode: \"maxMode\", showWeeks: \"showWeeks\", formatDay: \"formatDay\", formatMonth: \"formatMonth\", formatYear: \"formatYear\", formatDayHeader: \"formatDayHeader\", formatDayTitle: \"formatDayTitle\", formatMonthTitle: \"formatMonthTitle\", onlyCurrentMonth: \"onlyCurrentMonth\", shortcutPropagation: \"shortcutPropagation\", customClass: \"customClass\", dateDisabled: \"dateDisabled\", dayDisabled: \"dayDisabled\", initDate: \"initDate\" }, outputs: { selectionDone: \"selectionDone\", update: \"update\", activeDateChange: \"activeDateChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c2, decls: 1, vars: 1, consts: [[\"class\", \"well well-sm bg-faded p-a card\", \"role\", \"application\", 4, \"ngIf\"], [\"role\", \"application\", 1, \"well\", \"well-sm\", \"bg-faded\", \"p-a\", \"card\"]], template: function DatePickerInnerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, DatePickerInnerComponent_div_0_Template, 2, 0, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.datepickerMode);\n } }, directives: [ɵngcc2.NgIf], encapsulation: 2 });\nDatePickerInnerComponent.propDecorators = {\n locale: [{ type: Input }],\n datepickerMode: [{ type: Input }],\n startingDay: [{ type: Input }],\n yearRange: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n minMode: [{ type: Input }],\n maxMode: [{ type: Input }],\n showWeeks: [{ type: Input }],\n formatDay: [{ type: Input }],\n formatMonth: [{ type: Input }],\n formatYear: [{ type: Input }],\n formatDayHeader: [{ type: Input }],\n formatDayTitle: [{ type: Input }],\n formatMonthTitle: [{ type: Input }],\n onlyCurrentMonth: [{ type: Input }],\n shortcutPropagation: [{ type: Input }],\n customClass: [{ type: Input }],\n monthColLimit: [{ type: Input }],\n yearColLimit: [{ type: Input }],\n dateDisabled: [{ type: Input }],\n dayDisabled: [{ type: Input }],\n initDate: [{ type: Input }],\n selectionDone: [{ type: Output }],\n update: [{ type: Output }],\n activeDateChange: [{ type: Output }],\n activeDate: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePickerInnerComponent, [{\n type: Component,\n args: [{\n selector: 'datepicker-inner',\n template: `\n \n
\n \n
\n `\n }]\n }], function () { return []; }, { monthColLimit: [{\n type: Input\n }], yearColLimit: [{\n type: Input\n }], selectionDone: [{\n type: Output\n }], update: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], activeDate: [{\n type: Input\n }], datepickerMode: [{\n type: Input\n }], locale: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], yearRange: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minMode: [{\n type: Input\n }], maxMode: [{\n type: Input\n }], showWeeks: [{\n type: Input\n }], formatDay: [{\n type: Input\n }], formatMonth: [{\n type: Input\n }], formatYear: [{\n type: Input\n }], formatDayHeader: [{\n type: Input\n }], formatDayTitle: [{\n type: Input\n }], formatMonthTitle: [{\n type: Input\n }], onlyCurrentMonth: [{\n type: Input\n }], shortcutPropagation: [{\n type: Input\n }], customClass: [{\n type: Input\n }], dateDisabled: [{\n type: Input\n }], dayDisabled: [{\n type: Input\n }], initDate: [{\n type: Input\n }] }); })();\n\nclass DatepickerConfig {\n constructor() {\n this.locale = 'en';\n this.datepickerMode = 'day';\n this.startingDay = 0;\n this.yearRange = 20;\n this.minMode = 'day';\n this.maxMode = 'year';\n this.showWeeks = true;\n this.formatDay = 'DD';\n this.formatMonth = 'MMMM';\n this.formatYear = 'YYYY';\n this.formatDayHeader = 'dd';\n this.formatDayTitle = 'MMMM YYYY';\n this.formatMonthTitle = 'YYYY';\n this.onlyCurrentMonth = false;\n this.monthColLimit = 3;\n this.yearColLimit = 5;\n this.shortcutPropagation = false;\n }\n}\nDatepickerConfig.ɵfac = function DatepickerConfig_Factory(t) { return new (t || DatepickerConfig)(); };\nDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function DatepickerConfig_Factory() { return new DatepickerConfig(); }, token: DatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatepickerConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\n\nconst DATEPICKER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\nclass DatePickerComponent {\n constructor(config) {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n this.datepickerMode = 'day';\n /** if false week numbers will be hidden */\n this.showWeeks = true;\n /** number of months displayed in a single row of month picker */\n this.monthColLimit = 3;\n /** number of years displayed in a single row of year picker */\n this.yearColLimit = 5;\n this.selectionDone = new EventEmitter(undefined);\n /** callback to invoke when the activeDate is changed. */\n this.activeDateChange = new EventEmitter(undefined);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.onChange = Function.prototype;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.onTouched = Function.prototype;\n this._now = new Date();\n this.config = config;\n this.configureOptions();\n }\n /** currently active date */\n get activeDate() {\n return this._activeDate || this._now;\n }\n set activeDate(value) {\n this._activeDate = value;\n }\n configureOptions() {\n Object.assign(this, this.config);\n }\n onUpdate(event) {\n this.activeDate = event;\n this.onChange(event);\n }\n onSelectionDone(event) {\n this.selectionDone.emit(event);\n }\n onActiveDateChange(event) {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value) {\n var _a, _b;\n if (((_a = this._datePicker) === null || _a === void 0 ? void 0 : _a.compare(value, this._activeDate)) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n (_b = this._datePicker) === null || _b === void 0 ? void 0 : _b.select(value, false);\n return;\n }\n this.activeDate = value ? new Date(value) : void 0;\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n}\nDatePickerComponent.ɵfac = function DatePickerComponent_Factory(t) { return new (t || DatePickerComponent)(ɵngcc0.ɵɵdirectiveInject(DatepickerConfig)); };\nDatePickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DatePickerComponent, selectors: [[\"datepicker\"]], viewQuery: function DatePickerComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(DatePickerInnerComponent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._datePicker = _t.first);\n } }, inputs: { datepickerMode: \"datepickerMode\", showWeeks: \"showWeeks\", monthColLimit: \"monthColLimit\", yearColLimit: \"yearColLimit\", activeDate: \"activeDate\", initDate: \"initDate\", minDate: \"minDate\", maxDate: \"maxDate\", minMode: \"minMode\", maxMode: \"maxMode\", formatDay: \"formatDay\", formatMonth: \"formatMonth\", formatYear: \"formatYear\", formatDayHeader: \"formatDayHeader\", formatDayTitle: \"formatDayTitle\", formatMonthTitle: \"formatMonthTitle\", startingDay: \"startingDay\", yearRange: \"yearRange\", onlyCurrentMonth: \"onlyCurrentMonth\", shortcutPropagation: \"shortcutPropagation\", customClass: \"customClass\", dateDisabled: \"dateDisabled\", dayDisabled: \"dayDisabled\" }, outputs: { selectionDone: \"selectionDone\", activeDateChange: \"activeDateChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([DATEPICKER_CONTROL_VALUE_ACCESSOR])], decls: 4, vars: 24, consts: [[3, \"activeDate\", \"locale\", \"datepickerMode\", \"initDate\", \"minDate\", \"maxDate\", \"minMode\", \"maxMode\", \"showWeeks\", \"formatDay\", \"formatMonth\", \"formatYear\", \"formatDayHeader\", \"formatDayTitle\", \"formatMonthTitle\", \"startingDay\", \"yearRange\", \"customClass\", \"dateDisabled\", \"dayDisabled\", \"onlyCurrentMonth\", \"shortcutPropagation\", \"monthColLimit\", \"yearColLimit\", \"update\", \"selectionDone\", \"activeDateChange\"], [\"tabindex\", \"0\"]], template: function DatePickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"datepicker-inner\", 0);\n ɵngcc0.ɵɵlistener(\"update\", function DatePickerComponent_Template_datepicker_inner_update_0_listener($event) { return ctx.onUpdate($event); })(\"selectionDone\", function DatePickerComponent_Template_datepicker_inner_selectionDone_0_listener($event) { return ctx.onSelectionDone($event); })(\"activeDateChange\", function DatePickerComponent_Template_datepicker_inner_activeDateChange_0_listener($event) { return ctx.onActiveDateChange($event); });\n ɵngcc0.ɵɵelement(1, \"daypicker\", 1)(2, \"monthpicker\", 1)(3, \"yearpicker\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"activeDate\", ctx.activeDate)(\"locale\", ctx.config.locale)(\"datepickerMode\", ctx.datepickerMode)(\"initDate\", ctx.initDate)(\"minDate\", ctx.minDate)(\"maxDate\", ctx.maxDate)(\"minMode\", ctx.minMode)(\"maxMode\", ctx.maxMode)(\"showWeeks\", ctx.showWeeks)(\"formatDay\", ctx.formatDay)(\"formatMonth\", ctx.formatMonth)(\"formatYear\", ctx.formatYear)(\"formatDayHeader\", ctx.formatDayHeader)(\"formatDayTitle\", ctx.formatDayTitle)(\"formatMonthTitle\", ctx.formatMonthTitle)(\"startingDay\", ctx.startingDay)(\"yearRange\", ctx.yearRange)(\"customClass\", ctx.customClass)(\"dateDisabled\", ctx.dateDisabled)(\"dayDisabled\", ctx.dayDisabled)(\"onlyCurrentMonth\", ctx.onlyCurrentMonth)(\"shortcutPropagation\", ctx.shortcutPropagation)(\"monthColLimit\", ctx.monthColLimit)(\"yearColLimit\", ctx.yearColLimit);\n } }, directives: function () { return [DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent]; }, encapsulation: 2 });\nDatePickerComponent.ctorParameters = () => [\n { type: DatepickerConfig }\n];\nDatePickerComponent.propDecorators = {\n datepickerMode: [{ type: Input }],\n initDate: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n minMode: [{ type: Input }],\n maxMode: [{ type: Input }],\n showWeeks: [{ type: Input }],\n formatDay: [{ type: Input }],\n formatMonth: [{ type: Input }],\n formatYear: [{ type: Input }],\n formatDayHeader: [{ type: Input }],\n formatDayTitle: [{ type: Input }],\n formatMonthTitle: [{ type: Input }],\n startingDay: [{ type: Input }],\n yearRange: [{ type: Input }],\n onlyCurrentMonth: [{ type: Input }],\n shortcutPropagation: [{ type: Input }],\n monthColLimit: [{ type: Input }],\n yearColLimit: [{ type: Input }],\n customClass: [{ type: Input }],\n dateDisabled: [{ type: Input }],\n dayDisabled: [{ type: Input }],\n activeDate: [{ type: Input }],\n selectionDone: [{ type: Output }],\n activeDateChange: [{ type: Output }],\n _datePicker: [{ type: ViewChild, args: [DatePickerInnerComponent, { static: true },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePickerComponent, [{\n type: Component,\n args: [{\n selector: 'datepicker',\n template: `\n \n \n \n \n \n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: DatepickerConfig }]; }, { datepickerMode: [{\n type: Input\n }], showWeeks: [{\n type: Input\n }], monthColLimit: [{\n type: Input\n }], yearColLimit: [{\n type: Input\n }], selectionDone: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], activeDate: [{\n type: Input\n }], initDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minMode: [{\n type: Input\n }], maxMode: [{\n type: Input\n }], formatDay: [{\n type: Input\n }], formatMonth: [{\n type: Input\n }], formatYear: [{\n type: Input\n }], formatDayHeader: [{\n type: Input\n }], formatDayTitle: [{\n type: Input\n }], formatMonthTitle: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], yearRange: [{\n type: Input\n }], onlyCurrentMonth: [{\n type: Input\n }], shortcutPropagation: [{\n type: Input\n }], customClass: [{\n type: Input\n }], dateDisabled: [{\n type: Input\n }], dayDisabled: [{\n type: Input\n }], _datePicker: [{\n type: ViewChild,\n args: [DatePickerInnerComponent, { static: true }]\n }] }); })();\n\n// @deprecated\nclass DayPickerComponent {\n constructor(datePicker) {\n this.labels = [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.rows = [];\n this.weekNumbers = [];\n this.datePicker = datePicker;\n }\n get isBs4() {\n return !isBs3();\n }\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n this.datePicker.stepDay = { months: 1 };\n // todo valorkin fix\n this.datePicker.setRefreshViewHandler(function () {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const year = that.activeDate.getFullYear();\n const month = that.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = that.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n // 42 is the number of days on a six-week calendar\n const _days = self.getDates(firstDate, 42);\n const days = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = that.createDateObject(_days[i], that.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = that.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = that.dateFilter(days[j].date, that.formatDayHeader);\n self.labels[j].full = that.dateFilter(days[j].date, 'EEEE');\n }\n self.title = that.dateFilter(that.activeDate, that.formatDayTitle);\n self.rows = that.split(days, 7);\n if (that.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - that.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n const _date = self.rows[curWeek][thursdayIndex].date;\n if (_date) {\n self.weekNumbers.push(self.getISO8601WeekNumber(_date));\n }\n }\n }\n }, 'day');\n this.datePicker.setCompareHandler(function (date1, date2) {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n this.datePicker.refreshView();\n }\n getDates(startDate, n) {\n const dates = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\n }\n return dates;\n }\n getISO8601WeekNumber(date) {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return (Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1);\n }\n}\nDayPickerComponent.ɵfac = function DayPickerComponent_Factory(t) { return new (t || DayPickerComponent)(ɵngcc0.ɵɵdirectiveInject(DatePickerInnerComponent)); };\nDayPickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DayPickerComponent, selectors: [[\"daypicker\"]], decls: 1, vars: 1, consts: [[\"role\", \"grid\", \"aria-activedescendant\", \"activeDateId\", 4, \"ngIf\"], [\"role\", \"grid\", \"aria-activedescendant\", \"activeDateId\"], [\"type\", \"button\", \"class\", \"btn btn-default btn-secondary btn-sm pull-left float-left\", \"tabindex\", \"-1\", 3, \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-secondary\", \"btn-sm\", 2, \"width\", \"100%\", 3, \"id\", \"disabled\", \"ngClass\", \"click\"], [\"type\", \"button\", \"class\", \"btn btn-default btn-secondary btn-sm pull-right float-right\", \"tabindex\", \"-1\", 3, \"click\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"text-center\", 4, \"ngFor\", \"ngForOf\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-secondary\", \"btn-sm\", \"pull-left\", \"float-left\", 3, \"click\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-secondary\", \"btn-sm\", \"pull-right\", \"float-right\", 3, \"click\"], [1, \"text-center\"], [\"aria-label\", \"labelz.full\"], [\"class\", \"h6\", \"class\", \"text-center\", 4, \"ngIf\"], [\"class\", \"text-center\", \"role\", \"gridcell\", 3, \"id\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", 1, \"text-center\", 3, \"id\"], [\"type\", \"button\", \"style\", \"min-width:100%;\", \"tabindex\", \"-1\", 3, \"class\", \"ngClass\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"tabindex\", \"-1\", 2, \"min-width\", \"100%\", 3, \"ngClass\", \"disabled\", \"click\"], [3, \"ngClass\"]], template: function DayPickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, DayPickerComponent_table_0_Template, 18, 15, \"table\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.datePicker.datepickerMode === \"day\");\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgClass, ɵngcc2.NgForOf], styles: [\"[_nghost-%COMP%] .btn-secondary[_ngcontent-%COMP%] {\\n color: #292b2c;\\n background-color: #fff;\\n border-color: #ccc;\\n }\\n [_nghost-%COMP%] .btn-info[_ngcontent-%COMP%] .text-muted[_ngcontent-%COMP%] {\\n color: #292b2c !important;\\n }\"] });\nDayPickerComponent.ctorParameters = () => [\n { type: DatePickerInnerComponent }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DayPickerComponent, [{\n type: Component,\n args: [{\n selector: 'daypicker',\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 \n \n \n \n \n \n
\n {{ labelz.abbr }}\n
\n {{ weekNumbers[index] }}\n \n \n
\n `,\n styles: [`\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `]\n }]\n }], function () { return [{ type: DatePickerInnerComponent }]; }, null); })();\n\n// @deprecated\nclass MonthPickerComponent {\n constructor(datePicker) {\n this.rows = [];\n this.datePicker = datePicker;\n }\n get isBs4() {\n return !isBs3();\n }\n ngOnInit() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n this.datePicker.stepMonth = { years: 1 };\n this.datePicker.setRefreshViewHandler(function () {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const months = new Array(12);\n const year = that.activeDate.getFullYear();\n let date;\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = that.fixTimeZone(date);\n months[i] = that.createDateObject(date, that.formatMonth);\n months[i].uid = that.uniqueId + '-' + i;\n }\n self.title = that.dateFilter(that.activeDate, that.formatMonthTitle);\n self.rows = that.split(months, self.datePicker.monthColLimit);\n }, 'month');\n this.datePicker.setCompareHandler(function (date1, date2) {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n this.datePicker.refreshView();\n }\n}\nMonthPickerComponent.ɵfac = function MonthPickerComponent_Factory(t) { return new (t || MonthPickerComponent)(ɵngcc0.ɵɵdirectiveInject(DatePickerInnerComponent)); };\nMonthPickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: MonthPickerComponent, selectors: [[\"monthpicker\"]], decls: 1, vars: 1, consts: [[\"role\", \"grid\", 4, \"ngIf\"], [\"role\", \"grid\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-sm\", \"pull-left\", \"float-left\", 3, \"click\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-sm\", 2, \"width\", \"100%\", 3, \"id\", \"disabled\", \"ngClass\", \"click\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-sm\", \"pull-right\", \"float-right\", 3, \"click\"], [4, \"ngFor\", \"ngForOf\"], [\"class\", \"text-center\", \"role\", \"gridcell\", 3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", 1, \"text-center\", 3, \"ngClass\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", 2, \"min-width\", \"100%\", 3, \"ngClass\", \"disabled\", \"click\"], [3, \"ngClass\"]], template: function MonthPickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, MonthPickerComponent_table_0_Template, 15, 8, \"table\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.datePicker.datepickerMode === \"month\");\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgClass, ɵngcc2.NgForOf], styles: [\"[_nghost-%COMP%] .btn-info[_ngcontent-%COMP%] .text-success[_ngcontent-%COMP%] {\\n color: #fff !important;\\n }\"] });\nMonthPickerComponent.ctorParameters = () => [\n { type: DatePickerInnerComponent }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MonthPickerComponent, [{\n type: Component,\n args: [{\n selector: 'monthpicker',\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 styles: [`\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `]\n }]\n }], function () { return [{ type: DatePickerInnerComponent }]; }, null); })();\n\n// @deprecated\nclass YearPickerComponent {\n constructor(datePicker) {\n this.rows = [];\n this.datePicker = datePicker;\n }\n get isBs4() {\n return !isBs3();\n }\n ngOnInit() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n this.datePicker.setRefreshViewHandler(function () {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n const years = new Array(that.yearRange);\n let date;\n const start = self.getStartingYear(that.activeDate.getFullYear()) || 0;\n for (let i = 0; i < that.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = that.fixTimeZone(date);\n years[i] = that.createDateObject(date, that.formatYear);\n years[i].uid = that.uniqueId + '-' + i;\n }\n self.title = [years[0].label, years[that.yearRange - 1].label].join(' - ');\n self.rows = that.split(years, self.datePicker.yearColLimit);\n }, 'year');\n this.datePicker.setCompareHandler(function (date1, date2) {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n this.datePicker.refreshView();\n }\n getStartingYear(year) {\n // todo: parseInt\n if (this.datePicker && this.datePicker.yearRange) {\n return ((year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1);\n }\n return undefined;\n }\n}\nYearPickerComponent.ɵfac = function YearPickerComponent_Factory(t) { return new (t || YearPickerComponent)(ɵngcc0.ɵɵdirectiveInject(DatePickerInnerComponent)); };\nYearPickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YearPickerComponent, selectors: [[\"yearpicker\"]], decls: 1, vars: 1, consts: [[\"role\", \"grid\", 4, \"ngIf\"], [\"role\", \"grid\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-sm\", \"pull-left\", \"float-left\", 3, \"click\"], [\"role\", \"heading\", \"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-sm\", 2, \"width\", \"100%\", 3, \"id\", \"disabled\", \"ngClass\", \"click\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", \"btn-sm\", \"pull-right\", \"float-right\", 3, \"click\"], [4, \"ngFor\", \"ngForOf\"], [\"class\", \"text-center\", \"role\", \"gridcell\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", 1, \"text-center\"], [\"type\", \"button\", \"tabindex\", \"-1\", 1, \"btn\", \"btn-default\", 2, \"min-width\", \"100%\", 3, \"ngClass\", \"disabled\", \"click\"], [3, \"ngClass\"]], template: function YearPickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, YearPickerComponent_table_0_Template, 15, 8, \"table\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.datePicker.datepickerMode === \"year\");\n } }, directives: [ɵngcc2.NgIf, ɵngcc2.NgClass, ɵngcc2.NgForOf], styles: [\"[_nghost-%COMP%] .btn-info[_ngcontent-%COMP%] .text-success[_ngcontent-%COMP%] {\\n color: #fff !important;\\n }\"] });\nYearPickerComponent.ctorParameters = () => [\n { type: DatePickerInnerComponent }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YearPickerComponent, [{\n type: Component,\n args: [{\n selector: 'yearpicker',\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 `,\n styles: [`\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `]\n }]\n }], function () { return [{ type: DatePickerInnerComponent }]; }, null); })();\n\nclass BsCalendarLayoutComponent {\n}\nBsCalendarLayoutComponent.ɵfac = function BsCalendarLayoutComponent_Factory(t) { return new (t || BsCalendarLayoutComponent)(); };\nBsCalendarLayoutComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsCalendarLayoutComponent, selectors: [[\"bs-calendar-layout\"]], ngContentSelectors: _c9, decls: 6, vars: 2, consts: [[\"title\", \"hey there\", 4, \"ngIf\"], [1, \"bs-datepicker-head\"], [1, \"bs-datepicker-body\"], [4, \"ngIf\"], [\"title\", \"hey there\"]], template: function BsCalendarLayoutComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef(_c8);\n ɵngcc0.ɵɵtemplate(0, BsCalendarLayoutComponent_bs_current_date_0_Template, 1, 0, \"bs-current-date\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵprojection(4, 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, BsCalendarLayoutComponent_bs_timepicker_5_Template, 1, 0, \"bs-timepicker\", 3);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", false);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngIf\", false);\n } }, directives: function () { return [ɵngcc2.NgIf, BsCurrentDateViewComponent, BsTimepickerViewComponent]; }, encapsulation: 2 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsCalendarLayoutComponent, [{\n type: Component,\n args: [{\n selector: 'bs-calendar-layout',\n template: `\n \n \n\n \n
\n \n
\n\n
\n \n
\n\n \n \n `\n }]\n }], null, null); })();\n\nclass BsCurrentDateViewComponent {\n}\nBsCurrentDateViewComponent.ɵfac = function BsCurrentDateViewComponent_Factory(t) { return new (t || BsCurrentDateViewComponent)(); };\nBsCurrentDateViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsCurrentDateViewComponent, selectors: [[\"bs-current-date\"]], inputs: { title: \"title\" }, decls: 3, vars: 1, consts: [[1, \"current-timedate\"]], template: function BsCurrentDateViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"span\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.title);\n } }, encapsulation: 2 });\nBsCurrentDateViewComponent.propDecorators = {\n title: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsCurrentDateViewComponent, [{\n type: Component,\n args: [{\n selector: 'bs-current-date',\n template: `
{{ title }}
`\n }]\n }], null, { title: [{\n type: Input\n }] }); })();\n\nclass BsCustomDatesViewComponent {\n constructor() {\n this.onSelect = new EventEmitter();\n }\n selectFromRanges(range) {\n this.onSelect.emit(range);\n }\n}\nBsCustomDatesViewComponent.ɵfac = function BsCustomDatesViewComponent_Factory(t) { return new (t || BsCustomDatesViewComponent)(); };\nBsCustomDatesViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsCustomDatesViewComponent, selectors: [[\"bs-custom-date-view\"]], inputs: { ranges: \"ranges\", selectedRange: \"selectedRange\", customRangeLabel: \"customRangeLabel\" }, outputs: { onSelect: \"onSelect\" }, decls: 2, vars: 1, consts: [[1, \"bs-datepicker-predefined-btns\"], [\"type\", \"button\", \"class\", \"btn\", 3, \"selected\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", 1, \"btn\", 3, \"click\"]], template: function BsCustomDatesViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, BsCustomDatesViewComponent_button_1_Template, 2, 3, \"button\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ranges);\n } }, directives: [ɵngcc2.NgForOf], encapsulation: 2, changeDetection: 0 });\nBsCustomDatesViewComponent.propDecorators = {\n ranges: [{ type: Input }],\n selectedRange: [{ type: Input }],\n customRangeLabel: [{ type: Input }],\n onSelect: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsCustomDatesViewComponent, [{\n type: Component,\n args: [{\n selector: 'bs-custom-date-view',\n template: `\n
\n \n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { onSelect: [{\n type: Output\n }], ranges: [{\n type: Input\n }], selectedRange: [{\n type: Input\n }], customRangeLabel: [{\n type: Input\n }] }); })();\n\nclass BsDatepickerDayDecoratorComponent {\n constructor(_config, _elRef, _renderer) {\n this._config = _config;\n this._elRef = _elRef;\n this._renderer = _renderer;\n this.day = { date: new Date(), label: '' };\n }\n ngOnInit() {\n var _a, _b, _c;\n if (((_a = this.day) === null || _a === void 0 ? void 0 : _a.isToday) && this._config && this._config.customTodayClass) {\n this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\n }\n if (typeof ((_b = this.day) === null || _b === void 0 ? void 0 : _b.customClasses) === 'string') {\n (_c = this.day) === null || _c === void 0 ? void 0 : _c.customClasses.split(' ').filter((className) => className).forEach((className) => {\n this._renderer.addClass(this._elRef.nativeElement, className);\n });\n }\n }\n}\nBsDatepickerDayDecoratorComponent.ɵfac = function BsDatepickerDayDecoratorComponent_Factory(t) { return new (t || BsDatepickerDayDecoratorComponent)(ɵngcc0.ɵɵdirectiveInject(BsDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nBsDatepickerDayDecoratorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDatepickerDayDecoratorComponent, selectors: [[\"\", \"bsDatepickerDayDecorator\", \"\"]], hostVars: 16, hostBindings: function BsDatepickerDayDecoratorComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.day.isDisabled)(\"is-highlighted\", ctx.day.isHovered)(\"is-other-month\", ctx.day.isOtherMonth)(\"is-active-other-month\", ctx.day.isOtherMonthHovered)(\"in-range\", ctx.day.isInRange)(\"select-start\", ctx.day.isSelectionStart)(\"select-end\", ctx.day.isSelectionEnd)(\"selected\", ctx.day.isSelected);\n } }, inputs: { day: \"day\" }, attrs: _c10, decls: 1, vars: 1, template: function BsDatepickerDayDecoratorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate(ctx.day && ctx.day.label || \"\");\n } }, encapsulation: 2, changeDetection: 0 });\nBsDatepickerDayDecoratorComponent.ctorParameters = () => [\n { type: BsDatepickerConfig },\n { type: ElementRef },\n { type: Renderer2 }\n];\nBsDatepickerDayDecoratorComponent.propDecorators = {\n day: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerDayDecoratorComponent, [{\n type: Component,\n args: [{\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day && day.label || '' }}`\n }]\n }], function () { return [{ type: BsDatepickerConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { day: [{\n type: Input\n }] }); })();\n\n/** *************** */\n// events\n/** *************** */\nvar BsNavigationDirection;\n(function (BsNavigationDirection) {\n BsNavigationDirection[BsNavigationDirection[\"UP\"] = 0] = \"UP\";\n BsNavigationDirection[BsNavigationDirection[\"DOWN\"] = 1] = \"DOWN\";\n})(BsNavigationDirection || (BsNavigationDirection = {}));\n\nclass BsDatepickerNavigationViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n }\n navTo(down) {\n this.onNavigate.emit(down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP);\n }\n view(viewMode) {\n this.onViewMode.emit(viewMode);\n }\n}\nBsDatepickerNavigationViewComponent.ɵfac = function BsDatepickerNavigationViewComponent_Factory(t) { return new (t || BsDatepickerNavigationViewComponent)(); };\nBsDatepickerNavigationViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDatepickerNavigationViewComponent, selectors: [[\"bs-datepicker-navigation-view\"]], inputs: { calendar: \"calendar\" }, outputs: { onNavigate: \"onNavigate\", onViewMode: \"onViewMode\" }, decls: 12, vars: 8, consts: [[\"type\", \"button\", 1, \"previous\", 3, \"disabled\", \"click\"], [4, \"ngIf\"], [\"type\", \"button\", 1, \"current\", 3, \"click\"], [\"type\", \"button\", 1, \"next\", 3, \"disabled\", \"click\"]], template: function BsDatepickerNavigationViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerNavigationViewComponent_Template_button_click_0_listener() { return ctx.navTo(true); });\n ɵngcc0.ɵɵelementStart(1, \"span\");\n ɵngcc0.ɵɵtext(2, \"\\u2039\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(3, BsDatepickerNavigationViewComponent_ng_container_3_Template, 5, 1, \"ng-container\", 1);\n ɵngcc0.ɵɵtext(4, \" \\u200B \");\n ɵngcc0.ɵɵelementStart(5, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerNavigationViewComponent_Template_button_click_5_listener() { return ctx.view(\"year\"); });\n ɵngcc0.ɵɵelementStart(6, \"span\");\n ɵngcc0.ɵɵtext(7);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtext(8, \" \\u200B \");\n ɵngcc0.ɵɵelementStart(9, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function BsDatepickerNavigationViewComponent_Template_button_click_9_listener() { return ctx.navTo(false); });\n ɵngcc0.ɵɵelementStart(10, \"span\");\n ɵngcc0.ɵɵtext(11, \"\\u203A\");\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx.calendar.hideLeftArrow ? \"hidden\" : \"visible\");\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.calendar.disableLeftArrow);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.calendar && ctx.calendar.monthTitle);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ctx.calendar.yearTitle);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx.calendar.hideRightArrow ? \"hidden\" : \"visible\");\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.calendar.disableRightArrow);\n } }, directives: [ɵngcc2.NgIf], encapsulation: 2, changeDetection: 0 });\nBsDatepickerNavigationViewComponent.propDecorators = {\n calendar: [{ type: Input }],\n onNavigate: [{ type: Output }],\n onViewMode: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerNavigationViewComponent, [{\n type: Component,\n args: [{\n selector: 'bs-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n\n \n ​ \n\n \n \n\n ​ \n\n \n\n ​ \n\n \n `\n }]\n }], function () { return []; }, { onNavigate: [{\n type: Output\n }], onViewMode: [{\n type: Output\n }], calendar: [{\n type: Input\n }] }); })();\n\nclass BsDaysCalendarViewComponent {\n constructor(_config) {\n this._config = _config;\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n this.onHoverWeek = new EventEmitter();\n this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n if (this._config.dateTooltipTexts && this._config.dateTooltipTexts.length > 0) {\n this.isShowTooltip = true;\n }\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { month: step } });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n selectDay(event) {\n this.onSelect.emit(event);\n }\n selectWeek(week) {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n if (week.days.length === 0) {\n return;\n }\n if (this._config.selectWeek && week.days[0]\n && !week.days[0].isDisabled\n && this._config.selectFromOtherMonth) {\n this.onSelect.emit(week.days[0]);\n return;\n }\n const selectedDay = week.days.find((day) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n this.onSelect.emit(selectedDay);\n if (this._config.selectWeekDateRange) {\n const days = week.days.slice(0);\n const lastDayOfRange = days.reverse().find((day) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n this.onSelect.emit(lastDayOfRange);\n }\n }\n weekHoverHandler(cell, isHovered) {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n const hasActiveDays = cell.days.find((day) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n if (hasActiveDays) {\n cell.isHovered = isHovered;\n this.isWeekHovered = isHovered;\n this.onHoverWeek.emit(cell);\n }\n }\n hoverDay(cell, isHovered) {\n if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\n cell.isOtherMonthHovered = isHovered;\n }\n if (this._config.dateTooltipTexts) {\n cell.tooltipText = '';\n this._config.dateTooltipTexts.forEach((dateData) => {\n if (isSameDay(dateData.date, cell.date)) {\n cell.tooltipText = dateData.tooltipText;\n return;\n }\n });\n }\n this.onHover.emit({ cell, isHovered });\n }\n}\nBsDaysCalendarViewComponent.ɵfac = function BsDaysCalendarViewComponent_Factory(t) { return new (t || BsDaysCalendarViewComponent)(ɵngcc0.ɵɵdirectiveInject(BsDatepickerConfig)); };\nBsDaysCalendarViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDaysCalendarViewComponent, selectors: [[\"bs-days-calendar-view\"]], inputs: { calendar: \"calendar\", options: \"options\" }, outputs: { onNavigate: \"onNavigate\", onViewMode: \"onViewMode\", onSelect: \"onSelect\", onHover: \"onHover\", onHoverWeek: \"onHoverWeek\" }, decls: 9, vars: 4, consts: [[3, \"calendar\", \"onNavigate\", \"onViewMode\"], [\"role\", \"grid\", 1, \"days\", \"weeks\"], [4, \"ngIf\"], [\"aria-label\", \"weekday\", 4, \"ngFor\", \"ngForOf\"], [4, \"ngFor\", \"ngForOf\"], [\"aria-label\", \"weekday\"], [\"class\", \"week\", 3, \"active-week\", 4, \"ngIf\"], [\"role\", \"gridcell\", 4, \"ngFor\", \"ngForOf\"], [1, \"week\"], [3, \"click\", 4, \"ngIf\"], [3, \"click\", \"mouseenter\", \"mouseleave\", 4, \"ngIf\"], [3, \"click\"], [3, \"click\", \"mouseenter\", \"mouseleave\"], [\"role\", \"gridcell\"], [\"bsDatepickerDayDecorator\", \"\", 3, \"day\", \"tooltip\", \"click\", \"mouseenter\", \"mouseleave\", 4, \"ngIf\"], [\"bsDatepickerDayDecorator\", \"\", 3, \"day\", \"click\", \"mouseenter\", \"mouseleave\", 4, \"ngIf\"], [\"bsDatepickerDayDecorator\", \"\", 3, \"day\", \"click\", 4, \"ngIf\"], [\"bsDatepickerDayDecorator\", \"\", 3, \"day\", \"tooltip\", \"click\", \"mouseenter\", \"mouseleave\"], [\"bsDatepickerDayDecorator\", \"\", 3, \"day\", \"click\", \"mouseenter\", \"mouseleave\"], [\"bsDatepickerDayDecorator\", \"\", 3, \"day\", \"click\"]], template: function BsDaysCalendarViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"bs-calendar-layout\")(1, \"bs-datepicker-navigation-view\", 0);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsDaysCalendarViewComponent_Template_bs_datepicker_navigation_view_onNavigate_1_listener($event) { return ctx.navigateTo($event); })(\"onViewMode\", function BsDaysCalendarViewComponent_Template_bs_datepicker_navigation_view_onViewMode_1_listener($event) { return ctx.changeViewMode($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"table\", 1)(3, \"thead\")(4, \"tr\");\n ɵngcc0.ɵɵtemplate(5, BsDaysCalendarViewComponent_th_5_Template, 1, 0, \"th\", 2);\n ɵngcc0.ɵɵtemplate(6, BsDaysCalendarViewComponent_th_6_Template, 2, 1, \"th\", 3);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(7, \"tbody\");\n ɵngcc0.ɵɵtemplate(8, BsDaysCalendarViewComponent_tr_8_Template, 3, 2, \"tr\", 4);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"calendar\", ctx.calendar);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.options && ctx.options.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.calendar.weekdays);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.calendar.weeks);\n } }, directives: [BsCalendarLayoutComponent, BsDatepickerNavigationViewComponent, ɵngcc2.NgIf, ɵngcc2.NgForOf, BsDatepickerDayDecoratorComponent, ɵngcc5.TooltipDirective], encapsulation: 2 });\nBsDaysCalendarViewComponent.ctorParameters = () => [\n { type: BsDatepickerConfig }\n];\nBsDaysCalendarViewComponent.propDecorators = {\n calendar: [{ type: Input }],\n options: [{ type: Input }],\n onNavigate: [{ type: Output }],\n onViewMode: [{ type: Output }],\n onSelect: [{ type: Output }],\n onHover: [{ type: Output }],\n onHoverWeek: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDaysCalendarViewComponent, [{\n type: Component,\n args: [{\n selector: 'bs-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ calendar.weekdays[i] }}\n
\n {{ calendar.weekNumbers[i] }}\n {{ calendar.weekNumbers[i] }}\n \n\n \n {{ day.label }} 3\n \n {{ day.label }} 2\n\n \n {{ day.label }} 1\n
\n\n
\n `\n }]\n }], function () { return [{ type: BsDatepickerConfig }]; }, { onNavigate: [{\n type: Output\n }], onViewMode: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onHover: [{\n type: Output\n }], onHoverWeek: [{\n type: Output\n }], calendar: [{\n type: Input\n }], options: [{\n type: Input\n }] }); })();\n\nclass BsMonthCalendarViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step } });\n }\n viewMonth(month) {\n this.onSelect.emit(month);\n }\n hoverMonth(cell, isHovered) {\n this.onHover.emit({ cell, isHovered });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n}\nBsMonthCalendarViewComponent.ɵfac = function BsMonthCalendarViewComponent_Factory(t) { return new (t || BsMonthCalendarViewComponent)(); };\nBsMonthCalendarViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsMonthCalendarViewComponent, selectors: [[\"bs-month-calendar-view\"]], inputs: { calendar: \"calendar\" }, outputs: { onNavigate: \"onNavigate\", onViewMode: \"onViewMode\", onSelect: \"onSelect\", onHover: \"onHover\" }, decls: 5, vars: 2, consts: [[3, \"calendar\", \"onNavigate\", \"onViewMode\"], [\"role\", \"grid\", 1, \"months\"], [4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", 3, \"disabled\", \"is-highlighted\", \"click\", \"mouseenter\", \"mouseleave\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", 3, \"click\", \"mouseenter\", \"mouseleave\"]], template: function BsMonthCalendarViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"bs-calendar-layout\")(1, \"bs-datepicker-navigation-view\", 0);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsMonthCalendarViewComponent_Template_bs_datepicker_navigation_view_onNavigate_1_listener($event) { return ctx.navigateTo($event); })(\"onViewMode\", function BsMonthCalendarViewComponent_Template_bs_datepicker_navigation_view_onViewMode_1_listener($event) { return ctx.changeViewMode($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"table\", 1)(3, \"tbody\");\n ɵngcc0.ɵɵtemplate(4, BsMonthCalendarViewComponent_tr_4_Template, 2, 1, \"tr\", 2);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"calendar\", ctx.calendar);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.calendar == null ? null : ctx.calendar.months);\n } }, directives: [BsCalendarLayoutComponent, BsDatepickerNavigationViewComponent, ɵngcc2.NgForOf], encapsulation: 2 });\nBsMonthCalendarViewComponent.propDecorators = {\n calendar: [{ type: Input }],\n onNavigate: [{ type: Output }],\n onViewMode: [{ type: Output }],\n onSelect: [{ type: Output }],\n onHover: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsMonthCalendarViewComponent, [{\n type: Component,\n args: [{\n selector: 'bs-month-calendar-view',\n template: `\n \n \n\n \n \n \n \n \n \n
\n {{ month.label }}\n
\n
\n `\n }]\n }], function () { return []; }, { onNavigate: [{\n type: Output\n }], onViewMode: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onHover: [{\n type: Output\n }], calendar: [{\n type: Input\n }] }); })();\n\nclass BsTimepickerViewComponent {\n constructor() {\n this.ampm = 'ok';\n this.hours = 0;\n this.minutes = 0;\n }\n}\nBsTimepickerViewComponent.ɵfac = function BsTimepickerViewComponent_Factory(t) { return new (t || BsTimepickerViewComponent)(); };\nBsTimepickerViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsTimepickerViewComponent, selectors: [[\"bs-timepicker\"]], decls: 16, vars: 3, consts: [[1, \"bs-timepicker-container\"], [1, \"bs-timepicker-controls\"], [\"type\", \"button\", 1, \"bs-decrease\"], [\"type\", \"text\", \"placeholder\", \"00\", 3, \"value\"], [\"type\", \"button\", 1, \"bs-increase\"], [\"type\", \"button\", 1, \"switch-time-format\"], [\"src\", \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\", \"alt\", \"\"]], template: function BsTimepickerViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1)(2, \"button\", 2);\n ɵngcc0.ɵɵtext(3, \"-\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(4, \"input\", 3);\n ɵngcc0.ɵɵelementStart(5, \"button\", 4);\n ɵngcc0.ɵɵtext(6, \"+\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(7, \"div\", 1)(8, \"button\", 2);\n ɵngcc0.ɵɵtext(9, \"-\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(10, \"input\", 3);\n ɵngcc0.ɵɵelementStart(11, \"button\", 4);\n ɵngcc0.ɵɵtext(12, \"+\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(13, \"button\", 5);\n ɵngcc0.ɵɵtext(14);\n ɵngcc0.ɵɵelement(15, \"img\", 6);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"value\", ctx.hours);\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵproperty(\"value\", ctx.minutes);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate1(\"\", ctx.ampm, \" \");\n } }, encapsulation: 2 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsTimepickerViewComponent, [{\n type: Component,\n args: [{\n selector: 'bs-timepicker',\n template: `\n
\n
\n \n \n \n
\n
\n \n \n \n
\n \n
\n `\n }]\n }], function () { return []; }, null); })();\n\nclass BsYearsCalendarViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n }\n viewYear(year) {\n this.onSelect.emit(year);\n }\n hoverYear(cell, isHovered) {\n this.onHover.emit({ cell, isHovered });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n}\nBsYearsCalendarViewComponent.ɵfac = function BsYearsCalendarViewComponent_Factory(t) { return new (t || BsYearsCalendarViewComponent)(); };\nBsYearsCalendarViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsYearsCalendarViewComponent, selectors: [[\"bs-years-calendar-view\"]], inputs: { calendar: \"calendar\" }, outputs: { onNavigate: \"onNavigate\", onViewMode: \"onViewMode\", onSelect: \"onSelect\", onHover: \"onHover\" }, decls: 5, vars: 2, consts: [[3, \"calendar\", \"onNavigate\", \"onViewMode\"], [\"role\", \"grid\", 1, \"years\"], [4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", 3, \"disabled\", \"is-highlighted\", \"click\", \"mouseenter\", \"mouseleave\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", 3, \"click\", \"mouseenter\", \"mouseleave\"]], template: function BsYearsCalendarViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"bs-calendar-layout\")(1, \"bs-datepicker-navigation-view\", 0);\n ɵngcc0.ɵɵlistener(\"onNavigate\", function BsYearsCalendarViewComponent_Template_bs_datepicker_navigation_view_onNavigate_1_listener($event) { return ctx.navigateTo($event); })(\"onViewMode\", function BsYearsCalendarViewComponent_Template_bs_datepicker_navigation_view_onViewMode_1_listener($event) { return ctx.changeViewMode($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"table\", 1)(3, \"tbody\");\n ɵngcc0.ɵɵtemplate(4, BsYearsCalendarViewComponent_tr_4_Template, 2, 1, \"tr\", 2);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"calendar\", ctx.calendar);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.calendar == null ? null : ctx.calendar.years);\n } }, directives: [BsCalendarLayoutComponent, BsDatepickerNavigationViewComponent, ɵngcc2.NgForOf], encapsulation: 2 });\nBsYearsCalendarViewComponent.propDecorators = {\n calendar: [{ type: Input }],\n onNavigate: [{ type: Output }],\n onViewMode: [{ type: Output }],\n onSelect: [{ type: Output }],\n onHover: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsYearsCalendarViewComponent, [{\n type: Component,\n args: [{\n selector: 'bs-years-calendar-view',\n template: `\n \n \n\n \n \n \n \n \n \n
\n {{ year.label }}\n
\n
\n `\n }]\n }], function () { return []; }, { onNavigate: [{\n type: Output\n }], onViewMode: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onHover: [{\n type: Output\n }], calendar: [{\n type: Input\n }] }); })();\n\nclass BsDatepickerModule {\n static forRoot() {\n return {\n ngModule: BsDatepickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDatepickerStore,\n BsDatepickerActions,\n BsDatepickerEffects,\n BsLocaleService,\n TimepickerActions\n ]\n };\n }\n}\nBsDatepickerModule.ɵfac = function BsDatepickerModule_Factory(t) { return new (t || BsDatepickerModule)(); };\nBsDatepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BsDatepickerModule });\nBsDatepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, TooltipModule, TimepickerModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDatepickerModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, TooltipModule, TimepickerModule],\n declarations: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n BsDatepickerDayDecoratorComponent,\n BsDatepickerNavigationViewComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n ],\n entryComponents: [\n BsDatepickerContainerComponent,\n BsDaterangepickerContainerComponent,\n BsDatepickerInlineContainerComponent,\n BsDaterangepickerInlineContainerComponent\n ],\n exports: [\n BsDatepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInlineContainerComponent,\n BsDatepickerInlineDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerContainerComponent,\n BsDaterangepickerDirective,\n BsDaterangepickerInlineContainerComponent,\n BsDaterangepickerInlineDirective,\n BsDaterangepickerInputDirective\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BsDatepickerModule, { declarations: function () { return [BsCalendarLayoutComponent, BsCurrentDateViewComponent, BsCustomDatesViewComponent, BsDatepickerDayDecoratorComponent, BsDatepickerNavigationViewComponent, BsDaysCalendarViewComponent, BsMonthCalendarViewComponent, BsTimepickerViewComponent, BsYearsCalendarViewComponent, BsDatepickerContainerComponent, BsDatepickerDirective, BsDatepickerInlineContainerComponent, BsDatepickerInlineDirective, BsDatepickerInputDirective, BsDaterangepickerContainerComponent, BsDaterangepickerDirective, BsDaterangepickerInlineContainerComponent, BsDaterangepickerInlineDirective, BsDaterangepickerInputDirective]; }, imports: function () { return [CommonModule, TooltipModule, TimepickerModule]; }, exports: function () { return [BsDatepickerContainerComponent, BsDatepickerDirective, BsDatepickerInlineContainerComponent, BsDatepickerInlineDirective, BsDatepickerInputDirective, BsDaterangepickerContainerComponent, BsDaterangepickerDirective, BsDaterangepickerInlineContainerComponent, BsDaterangepickerInlineDirective, BsDaterangepickerInputDirective]; } }); })();\n\nclass DatepickerModule {\n static forRoot() {\n return { ngModule: DatepickerModule, providers: [DatepickerConfig] };\n }\n}\nDatepickerModule.ɵfac = function DatepickerModule_Factory(t) { return new (t || DatepickerModule)(); };\nDatepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DatepickerModule });\nDatepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FormsModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatepickerModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, FormsModule],\n declarations: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n exports: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n entryComponents: [DatePickerComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DatepickerModule, { declarations: function () { return [DatePickerComponent, DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent]; }, imports: function () { return [CommonModule, FormsModule]; }, exports: function () { return [DatePickerComponent, DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsDatepickerConfig, BsDatepickerContainerComponent, BsDatepickerDirective, BsDatepickerInlineConfig, BsDatepickerInlineContainerComponent, BsDatepickerInlineDirective, BsDatepickerInputDirective, BsDatepickerModule, BsDaterangepickerConfig, BsDaterangepickerContainerComponent, BsDaterangepickerDirective, BsDaterangepickerInlineConfig, BsDaterangepickerInlineContainerComponent, BsDaterangepickerInlineDirective, BsDaterangepickerInputDirective, BsLocaleService, DateFormatter, DatePickerComponent, DatePickerInnerComponent, DatepickerConfig, DatepickerModule, DayPickerComponent, MonthPickerComponent, YearPickerComponent, DATEPICKER_CONTROL_VALUE_ACCESSOR as ɵa, BsDatepickerAbstractComponent as ɵb, BsDatepickerStore as ɵc, BsDatepickerEffects as ɵd, BsDatepickerActions as ɵe, datepickerAnimation as ɵf, BsCalendarLayoutComponent as ɵg, BsCurrentDateViewComponent as ɵh, BsCustomDatesViewComponent as ɵi, BsDatepickerDayDecoratorComponent as ɵj, BsDatepickerNavigationViewComponent as ɵk, BsDaysCalendarViewComponent as ɵl, BsMonthCalendarViewComponent as ɵm, BsTimepickerViewComponent as ɵn, BsYearsCalendarViewComponent as ɵo };\n\n","import { ɵɵdefineInjectable, Injectable, EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Renderer2, ElementRef, Directive, ViewContainerRef, Input, Output, HostListener, TemplateRef, HostBinding, NgModule } from '@angular/core';\nimport { filter } from 'rxjs/operators';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { isBs3 } from 'ngx-bootstrap/utils';\nimport { style, animate, AnimationBuilder } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\n/** Default dropdown configuration */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/animations';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from 'ngx-bootstrap/component-loader';\n\nconst _c0 = function (a0) { return { dropdown: a0 }; };\nconst _c1 = [\"*\"];\nclass BsDropdownConfig {\n constructor() {\n /** default dropdown auto closing behavior */\n this.autoClose = true;\n /** default dropdown auto closing behavior */\n this.insideClick = false;\n /** turn on/off animation */\n this.isAnimated = false;\n /** value true of stopOnClickPropagation allows event stopPropagation*/\n this.stopOnClickPropagation = false;\n }\n}\nBsDropdownConfig.ɵfac = function BsDropdownConfig_Factory(t) { return new (t || BsDropdownConfig)(); };\nBsDropdownConfig.ɵprov = ɵɵdefineInjectable({ factory: function BsDropdownConfig_Factory() { return new BsDropdownConfig(); }, token: BsDropdownConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\n\nclass BsDropdownState {\n constructor() {\n this.direction = 'down';\n this.autoClose = true;\n this.insideClick = false;\n this.isAnimated = false;\n this.stopOnClickPropagation = false;\n this.isOpenChange = new EventEmitter();\n this.isDisabledChange = new EventEmitter();\n this.toggleClick = new EventEmitter();\n this.counts = 0;\n this.dropdownMenu = new Promise(resolve => {\n this.resolveDropdownMenu = resolve;\n });\n }\n}\nBsDropdownState.ɵfac = function BsDropdownState_Factory(t) { return new (t || BsDropdownState)(); };\nBsDropdownState.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: BsDropdownState, factory: BsDropdownState.ɵfac });\nBsDropdownState.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownState, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\nconst DROPDOWN_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\nconst dropdownAnimation = [\n style({ height: 0, overflow: 'hidden' }),\n animate(DROPDOWN_ANIMATION_TIMING, style({ height: '*', overflow: 'hidden' }))\n];\n\n// todo: revert ngClass to [class] when false positive angular-cli issue is fixed\n// [class.dropdown]=\"direction === 'down'\"-->\nclass BsDropdownContainerComponent {\n constructor(_state, cd, _renderer, _element, _builder) {\n this._state = _state;\n this.cd = cd;\n this._renderer = _renderer;\n this._element = _element;\n this.isOpen = false;\n this._factoryDropDownAnimation = _builder.build(dropdownAnimation);\n this._subscription = _state.isOpenChange.subscribe((value) => {\n this.isOpen = value;\n const dropdown = this._element.nativeElement.querySelector('.dropdown-menu');\n this._renderer.addClass(this._element.nativeElement.querySelector('div'), 'open');\n if (dropdown && !isBs3()) {\n this._renderer.addClass(dropdown, 'show');\n if (dropdown.classList.contains('dropdown-menu-right') || dropdown.classList.contains('dropdown-menu-end')) {\n this._renderer.setStyle(dropdown, 'left', 'auto');\n this._renderer.setStyle(dropdown, 'right', '0');\n }\n if (this.direction === 'up') {\n this._renderer.setStyle(dropdown, 'top', 'auto');\n this._renderer.setStyle(dropdown, 'transform', 'translateY(-101%)');\n }\n }\n if (dropdown && this._state.isAnimated) {\n this._factoryDropDownAnimation.create(dropdown)\n .play();\n }\n this.cd.markForCheck();\n this.cd.detectChanges();\n });\n }\n get direction() {\n return this._state.direction;\n }\n /** @internal */\n _contains(el) {\n return this._element.nativeElement.contains(el);\n }\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\nBsDropdownContainerComponent.ɵfac = function BsDropdownContainerComponent_Factory(t) { return new (t || BsDropdownContainerComponent)(ɵngcc0.ɵɵdirectiveInject(BsDropdownState), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.AnimationBuilder)); };\nBsDropdownContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BsDropdownContainerComponent, selectors: [[\"bs-dropdown-container\"]], hostAttrs: [2, \"display\", \"block\", \"position\", \"absolute\", \"z-index\", \"1040\"], ngContentSelectors: _c1, decls: 2, vars: 9, consts: [[3, \"ngClass\"]], template: function BsDropdownContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵprojection(1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"dropup\", ctx.direction === \"up\")(\"show\", ctx.isOpen)(\"open\", ctx.isOpen);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(7, _c0, ctx.direction === \"down\"));\n } }, directives: [ɵngcc2.NgClass], encapsulation: 2, changeDetection: 0 });\nBsDropdownContainerComponent.ctorParameters = () => [\n { type: BsDropdownState },\n { type: ChangeDetectorRef },\n { type: Renderer2 },\n { type: ElementRef },\n { type: AnimationBuilder }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownContainerComponent, [{\n type: Component,\n args: [{\n selector: 'bs-dropdown-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n style: 'display:block;position: absolute;z-index: 1040'\n },\n template: `\n
\n
\n `\n }]\n }], function () { return [{ type: BsDropdownState }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc1.AnimationBuilder }]; }, null); })();\n\nclass BsDropdownDirective {\n constructor(_elementRef, _renderer, _viewContainerRef, _cis, _state, _config, _builder) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._viewContainerRef = _viewContainerRef;\n this._cis = _cis;\n this._state = _state;\n this._config = _config;\n /**\n * This attribute indicates that the dropdown should be opened upwards\n */\n this.dropup = false;\n // todo: move to component loader\n this._isInlineOpen = false;\n this._isDisabled = false;\n this._subscriptions = [];\n this._isInited = false;\n // set initial dropdown state from config\n this._state.autoClose = this._config.autoClose;\n this._state.insideClick = this._config.insideClick;\n this._state.isAnimated = this._config.isAnimated;\n this._state.stopOnClickPropagation = this._config.stopOnClickPropagation;\n this._factoryDropDownAnimation = _builder.build(dropdownAnimation);\n // create dropdown component loader\n this._dropdown = this._cis\n .createLoader(this._elementRef, this._viewContainerRef, this._renderer)\n .provide({ provide: BsDropdownState, useValue: this._state });\n this.onShown = this._dropdown.onShown;\n this.onHidden = this._dropdown.onHidden;\n this.isOpenChange = this._state.isOpenChange;\n }\n /**\n * Indicates that dropdown will be closed on item or document click,\n * and after pressing ESC\n */\n set autoClose(value) {\n this._state.autoClose = value;\n }\n get autoClose() {\n return this._state.autoClose;\n }\n /**\n * Indicates that dropdown will be animated\n */\n set isAnimated(value) {\n this._state.isAnimated = value;\n }\n get isAnimated() {\n return this._state.isAnimated;\n }\n /**\n * This attribute indicates that the dropdown shouldn't close on inside click when autoClose is set to true\n */\n set insideClick(value) {\n this._state.insideClick = value;\n }\n get insideClick() {\n return this._state.insideClick;\n }\n /**\n * Disables dropdown toggle and hides dropdown menu if opened\n */\n set isDisabled(value) {\n this._isDisabled = value;\n this._state.isDisabledChange.emit(value);\n if (value) {\n this.hide();\n }\n }\n get isDisabled() {\n return this._isDisabled;\n }\n /**\n * Returns whether or not the popover is currently being shown\n */\n get isOpen() {\n if (this._showInline) {\n return this._isInlineOpen;\n }\n return this._dropdown.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n get isBs4() {\n return !isBs3();\n }\n get _showInline() {\n return !this.container;\n }\n ngOnInit() {\n // fix: seems there are an issue with `routerLinkActive`\n // which result in duplicated call ngOnInit without call to ngOnDestroy\n // read more: https://github.com/valor-software/ngx-bootstrap/issues/1885\n if (this._isInited) {\n return;\n }\n this._isInited = true;\n // attach DOM listeners\n this._dropdown.listen({\n // because of dropdown inline mode\n outsideClick: false,\n triggers: this.triggers,\n show: () => this.show()\n });\n // toggle visibility on toggle element click\n this._subscriptions.push(this._state.toggleClick.subscribe((value) => this.toggle(value)));\n // hide dropdown if set disabled while opened\n this._subscriptions.push(this._state.isDisabledChange\n .pipe(filter((value) => value))\n .subscribe(( /*value: boolean*/) => this.hide()));\n }\n /**\n * Opens an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n show() {\n if (this.isOpen || this.isDisabled) {\n return;\n }\n if (this._showInline) {\n if (!this._inlinedMenu) {\n this._state.dropdownMenu.then((dropdownMenu) => {\n this._dropdown.attachInline(dropdownMenu.viewContainer, dropdownMenu.templateRef);\n this._inlinedMenu = this._dropdown._inlineViewRef;\n this.addBs4Polyfills();\n if (this._inlinedMenu) {\n this._renderer.addClass(this._inlinedMenu.rootNodes[0].parentNode, 'open');\n }\n this.playAnimation();\n })\n // swallow errors\n .catch();\n }\n this.addBs4Polyfills();\n this._isInlineOpen = true;\n this.onShown.emit(true);\n this._state.isOpenChange.emit(true);\n this.playAnimation();\n return;\n }\n this._state.dropdownMenu.then(dropdownMenu => {\n // check direction in which dropdown should be opened\n const _dropup = this.dropup ||\n (typeof this.dropup !== 'undefined' && this.dropup);\n this._state.direction = _dropup ? 'up' : 'down';\n const _placement = this.placement || (_dropup ? 'top start' : 'bottom start');\n // show dropdown\n this._dropdown\n .attach(BsDropdownContainerComponent)\n .to(this.container)\n .position({ attachment: _placement })\n .show({\n content: dropdownMenu.templateRef,\n placement: _placement\n });\n this._state.isOpenChange.emit(true);\n })\n // swallow error\n .catch();\n }\n /**\n * Closes an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n hide() {\n if (!this.isOpen) {\n return;\n }\n if (this._showInline) {\n this.removeShowClass();\n this.removeDropupStyles();\n this._isInlineOpen = false;\n this.onHidden.emit(true);\n }\n else {\n this._dropdown.hide();\n }\n this._state.isOpenChange.emit(false);\n }\n /**\n * Toggles an element’s popover. This is considered a “manual” triggering of\n * the popover. With parameter true allows toggling, with parameter false\n * only hides opened dropdown. Parameter usage will be removed in ngx-bootstrap v3\n */\n toggle(value) {\n if (this.isOpen || !value) {\n return this.hide();\n }\n return this.show();\n }\n /** @internal */\n _contains(event) {\n // todo: valorkin fix typings\n return this._elementRef.nativeElement.contains(event.target) ||\n (this._dropdown.instance && this._dropdown.instance._contains(event.target));\n }\n navigationClick(event) {\n const ref = this._elementRef.nativeElement.querySelector('.dropdown-menu');\n if (!ref) {\n return;\n }\n const firstActive = this._elementRef.nativeElement.ownerDocument.activeElement;\n const allRef = ref.querySelectorAll('.dropdown-item');\n switch (event.keyCode) {\n case 38:\n if (this._state.counts > 0) {\n allRef[--this._state.counts].focus();\n }\n break;\n case 40:\n if (this._state.counts + 1 < allRef.length) {\n if (firstActive.classList !== allRef[this._state.counts].classList) {\n allRef[this._state.counts].focus();\n }\n else {\n allRef[++this._state.counts].focus();\n }\n }\n break;\n default:\n }\n event.preventDefault();\n }\n ngOnDestroy() {\n // clean up subscriptions and destroy dropdown\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._dropdown.dispose();\n }\n addBs4Polyfills() {\n if (!isBs3()) {\n this.addShowClass();\n this.checkRightAlignment();\n this.addDropupStyles();\n }\n }\n playAnimation() {\n if (this._state.isAnimated && this._inlinedMenu) {\n setTimeout(() => {\n if (this._inlinedMenu) {\n this._factoryDropDownAnimation.create(this._inlinedMenu.rootNodes[0]).play();\n }\n });\n }\n }\n addShowClass() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.addClass(this._inlinedMenu.rootNodes[0], 'show');\n }\n }\n removeShowClass() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.removeClass(this._inlinedMenu.rootNodes[0], 'show');\n }\n }\n checkRightAlignment() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n const isRightAligned = this._inlinedMenu.rootNodes[0].classList.contains('dropdown-menu-right') || this._inlinedMenu.rootNodes[0].classList.contains('dropdown-menu-end');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'left', isRightAligned ? 'auto' : '0');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'right', isRightAligned ? '0' : 'auto');\n }\n }\n addDropupStyles() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n // a little hack to not break support of bootstrap 4 beta\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'top', this.dropup ? 'auto' : '100%');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'transform', this.dropup ? 'translateY(-101%)' : 'translateY(0)');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'bottom', 'auto');\n }\n }\n removeDropupStyles() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'top');\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'transform');\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'bottom');\n }\n }\n}\nBsDropdownDirective.ɵfac = function BsDropdownDirective_Factory(t) { return new (t || BsDropdownDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.ComponentLoaderFactory), ɵngcc0.ɵɵdirectiveInject(BsDropdownState), ɵngcc0.ɵɵdirectiveInject(BsDropdownConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.AnimationBuilder)); };\nBsDropdownDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDropdownDirective, selectors: [[\"\", \"bsDropdown\", \"\"], [\"\", \"dropdown\", \"\"]], hostVars: 6, hostBindings: function BsDropdownDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.arrowDown\", function BsDropdownDirective_keydown_arrowDown_HostBindingHandler($event) { return ctx.navigationClick($event); })(\"keydown.arrowUp\", function BsDropdownDirective_keydown_arrowUp_HostBindingHandler($event) { return ctx.navigationClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"dropup\", ctx.dropup)(\"open\", ctx.isOpen)(\"show\", ctx.isOpen && ctx.isBs4);\n } }, inputs: { dropup: \"dropup\", autoClose: \"autoClose\", isAnimated: \"isAnimated\", insideClick: \"insideClick\", isDisabled: \"isDisabled\", isOpen: \"isOpen\", placement: \"placement\", triggers: \"triggers\", container: \"container\" }, outputs: { onShown: \"onShown\", onHidden: \"onHidden\", isOpenChange: \"isOpenChange\" }, exportAs: [\"bs-dropdown\"], features: [ɵngcc0.ɵɵProvidersFeature([BsDropdownState])] });\nBsDropdownDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ViewContainerRef },\n { type: ComponentLoaderFactory },\n { type: BsDropdownState },\n { type: BsDropdownConfig },\n { type: AnimationBuilder }\n];\nBsDropdownDirective.propDecorators = {\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n dropup: [{ type: Input }],\n autoClose: [{ type: Input }],\n isAnimated: [{ type: Input }],\n insideClick: [{ type: Input }],\n isDisabled: [{ type: Input }],\n isOpen: [{ type: Input }],\n isOpenChange: [{ type: Output }],\n onShown: [{ type: Output }],\n onHidden: [{ type: Output }],\n navigationClick: [{ type: HostListener, args: ['keydown.arrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.arrowUp', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownDirective, [{\n type: Directive,\n args: [{\n selector: '[bsDropdown], [dropdown]',\n exportAs: 'bs-dropdown',\n providers: [BsDropdownState],\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.dropup]': 'dropup',\n '[class.open]': 'isOpen',\n '[class.show]': 'isOpen && isBs4'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc3.ComponentLoaderFactory }, { type: BsDropdownState }, { type: BsDropdownConfig }, { type: ɵngcc1.AnimationBuilder }]; }, { dropup: [{\n type: Input\n }], onShown: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], isOpenChange: [{\n type: Output\n }], autoClose: [{\n type: Input\n }], isAnimated: [{\n type: Input\n }], insideClick: [{\n type: Input\n }], isDisabled: [{\n type: Input\n }], isOpen: [{\n type: Input\n }], navigationClick: [{\n type: HostListener,\n args: ['keydown.arrowDown', ['$event']]\n }, {\n type: HostListener,\n args: ['keydown.arrowUp', ['$event']]\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }] }); })();\n\nclass BsDropdownMenuDirective {\n constructor(_state, _viewContainer, _templateRef) {\n _state.resolveDropdownMenu({\n templateRef: _templateRef,\n viewContainer: _viewContainer\n });\n }\n}\nBsDropdownMenuDirective.ɵfac = function BsDropdownMenuDirective_Factory(t) { return new (t || BsDropdownMenuDirective)(ɵngcc0.ɵɵdirectiveInject(BsDropdownState), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nBsDropdownMenuDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDropdownMenuDirective, selectors: [[\"\", \"bsDropdownMenu\", \"\"], [\"\", \"dropdownMenu\", \"\"]], exportAs: [\"bs-dropdown-menu\"] });\nBsDropdownMenuDirective.ctorParameters = () => [\n { type: BsDropdownState },\n { type: ViewContainerRef },\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownMenuDirective, [{\n type: Directive,\n args: [{\n selector: '[bsDropdownMenu],[dropdownMenu]',\n exportAs: 'bs-dropdown-menu'\n }]\n }], function () { return [{ type: BsDropdownState }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }]; }, null); })();\n\nclass BsDropdownToggleDirective {\n constructor(_changeDetectorRef, _dropdown, _element, _renderer, _state) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dropdown = _dropdown;\n this._element = _element;\n this._renderer = _renderer;\n this._state = _state;\n this.isOpen = false;\n this._subscriptions = [];\n // sync is open value with state\n this._subscriptions.push(this._state.isOpenChange.subscribe((value) => {\n this.isOpen = value;\n if (value) {\n this._documentClickListener = this._renderer.listen('document', 'click', (event) => {\n if (this._state.autoClose && event.button !== 2 &&\n !this._element.nativeElement.contains(event.target) &&\n !(this._state.insideClick && this._dropdown._contains(event))) {\n this._state.toggleClick.emit(false);\n this._changeDetectorRef.detectChanges();\n }\n });\n this._escKeyUpListener = this._renderer.listen(this._element.nativeElement, 'keyup.esc', () => {\n if (this._state.autoClose) {\n this._state.toggleClick.emit(false);\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n else {\n this._documentClickListener && this._documentClickListener();\n this._escKeyUpListener && this._escKeyUpListener();\n }\n }));\n // populate disabled state\n this._subscriptions.push(this._state.isDisabledChange\n .subscribe((value) => this.isDisabled = value || void 0));\n }\n onClick(event) {\n if (this._state.stopOnClickPropagation) {\n event.stopPropagation();\n }\n if (this.isDisabled) {\n return;\n }\n this._state.toggleClick.emit(true);\n }\n ngOnDestroy() {\n if (this._documentClickListener) {\n this._documentClickListener();\n }\n if (this._escKeyUpListener) {\n this._escKeyUpListener();\n }\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n }\n}\nBsDropdownToggleDirective.ɵfac = function BsDropdownToggleDirective_Factory(t) { return new (t || BsDropdownToggleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(BsDropdownDirective), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(BsDropdownState)); };\nBsDropdownToggleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: BsDropdownToggleDirective, selectors: [[\"\", \"bsDropdownToggle\", \"\"], [\"\", \"dropdownToggle\", \"\"]], hostVars: 3, hostBindings: function BsDropdownToggleDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function BsDropdownToggleDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-haspopup\", true)(\"aria-expanded\", ctx.isOpen)(\"disabled\", ctx.isDisabled);\n } }, exportAs: [\"bs-dropdown-toggle\"] });\nBsDropdownToggleDirective.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: BsDropdownDirective },\n { type: ElementRef },\n { type: Renderer2 },\n { type: BsDropdownState }\n];\nBsDropdownToggleDirective.propDecorators = {\n isDisabled: [{ type: HostBinding, args: ['attr.disabled',] }],\n isOpen: [{ type: HostBinding, args: ['attr.aria-expanded',] }],\n onClick: [{ type: HostListener, args: ['click', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownToggleDirective, [{\n type: Directive,\n args: [{\n selector: '[bsDropdownToggle],[dropdownToggle]',\n exportAs: 'bs-dropdown-toggle',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.aria-haspopup]': 'true'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: BsDropdownDirective }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: BsDropdownState }]; }, { isOpen: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], isDisabled: [{\n type: HostBinding,\n args: ['attr.disabled']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] }); })();\n\nclass BsDropdownModule {\n static forRoot() {\n return {\n ngModule: BsDropdownModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDropdownState\n ]\n };\n }\n}\nBsDropdownModule.ɵfac = function BsDropdownModule_Factory(t) { return new (t || BsDropdownModule)(); };\nBsDropdownModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BsDropdownModule });\nBsDropdownModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BsDropdownModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [\n BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownContainerComponent,\n BsDropdownDirective\n ],\n exports: [\n BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownDirective\n ],\n entryComponents: [BsDropdownContainerComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BsDropdownModule, { declarations: function () { return [BsDropdownMenuDirective, BsDropdownToggleDirective, BsDropdownContainerComponent, BsDropdownDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [BsDropdownMenuDirective, BsDropdownToggleDirective, BsDropdownDirective]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsDropdownConfig, BsDropdownContainerComponent, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownState, BsDropdownToggleDirective };\n\n","import { getBsVer } from 'ngx-bootstrap/utils';\nimport { ɵɵdefineInjectable, ɵɵinject, NgZone, RendererFactory2, PLATFORM_ID, Injectable, Inject, ElementRef } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subject, merge, fromEvent, of, animationFrameScheduler } from 'rxjs';\n\nimport * as ɵngcc0 from '@angular/core';\nvar MapPlacementInToRL;\n(function (MapPlacementInToRL) {\n MapPlacementInToRL[\"top\"] = \"top\";\n MapPlacementInToRL[\"bottom\"] = \"bottom\";\n MapPlacementInToRL[\"left\"] = \"left\";\n MapPlacementInToRL[\"right\"] = \"right\";\n MapPlacementInToRL[\"auto\"] = \"auto\";\n MapPlacementInToRL[\"end\"] = \"right\";\n MapPlacementInToRL[\"start\"] = \"left\";\n MapPlacementInToRL[\"top left\"] = \"top left\";\n MapPlacementInToRL[\"top right\"] = \"top right\";\n MapPlacementInToRL[\"right top\"] = \"right top\";\n MapPlacementInToRL[\"right bottom\"] = \"right bottom\";\n MapPlacementInToRL[\"bottom right\"] = \"bottom right\";\n MapPlacementInToRL[\"bottom left\"] = \"bottom left\";\n MapPlacementInToRL[\"left bottom\"] = \"left bottom\";\n MapPlacementInToRL[\"left top\"] = \"left top\";\n MapPlacementInToRL[\"top start\"] = \"top left\";\n MapPlacementInToRL[\"top end\"] = \"top right\";\n MapPlacementInToRL[\"end top\"] = \"right top\";\n MapPlacementInToRL[\"end bottom\"] = \"right bottom\";\n MapPlacementInToRL[\"bottom end\"] = \"bottom right\";\n MapPlacementInToRL[\"bottom start\"] = \"bottom left\";\n MapPlacementInToRL[\"start bottom\"] = \"start bottom\";\n MapPlacementInToRL[\"start top\"] = \"left top\";\n})(MapPlacementInToRL || (MapPlacementInToRL = {}));\nvar PlacementForBs5;\n(function (PlacementForBs5) {\n PlacementForBs5[\"top\"] = \"top\";\n PlacementForBs5[\"bottom\"] = \"bottom\";\n PlacementForBs5[\"left\"] = \"start\";\n PlacementForBs5[\"right\"] = \"end\";\n PlacementForBs5[\"auto\"] = \"auto\";\n PlacementForBs5[\"end\"] = \"end\";\n PlacementForBs5[\"start\"] = \"start\";\n PlacementForBs5[\"top left\"] = \"top start\";\n PlacementForBs5[\"top right\"] = \"top end\";\n PlacementForBs5[\"right top\"] = \"end top\";\n PlacementForBs5[\"right bottom\"] = \"end bottom\";\n PlacementForBs5[\"bottom right\"] = \"bottom end\";\n PlacementForBs5[\"bottom left\"] = \"bottom start\";\n PlacementForBs5[\"left bottom\"] = \"start bottom\";\n PlacementForBs5[\"left top\"] = \"start top\";\n PlacementForBs5[\"top start\"] = \"top start\";\n PlacementForBs5[\"top end\"] = \"top end\";\n PlacementForBs5[\"end top\"] = \"end top\";\n PlacementForBs5[\"end bottom\"] = \"end bottom\";\n PlacementForBs5[\"bottom end\"] = \"bottom end\";\n PlacementForBs5[\"bottom start\"] = \"bottom start\";\n PlacementForBs5[\"start bottom\"] = \"start bottom\";\n PlacementForBs5[\"start top\"] = \"start top\";\n})(PlacementForBs5 || (PlacementForBs5 = {}));\n\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window === null || window === void 0 ? void 0 : window.getComputedStyle(element, null);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return property ? css && css[property] : css;\n}\n\nconst isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determines if the browser is Internet Explorer\n */\n// todo: valorkin fix and drop IE support :evil:\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && !!(window.MSInputMethodContext && /MSIE 10/.test(navigator.userAgent));\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n const noOffsetParent = isIE(10) ? document.body : null;\n // NOTE: 1 DOM access here\n let offsetParent = element === null || element === void 0 ? void 0 : element.offsetParent;\n // Skip hidden elements which don't have an offsetParent\n let sibling = void 0;\n while (offsetParent === noOffsetParent\n && element.nextElementSibling\n && sibling !== element.nextElementSibling) {\n // todo: valorkin fix\n sibling = element.nextElementSibling;\n offsetParent = sibling.offsetParent;\n }\n const nodeName = offsetParent && offsetParent.nodeName;\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return sibling ? sibling.ownerDocument.documentElement : document.documentElement;\n }\n // .offsetParent will return the closest TH, TD or TABLE in case\n if (offsetParent &&\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n return offsetParent;\n}\n\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element);\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n // todo: valorkin fix\n const commonAncestorContainer = range.commonAncestorContainer;\n // Both nodes are inside #document\n if ((element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n return getOffsetParent(commonAncestorContainer);\n }\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n }\n else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n */\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while ((el === null || el === void 0 ? void 0 : el.parentElement) && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Helper to detect borders of a given element\n */\nfunction getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return (parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`]));\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n const _body = body;\n const _html = html;\n const _computedStyle = computedStyle;\n return Math.max(_body[`offset${axis}`], _body[`scroll${axis}`], _html[`client${axis}`], _html[`offset${axis}`], _html[`scroll${axis}`], isIE(10)\n ? (parseInt(_html[`offset${axis}`], 10) +\n parseInt(_computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`], 10) +\n parseInt(_computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`], 10))\n : 0);\n}\nfunction getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) ? getComputedStyle(html) : void 0;\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n */\nfunction getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n return element[upperSide];\n}\n\nfunction getClientRect(offsets) {\n return Object.assign(Object.assign({}, offsets), { right: (offsets.left || 0) + offsets.width, bottom: (offsets.top || 0) + offsets.height });\n}\n\n/**\n * Tells if a given input is a number\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(Number(n));\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isNumber(value) {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\n\n/**\n * Get bounding client rect of given element\n */\nfunction getBoundingClientRect(element) {\n const rect = element.getBoundingClientRect();\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n if (rect && isNumber(rect.top) && isNumber(rect.left) && isNumber(rect.bottom) && isNumber(rect.right)) {\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n }\n }\n catch (e) {\n return rect;\n }\n if (!(rect && isNumber(rect.top) && isNumber(rect.left) && isNumber(rect.bottom) && isNumber(rect.right))) {\n return rect;\n }\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : undefined;\n const width = (sizes === null || sizes === void 0 ? void 0 : sizes.width) || element.clientWidth\n || isNumber(rect.right) && isNumber(result.left) && rect.right - result.left || 0;\n const height = (sizes === null || sizes === void 0 ? void 0 : sizes.height) || element.clientHeight\n || isNumber(rect.bottom) && isNumber(result.top) && rect.bottom - result.top || 0;\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n return getClientRect(result);\n}\n\n/**\n * Returns the parentNode or the host of the element\n */\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n */\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n default:\n }\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(String(overflow) + String(overflowY) + String(overflowX))) {\n return element;\n }\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Sum or subtract the element scroll values (left and top) from a given rect object\n */\nfunction includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n if (isNumber(rect.top)) {\n rect.top += scrollTop * modifier;\n }\n if (isNumber(rect.bottom)) {\n rect.bottom += scrollTop * modifier;\n }\n if (isNumber(rect.left)) {\n rect.left += scrollLeft * modifier;\n }\n if (isNumber(rect.right)) {\n rect.right += scrollLeft * modifier;\n }\n return rect;\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n var _a, _b, _c, _d, _e, _f;\n const isIE10 = isIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max((_a = parentRect.top) !== null && _a !== void 0 ? _a : 0, 0);\n parentRect.left = Math.max((_b = parentRect.left) !== null && _b !== void 0 ? _b : 0, 0);\n }\n let offsets = getClientRect({\n top: ((_c = childrenRect.top) !== null && _c !== void 0 ? _c : 0) - ((_d = parentRect.top) !== null && _d !== void 0 ? _d : 0) - borderTopWidth,\n left: ((_e = childrenRect.left) !== null && _e !== void 0 ? _e : 0) - ((_f = parentRect.left) !== null && _f !== void 0 ? _f : 0) - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n if (isNumber(offsets.top)) {\n offsets.top -= borderTopWidth - marginTop;\n }\n if (isNumber(offsets.bottom)) {\n offsets.bottom -= borderTopWidth - marginTop;\n }\n if (isNumber(offsets.left)) {\n offsets.left -= borderLeftWidth - marginLeft;\n }\n if (isNumber(offsets.right)) {\n offsets.right -= borderLeftWidth - marginLeft;\n }\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n if (isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n const offset = {\n top: scrollTop - Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.top) + Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.marginTop),\n left: scrollLeft - Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.left) + Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.marginLeft),\n width,\n height\n };\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n */\nfunction isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n\nfunction getBoundaries(target, host, padding = 0, boundariesElement, fixedPosition = false) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(host));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = target.ownerDocument.documentElement;\n }\n }\n else if (boundariesElement === 'window') {\n boundariesNode = target.ownerDocument.documentElement;\n }\n else {\n boundariesNode = boundariesElement;\n }\n const offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n // In case of HTML, we need a different computation\n if (offsets && boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(target.ownerDocument);\n if (isNumber(boundaries.top) && isNumber(offsets.top) && isNumber(offsets.marginTop)) {\n boundaries.top += offsets.top - offsets.marginTop;\n }\n if (isNumber(boundaries.top)) {\n boundaries.bottom = Number(height) + Number(offsets.top);\n }\n if (isNumber(boundaries.left) && isNumber(offsets.left) && isNumber(offsets.marginLeft)) {\n boundaries.left += offsets.left - offsets.marginLeft;\n }\n if (isNumber(boundaries.top)) {\n boundaries.right = Number(width) + Number(offsets.left);\n }\n }\n else if (offsets) {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n // Add paddings\n if (isNumber(boundaries.left)) {\n boundaries.left += padding;\n }\n if (isNumber(boundaries.top)) {\n boundaries.top += padding;\n }\n if (isNumber(boundaries.right)) {\n boundaries.right -= padding;\n }\n if (isNumber(boundaries.bottom)) {\n boundaries.bottom -= padding;\n }\n return boundaries;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n */\nfunction getArea({ width, height }) {\n return width * height;\n}\nfunction computeAutoPlacement(placement, refRect, target, host, allowedPositions = ['top', 'bottom', 'right', 'left'], boundariesElement = 'viewport', padding = 0) {\n var _a, _b, _c, _d;\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n const boundaries = getBoundaries(target, host, padding, boundariesElement);\n const rects = {\n top: {\n width: (_a = boundaries.width) !== null && _a !== void 0 ? _a : 0,\n height: refRect.top && boundaries.top ? refRect.top - boundaries.top : 0\n },\n right: {\n width: boundaries.right && refRect.right ? boundaries.right - refRect.right : 0,\n height: (_b = boundaries.height) !== null && _b !== void 0 ? _b : 0\n },\n bottom: {\n width: (_c = boundaries.width) !== null && _c !== void 0 ? _c : 0,\n height: boundaries.bottom && refRect.bottom ? boundaries.bottom - refRect.bottom : 0\n },\n left: {\n width: refRect.left && boundaries.left ? refRect.left - boundaries.left : 0,\n height: (_d = boundaries.height) !== null && _d !== void 0 ? _d : 0\n }\n };\n const sortedAreas = Object.keys(rects)\n .map((key) => (Object.assign(Object.assign({ key }, rects[key]), { area: getArea(rects[key]) })))\n .sort((a, b) => b.area - a.area);\n let filteredAreas = sortedAreas.filter(({ width, height }) => {\n return width >= target.clientWidth\n && height >= target.clientHeight;\n });\n filteredAreas = filteredAreas.filter((position) => {\n return allowedPositions\n .some((allowedPosition) => {\n return allowedPosition === position.key;\n });\n });\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n const variation = placement.split(' ')[1];\n // for tooltip on auto position\n target.className = target.className.replace(/bs-tooltip-auto/g, `bs-tooltip-${getBsVer().isBs5 ? PlacementForBs5[computedPlacement] : computedPlacement}`);\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n\nfunction getOffsets(data) {\n var _a, _b, _c, _d;\n return {\n width: data.offsets.target.width,\n height: data.offsets.target.height,\n left: Math.floor((_a = data.offsets.target.left) !== null && _a !== void 0 ? _a : 0),\n top: Math.round((_b = data.offsets.target.top) !== null && _b !== void 0 ? _b : 0),\n bottom: Math.round((_c = data.offsets.target.bottom) !== null && _c !== void 0 ? _c : 0),\n right: Math.floor((_d = data.offsets.target.right) !== null && _d !== void 0 ? _d : 0)\n };\n}\n\n/**\n * Get the opposite placement of the given one\n */\nfunction getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n\n/**\n * Get the opposite placement variation of the given one\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'right') {\n return 'left';\n }\n else if (variation === 'left') {\n return 'right';\n }\n return variation;\n}\n\nconst parse = (value, def = 0) => value ? parseFloat(value) : def;\nconst ɵ0 = parse;\nfunction getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window === null || window === void 0 ? void 0 : window.getComputedStyle(element);\n const x = parse(styles === null || styles === void 0 ? void 0 : styles.marginTop) + parse(styles === null || styles === void 0 ? void 0 : styles.marginBottom);\n const y = parse(styles === null || styles === void 0 ? void 0 : styles.marginLeft) + parse(styles === null || styles === void 0 ? void 0 : styles.marginRight);\n return {\n width: Number(element.offsetWidth) + y,\n height: Number(element.offsetHeight) + x\n };\n}\n\n/**\n * Get offsets to the reference element\n */\nfunction getReferenceOffsets(target, host, fixedPosition) {\n const commonOffsetParent = fixedPosition\n ? getFixedPositionOffsetParent(target)\n : findCommonOffsetParent(target, host);\n return getOffsetRectRelativeToArbitraryNode(host, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get offsets to the target\n */\nfunction getTargetOffsets(target, hostOffsets, position) {\n var _a, _b, _c;\n const placement = position.split(' ')[0];\n // Get target node sizes\n const targetRect = getOuterSizes(target);\n // Add position, width and height to our offsets object\n const targetOffsets = {\n width: targetRect.width,\n height: targetRect.height\n };\n // depending by the target placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n targetOffsets[mainSide] =\n ((_a = hostOffsets[mainSide]) !== null && _a !== void 0 ? _a : 0) +\n hostOffsets[measurement] / 2 -\n targetRect[measurement] / 2;\n targetOffsets[secondarySide] = placement === secondarySide\n ? ((_b = hostOffsets[secondarySide]) !== null && _b !== void 0 ? _b : 0) - targetRect[secondaryMeasurement]\n : (_c = hostOffsets[getOppositePlacement(secondarySide)]) !== null && _c !== void 0 ? _c : 0;\n return targetOffsets;\n}\n\nfunction isModifierEnabled(options, modifierName) {\n var _a;\n return !!((_a = options.modifiers[modifierName]) === null || _a === void 0 ? void 0 : _a.enabled);\n}\n\nconst availablePositions = {\n top: ['top', 'top start', 'top end'],\n bottom: ['bottom', 'bottom start', 'bottom end'],\n start: ['start', 'start top', 'start bottom'],\n end: ['end', 'end top', 'end bottom']\n};\nfunction checkPopoverMargin(placement, checkPosition) {\n if (!getBsVer().isBs5) {\n return false;\n }\n return availablePositions[checkPosition].includes(placement);\n}\nfunction checkMargins(placement) {\n if (!getBsVer().isBs5) {\n return '';\n }\n if (checkPopoverMargin(placement, 'end')) {\n return 'ms-2';\n }\n if (checkPopoverMargin(placement, 'start')) {\n return 'me-2';\n }\n if (checkPopoverMargin(placement, 'top')) {\n return 'mb-2';\n }\n if (checkPopoverMargin(placement, 'bottom')) {\n return 'mt-2';\n }\n return '';\n}\n\nfunction updateContainerClass(data, renderer) {\n const target = data.instance.target;\n let containerClass = target.className;\n const dataPlacement = getBsVer().isBs5 ? PlacementForBs5[data.placement] : data.placement;\n if (data.placementAuto) {\n containerClass = containerClass.replace(/bs-popover-auto/g, `bs-popover-${dataPlacement}`);\n containerClass = containerClass.replace(/ms-2|me-2|mb-2|mt-2/g, '');\n containerClass = containerClass.replace(/bs-tooltip-auto/g, `bs-tooltip-${dataPlacement}`);\n containerClass = containerClass.replace(/\\sauto/g, ` ${dataPlacement}`);\n if (containerClass.indexOf('popover') !== -1) {\n containerClass = containerClass + ' ' + checkMargins(dataPlacement);\n }\n if (containerClass.indexOf('popover') !== -1 && containerClass.indexOf('popover-auto') === -1) {\n containerClass += ' popover-auto';\n }\n if (containerClass.indexOf('tooltip') !== -1 && containerClass.indexOf('tooltip-auto') === -1) {\n containerClass += ' tooltip-auto';\n }\n }\n containerClass = containerClass.replace(/left|right|top|bottom|end|start/g, `${dataPlacement.split(' ')[0]}`);\n if (renderer) {\n renderer.setAttribute(target, 'class', containerClass);\n return;\n }\n target.className = containerClass;\n}\n\nfunction setStyles(element, styles, renderer) {\n if (!element || !styles) {\n return;\n }\n Object.keys(styles).forEach((prop) => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 &&\n isNumeric(styles[prop])) {\n unit = 'px';\n }\n if (renderer) {\n renderer.setStyle(element, prop, `${String(styles[prop])}${unit}`);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element.style[prop] = String(styles[prop]) + unit;\n });\n}\n\nfunction arrow(data) {\n var _a, _b, _c, _d, _e, _f;\n let targetOffsets = data.offsets.target;\n // if arrowElement is a string, suppose it's a CSS selector\n const arrowElement = data.instance.target.querySelector('.arrow');\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n const isVertical = ['left', 'right'].indexOf(data.placement.split(' ')[0]) !== -1;\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n const placementVariation = data.placement.split(' ')[1];\n // top/left side\n if (((_a = data.offsets.host[opSide]) !== null && _a !== void 0 ? _a : 0) - arrowElementSize < ((_b = targetOffsets[side]) !== null && _b !== void 0 ? _b : 0)) {\n (targetOffsets)[side] -=\n ((_c = targetOffsets[side]) !== null && _c !== void 0 ? _c : 0) - (((_d = data.offsets.host[opSide]) !== null && _d !== void 0 ? _d : 0) - arrowElementSize);\n }\n // bottom/right side\n if (Number((data).offsets.host[side]) + Number(arrowElementSize) > ((_e = targetOffsets[opSide]) !== null && _e !== void 0 ? _e : 0)) {\n (targetOffsets)[side] +=\n Number((data).offsets.host[side]) + Number(arrowElementSize) - Number((targetOffsets)[opSide]);\n }\n targetOffsets = getClientRect(targetOffsets);\n // Compute the sideValue using the updated target offsets\n // take target margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.target);\n const targetMarginSide = parseFloat(css[`margin${sideCapitalized}`]) || 0;\n const targetBorderSide = parseFloat(css[`border${sideCapitalized}Width`]) || 0;\n // compute center of the target\n let center;\n if (!placementVariation) {\n center = Number((data).offsets.host[side]) + Number(data.offsets.host[len] / 2 - arrowElementSize / 2);\n }\n else {\n const targetBorderRadius = parseFloat(css.borderRadius) || 0;\n const targetSideArrowOffset = Number(targetMarginSide + targetBorderSide + targetBorderRadius);\n center = side === placementVariation ?\n Number((data).offsets.host[side]) + targetSideArrowOffset :\n Number((data).offsets.host[side]) + Number(data.offsets.host[len] - targetSideArrowOffset);\n }\n let sideValue = center - ((_f = targetOffsets[side]) !== null && _f !== void 0 ? _f : 0) - targetMarginSide - targetBorderSide;\n // prevent arrowElement from being placed not contiguously to its target\n sideValue = Math.max(Math.min(targetOffsets[len] - (arrowElementSize + 5), sideValue), 0);\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '' // make sure to unset any eventual altSide value from the DOM node\n };\n data.instance.arrow = arrowElement;\n return data;\n}\n\nfunction flip(data) {\n data.offsets.target = getClientRect(data.offsets.target);\n if (!isModifierEnabled(data.options, 'flip')) {\n data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), getTargetOffsets(data.instance.target, data.offsets.host, data.placement));\n return data;\n }\n const boundaries = getBoundaries(data.instance.target, data.instance.host, 0, // padding\n 'viewport', false // positionFixed\n );\n let placement = data.placement.split(' ')[0];\n let variation = data.placement.split(' ')[1] || '';\n const offsetsHost = data.offsets.host;\n const target = data.instance.target;\n const host = data.instance.host;\n const adaptivePosition = computeAutoPlacement('auto', offsetsHost, target, host, data.options.allowedPositions);\n const flipOrder = [placement, adaptivePosition];\n flipOrder.forEach((step, index) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n if (placement !== step || flipOrder.length === index + 1) {\n return;\n }\n placement = data.placement.split(' ')[0];\n // using floor because the host offsets may contain decimals we are not going to consider here\n const overlapsRef = (placement === 'left' &&\n Math.floor((_a = data.offsets.target.right) !== null && _a !== void 0 ? _a : 0) > Math.floor((_b = data.offsets.host.left) !== null && _b !== void 0 ? _b : 0)) ||\n (placement === 'right' &&\n Math.floor((_c = data.offsets.target.left) !== null && _c !== void 0 ? _c : 0) < Math.floor((_d = data.offsets.host.right) !== null && _d !== void 0 ? _d : 0)) ||\n (placement === 'top' &&\n Math.floor((_e = data.offsets.target.bottom) !== null && _e !== void 0 ? _e : 0) > Math.floor((_f = data.offsets.host.top) !== null && _f !== void 0 ? _f : 0)) ||\n (placement === 'bottom' &&\n Math.floor((_g = data.offsets.target.top) !== null && _g !== void 0 ? _g : 0) < Math.floor((_h = data.offsets.host.bottom) !== null && _h !== void 0 ? _h : 0));\n const overflowsLeft = Math.floor((_j = data.offsets.target.left) !== null && _j !== void 0 ? _j : 0) < Math.floor((_k = boundaries.left) !== null && _k !== void 0 ? _k : 0);\n const overflowsRight = Math.floor((_l = data.offsets.target.right) !== null && _l !== void 0 ? _l : 0) > Math.floor((_m = boundaries.right) !== null && _m !== void 0 ? _m : 0);\n const overflowsTop = Math.floor((_o = data.offsets.target.top) !== null && _o !== void 0 ? _o : 0) < Math.floor((_p = boundaries.top) !== null && _p !== void 0 ? _p : 0);\n const overflowsBottom = Math.floor((_q = data.offsets.target.bottom) !== null && _q !== void 0 ? _q : 0) > Math.floor((_r = boundaries.bottom) !== null && _r !== void 0 ? _r : 0);\n const overflowsBoundaries = (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation = ((isVertical && variation === 'left' && overflowsLeft) ||\n (isVertical && variation === 'right' && overflowsRight) ||\n (!isVertical && variation === 'left' && overflowsTop) ||\n (!isVertical && variation === 'right' && overflowsBottom));\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n data.placement = placement + (variation ? ` ${variation}` : '');\n data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), getTargetOffsets(data.instance.target, data.offsets.host, data.placement));\n }\n });\n return data;\n}\n\nfunction initData(targetElement, hostElement, position, options) {\n if (!targetElement || !hostElement) {\n return;\n }\n const hostElPosition = getReferenceOffsets(targetElement, hostElement);\n if (!position.match(/^(auto)*\\s*(left|right|top|bottom|start|end)*$/)\n && !position.match(/^(left|right|top|bottom|start|end)*(?: (left|right|top|bottom|start|end))*$/)) {\n position = 'auto';\n }\n const placementAuto = !!position.match(/auto/g);\n // support old placements 'auto left|right|top|bottom'\n let placement = position.match(/auto\\s(left|right|top|bottom|start|end)/)\n ? position.split(' ')[1] || 'auto'\n : position;\n // Normalize placements that have identical main placement and variation (\"right right\" => \"right\").\n const matches = placement.match(/^(left|right|top|bottom|start|end)* ?(?!\\1)(left|right|top|bottom|start|end)?/);\n if (matches) {\n placement = matches[1] + (matches[2] ? ` ${matches[2]}` : '');\n }\n // \"left right\", \"top bottom\" etc. placements also considered incorrect.\n if (['left right', 'right left', 'top bottom', 'bottom top'].indexOf(placement) !== -1) {\n placement = 'auto';\n }\n placement = computeAutoPlacement(placement, hostElPosition, targetElement, hostElement, options ? options.allowedPositions : undefined);\n const targetOffset = getTargetOffsets(targetElement, hostElPosition, placement);\n return {\n options: options || { modifiers: {} },\n instance: {\n target: targetElement,\n host: hostElement,\n arrow: void 0\n },\n offsets: {\n target: targetOffset,\n host: hostElPosition,\n arrow: void 0\n },\n positionFixed: false,\n placement,\n placementAuto\n };\n}\n\nfunction preventOverflow(data) {\n var _a;\n if (!isModifierEnabled(data.options, 'preventOverflow')) {\n return data;\n }\n // NOTE: DOM access here\n // resets the target Offsets's position so that the document size can be calculated excluding\n // the size of the targetOffsets element itself\n const transformProp = 'transform';\n const targetStyles = data.instance.target.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = targetStyles;\n targetStyles.top = '';\n targetStyles.left = '';\n targetStyles[transformProp] = '';\n const boundaries = getBoundaries(data.instance.target, data.instance.host, 0, // padding\n ((_a = data.options.modifiers.preventOverflow) === null || _a === void 0 ? void 0 : _a.boundariesElement) || 'scrollParent', false // positionFixed\n );\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n targetStyles.top = top;\n targetStyles.left = left;\n targetStyles[transformProp] = transform;\n const order = ['left', 'right', 'top', 'bottom'];\n const check = {\n primary(placement) {\n var _a, _b, _c, _d;\n let value = data.offsets.target[placement];\n // options.escapeWithReference\n if (((_a = data.offsets.target[placement]) !== null && _a !== void 0 ? _a : 0) < ((_b = boundaries[placement]) !== null && _b !== void 0 ? _b : 0)) {\n value = Math.max((_c = data.offsets.target[placement]) !== null && _c !== void 0 ? _c : 0, (_d = boundaries[placement]) !== null && _d !== void 0 ? _d : 0);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = data.offsets.target[mainSide];\n // escapeWithReference\n if (((_a = data.offsets.target[placement]) !== null && _a !== void 0 ? _a : 0) < ((_b = boundaries[placement]) !== null && _b !== void 0 ? _b : 0) && placement !== 'right') {\n value = Math.min((_c = data.offsets.target[mainSide]) !== null && _c !== void 0 ? _c : 0, ((_d = boundaries[placement]) !== null && _d !== void 0 ? _d : 0) - data.offsets.target.height);\n }\n if (((_e = data.offsets.target[placement]) !== null && _e !== void 0 ? _e : 0) > ((_f = boundaries[placement]) !== null && _f !== void 0 ? _f : 0) && placement === 'right') {\n value = Math.min((_g = data.offsets.target[mainSide]) !== null && _g !== void 0 ? _g : 0, ((_h = boundaries[placement]) !== null && _h !== void 0 ? _h : 0) - data.offsets.target.width);\n }\n return { [mainSide]: value };\n }\n };\n order.forEach((placement) => {\n const side = ['left', 'top', 'start'].indexOf(placement) !== -1 ? check['primary'] : check['secondary'];\n data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), side(placement));\n });\n return data;\n}\n\nfunction shift(data) {\n var _a;\n const placement = data.placement;\n const basePlacement = placement.split(' ')[0];\n const shiftVariation = placement.split(' ')[1];\n if (shiftVariation) {\n const { host, target } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n const shiftOffsets = {\n start: { [side]: host[side] },\n end: {\n [side]: ((_a = host[side]) !== null && _a !== void 0 ? _a : 0) + host[measurement] - target[measurement]\n }\n };\n data.offsets.target = Object.assign(Object.assign({}, target), {\n [side]: (side === shiftVariation ? shiftOffsets.start[side] : shiftOffsets.end[side])\n });\n }\n return data;\n}\n\nclass Positioning {\n position(hostElement, targetElement /*, round = true*/) {\n return this.offset(hostElement, targetElement /*, false*/);\n }\n offset(hostElement, targetElement /*, round = true*/) {\n return getReferenceOffsets(targetElement, hostElement);\n }\n positionElements(hostElement, targetElement, position, appendToBody, options) {\n const chainOfModifiers = [flip, shift, preventOverflow, arrow];\n const _position = MapPlacementInToRL[position];\n const data = initData(targetElement, hostElement, _position, options);\n if (!data) {\n return;\n }\n return chainOfModifiers.reduce((modifiedData, modifier) => modifier(modifiedData), data);\n }\n}\nconst positionService = new Positioning();\nfunction positionElements(hostElement, targetElement, placement, appendToBody, options, renderer) {\n const data = positionService.positionElements(hostElement, targetElement, placement, appendToBody, options);\n if (!data) {\n return;\n }\n const offsets = getOffsets(data);\n setStyles(targetElement, {\n 'will-change': 'transform',\n top: '0px',\n left: '0px',\n transform: `translate3d(${offsets.left}px, ${offsets.top}px, 0px)`\n }, renderer);\n if (data.instance.arrow) {\n setStyles(data.instance.arrow, data.offsets.arrow, renderer);\n }\n updateContainerClass(data, renderer);\n}\n\nclass PositioningService {\n constructor(ngZone, rendererFactory, platformId) {\n this.update$$ = new Subject();\n this.positionElements = new Map();\n this.isDisabled = false;\n if (isPlatformBrowser(platformId)) {\n ngZone.runOutsideAngular(() => {\n this.triggerEvent$ = merge(fromEvent(window, 'scroll', { passive: true }), fromEvent(window, 'resize', { passive: true }), of(0, animationFrameScheduler), this.update$$);\n this.triggerEvent$.subscribe(() => {\n if (this.isDisabled) {\n return;\n }\n this.positionElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach((positionElement) => {\n positionElements(_getHtmlElement(positionElement.target), _getHtmlElement(positionElement.element), positionElement.attachment, positionElement.appendToBody, this.options, rendererFactory.createRenderer(null, null));\n });\n });\n });\n }\n }\n position(options) {\n this.addPositionElement(options);\n }\n get event$() {\n return this.triggerEvent$;\n }\n disable() {\n this.isDisabled = true;\n }\n enable() {\n this.isDisabled = false;\n }\n addPositionElement(options) {\n this.positionElements.set(_getHtmlElement(options.element), options);\n }\n calcPosition() {\n this.update$$.next();\n }\n deletePositionElement(elRef) {\n this.positionElements.delete(_getHtmlElement(elRef));\n }\n setOptions(options) {\n this.options = options;\n }\n}\nPositioningService.ɵfac = function PositioningService_Factory(t) { return new (t || PositioningService)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2), ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nPositioningService.ɵprov = ɵɵdefineInjectable({ factory: function PositioningService_Factory() { return new PositioningService(ɵɵinject(NgZone), ɵɵinject(RendererFactory2), ɵɵinject(PLATFORM_ID)); }, token: PositioningService, providedIn: \"root\" });\nPositioningService.ctorParameters = () => [\n { type: NgZone },\n { type: RendererFactory2 },\n { type: Number, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PositioningService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.NgZone }, { type: ɵngcc0.RendererFactory2 }, { type: Number, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\nfunction _getHtmlElement(element) {\n // it means that we got a selector\n if (typeof element === 'string') {\n return document.querySelector(element);\n }\n if (element instanceof ElementRef) {\n return element.nativeElement;\n }\n return element !== null && element !== void 0 ? element : null;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PlacementForBs5, Positioning, PositioningService, checkMargins, positionElements };\n\n","import { isDevMode } from '@angular/core';\n\n/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nclass Trigger {\n constructor(open, close) {\n this.open = open;\n this.close = close || open;\n }\n isManual() {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger) => trigger.split(':'))\n .map((triggerPair) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n const manualTriggers = parsedTriggers.filter((triggerPair) => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n return parsedTriggers;\n}\nfunction listenToTriggers(renderer, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntarget, triggers, showFn, hideFn, toggleFn) {\n const parsedTriggers = parseTriggers(triggers);\n const listeners = [];\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n parsedTriggers.forEach((trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n return;\n }\n listeners.push(renderer.listen(target, trigger.open, showFn));\n if (trigger.close) {\n listeners.push(renderer.listen(target, trigger.close, hideFn));\n }\n });\n return () => {\n listeners.forEach((unsubscribeFn) => unsubscribeFn());\n };\n}\nfunction listenToTriggersV2(renderer, options) {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n // all listeners\n const listeners = [];\n // lazy listeners registration\n const _registerHide = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n if (!useToggle && trigger.close && options.hide) {\n const _hide = renderer.listen(target, trigger.close, options.hide);\n _registerHide.push(() => _hide);\n }\n if (showFn) {\n listeners.push(renderer.listen(target, trigger.open, () => showFn(registerHide)));\n }\n });\n return () => {\n listeners.forEach((unsubscribeFn) => unsubscribeFn());\n };\n}\nfunction registerOutsideClick(renderer, options) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return renderer.listen('document', 'click', (event) => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (options.targets &&\n options.targets.some(target => target.contains(event.target))) {\n return;\n }\n if (options.hide) {\n options.hide();\n }\n });\n}\nfunction registerEscClick(renderer, options) {\n if (!options.outsideEsc) {\n return Function.prototype;\n }\n return renderer.listen('document', 'keyup.esc', (event) => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (options.targets &&\n options.targets.some(target => target.contains(event.target))) {\n return;\n }\n if (options.hide) {\n options.hide();\n }\n });\n}\n\n/**\n * @license\n * Copyright Google Inc. 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 * JS version of browser APIs. This library can only run in the browser.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst win = (typeof window !== 'undefined' && window) || {};\nconst document = win.document;\nconst location = win.location;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst gc = win.gc ? () => win.gc() : () => null;\nconst performance = win.performance ? win.performance : null;\nconst Event = win.Event;\nconst MouseEvent = win.MouseEvent;\nconst KeyboardEvent = win.KeyboardEvent;\nconst EventTarget = win.EventTarget;\nconst History = win.History;\nconst Location = win.Location;\nconst EventListener = win.EventListener;\n\nvar BsVerions;\n(function (BsVerions) {\n BsVerions[\"isBs3\"] = \"bs3\";\n BsVerions[\"isBs4\"] = \"bs4\";\n BsVerions[\"isBs5\"] = \"bs5\";\n})(BsVerions || (BsVerions = {}));\nlet guessedVersion;\nfunction _guessBsVersion() {\n if (typeof win.document === 'undefined') {\n return 'bs4';\n }\n const spanEl = win.document.createElement('span');\n spanEl.innerText = 'testing bs version';\n spanEl.classList.add('d-none');\n spanEl.classList.add('visually-hidden');\n win.document.head.appendChild(spanEl);\n const rect = spanEl.getBoundingClientRect();\n const overflowStyle = win.getComputedStyle(spanEl).overflow;\n win.document.head.removeChild(spanEl);\n if (!rect || (rect && rect.top !== 0)) {\n return 'bs3';\n }\n if (overflowStyle && overflowStyle === 'hidden') {\n return 'bs5';\n }\n return 'bs4';\n}\nfunction setTheme(theme) {\n guessedVersion = theme;\n}\n// todo: in ngx-bootstrap, bs4 will became a default one\nfunction isBs3() {\n if (typeof win === 'undefined') {\n return true;\n }\n if (typeof win.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs3';\n }\n return win.__theme === 'bs3';\n}\nfunction isBs4() {\n if (isBs3())\n return false;\n if (guessedVersion)\n return guessedVersion === 'bs4';\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs4';\n}\nfunction isBs5() {\n if (isBs3() || isBs4())\n return false;\n if (guessedVersion)\n return guessedVersion === 'bs5';\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs5';\n}\nfunction getBsVer() {\n return {\n isBs3: isBs3(),\n isBs4: isBs4(),\n isBs5: isBs5()\n };\n}\nfunction currentBsVersion() {\n const bsVer = getBsVer();\n const resVersion = Object.keys(bsVer).find(key => bsVer[key]);\n return BsVerions[resVersion];\n}\n\nclass LinkedList {\n constructor() {\n this.length = 0;\n this.asArray = [];\n // Array methods overriding END\n }\n get(position) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current === null || current === void 0 ? void 0 : current.next;\n }\n return current === null || current === void 0 ? void 0 : current.value;\n }\n add(value, position = this.length) {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n const node = {\n value,\n next: undefined,\n previous: undefined\n };\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n }\n else {\n if (position === 0 && this.head) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n }\n else if (position === this.length && this.tail) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n }\n else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode === null || currentPreviousNode === void 0 ? void 0 : currentPreviousNode.next;\n if (currentPreviousNode && currentNextNode) {\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n remove(position = 0) {\n var _a;\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n if (position === 0 && this.head) {\n // first node\n this.head = this.head.next;\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n }\n else {\n // there is no second node\n this.tail = undefined;\n }\n }\n else if (position === this.length - 1 && ((_a = this.tail) === null || _a === void 0 ? void 0 : _a.previous)) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n }\n else {\n // middle node\n const removedNode = this.getNode(position);\n if ((removedNode === null || removedNode === void 0 ? void 0 : removedNode.next) && removedNode.previous) {\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n }\n this.length--;\n this.createInternalArrayRepresentation();\n }\n set(position, value) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n const node = this.getNode(position);\n if (node) {\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n }\n toArray() {\n return this.asArray;\n }\n findAll(fn) {\n let current = this.head;\n const result = [];\n if (!current) {\n return result;\n }\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return result;\n }\n if (fn(current.value, index)) {\n result.push({ index, value: current.value });\n }\n current = current.next;\n }\n return result;\n }\n // Array methods overriding start\n push(...args) {\n args.forEach((arg) => {\n this.add(arg);\n });\n return this.length;\n }\n pop() {\n if (this.length === 0) {\n return;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n return last === null || last === void 0 ? void 0 : last.value;\n }\n unshift(...args) {\n args.reverse();\n args.forEach((arg) => {\n this.add(arg, 0);\n });\n return this.length;\n }\n shift() {\n var _a;\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = (_a = this.head) === null || _a === void 0 ? void 0 : _a.value;\n this.remove();\n return lastItem;\n }\n forEach(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return;\n }\n fn(current.value, index);\n current = current.next;\n }\n }\n indexOf(value) {\n let current = this.head;\n let position = -1;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return position;\n }\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n return position;\n }\n some(fn) {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n return result;\n }\n every(fn) {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n return result;\n }\n toString() {\n return '[Linked List]';\n }\n find(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return;\n }\n if (fn(current.value, index)) {\n return current.value;\n }\n current = current.next;\n }\n }\n findIndex(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return -1;\n }\n if (fn(current.value, index)) {\n return index;\n }\n current = current.next;\n }\n return -1;\n }\n getNode(position) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current === null || current === void 0 ? void 0 : current.next;\n }\n return current;\n }\n createInternalArrayRepresentation() {\n const outArray = [];\n let current = this.head;\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction OnChange() {\n const sufix = 'Change';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function OnChangeHandler(target, propertyKey) {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get() {\n return this[_key];\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(value) {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n\nclass Utils {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static reflow(element) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((bs) => bs)(element.offsetHeight);\n }\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = win;\n }\n return view.getComputedStyle(elem);\n }\n static stackOverflowConfig() {\n const bsVer = currentBsVersion();\n return {\n crossorigin: bsVer !== 'bs3' ? \"anonymous\" : undefined,\n integrity: bsVer === 'bs5' ? 'sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We' : bsVer === 'bs4' ? 'sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2' : undefined,\n cdnLink: bsVer === 'bs5' ? 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css' : bsVer === 'bs4' ? 'https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css' : 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css',\n };\n }\n}\n\nconst _messagesHash = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\nfunction warnOnce(msg) {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n _messagesHash[msg] = true;\n console.warn(msg);\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsVerions, LinkedList, OnChange, Trigger, Utils, currentBsVersion, document, getBsVer, isBs3, listenToTriggers, listenToTriggersV2, parseTriggers, registerEscClick, registerOutsideClick, setTheme, warnOnce, win as window, isBs4 as ɵa, isBs5 as ɵb };\n\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 (b.hasOwnProperty(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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, Output, Input, Injectable, ContentChildren, ContentChild, HostListener, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { trigger, state, style, transition, animate, keyframes } from '@angular/animations';\n\nclass Ng2DropdownButton {\n constructor(element) {\n this.element = element;\n this.onMenuToggled = new EventEmitter();\n this.showCaret = true;\n }\n /**\n * @name toggleMenu\n * @desc emits event to toggle menu\n */\n toggleMenu() {\n this.onMenuToggled.emit(true);\n }\n /**\n * @name getPosition\n * @desc returns position of the button\n */\n getPosition() {\n return this.element.nativeElement.getBoundingClientRect();\n }\n}\nNg2DropdownButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownButton, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNg2DropdownButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: Ng2DropdownButton, selector: \"ng2-dropdown-button\", inputs: { showCaret: \"showCaret\" }, outputs: { onMenuToggled: \"onMenuToggled\" }, ngImport: i0, template: \"\\n\", styles: [\".ng2-dropdown-button{font-family:Roboto,Helvetica Neue,Helvetica,Arial;background:#fff;padding:.45rem .25rem;font-size:14px;letter-spacing:.08rem;color:#444;outline:0;cursor:pointer;font-weight:400;border:none;border-bottom:1px solid #efefef;text-align:left;min-width:100px;width:100%;display:flex;flex-direction:row;max-width:150px}.ng2-dropdown-button:hover{color:#222}.ng2-dropdown-button:active,.ng2-dropdown-button:focus{color:#222;border-bottom:2px solid #2196F3}.ng2-dropdown-button__label{flex:1 1 95%}.ng2-dropdown-button__caret{width:12px;height:12px;display:flex;flex:1 1 6%}:host-context(.ng2-dropdown-button--icon) .ng2-dropdown-button{border:none;min-width:40px;width:40px;border-radius:100%;transition:all .2s;text-align:center;height:40px;padding:.5em}:host-context(.ng2-dropdown-button--icon) .ng2-dropdown-button:active{background:rgba(0,0,0,.2)}\\n\"], directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownButton, decorators: [{\n type: Component,\n args: [{ selector: 'ng2-dropdown-button', template: \"\\n\", styles: [\".ng2-dropdown-button{font-family:Roboto,Helvetica Neue,Helvetica,Arial;background:#fff;padding:.45rem .25rem;font-size:14px;letter-spacing:.08rem;color:#444;outline:0;cursor:pointer;font-weight:400;border:none;border-bottom:1px solid #efefef;text-align:left;min-width:100px;width:100%;display:flex;flex-direction:row;max-width:150px}.ng2-dropdown-button:hover{color:#222}.ng2-dropdown-button:active,.ng2-dropdown-button:focus{color:#222;border-bottom:2px solid #2196F3}.ng2-dropdown-button__label{flex:1 1 95%}.ng2-dropdown-button__caret{width:12px;height:12px;display:flex;flex:1 1 6%}:host-context(.ng2-dropdown-button--icon) .ng2-dropdown-button{border:none;min-width:40px;width:40px;border-radius:100%;transition:all .2s;text-align:center;height:40px;padding:.5em}:host-context(.ng2-dropdown-button--icon) .ng2-dropdown-button:active{background:rgba(0,0,0,.2)}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onMenuToggled: [{\n type: Output\n }], showCaret: [{\n type: Input\n }] } });\n\nconst KEYS = {\n BACKSPACE: 9,\n PREV: 38,\n NEXT: 40,\n ENTER: 13,\n ESCAPE: 27\n};\n/**\n * @name onSwitchNext\n * @param index\n * @param items\n * @param state\n */\nconst onSwitchNext = (index, items, state) => {\n if (index < items.length - 1) {\n state.select(items[index + 1], true);\n }\n};\n/**\n * @name onSwitchPrev\n * @param index\n * @param items\n * @param state\n */\nconst onSwitchPrev = (index, items, state) => {\n if (index > 0) {\n state.select(items[index - 1], true);\n }\n};\n/**\n * @name onBackspace\n * @param index\n * @param items\n * @param state\n */\nconst onBackspace = (index, items, state) => {\n if (index < items.length - 1) {\n state.select(items[index + 1], true);\n }\n else {\n state.select(items[0], true);\n }\n};\nfunction onEscape() {\n this.hide();\n}\n;\n/**\n * @name onItemClicked\n * @param index\n * @param items\n * @param state\n */\nconst onItemClicked = (index, items, state) => {\n return state.selectedItem ? state.selectedItem.click() : undefined;\n};\nconst ACTIONS = {\n [KEYS.BACKSPACE]: onBackspace,\n [KEYS.PREV]: onSwitchPrev,\n [KEYS.NEXT]: onSwitchNext,\n [KEYS.ENTER]: onItemClicked,\n [KEYS.ESCAPE]: onEscape\n};\nfunction arrowKeysHandler(event) {\n if ([38, 40].indexOf(event.keyCode) > -1) {\n event.preventDefault();\n }\n}\n\nclass Ng2DropdownState {\n constructor() {\n this.onItemSelected = new EventEmitter();\n this.onItemClicked = new EventEmitter();\n this.onItemDestroyed = new EventEmitter();\n }\n /**\n * @name selectedItem\n * @desc getter for _selectedItem\n */\n get selectedItem() {\n return this._selectedItem;\n }\n /**\n * @name selects a menu item and emits event\n * @param item\n */\n select(item, dispatchEvent = true) {\n this._selectedItem = item;\n if (!dispatchEvent || !item) {\n return;\n }\n item.focus();\n this.onItemSelected.emit(item);\n }\n /**\n * @name unselect\n * @desc sets _selectedItem as undefined\n */\n unselect() {\n this._selectedItem = undefined;\n }\n}\n\nclass DropdownStateService {\n constructor() {\n this.menuState = {\n isVisible: false,\n toString() {\n return this.isVisible === true ? 'visible' : 'hidden';\n }\n };\n this.dropdownState = new Ng2DropdownState();\n }\n}\nDropdownStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DropdownStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDropdownStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DropdownStateService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DropdownStateService, decorators: [{\n type: Injectable\n }] });\n\nclass Ng2MenuItem {\n constructor(state, element) {\n this.state = state;\n this.element = element;\n /**\n * @preventClose\n * @desc if true, clicking on the item won't close the dropdown\n */\n this.preventClose = false;\n }\n ngOnDestroy() {\n this.state.dropdownState.onItemDestroyed.emit(this);\n }\n /**\n * @name isSelected\n * @desc returns current selected item\n */\n get isSelected() {\n return this === this.state.dropdownState.selectedItem;\n }\n /**\n * @name click\n * @desc emits select event\n */\n select($event) {\n this.state.dropdownState.select(this, true);\n if ($event) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n /**\n * @name click\n * @desc emits click event\n */\n click() {\n this.state.dropdownState.onItemClicked.emit(this);\n }\n /**\n * @name focus\n */\n focus() {\n this.element.nativeElement.children[0].focus();\n }\n}\nNg2MenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2MenuItem, deps: [{ token: DropdownStateService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNg2MenuItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: Ng2MenuItem, selector: \"ng2-menu-item\", inputs: { preventClose: \"preventClose\", value: \"value\" }, ngImport: i0, template: `\n \n \n \n `, isInline: true, styles: [\".ng2-menu-item{font-family:Roboto,Helvetica Neue,Helvetica,Arial;background:#fff;color:#000000de;cursor:pointer;font-size:.9em;text-transform:none;font-weight:400;letter-spacing:.03em;height:48px;line-height:48px;padding:.3em 1.25rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;transition:background .25s}.ng2-menu-item--selected{background:rgba(158,158,158,.2);outline:0}.ng2-menu-item:focus{outline:0}.ng2-menu-item:active{background:rgba(158,158,158,.4)}:host(ng2-menu-item) ::ng-deep [ng2-menu-item-icon]{vertical-align:middle;font-size:28px;width:1.5em;height:30px;color:#00000070}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2MenuItem, decorators: [{\n type: Component,\n args: [{ selector: 'ng2-menu-item', template: `\n \n \n \n `, styles: [\".ng2-menu-item{font-family:Roboto,Helvetica Neue,Helvetica,Arial;background:#fff;color:#000000de;cursor:pointer;font-size:.9em;text-transform:none;font-weight:400;letter-spacing:.03em;height:48px;line-height:48px;padding:.3em 1.25rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;transition:background .25s}.ng2-menu-item--selected{background:rgba(158,158,158,.2);outline:0}.ng2-menu-item:focus{outline:0}.ng2-menu-item:active{background:rgba(158,158,158,.4)}:host(ng2-menu-item) ::ng-deep [ng2-menu-item-icon]{vertical-align:middle;font-size:28px;width:1.5em;height:30px;color:#00000070}\\n\"] }]\n }], ctorParameters: function () { return [{ type: DropdownStateService }, { type: i0.ElementRef }]; }, propDecorators: { preventClose: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\nclass Ng2DropdownMenu {\n constructor(dropdownState, element, renderer) {\n this.dropdownState = dropdownState;\n this.element = element;\n this.renderer = renderer;\n /**\n * @name width\n */\n this.width = 4;\n /**\n * @description if set to true, the first element of the dropdown will be automatically focused\n * @name focusFirstElement\n */\n this.focusFirstElement = true;\n /**\n * @name appendToBody\n */\n this.appendToBody = true;\n /**\n * @name zIndex\n */\n this.zIndex = 1000;\n this.listeners = {\n arrowHandler: undefined,\n handleKeypress: undefined\n };\n }\n /**\n * @name show\n * @shows menu and selects first item\n */\n show(position, dynamic = true) {\n const dc = typeof document !== 'undefined' ? document : undefined;\n const wd = typeof window !== 'undefined' ? window : undefined;\n if (!this.dropdownState.menuState.isVisible) {\n // setting handlers\n this.listeners.handleKeypress = this.renderer.listen(dc.body, 'keydown', this.handleKeypress.bind(this));\n this.listeners.arrowHandler = this.renderer.listen(wd, 'keydown', arrowKeysHandler);\n }\n // update state\n this.dropdownState.menuState.isVisible = true;\n if (position) {\n this.updatePosition(position, dynamic);\n }\n }\n /**\n * @name hide\n * @desc hides menu\n */\n hide() {\n this.dropdownState.menuState.isVisible = false;\n // reset selected item state\n this.dropdownState.dropdownState.unselect();\n // call function to unlisten\n this.listeners.arrowHandler && this.listeners.arrowHandler();\n this.listeners.handleKeypress && this.listeners.handleKeypress();\n }\n /**\n * @name updatePosition\n * @desc updates the menu position every time it is toggled\n * @param position {ClientRect}\n * @param dynamic {boolean}\n */\n updatePosition(position, dynamic) {\n this.position = position;\n this.updateOnChange(dynamic);\n }\n /**\n * @name handleKeypress\n * @desc executes functions on keyPress based on the key pressed\n * @param $event\n */\n handleKeypress($event) {\n const key = $event.keyCode;\n const items = this.items.toArray();\n const index = items.indexOf(this.dropdownState.dropdownState.selectedItem);\n if (!ACTIONS.hasOwnProperty(key)) {\n return;\n }\n ACTIONS[key].call(this, index, items, this.dropdownState.dropdownState);\n }\n /**\n * @name getMenuElement\n */\n getMenuElement() {\n return this.element.nativeElement.children[0];\n }\n /**\n * @name calcPositionOffset\n * @param position\n */\n calcPositionOffset(position) {\n const wd = typeof window !== 'undefined' ? window : undefined;\n const dc = typeof document !== 'undefined' ? document : undefined;\n if (!wd || !dc || !position) {\n return;\n }\n const element = this.getMenuElement();\n const supportPageOffset = wd.pageXOffset !== undefined;\n const isCSS1Compat = (dc.compatMode || '') === 'CSS1Compat';\n const x = supportPageOffset\n ? wd.pageXOffset\n : isCSS1Compat\n ? dc.documentElement.scrollLeft\n : dc.body.scrollLeft;\n const y = supportPageOffset\n ? wd.pageYOffset\n : isCSS1Compat\n ? dc.documentElement.scrollTop\n : dc.body.scrollTop;\n let { top, left } = this.applyOffset(`${position.top + (this.appendToBody ? y - 15 : 0)}px`, `${position.left + x - 5}px`);\n const clientWidth = element.clientWidth;\n const clientHeight = element.clientHeight;\n const marginFromBottom = parseInt(top) + clientHeight + (this.appendToBody ? 0 : y - 15);\n const marginFromRight = parseInt(left) + clientWidth;\n const windowScrollHeight = wd.innerHeight + wd.scrollY;\n const windowScrollWidth = wd.innerWidth + wd.scrollX;\n if (marginFromBottom >= windowScrollHeight) {\n top = `${parseInt(top.replace('px', '')) - clientHeight}px`;\n }\n if (marginFromRight >= windowScrollWidth) {\n const marginRight = marginFromRight - windowScrollWidth + 30;\n left = `${parseInt(left.replace('px', '')) - marginRight}px`;\n }\n return { top, left };\n }\n applyOffset(top, left) {\n if (!this.offset) {\n return { top, left };\n }\n const offset = this.offset.split(' ');\n if (!offset[1]) {\n offset[1] = '0';\n }\n top = `${parseInt(top.replace('px', '')) + parseInt(offset[0])}px`;\n left = `${parseInt(left.replace('px', '')) + parseInt(offset[1])}px`;\n return { top, left };\n }\n ngOnInit() {\n const dc = typeof document !== 'undefined' ? document : undefined;\n if (this.appendToBody) {\n // append menu element to the body\n dc.body.appendChild(this.element.nativeElement);\n }\n }\n updateOnChange(dynamic = true) {\n const element = this.getMenuElement();\n const position = this.calcPositionOffset(this.position);\n if (position) {\n this.renderer.setStyle(element, 'top', position.top.toString());\n this.renderer.setStyle(element, 'left', position.left.toString());\n }\n // select first item unless user disabled this option\n if (this.focusFirstElement &&\n this.items.first &&\n !this.dropdownState.dropdownState.selectedItem) {\n this.dropdownState.dropdownState.select(this.items.first, false);\n }\n }\n ngOnDestroy() {\n const elem = this.element.nativeElement;\n elem.parentNode.removeChild(elem);\n if (this.listeners.handleKeypress) {\n this.listeners.handleKeypress();\n }\n }\n}\nNg2DropdownMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownMenu, deps: [{ token: DropdownStateService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nNg2DropdownMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: Ng2DropdownMenu, selector: \"ng2-dropdown-menu\", inputs: { width: \"width\", focusFirstElement: \"focusFirstElement\", offset: \"offset\", appendToBody: \"appendToBody\", zIndex: \"zIndex\" }, queries: [{ propertyName: \"items\", predicate: Ng2MenuItem, descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n\n \n \n `, isInline: true, styles: [\":host{display:block}.ng2-dropdown-menu{overflow-y:auto;box-shadow:0 1px 2px #0000004d;position:absolute;padding:.5em 0;background:#fff;border-radius:1px;max-height:400px;width:260px;min-height:0;display:block}.ng2-dropdown-menu.ng2-dropdown-menu--inside-element{position:fixed}.ng2-dropdown-menu.ng2-dropdown-menu--width--2{width:200px}.ng2-dropdown-menu.ng2-dropdown-menu--width--4{width:260px}.ng2-dropdown-menu.ng2-dropdown-menu--width--6{width:320px}.ng2-dropdown-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;overflow:hidden}:host ::ng-deep .ng2-menu-divider{height:1px;min-height:1px;max-height:1px;width:100%;display:block;background:#f9f9f9}\\n\"], directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('fade', [\n state('visible', style({ opacity: 1, height: '*', width: '*' })),\n state('hidden', style({ opacity: 0, overflow: 'hidden', height: 0, width: 0 })),\n transition('hidden => visible', [\n animate('250ms ease-in', style({ opacity: 1, height: '*', width: '*' }))\n ]),\n transition('visible => hidden', [\n animate('350ms ease-out', style({ opacity: 0, width: 0, height: 0 }))\n ])\n ]),\n trigger('opacity', [\n transition('hidden => visible', [\n animate('450ms ease-in', keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 1, offset: 1 })\n ]))\n ]),\n transition('visible => hidden', [\n animate('250ms ease-out', keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.5, offset: 0.3 }),\n style({ opacity: 0, offset: 1 })\n ]))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownMenu, decorators: [{\n type: Component,\n args: [{ selector: 'ng2-dropdown-menu', template: `\n \n \n \n \n \n \n\n \n \n `, animations: [\n trigger('fade', [\n state('visible', style({ opacity: 1, height: '*', width: '*' })),\n state('hidden', style({ opacity: 0, overflow: 'hidden', height: 0, width: 0 })),\n transition('hidden => visible', [\n animate('250ms ease-in', style({ opacity: 1, height: '*', width: '*' }))\n ]),\n transition('visible => hidden', [\n animate('350ms ease-out', style({ opacity: 0, width: 0, height: 0 }))\n ])\n ]),\n trigger('opacity', [\n transition('hidden => visible', [\n animate('450ms ease-in', keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 1, offset: 1 })\n ]))\n ]),\n transition('visible => hidden', [\n animate('250ms ease-out', keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.5, offset: 0.3 }),\n style({ opacity: 0, offset: 1 })\n ]))\n ])\n ])\n ], styles: [\":host{display:block}.ng2-dropdown-menu{overflow-y:auto;box-shadow:0 1px 2px #0000004d;position:absolute;padding:.5em 0;background:#fff;border-radius:1px;max-height:400px;width:260px;min-height:0;display:block}.ng2-dropdown-menu.ng2-dropdown-menu--inside-element{position:fixed}.ng2-dropdown-menu.ng2-dropdown-menu--width--2{width:200px}.ng2-dropdown-menu.ng2-dropdown-menu--width--4{width:260px}.ng2-dropdown-menu.ng2-dropdown-menu--width--6{width:320px}.ng2-dropdown-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;overflow:hidden}:host ::ng-deep .ng2-menu-divider{height:1px;min-height:1px;max-height:1px;width:100%;display:block;background:#f9f9f9}\\n\"] }]\n }], ctorParameters: function () { return [{ type: DropdownStateService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { width: [{\n type: Input\n }], focusFirstElement: [{\n type: Input\n }], offset: [{\n type: Input\n }], appendToBody: [{\n type: Input\n }], zIndex: [{\n type: Input\n }], items: [{\n type: ContentChildren,\n args: [Ng2MenuItem, { descendants: true }]\n }] } });\n\nclass Ng2Dropdown {\n constructor(state) {\n this.state = state;\n this.dynamicUpdate = true;\n // outputs\n this.onItemClicked = new EventEmitter();\n this.onItemSelected = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onHide = new EventEmitter();\n }\n ngOnInit() {\n this.state.dropdownState.onItemClicked.subscribe(item => {\n this.onItemClicked.emit(item);\n if (item.preventClose) {\n return;\n }\n this.hide.call(this);\n });\n if (this.button) {\n this.button.onMenuToggled.subscribe(() => {\n this.toggleMenu();\n });\n }\n this.state.dropdownState.onItemSelected.subscribe(item => {\n this.onItemSelected.emit(item);\n });\n this.state.dropdownState.onItemDestroyed.subscribe((item) => {\n let newSelectedItem;\n const items = this.menu.items.toArray();\n if (item !== this.state.dropdownState.selectedItem) {\n return;\n }\n if (this.menu.focusFirstElement) {\n newSelectedItem =\n item === items[0] && items.length > 1\n ? items[1]\n : items[0];\n }\n this.state.dropdownState.select(newSelectedItem);\n });\n }\n /**\n * @name toggleMenu\n * @desc toggles menu visibility\n */\n toggleMenu(position = this.button.getPosition()) {\n this.state.menuState.isVisible ? this.hide() : this.show(position);\n }\n /**\n * - hides dropdown\n * @name hide\n */\n hide() {\n this.menu.hide();\n this.onHide.emit(this);\n }\n /**\n * - shows dropdown\n * @name show\n * @param position\n */\n show(position = this.button.getPosition()) {\n this.menu.show(position, this.dynamicUpdate);\n this.onShow.emit(this);\n }\n /**\n * @name scrollListener\n */\n scrollListener() {\n if (this.button && this.dynamicUpdate) {\n this.menu.updatePosition(this.button.getPosition(), true);\n }\n }\n}\nNg2Dropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2Dropdown, deps: [{ token: DropdownStateService }], target: i0.ɵɵFactoryTarget.Component });\nNg2Dropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: Ng2Dropdown, selector: \"ng2-dropdown\", inputs: { dynamicUpdate: \"dynamicUpdate\" }, outputs: { onItemClicked: \"onItemClicked\", onItemSelected: \"onItemSelected\", onShow: \"onShow\", onHide: \"onHide\" }, host: { listeners: { \"window:scroll\": \"scrollListener()\" } }, providers: [DropdownStateService], queries: [{ propertyName: \"button\", first: true, predicate: Ng2DropdownButton, descendants: true, static: true }, { propertyName: \"menu\", first: true, predicate: Ng2DropdownMenu, descendants: true, static: true }], ngImport: i0, template: `\n
\n \n \n
\n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2Dropdown, decorators: [{\n type: Component,\n args: [{\n selector: 'ng2-dropdown',\n template: `\n
\n \n \n
\n `,\n providers: [DropdownStateService]\n }]\n }], ctorParameters: function () { return [{ type: DropdownStateService }]; }, propDecorators: { button: [{\n type: ContentChild,\n args: [Ng2DropdownButton, { static: true }]\n }], menu: [{\n type: ContentChild,\n args: [Ng2DropdownMenu, { static: true }]\n }], dynamicUpdate: [{\n type: Input\n }], onItemClicked: [{\n type: Output\n }], onItemSelected: [{\n type: Output\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], scrollListener: [{\n type: HostListener,\n args: ['window:scroll']\n }] } });\n\nclass Ng2DropdownModule {\n}\nNg2DropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNg2DropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownModule, declarations: [Ng2Dropdown,\n Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu], imports: [CommonModule], exports: [Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu,\n Ng2Dropdown] });\nNg2DropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownModule, imports: [[\n CommonModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu,\n Ng2Dropdown\n ],\n declarations: [\n Ng2Dropdown,\n Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu,\n ],\n imports: [\n CommonModule\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DropdownStateService, Ng2Dropdown, Ng2DropdownButton, Ng2DropdownMenu, Ng2DropdownModule, Ng2MenuItem };\n","import { __decorate, __awaiter } from 'tslib';\nimport { Pipe, Injectable, Input, Directive, EventEmitter, Output, ViewChild, Component, ElementRef, Renderer2, ChangeDetectorRef, HostBinding, HostListener, Injector, ContentChildren, TemplateRef, forwardRef, ContentChild, ViewChildren, NgModule } from '@angular/core';\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule, COMPOSITION_BUFFER_MODE } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { Ng2Dropdown, Ng2DropdownModule } from 'ng2-material-dropdown';\nimport { first, distinctUntilChanged, debounceTime, filter, map } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate, keyframes } from '@angular/animations';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/forms';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from 'ng2-material-dropdown';\n\nconst _c0 = [\"input\"];\nfunction TagComponent_div_1_ng_template_1_Template(rf, ctx) { }\nconst _c1 = function (a0, a1) { return { item: a0, index: a1 }; };\nfunction TagComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtemplate(1, TagComponent_div_1_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"contenteditable\", ctx_r0.editing);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(3, _c1, ctx_r0.model, ctx_r0.index))(\"ngTemplateOutlet\", ctx_r0.template);\n} }\nfunction TagComponent_div_2_delete_icon_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"delete-icon\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function TagComponent_div_2_delete_icon_3_Template_delete_icon_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(2); return ctx_r5.remove($event); });\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction TagComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 5)(1, \"div\", 6);\n ɵngcc0.ɵɵlistener(\"keydown.enter\", function TagComponent_div_2_Template_div_keydown_enter_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.disableEditMode($event); })(\"keydown.escape\", function TagComponent_div_2_Template_div_keydown_escape_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.disableEditMode($event); })(\"click\", function TagComponent_div_2_Template_div_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.editing ? $event.stopPropagation() : undefined; })(\"blur\", function TagComponent_div_2_Template_div_blur_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onBlurred($event); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, TagComponent_div_2_delete_icon_3_Template, 1, 0, \"delete-icon\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"contenteditable\", ctx_r1.editing)(\"title\", ctx_r1.getDisplayValue(ctx_r1.model));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.getDisplayValue(ctx_r1.model), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.isDeleteIconVisible());\n} }\nfunction TagComponent_tag_ripple_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"tag-ripple\", 9);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"state\", ctx_r2.rippleState);\n ɵngcc0.ɵɵattribute(\"tabindex\", -1);\n} }\nfunction TagInputDropdown_ng2_menu_item_2_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 6);\n ɵngcc0.ɵɵpipe(1, \"highlight\");\n} if (rf & 2) {\n const item_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"innerHTML\", ɵngcc0.ɵɵpipeBind2(1, 1, item_r1[ctx_r4.displayBy], ctx_r4.tagInput.inputForm.value.value), ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction TagInputDropdown_ng2_menu_item_2_2_ng_template_0_Template(rf, ctx) { }\nconst _c2 = function (a0, a1, a2) { return { item: a0, index: a1, last: a2 }; };\nfunction TagInputDropdown_ng2_menu_item_2_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TagInputDropdown_ng2_menu_item_2_2_ng_template_0_Template, 0, 0, \"ng-template\", 7);\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n const item_r1 = ctx_r8.$implicit;\n const index_r2 = ctx_r8.index;\n const last_r3 = ctx_r8.last;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.templates.first)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c2, item_r1, index_r2, last_r3));\n} }\nfunction TagInputDropdown_ng2_menu_item_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ng2-menu-item\", 3);\n ɵngcc0.ɵɵtemplate(1, TagInputDropdown_ng2_menu_item_2_span_1_Template, 2, 4, \"span\", 4);\n ɵngcc0.ɵɵtemplate(2, TagInputDropdown_ng2_menu_item_2_2_Template, 1, 6, null, 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", item_r1)(\"ngSwitch\", !!ctx_r0.templates.length);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n} }\nfunction TagInputComponent_tag_2_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"tag\", 6);\n ɵngcc0.ɵɵlistener(\"onSelect\", function TagInputComponent_tag_2_Template_tag_onSelect_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const item_r3 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.selectItem(item_r3); })(\"onRemove\", function TagInputComponent_tag_2_Template_tag_onRemove_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const item_r3 = restoredCtx.$implicit; const i_r4 = restoredCtx.index; const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onRemoveRequested(item_r3, i_r4); })(\"onKeyDown\", function TagInputComponent_tag_2_Template_tag_onKeyDown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleKeydown($event); })(\"onTagEdited\", function TagInputComponent_tag_2_Template_tag_onTagEdited_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.updateEditedTag($event); })(\"onBlur\", function TagInputComponent_tag_2_Template_tag_onBlur_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const i_r4 = restoredCtx.index; const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onTagBlurred($event, i_r4); })(\"dragstart\", function TagInputComponent_tag_2_Template_tag_dragstart_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const item_r3 = restoredCtx.$implicit; const i_r4 = restoredCtx.index; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.dragZone ? ctx_r11.onDragStarted($event, item_r3, i_r4) : undefined; })(\"drop\", function TagInputComponent_tag_2_Template_tag_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const i_r4 = restoredCtx.index; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.dragZone ? ctx_r12.onTagDropped($event, i_r4) : undefined; })(\"dragenter\", function TagInputComponent_tag_2_Template_tag_dragenter_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.dragZone ? ctx_r13.onDragOver($event) : undefined; })(\"dragover\", function TagInputComponent_tag_2_Template_tag_dragover_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const i_r4 = restoredCtx.index; const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.dragZone ? ctx_r14.onDragOver($event, i_r4) : undefined; })(\"dragleave\", function TagInputComponent_tag_2_Template_tag_dragleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.dragZone ? ctx_r15.dragProvider.onDragEnd() : undefined; });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r3 = ctx.$implicit;\n const i_r4 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵpropertyInterpolate(\"draggable\", ctx_r0.editable);\n ɵngcc0.ɵɵproperty(\"canAddTag\", ctx_r0.isTagValid)(\"disabled\", ctx_r0.disable)(\"@animation\", ctx_r0.animationMetadata)(\"hasRipple\", ctx_r0.ripple)(\"index\", i_r4)(\"removable\", ctx_r0.removable)(\"editable\", ctx_r0.editable)(\"displayBy\", ctx_r0.displayBy)(\"identifyBy\", ctx_r0.identifyBy)(\"template\", !!ctx_r0.hasCustomTemplate() ? ctx_r0.templates.first : undefined)(\"draggable\", ctx_r0.dragZone)(\"model\", item_r3);\n ɵngcc0.ɵɵattribute(\"tabindex\", 0);\n} }\nfunction TagInputComponent_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} }\nfunction TagInputComponent_div_6_p_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"p\", 10)(1, \"span\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const error_r17 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(error_r17);\n} }\nfunction TagInputComponent_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, TagInputComponent_div_6_p_1_Template, 3, 1, \"p\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx_r2.theme);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r2.errors);\n} }\nconst _c3 = [\"*\"];\nconst escape = s => s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\nconst ɵ0 = escape;\nlet HighlightPipe = class HighlightPipe {\n /**\n * @name transform\n * @param value {string}\n * @param arg {string}\n */\n transform(value, arg) {\n if (!arg.trim()) {\n return value;\n }\n try {\n const regex = new RegExp(`(${escape(arg)})`, 'i');\n return value.replace(regex, '$1');\n }\n catch (e) {\n return value;\n }\n }\n};\nHighlightPipe.ɵfac = function HighlightPipe_Factory(t) { return new (t || HighlightPipe)(); };\nHighlightPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"highlight\", type: HighlightPipe, pure: true });\n\n/*\n** constants and default values for \n */\nconst PLACEHOLDER = '+ Tag';\nconst SECONDARY_PLACEHOLDER = 'Enter a new tag';\nconst KEYDOWN = 'keydown';\nconst KEYUP = 'keyup';\nconst FOCUS = 'focus';\nconst MAX_ITEMS_WARNING = 'The number of items specified was greater than the property max-items.';\nconst ACTIONS_KEYS = {\n DELETE: 'DELETE',\n SWITCH_PREV: 'SWITCH_PREV',\n SWITCH_NEXT: 'SWITCH_NEXT',\n TAB: 'TAB'\n};\nconst KEY_PRESS_ACTIONS = {\n 8: ACTIONS_KEYS.DELETE,\n 46: ACTIONS_KEYS.DELETE,\n 37: ACTIONS_KEYS.SWITCH_PREV,\n 39: ACTIONS_KEYS.SWITCH_NEXT,\n 9: ACTIONS_KEYS.TAB\n};\nconst DRAG_AND_DROP_KEY = 'Text';\nconst NEXT = 'NEXT';\nconst PREV = 'PREV';\n\nlet DragProvider = class DragProvider {\n constructor() {\n this.state = {\n dragging: false,\n dropping: false,\n index: undefined\n };\n }\n /**\n * @name setDraggedItem\n * @param event\n * @param tag\n */\n setDraggedItem(event, tag) {\n if (event && event.dataTransfer) {\n event.dataTransfer.setData(DRAG_AND_DROP_KEY, JSON.stringify(tag));\n }\n }\n /**\n * @name getDraggedItem\n * @param event\n */\n getDraggedItem(event) {\n if (event && event.dataTransfer) {\n const data = event.dataTransfer.getData(DRAG_AND_DROP_KEY);\n try {\n return JSON.parse(data);\n }\n catch (_a) {\n return;\n }\n }\n }\n /**\n * @name setSender\n * @param sender\n */\n setSender(sender) {\n this.sender = sender;\n }\n /**\n * @name setReceiver\n * @param receiver\n */\n setReceiver(receiver) {\n this.receiver = receiver;\n }\n /**\n * @name onTagDropped\n * @param tag\n * @param indexDragged\n * @param indexDropped\n */\n onTagDropped(tag, indexDragged, indexDropped) {\n this.onDragEnd();\n this.sender.onRemoveRequested(tag, indexDragged);\n this.receiver.onAddingRequested(false, tag, indexDropped);\n }\n /**\n * @name setState\n * @param state\n */\n setState(state) {\n this.state = Object.assign(Object.assign({}, this.state), state);\n }\n /**\n * @name getState\n * @param key\n */\n getState(key) {\n return key ? this.state[key] : this.state;\n }\n /**\n * @name onDragEnd\n */\n onDragEnd() {\n this.setState({\n dragging: false,\n dropping: false,\n index: undefined\n });\n }\n};\nDragProvider.ɵfac = function DragProvider_Factory(t) { return new (t || DragProvider)(); };\nDragProvider.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DragProvider, factory: function (t) { return DragProvider.ɵfac(t); } });\n\nconst defaults = {\n tagInput: {\n separatorKeys: [],\n separatorKeyCodes: [],\n maxItems: Infinity,\n placeholder: PLACEHOLDER,\n secondaryPlaceholder: SECONDARY_PLACEHOLDER,\n validators: [],\n asyncValidators: [],\n onlyFromAutocomplete: false,\n errorMessages: {},\n theme: '',\n onTextChangeDebounce: 250,\n inputId: null,\n inputClass: '',\n clearOnBlur: false,\n hideForm: false,\n addOnBlur: false,\n addOnPaste: false,\n pasteSplitPattern: ',',\n blinkIfDupe: true,\n removable: true,\n editable: false,\n allowDupes: false,\n modelAsStrings: false,\n trimTags: true,\n ripple: true,\n tabIndex: '',\n disable: false,\n dragZone: '',\n onRemoving: undefined,\n onAdding: undefined,\n displayBy: 'display',\n identifyBy: 'value',\n animationDuration: {\n enter: '250ms',\n leave: '150ms'\n }\n },\n dropdown: {\n displayBy: 'display',\n identifyBy: 'value',\n appendToBody: true,\n offset: '50 0',\n focusFirstElement: false,\n showDropdownIfEmpty: false,\n minimumTextLength: 1,\n limitItemsTo: Infinity,\n keepOpen: true,\n dynamicUpdate: true,\n zIndex: 1000,\n matchingFn\n }\n};\n/**\n * @name matchingFn\n * @param this\n * @param value\n * @param target\n */\nfunction matchingFn(value, target) {\n const targetValue = target[this.displayBy].toString();\n return targetValue && targetValue\n .toLowerCase()\n .indexOf(value.toLowerCase()) >= 0;\n}\n\nclass OptionsProvider {\n setOptions(options) {\n OptionsProvider.defaults.tagInput = Object.assign(Object.assign({}, defaults.tagInput), options.tagInput);\n OptionsProvider.defaults.dropdown = Object.assign(Object.assign({}, defaults.dropdown), options.dropdown);\n }\n}\nOptionsProvider.defaults = defaults;\n\nclass TagModelClass {\n}\nfunction isObject(obj) {\n return obj === Object(obj);\n}\nlet TagInputAccessor = class TagInputAccessor {\n constructor() {\n this._items = [];\n /**\n * @name displayBy\n */\n this.displayBy = OptionsProvider.defaults.tagInput.displayBy;\n /**\n * @name identifyBy\n */\n this.identifyBy = OptionsProvider.defaults.tagInput.identifyBy;\n }\n get items() {\n return this._items;\n }\n set items(items) {\n this._items = items;\n this._onChangeCallback(this._items);\n }\n onTouched() {\n this._onTouchedCallback();\n }\n writeValue(items) {\n this._items = items || [];\n }\n registerOnChange(fn) {\n this._onChangeCallback = fn;\n }\n registerOnTouched(fn) {\n this._onTouchedCallback = fn;\n }\n /**\n * @name getItemValue\n * @param item\n * @param fromDropdown\n */\n getItemValue(item, fromDropdown = false) {\n const property = fromDropdown && this.dropdown ? this.dropdown.identifyBy : this.identifyBy;\n return isObject(item) ? item[property] : item;\n }\n /**\n * @name getItemDisplay\n * @param item\n * @param fromDropdown\n */\n getItemDisplay(item, fromDropdown = false) {\n const property = fromDropdown && this.dropdown ? this.dropdown.displayBy : this.displayBy;\n return isObject(item) ? item[property] : item;\n }\n /**\n * @name getItemsWithout\n * @param index\n */\n getItemsWithout(index) {\n return this.items.filter((item, position) => position !== index);\n }\n};\nTagInputAccessor.ɵfac = function TagInputAccessor_Factory(t) { return new (t || TagInputAccessor)(); };\nTagInputAccessor.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TagInputAccessor, inputs: { displayBy: \"displayBy\", identifyBy: \"identifyBy\" } });\n__decorate([\n Input()\n], TagInputAccessor.prototype, \"displayBy\", void 0);\n__decorate([\n Input()\n], TagInputAccessor.prototype, \"identifyBy\", void 0);\n\n/**\n * @name listen\n * @param listenerType\n * @param action\n * @param condition\n */\nfunction listen(listenerType, action, condition = true) {\n // if the event provided does not exist, throw an error\n if (!this.listeners.hasOwnProperty(listenerType)) {\n throw new Error('The event entered may be wrong');\n }\n // if a condition is present and is false, exit early\n if (!condition) {\n return;\n }\n // fire listener\n this.listeners[listenerType].push(action);\n}\n\nlet TagInputForm = class TagInputForm {\n constructor() {\n /**\n * @name onSubmit\n */\n this.onSubmit = new EventEmitter();\n /**\n * @name onBlur\n */\n this.onBlur = new EventEmitter();\n /**\n * @name onFocus\n */\n this.onFocus = new EventEmitter();\n /**\n * @name onKeyup\n */\n this.onKeyup = new EventEmitter();\n /**\n * @name onKeydown\n */\n this.onKeydown = new EventEmitter();\n /**\n * @name inputTextChange\n */\n this.inputTextChange = new EventEmitter();\n /**\n * @name validators\n */\n this.validators = [];\n /**\n * @name asyncValidators\n * @desc array of AsyncValidator that are used to validate the tag before it gets appended to the list\n */\n this.asyncValidators = [];\n /**\n * @name tabindex\n * @desc pass through the specified tabindex to the input\n */\n this.tabindex = '';\n /**\n * @name disabled\n */\n this.disabled = false;\n this.item = new FormControl({ value: '', disabled: this.disabled });\n }\n /**\n * @name inputText\n */\n get inputText() {\n return this.item.value;\n }\n /**\n * @name inputText\n * @param text {string}\n */\n set inputText(text) {\n this.item.setValue(text);\n this.inputTextChange.emit(text);\n }\n ngOnInit() {\n this.item.setValidators(this.validators);\n this.item.setAsyncValidators(this.asyncValidators);\n // creating form\n this.form = new FormGroup({\n item: this.item\n });\n }\n ngOnChanges(changes) {\n if (changes.disabled && !changes.disabled.firstChange) {\n if (changes.disabled.currentValue) {\n this.form.controls['item'].disable();\n }\n else {\n this.form.controls['item'].enable();\n }\n }\n }\n /**\n * @name value\n */\n get value() {\n return this.form.get('item');\n }\n /**\n * @name isInputFocused\n */\n isInputFocused() {\n const doc = typeof document !== 'undefined' ? document : undefined;\n return doc ? doc.activeElement === this.input.nativeElement : false;\n }\n /**\n * @name getErrorMessages\n * @param messages\n */\n getErrorMessages(messages) {\n return Object.keys(messages)\n .filter(err => this.value.hasError(err))\n .map(err => messages[err]);\n }\n /**\n * @name hasErrors\n */\n hasErrors() {\n const { dirty, value, valid } = this.form;\n return dirty && value.item && !valid;\n }\n /**\n * @name focus\n */\n focus() {\n this.input.nativeElement.focus();\n }\n /**\n * @name blur\n */\n blur() {\n this.input.nativeElement.blur();\n }\n /**\n * @name getElementPosition\n */\n getElementPosition() {\n return this.input.nativeElement.getBoundingClientRect();\n }\n /**\n * - removes input from the component\n * @name destroy\n */\n destroy() {\n const input = this.input.nativeElement;\n input.parentElement.removeChild(input);\n }\n /**\n * @name onKeyDown\n * @param $event\n */\n onKeyDown($event) {\n this.inputText = this.value.value;\n if ($event.key === 'Enter') {\n this.submit($event);\n }\n else {\n return this.onKeydown.emit($event);\n }\n }\n /**\n * @name onKeyUp\n * @param $event\n */\n onKeyUp($event) {\n this.inputText = this.value.value;\n return this.onKeyup.emit($event);\n }\n /**\n * @name submit\n */\n submit($event) {\n $event.preventDefault();\n this.onSubmit.emit($event);\n }\n};\nTagInputForm.ɵfac = function TagInputForm_Factory(t) { return new (t || TagInputForm)(); };\nTagInputForm.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TagInputForm, selectors: [[\"tag-input-form\"]], viewQuery: function TagInputForm_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.input = _t.first);\n } }, inputs: { validators: \"validators\", asyncValidators: \"asyncValidators\", tabindex: \"tabindex\", disabled: \"disabled\", inputText: \"inputText\", placeholder: \"placeholder\", inputId: \"inputId\", inputClass: \"inputClass\" }, outputs: { onSubmit: \"onSubmit\", onBlur: \"onBlur\", onFocus: \"onFocus\", onKeyup: \"onKeyup\", onKeydown: \"onKeydown\", inputTextChange: \"inputTextChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 8, consts: [[3, \"formGroup\", \"ngSubmit\"], [\"type\", \"text\", \"autocomplete\", \"off\", \"minlength\", \"1\", \"formControlName\", \"item\", 1, \"ng2-tag-input__text-input\", 3, \"tabindex\", \"ngClass\", \"focus\", \"blur\", \"keydown\", \"keyup\"], [\"input\", \"\"]], template: function TagInputForm_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"form\", 0);\n ɵngcc0.ɵɵlistener(\"ngSubmit\", function TagInputForm_Template_form_ngSubmit_0_listener($event) { return ctx.submit($event); });\n ɵngcc0.ɵɵelementStart(1, \"input\", 1, 2);\n ɵngcc0.ɵɵlistener(\"focus\", function TagInputForm_Template_input_focus_1_listener($event) { return ctx.onFocus.emit($event); })(\"blur\", function TagInputForm_Template_input_blur_1_listener($event) { return ctx.onBlur.emit($event); })(\"keydown\", function TagInputForm_Template_input_keydown_1_listener($event) { return ctx.onKeyDown($event); })(\"keyup\", function TagInputForm_Template_input_keyup_1_listener($event) { return ctx.onKeyUp($event); });\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"formGroup\", ctx.form);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵpropertyInterpolate(\"tabindex\", ctx.disabled ? -1 : ctx.tabindex ? ctx.tabindex : 0);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.inputClass);\n ɵngcc0.ɵɵattribute(\"id\", ctx.inputId)(\"placeholder\", ctx.placeholder)(\"aria-label\", ctx.placeholder)(\"tabindex\", ctx.tabindex)(\"disabled\", ctx.disabled ? ctx.disabled : null);\n } }, directives: [ɵngcc1.ɵNgNoValidate, ɵngcc1.NgControlStatusGroup, ɵngcc1.FormGroupDirective, ɵngcc1.DefaultValueAccessor, ɵngcc1.MinLengthValidator, ɵngcc1.NgControlStatus, ɵngcc1.FormControlName, ɵngcc2.NgClass], styles: [\".dark[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%]{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{border:none;box-shadow:none;outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{box-shadow:inset 0 1px 1px rgba(0,0,0,.4);border:1px solid #ccc}.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:.25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{border-bottom:2px solid #2196f3}.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.ng2-tag-input[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{margin:.1em 0}.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.dark.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-radius:4px}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{box-shadow:inset 0 1px 1px #d9534f;border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{margin:.1em 0}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.error-message[_ngcontent-%COMP%]{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%]{color:#d9534f}.ng2-tag-input__text-input[_ngcontent-%COMP%]{display:inline;vertical-align:middle;border:none;padding:0 .5rem;height:38px;font-size:1em;font-family:Roboto,\\\"Helvetica Neue\\\",sans-serif}.ng2-tag-input__text-input[_ngcontent-%COMP%]:focus{outline:0}.ng2-tag-input__text-input[disabled=true][_ngcontent-%COMP%]{opacity:.5;background:#fff}\"] });\n__decorate([\n Output()\n], TagInputForm.prototype, \"onSubmit\", void 0);\n__decorate([\n Output()\n], TagInputForm.prototype, \"onBlur\", void 0);\n__decorate([\n Output()\n], TagInputForm.prototype, \"onFocus\", void 0);\n__decorate([\n Output()\n], TagInputForm.prototype, \"onKeyup\", void 0);\n__decorate([\n Output()\n], TagInputForm.prototype, \"onKeydown\", void 0);\n__decorate([\n Output()\n], TagInputForm.prototype, \"inputTextChange\", void 0);\n__decorate([\n Input()\n], TagInputForm.prototype, \"placeholder\", void 0);\n__decorate([\n Input()\n], TagInputForm.prototype, \"validators\", void 0);\n__decorate([\n Input()\n], TagInputForm.prototype, \"asyncValidators\", void 0);\n__decorate([\n Input()\n], TagInputForm.prototype, \"inputId\", void 0);\n__decorate([\n Input()\n], TagInputForm.prototype, \"inputClass\", void 0);\n__decorate([\n Input()\n], TagInputForm.prototype, \"tabindex\", void 0);\n__decorate([\n Input()\n], TagInputForm.prototype, \"disabled\", void 0);\n__decorate([\n ViewChild('input')\n], TagInputForm.prototype, \"input\", void 0);\n__decorate([\n Input()\n], TagInputForm.prototype, \"inputText\", null);\n\nlet TagRipple = class TagRipple {\n constructor() {\n this.state = 'none';\n }\n};\nTagRipple.ɵfac = function TagRipple_Factory(t) { return new (t || TagRipple)(); };\nTagRipple.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TagRipple, selectors: [[\"tag-ripple\"]], inputs: { state: \"state\" }, decls: 1, vars: 1, consts: [[1, \"tag-ripple\"]], template: function TagRipple_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"@ink\", ctx.state);\n } }, styles: [\"[_nghost-%COMP%] {\\n width: 100%;\\n height: 100%;\\n left: 0;\\n overflow: hidden;\\n position: absolute;\\n }\\n\\n .tag-ripple[_ngcontent-%COMP%] {\\n background: rgba(0, 0, 0, 0.1);\\n top: 50%;\\n left: 50%;\\n height: 100%;\\n transform: translate(-50%, -50%);\\n position: absolute;\\n }\"], data: { animation: [\n trigger('ink', [\n state('none', style({ width: 0, opacity: 0 })),\n transition('none => clicked', [\n animate(300, keyframes([\n style({ opacity: 1, offset: 0, width: '30%', borderRadius: '100%' }),\n style({ opacity: 1, offset: 0.5, width: '50%' }),\n style({ opacity: 0.5, offset: 1, width: '100%', borderRadius: '16px' })\n ]))\n ])\n ])\n ] } });\n__decorate([\n Input()\n], TagRipple.prototype, \"state\", void 0);\n\n// mocking navigator\nconst navigator = typeof window !== 'undefined' ? window.navigator : {\n userAgent: 'Chrome',\n vendor: 'Google Inc'\n};\nconst isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\nlet TagComponent = class TagComponent {\n constructor(element, renderer, cdRef) {\n this.element = element;\n this.renderer = renderer;\n this.cdRef = cdRef;\n /**\n * @name disabled\n */\n this.disabled = false;\n /**\n * @name onSelect\n */\n this.onSelect = new EventEmitter();\n /**\n * @name onRemove\n */\n this.onRemove = new EventEmitter();\n /**\n * @name onBlur\n */\n this.onBlur = new EventEmitter();\n /**\n * @name onKeyDown\n */\n this.onKeyDown = new EventEmitter();\n /**\n * @name onTagEdited\n */\n this.onTagEdited = new EventEmitter();\n /**\n * @name editing\n */\n this.editing = false;\n /**\n * @name rippleState\n */\n this.rippleState = 'none';\n }\n /**\n * @name readonly {boolean}\n */\n get readonly() {\n return typeof this.model !== 'string' && this.model.readonly === true;\n }\n /**\n * @name select\n */\n select($event) {\n if (this.readonly || this.disabled) {\n return;\n }\n if ($event) {\n $event.stopPropagation();\n }\n this.focus();\n this.onSelect.emit(this.model);\n }\n /**\n * @name remove\n */\n remove($event) {\n $event.stopPropagation();\n this.onRemove.emit(this);\n }\n /**\n * @name focus\n */\n focus() {\n this.element.nativeElement.focus();\n }\n move() {\n this.moving = true;\n }\n /**\n * @name keydown\n * @param event\n */\n keydown(event) {\n if (this.editing) {\n if (event.keyCode === 13) {\n return this.disableEditMode(event);\n }\n }\n else {\n this.onKeyDown.emit({ event, model: this.model });\n }\n }\n /**\n * @name blink\n */\n blink() {\n const classList = this.element.nativeElement.classList;\n classList.add('blink');\n setTimeout(() => classList.remove('blink'), 50);\n }\n /**\n * @name toggleEditMode\n */\n toggleEditMode() {\n if (this.editable) {\n return this.editing ? undefined : this.activateEditMode();\n }\n }\n /**\n * @name onBlurred\n * @param event\n */\n onBlurred(event) {\n // Checks if it is editable first before handeling the onBlurred event in order to prevent\n // a bug in IE where tags are still editable with onlyFromAutocomplete set to true\n if (!this.editable) {\n return;\n }\n this.disableEditMode();\n const value = event.target.innerText;\n const result = typeof this.model === 'string'\n ? value\n : Object.assign(Object.assign({}, this.model), { [this.displayBy]: value });\n this.onBlur.emit(result);\n }\n /**\n * @name getDisplayValue\n * @param item\n */\n getDisplayValue(item) {\n return typeof item === 'string' ? item : item[this.displayBy];\n }\n /**\n * @desc returns whether the ripple is visible or not\n * only works in Chrome\n * @name isRippleVisible\n */\n get isRippleVisible() {\n return !this.readonly && !this.editing && isChrome && this.hasRipple;\n }\n /**\n * @name disableEditMode\n * @param $event\n */\n disableEditMode($event) {\n const classList = this.element.nativeElement.classList;\n const input = this.getContentEditableText();\n this.editing = false;\n classList.remove('tag--editing');\n if (!input) {\n this.setContentEditableText(this.model);\n return;\n }\n this.storeNewValue(input);\n this.cdRef.detectChanges();\n if ($event) {\n $event.preventDefault();\n }\n }\n /**\n * @name isDeleteIconVisible\n */\n isDeleteIconVisible() {\n return (!this.readonly && !this.disabled && this.removable && !this.editing);\n }\n /**\n * @name getContentEditableText\n */\n getContentEditableText() {\n const input = this.getContentEditable();\n return input ? input.innerText.trim() : '';\n }\n /**\n * @name setContentEditableText\n * @param model\n */\n setContentEditableText(model) {\n const input = this.getContentEditable();\n const value = this.getDisplayValue(model);\n input.innerText = value;\n }\n /**\n * @name\n */\n activateEditMode() {\n const classList = this.element.nativeElement.classList;\n classList.add('tag--editing');\n this.editing = true;\n }\n /**\n * @name storeNewValue\n * @param input\n */\n storeNewValue(input) {\n const exists = (tag) => {\n return typeof tag === 'string'\n ? tag === input\n : tag[this.displayBy] === input;\n };\n const hasId = () => {\n return this.model[this.identifyBy] !== this.model[this.displayBy];\n };\n // if the value changed, replace the value in the model\n if (exists(this.model)) {\n return;\n }\n const model = typeof this.model === 'string'\n ? input\n : {\n index: this.index,\n [this.identifyBy]: hasId()\n ? this.model[this.identifyBy]\n : input,\n [this.displayBy]: input\n };\n if (this.canAddTag(model)) {\n this.onTagEdited.emit({ tag: model, index: this.index });\n }\n else {\n this.setContentEditableText(this.model);\n }\n }\n /**\n * @name getContentEditable\n */\n getContentEditable() {\n return this.element.nativeElement.querySelector('[contenteditable]');\n }\n};\nTagComponent.ɵfac = function TagComponent_Factory(t) { return new (t || TagComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTagComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TagComponent, selectors: [[\"tag\"]], viewQuery: function TagComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(TagRipple, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ripple = _t.first);\n } }, hostVars: 2, hostBindings: function TagComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function TagComponent_keydown_HostBindingHandler($event) { return ctx.keydown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"moving\", ctx.moving);\n } }, inputs: { disabled: \"disabled\", model: \"model\", removable: \"removable\", editable: \"editable\", template: \"template\", displayBy: \"displayBy\", identifyBy: \"identifyBy\", index: \"index\", hasRipple: \"hasRipple\", canAddTag: \"canAddTag\" }, outputs: { onSelect: \"onSelect\", onRemove: \"onRemove\", onBlur: \"onBlur\", onKeyDown: \"onKeyDown\", onTagEdited: \"onTagEdited\" }, decls: 4, vars: 8, consts: [[3, \"ngSwitch\", \"click\", \"dblclick\", \"mousedown\", \"mouseup\"], [4, \"ngSwitchCase\"], [\"class\", \"tag-wrapper\", 4, \"ngSwitchCase\"], [3, \"state\", 4, \"ngIf\"], [3, \"ngTemplateOutletContext\", \"ngTemplateOutlet\"], [1, \"tag-wrapper\"], [\"spellcheck\", \"false\", 1, \"tag__text\", \"inline\", 3, \"keydown.enter\", \"keydown.escape\", \"click\", \"blur\"], [\"aria-label\", \"Remove tag\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"aria-label\", \"Remove tag\", \"role\", \"button\", 3, \"click\"], [3, \"state\"]], template: function TagComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function TagComponent_Template_div_click_0_listener($event) { return ctx.select($event); })(\"dblclick\", function TagComponent_Template_div_dblclick_0_listener() { return ctx.toggleEditMode(); })(\"mousedown\", function TagComponent_Template_div_mousedown_0_listener() { return ctx.rippleState = \"clicked\"; })(\"mouseup\", function TagComponent_Template_div_mouseup_0_listener() { return ctx.rippleState = \"none\"; });\n ɵngcc0.ɵɵtemplate(1, TagComponent_div_1_Template, 2, 6, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, TagComponent_div_2_Template, 4, 4, \"div\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, TagComponent_tag_ripple_3_Template, 1, 2, \"tag-ripple\", 3);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", !!ctx.template);\n ɵngcc0.ɵɵattribute(\"tabindex\", -1)(\"aria-label\", ctx.getDisplayValue(ctx.model));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isRippleVisible);\n } }, directives: function () { return [ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase, ɵngcc2.NgTemplateOutlet, ɵngcc2.NgIf, DeleteIconComponent, TagRipple]; }, styles: [\"[_nghost-%COMP%], [_nghost-%COMP%] > div[_ngcontent-%COMP%], [_nghost-%COMP%] > div[_ngcontent-%COMP%]:focus{outline:0;overflow:hidden;transition:opacity 1s;z-index:1}[_nghost-%COMP%]{max-width:400px}.blink[_nghost-%COMP%]{-webkit-animation:.3s ease-in-out forwards blink;animation:.3s ease-in-out forwards blink}@-webkit-keyframes blink{0%{opacity:.3}}@keyframes blink{0%{opacity:.3}}[_nghost-%COMP%] .disabled[_ngcontent-%COMP%]{cursor:not-allowed}[_nghost-%COMP%] [contenteditable=true][_ngcontent-%COMP%]{outline:0}.tag-wrapper[_ngcontent-%COMP%]{flex-direction:row;display:flex}.tag__text[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\"] });\nTagComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], TagComponent.prototype, \"model\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"removable\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"editable\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"template\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"displayBy\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"identifyBy\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"index\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"hasRipple\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], TagComponent.prototype, \"canAddTag\", void 0);\n__decorate([\n Output()\n], TagComponent.prototype, \"onSelect\", void 0);\n__decorate([\n Output()\n], TagComponent.prototype, \"onRemove\", void 0);\n__decorate([\n Output()\n], TagComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output()\n], TagComponent.prototype, \"onKeyDown\", void 0);\n__decorate([\n Output()\n], TagComponent.prototype, \"onTagEdited\", void 0);\n__decorate([\n HostBinding('class.moving')\n], TagComponent.prototype, \"moving\", void 0);\n__decorate([\n ViewChild(TagRipple)\n], TagComponent.prototype, \"ripple\", void 0);\n__decorate([\n HostListener('keydown', ['$event'])\n], TagComponent.prototype, \"keydown\", null);\n\n/**\n * @name animations\n */\nconst animations = [\n trigger('animation', [\n state('in', style({\n opacity: 1\n })),\n state('out', style({\n opacity: 0\n })),\n transition(':enter', [\n animate('{{ enter }}', keyframes([\n style({ opacity: 0, offset: 0, transform: 'translate(0px, 20px)' }),\n style({ opacity: 0.3, offset: 0.3, transform: 'translate(0px, -10px)' }),\n style({ opacity: 0.5, offset: 0.5, transform: 'translate(0px, 0px)' }),\n style({ opacity: 0.75, offset: 0.75, transform: 'translate(0px, 5px)' }),\n style({ opacity: 1, offset: 1, transform: 'translate(0px, 0px)' })\n ]))\n ]),\n transition(':leave', [\n animate('{{ leave }}', keyframes([\n style({ opacity: 1, transform: 'translateX(0)', offset: 0 }),\n style({ opacity: 1, transform: 'translateX(-15px)', offset: 0.7 }),\n style({ opacity: 0, transform: 'translateX(100%)', offset: 1.0 })\n ]))\n ])\n ])\n];\n\nlet TagInputDropdown = class TagInputDropdown {\n constructor(injector) {\n this.injector = injector;\n /**\n * @name offset\n */\n this.offset = defaults.dropdown.offset;\n /**\n * @name focusFirstElement\n */\n this.focusFirstElement = defaults.dropdown.focusFirstElement;\n /**\n * - show autocomplete dropdown if the value of input is empty\n * @name showDropdownIfEmpty\n */\n this.showDropdownIfEmpty = defaults.dropdown.showDropdownIfEmpty;\n /**\n * - desc minimum text length in order to display the autocomplete dropdown\n * @name minimumTextLength\n */\n this.minimumTextLength = defaults.dropdown.minimumTextLength;\n /**\n * - number of items to display in the autocomplete dropdown\n * @name limitItemsTo\n */\n this.limitItemsTo = defaults.dropdown.limitItemsTo;\n /**\n * @name displayBy\n */\n this.displayBy = defaults.dropdown.displayBy;\n /**\n * @name identifyBy\n */\n this.identifyBy = defaults.dropdown.identifyBy;\n /**\n * @description a function a developer can use to implement custom matching for the autocomplete\n * @name matchingFn\n */\n this.matchingFn = defaults.dropdown.matchingFn;\n /**\n * @name appendToBody\n */\n this.appendToBody = defaults.dropdown.appendToBody;\n /**\n * @name keepOpen\n * @description option to leave dropdown open when adding a new item\n */\n this.keepOpen = defaults.dropdown.keepOpen;\n /**\n * @name dynamicUpdate\n */\n this.dynamicUpdate = defaults.dropdown.dynamicUpdate;\n /**\n * @name zIndex\n */\n this.zIndex = defaults.dropdown.zIndex;\n /**\n * list of items that match the current value of the input (for autocomplete)\n * @name items\n */\n this.items = [];\n /**\n * @name tagInput\n */\n this.tagInput = this.injector.get(TagInputComponent);\n /**\n * @name _autocompleteItems\n */\n this._autocompleteItems = [];\n /**\n *\n * @name show\n */\n this.show = () => {\n const maxItemsReached = this.tagInput.items.length === this.tagInput.maxItems;\n const value = this.getFormValue();\n const hasMinimumText = value.trim().length >= this.minimumTextLength;\n const position = this.calculatePosition();\n const items = this.getMatchingItems(value);\n const hasItems = items.length > 0;\n const isHidden = this.isVisible === false;\n const showDropdownIfEmpty = this.showDropdownIfEmpty && hasItems && !value;\n const isDisabled = this.tagInput.disable;\n const shouldShow = isHidden && ((hasItems && hasMinimumText) || showDropdownIfEmpty);\n const shouldHide = this.isVisible && !hasItems;\n if (this.autocompleteObservable && hasMinimumText) {\n return this.getItemsFromObservable(value);\n }\n if ((!this.showDropdownIfEmpty && !value) ||\n maxItemsReached ||\n isDisabled) {\n return this.dropdown.hide();\n }\n this.setItems(items);\n if (shouldShow) {\n this.dropdown.show(position);\n }\n else if (shouldHide) {\n this.hide();\n }\n };\n /**\n * @name requestAdding\n * @param item {Ng2MenuItem}\n */\n this.requestAdding = (item) => __awaiter(this, void 0, void 0, function* () {\n const tag = this.createTagModel(item);\n yield this.tagInput.onAddingRequested(true, tag).catch(() => { });\n });\n /**\n * @name resetItems\n */\n this.resetItems = () => {\n this.items = [];\n };\n /**\n * @name getItemsFromObservable\n * @param text\n */\n this.getItemsFromObservable = (text) => {\n this.setLoadingState(true);\n const subscribeFn = (data) => {\n // hide loading animation\n this.setLoadingState(false)\n // add items\n .populateItems(data);\n this.setItems(this.getMatchingItems(text));\n if (this.items.length) {\n this.dropdown.show(this.calculatePosition());\n }\n else {\n this.dropdown.hide();\n }\n };\n this.autocompleteObservable(text)\n .pipe(first())\n .subscribe(subscribeFn, () => this.setLoadingState(false));\n };\n }\n /**\n * @name autocompleteItems\n * @param items\n */\n set autocompleteItems(items) {\n this._autocompleteItems = items;\n }\n /**\n * @name autocompleteItems\n * @desc array of items that will populate the autocomplete\n */\n get autocompleteItems() {\n const items = this._autocompleteItems;\n if (!items) {\n return [];\n }\n return items.map((item) => {\n return typeof item === 'string'\n ? {\n [this.displayBy]: item,\n [this.identifyBy]: item\n }\n : item;\n });\n }\n /**\n * @name ngAfterviewInit\n */\n ngAfterViewInit() {\n this.onItemClicked().subscribe((item) => {\n this.requestAdding(item);\n });\n // reset itemsMatching array when the dropdown is hidden\n this.onHide().subscribe(this.resetItems);\n const DEBOUNCE_TIME = 200;\n const KEEP_OPEN = this.keepOpen;\n this.tagInput.onTextChange\n .asObservable()\n .pipe(distinctUntilChanged(), debounceTime(DEBOUNCE_TIME), filter((value) => {\n if (KEEP_OPEN === false) {\n return value.length > 0;\n }\n return true;\n }))\n .subscribe(this.show);\n }\n /**\n * @name updatePosition\n */\n updatePosition() {\n const position = this.tagInput.inputForm.getElementPosition();\n this.dropdown.menu.updatePosition(position, this.dynamicUpdate);\n }\n /**\n * @name isVisible\n */\n get isVisible() {\n return this.dropdown.menu.dropdownState.menuState.isVisible;\n }\n /**\n * @name onHide\n */\n onHide() {\n return this.dropdown.onHide;\n }\n /**\n * @name onItemClicked\n */\n onItemClicked() {\n return this.dropdown.onItemClicked;\n }\n /**\n * @name selectedItem\n */\n get selectedItem() {\n return this.dropdown.menu.dropdownState.dropdownState.selectedItem;\n }\n /**\n * @name state\n */\n get state() {\n return this.dropdown.menu.dropdownState;\n }\n /**\n * @name hide\n */\n hide() {\n this.resetItems();\n this.dropdown.hide();\n }\n /**\n * @name scrollListener\n */\n scrollListener() {\n if (!this.isVisible || !this.dynamicUpdate) {\n return;\n }\n this.updatePosition();\n }\n /**\n * @name onWindowBlur\n */\n onWindowBlur() {\n this.dropdown.hide();\n }\n /**\n * @name getFormValue\n */\n getFormValue() {\n const formValue = this.tagInput.formValue;\n return formValue ? formValue.toString().trim() : '';\n }\n /**\n * @name calculatePosition\n */\n calculatePosition() {\n return this.tagInput.inputForm.getElementPosition();\n }\n /**\n * @name createTagModel\n * @param item\n */\n createTagModel(item) {\n const display = typeof item.value === 'string' ? item.value : item.value[this.displayBy];\n const value = typeof item.value === 'string' ? item.value : item.value[this.identifyBy];\n return Object.assign(Object.assign({}, item.value), { [this.tagInput.displayBy]: display, [this.tagInput.identifyBy]: value });\n }\n /**\n *\n * @param value {string}\n */\n getMatchingItems(value) {\n if (!value && !this.showDropdownIfEmpty) {\n return [];\n }\n const dupesAllowed = this.tagInput.allowDupes;\n return this.autocompleteItems.filter((item) => {\n const hasValue = dupesAllowed\n ? false\n : this.tagInput.tags.some(tag => {\n const identifyBy = this.tagInput.identifyBy;\n const model = typeof tag.model === 'string' ? tag.model : tag.model[identifyBy];\n return model === item[this.identifyBy];\n });\n return this.matchingFn(value, item) && hasValue === false;\n });\n }\n /**\n * @name setItems\n */\n setItems(items) {\n this.items = items.slice(0, this.limitItemsTo || items.length);\n }\n /**\n * @name populateItems\n * @param data\n */\n populateItems(data) {\n this.autocompleteItems = data.map(item => {\n return typeof item === 'string'\n ? {\n [this.displayBy]: item,\n [this.identifyBy]: item\n }\n : item;\n });\n return this;\n }\n /**\n * @name setLoadingState\n * @param state\n */\n setLoadingState(state) {\n this.tagInput.isLoading = state;\n return this;\n }\n};\nTagInputDropdown.ɵfac = function TagInputDropdown_Factory(t) { return new (t || TagInputDropdown)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector)); };\nTagInputDropdown.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TagInputDropdown, selectors: [[\"tag-input-dropdown\"]], contentQueries: function TagInputDropdown_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.templates = _t);\n } }, viewQuery: function TagInputDropdown_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(Ng2Dropdown, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropdown = _t.first);\n } }, hostBindings: function TagInputDropdown_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"scroll\", function TagInputDropdown_scroll_HostBindingHandler() { return ctx.scrollListener(); }, false, ɵngcc0.ɵɵresolveWindow)(\"blur\", function TagInputDropdown_blur_HostBindingHandler() { return ctx.onWindowBlur(); }, false, ɵngcc0.ɵɵresolveWindow);\n } }, inputs: { offset: \"offset\", focusFirstElement: \"focusFirstElement\", showDropdownIfEmpty: \"showDropdownIfEmpty\", minimumTextLength: \"minimumTextLength\", limitItemsTo: \"limitItemsTo\", displayBy: \"displayBy\", identifyBy: \"identifyBy\", matchingFn: \"matchingFn\", appendToBody: \"appendToBody\", keepOpen: \"keepOpen\", dynamicUpdate: \"dynamicUpdate\", zIndex: \"zIndex\", autocompleteItems: \"autocompleteItems\", autocompleteObservable: \"autocompleteObservable\" }, decls: 3, vars: 6, consts: [[3, \"dynamicUpdate\"], [3, \"focusFirstElement\", \"zIndex\", \"appendToBody\", \"offset\"], [3, \"value\", \"ngSwitch\", 4, \"ngFor\", \"ngForOf\"], [3, \"value\", \"ngSwitch\"], [3, \"innerHTML\", 4, \"ngSwitchCase\"], [4, \"ngSwitchDefault\"], [3, \"innerHTML\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function TagInputDropdown_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ng2-dropdown\", 0)(1, \"ng2-dropdown-menu\", 1);\n ɵngcc0.ɵɵtemplate(2, TagInputDropdown_ng2_menu_item_2_Template, 3, 3, \"ng2-menu-item\", 2);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"dynamicUpdate\", ctx.dynamicUpdate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"focusFirstElement\", ctx.focusFirstElement)(\"zIndex\", ctx.zIndex)(\"appendToBody\", ctx.appendToBody)(\"offset\", ctx.offset);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.items);\n } }, directives: [ɵngcc3.Ng2Dropdown, ɵngcc3.Ng2DropdownMenu, ɵngcc2.NgForOf, ɵngcc3.Ng2MenuItem, ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase, ɵngcc2.NgSwitchDefault, ɵngcc2.NgTemplateOutlet], pipes: [HighlightPipe], encapsulation: 2 });\nTagInputDropdown.ctorParameters = () => [\n { type: Injector }\n];\n__decorate([\n ViewChild(Ng2Dropdown)\n], TagInputDropdown.prototype, \"dropdown\", void 0);\n__decorate([\n ContentChildren(TemplateRef)\n], TagInputDropdown.prototype, \"templates\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"offset\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"focusFirstElement\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"showDropdownIfEmpty\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"autocompleteObservable\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"minimumTextLength\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"limitItemsTo\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"displayBy\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"identifyBy\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"matchingFn\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"appendToBody\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"keepOpen\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"dynamicUpdate\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"zIndex\", void 0);\n__decorate([\n Input()\n], TagInputDropdown.prototype, \"autocompleteItems\", null);\n__decorate([\n HostListener('window:scroll')\n], TagInputDropdown.prototype, \"scrollListener\", null);\n__decorate([\n HostListener('window:blur')\n], TagInputDropdown.prototype, \"onWindowBlur\", null);\n\n// angular universal hacks\n/* tslint:disable-next-line */\nconst DragEvent = typeof window !== 'undefined' && window.DragEvent;\nconst CUSTOM_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagInputComponent),\n multi: true\n};\nlet TagInputComponent = class TagInputComponent extends TagInputAccessor {\n constructor(renderer, dragProvider) {\n super();\n this.renderer = renderer;\n this.dragProvider = dragProvider;\n /**\n * @name separatorKeys\n * @desc keyboard keys with which a user can separate items\n */\n this.separatorKeys = defaults.tagInput.separatorKeys;\n /**\n * @name separatorKeyCodes\n * @desc keyboard key codes with which a user can separate items\n */\n this.separatorKeyCodes = defaults.tagInput.separatorKeyCodes;\n /**\n * @name placeholder\n * @desc the placeholder of the input text\n */\n this.placeholder = defaults.tagInput.placeholder;\n /**\n * @name secondaryPlaceholder\n * @desc placeholder to appear when the input is empty\n */\n this.secondaryPlaceholder = defaults.tagInput.secondaryPlaceholder;\n /**\n * @name maxItems\n * @desc maximum number of items that can be added\n */\n this.maxItems = defaults.tagInput.maxItems;\n /**\n * @name validators\n * @desc array of Validators that are used to validate the tag before it gets appended to the list\n */\n this.validators = defaults.tagInput.validators;\n /**\n * @name asyncValidators\n * @desc array of AsyncValidator that are used to validate the tag before it gets appended to the list\n */\n this.asyncValidators = defaults.tagInput.asyncValidators;\n /**\n * - if set to true, it will only possible to add items from the autocomplete\n * @name onlyFromAutocomplete\n */\n this.onlyFromAutocomplete = defaults.tagInput.onlyFromAutocomplete;\n /**\n * @name errorMessages\n */\n this.errorMessages = defaults.tagInput.errorMessages;\n /**\n * @name theme\n */\n this.theme = defaults.tagInput.theme;\n /**\n * @name onTextChangeDebounce\n */\n this.onTextChangeDebounce = defaults.tagInput.onTextChangeDebounce;\n /**\n * - custom id assigned to the input\n * @name id\n */\n this.inputId = defaults.tagInput.inputId;\n /**\n * - custom class assigned to the input\n */\n this.inputClass = defaults.tagInput.inputClass;\n /**\n * - option to clear text input when the form is blurred\n * @name clearOnBlur\n */\n this.clearOnBlur = defaults.tagInput.clearOnBlur;\n /**\n * - hideForm\n * @name clearOnBlur\n */\n this.hideForm = defaults.tagInput.hideForm;\n /**\n * @name addOnBlur\n */\n this.addOnBlur = defaults.tagInput.addOnBlur;\n /**\n * @name addOnPaste\n */\n this.addOnPaste = defaults.tagInput.addOnPaste;\n /**\n * - pattern used with the native method split() to separate patterns in the string pasted\n * @name pasteSplitPattern\n */\n this.pasteSplitPattern = defaults.tagInput.pasteSplitPattern;\n /**\n * @name blinkIfDupe\n */\n this.blinkIfDupe = defaults.tagInput.blinkIfDupe;\n /**\n * @name removable\n */\n this.removable = defaults.tagInput.removable;\n /**\n * @name editable\n */\n this.editable = defaults.tagInput.editable;\n /**\n * @name allowDupes\n */\n this.allowDupes = defaults.tagInput.allowDupes;\n /**\n * @description if set to true, the newly added tags will be added as strings, and not objects\n * @name modelAsStrings\n */\n this.modelAsStrings = defaults.tagInput.modelAsStrings;\n /**\n * @name trimTags\n */\n this.trimTags = defaults.tagInput.trimTags;\n /**\n * @name ripple\n */\n this.ripple = defaults.tagInput.ripple;\n /**\n * @name tabindex\n * @desc pass through the specified tabindex to the input\n */\n this.tabindex = defaults.tagInput.tabIndex;\n /**\n * @name disable\n */\n this.disable = defaults.tagInput.disable;\n /**\n * @name dragZone\n */\n this.dragZone = defaults.tagInput.dragZone;\n /**\n * @name onRemoving\n */\n this.onRemoving = defaults.tagInput.onRemoving;\n /**\n * @name onAdding\n */\n this.onAdding = defaults.tagInput.onAdding;\n /**\n * @name animationDuration\n */\n this.animationDuration = defaults.tagInput.animationDuration;\n /**\n * @name onAdd\n * @desc event emitted when adding a new item\n */\n this.onAdd = new EventEmitter();\n /**\n * @name onRemove\n * @desc event emitted when removing an existing item\n */\n this.onRemove = new EventEmitter();\n /**\n * @name onSelect\n * @desc event emitted when selecting an item\n */\n this.onSelect = new EventEmitter();\n /**\n * @name onFocus\n * @desc event emitted when the input is focused\n */\n this.onFocus = new EventEmitter();\n /**\n * @name onFocus\n * @desc event emitted when the input is blurred\n */\n this.onBlur = new EventEmitter();\n /**\n * @name onTextChange\n * @desc event emitted when the input value changes\n */\n this.onTextChange = new EventEmitter();\n /**\n * - output triggered when text is pasted in the form\n * @name onPaste\n */\n this.onPaste = new EventEmitter();\n /**\n * - output triggered when tag entered is not valid\n * @name onValidationError\n */\n this.onValidationError = new EventEmitter();\n /**\n * - output triggered when tag is edited\n * @name onTagEdited\n */\n this.onTagEdited = new EventEmitter();\n /**\n * @name isLoading\n */\n this.isLoading = false;\n /**\n * @name listeners\n * @desc array of events that get fired using @fireEvents\n */\n this.listeners = {\n [KEYDOWN]: [],\n [KEYUP]: []\n };\n /**\n * @description emitter for the 2-way data binding inputText value\n * @name inputTextChange\n */\n this.inputTextChange = new EventEmitter();\n /**\n * @description private variable to bind get/set\n * @name inputTextValue\n */\n this.inputTextValue = '';\n this.errors = [];\n /**\n * @name appendTag\n * @param tag {TagModel}\n */\n this.appendTag = (tag, index = this.items.length) => {\n const items = this.items;\n const model = this.modelAsStrings ? tag[this.identifyBy] : tag;\n this.items = [\n ...items.slice(0, index),\n model,\n ...items.slice(index, items.length)\n ];\n };\n /**\n * @name createTag\n * @param model\n */\n this.createTag = (model) => {\n const trim = (val, key) => {\n return typeof val === 'string' ? val.trim() : val[key];\n };\n return Object.assign(Object.assign({}, typeof model !== 'string' ? model : {}), { [this.displayBy]: this.trimTags ? trim(model, this.displayBy) : model, [this.identifyBy]: this.trimTags ? trim(model, this.identifyBy) : model });\n };\n /**\n *\n * @param tag\n * @param isFromAutocomplete\n */\n this.isTagValid = (tag, fromAutocomplete = false) => {\n const selectedItem = this.dropdown ? this.dropdown.selectedItem : undefined;\n const value = this.getItemDisplay(tag).trim();\n if (selectedItem && !fromAutocomplete || !value) {\n return false;\n }\n const dupe = this.findDupe(tag, fromAutocomplete);\n // if so, give a visual cue and return false\n if (!this.allowDupes && dupe && this.blinkIfDupe) {\n const model = this.tags.find(item => {\n return this.getItemValue(item.model) === this.getItemValue(dupe);\n });\n if (model) {\n model.blink();\n }\n }\n const isFromAutocomplete = fromAutocomplete && this.onlyFromAutocomplete;\n const assertions = [\n // 1. there must be no dupe OR dupes are allowed\n !dupe || this.allowDupes,\n // 2. check max items has not been reached\n !this.maxItemsReached,\n // 3. check item comes from autocomplete or onlyFromAutocomplete is false\n ((isFromAutocomplete) || !this.onlyFromAutocomplete)\n ];\n return assertions.filter(Boolean).length === assertions.length;\n };\n /**\n * @name onPasteCallback\n * @param data\n */\n this.onPasteCallback = (data) => __awaiter(this, void 0, void 0, function* () {\n const getText = () => {\n const isIE = Boolean(window.clipboardData);\n const clipboardData = isIE ? (window.clipboardData) : data.clipboardData;\n const type = isIE ? 'Text' : 'text/plain';\n return clipboardData === null ? '' : clipboardData.getData(type) || '';\n };\n const text = getText();\n const requests = text\n .split(this.pasteSplitPattern)\n .map(item => {\n const tag = this.createTag(item);\n this.setInputValue(tag[this.displayBy]);\n return this.onAddingRequested(false, tag);\n });\n const resetInput = () => setTimeout(() => this.setInputValue(''), 50);\n Promise.all(requests).then(() => {\n this.onPaste.emit(text);\n resetInput();\n })\n .catch(resetInput);\n });\n }\n /**\n * @name inputText\n */\n get inputText() {\n return this.inputTextValue;\n }\n /**\n * @name inputText\n * @param text\n */\n set inputText(text) {\n this.inputTextValue = text;\n this.inputTextChange.emit(text);\n }\n /**\n * @desc removes the tab index if it is set - it will be passed through to the input\n * @name tabindexAttr\n */\n get tabindexAttr() {\n return this.tabindex !== '' ? '-1' : '';\n }\n /**\n * @name ngAfterViewInit\n */\n ngAfterViewInit() {\n // set up listeners\n this.setUpKeypressListeners();\n this.setupSeparatorKeysListener();\n this.setUpInputKeydownListeners();\n if (this.onTextChange.observers.length) {\n this.setUpTextChangeSubscriber();\n }\n // if clear on blur is set to true, subscribe to the event and clear the text's form\n if (this.clearOnBlur || this.addOnBlur) {\n this.setUpOnBlurSubscriber();\n }\n // if addOnPaste is set to true, register the handler and add items\n if (this.addOnPaste) {\n this.setUpOnPasteListener();\n }\n const statusChanges$ = this.inputForm.form.statusChanges;\n statusChanges$.pipe(filter((status) => status !== 'PENDING')).subscribe(() => {\n this.errors = this.inputForm.getErrorMessages(this.errorMessages);\n });\n this.isProgressBarVisible$ = statusChanges$.pipe(map((status) => {\n return status === 'PENDING' || this.isLoading;\n }));\n // if hideForm is set to true, remove the input\n if (this.hideForm) {\n this.inputForm.destroy();\n }\n }\n /**\n * @name ngOnInit\n */\n ngOnInit() {\n // if the number of items specified in the model is > of the value of maxItems\n // degrade gracefully and let the max number of items to be the number of items in the model\n // though, warn the user.\n const hasReachedMaxItems = this.maxItems !== undefined &&\n this.items &&\n this.items.length > this.maxItems;\n if (hasReachedMaxItems) {\n this.maxItems = this.items.length;\n console.warn(MAX_ITEMS_WARNING);\n }\n // Setting editable to false to fix problem with tags in IE still being editable when\n // onlyFromAutocomplete is true\n this.editable = this.onlyFromAutocomplete ? false : this.editable;\n this.setAnimationMetadata();\n }\n /**\n * @name onRemoveRequested\n * @param tag\n * @param index\n */\n onRemoveRequested(tag, index) {\n return new Promise(resolve => {\n const subscribeFn = (model) => {\n this.removeItem(model, index);\n resolve(tag);\n };\n this.onRemoving ?\n this.onRemoving(tag)\n .pipe(first())\n .subscribe(subscribeFn) : subscribeFn(tag);\n });\n }\n /**\n * @name onAddingRequested\n * @param fromAutocomplete {boolean}\n * @param tag {TagModel}\n * @param index? {number}\n * @param giveupFocus? {boolean}\n */\n onAddingRequested(fromAutocomplete, tag, index, giveupFocus) {\n return new Promise((resolve, reject) => {\n const subscribeFn = (model) => {\n return this\n .addItem(fromAutocomplete, model, index, giveupFocus)\n .then(resolve)\n .catch(reject);\n };\n return this.onAdding ?\n this.onAdding(tag)\n .pipe(first())\n .subscribe(subscribeFn, reject) : subscribeFn(tag);\n });\n }\n /**\n * @name selectItem\n * @desc selects item passed as parameter as the selected tag\n * @param item\n * @param emit\n */\n selectItem(item, emit = true) {\n const isReadonly = item && typeof item !== 'string' && item.readonly;\n if (isReadonly || this.selectedTag === item) {\n return;\n }\n this.selectedTag = item;\n if (emit) {\n this.onSelect.emit(item);\n }\n }\n /**\n * @name fireEvents\n * @desc goes through the list of the events for a given eventName, and fires each of them\n * @param eventName\n * @param $event\n */\n fireEvents(eventName, $event) {\n this.listeners[eventName].forEach(listener => listener.call(this, $event));\n }\n /**\n * @name handleKeydown\n * @desc handles action when the user hits a keyboard key\n * @param data\n */\n handleKeydown(data) {\n const event = data.event;\n const key = event.keyCode || event.which;\n const shiftKey = event.shiftKey || false;\n switch (KEY_PRESS_ACTIONS[key]) {\n case ACTIONS_KEYS.DELETE:\n if (this.selectedTag && this.removable) {\n const index = this.items.indexOf(this.selectedTag);\n this.onRemoveRequested(this.selectedTag, index);\n }\n break;\n case ACTIONS_KEYS.SWITCH_PREV:\n this.moveToTag(data.model, PREV);\n break;\n case ACTIONS_KEYS.SWITCH_NEXT:\n this.moveToTag(data.model, NEXT);\n break;\n case ACTIONS_KEYS.TAB:\n if (shiftKey) {\n if (this.isFirstTag(data.model)) {\n return;\n }\n this.moveToTag(data.model, PREV);\n }\n else {\n if (this.isLastTag(data.model) && (this.disable || this.maxItemsReached)) {\n return;\n }\n this.moveToTag(data.model, NEXT);\n }\n break;\n default:\n return;\n }\n // prevent default behaviour\n event.preventDefault();\n }\n onFormSubmit() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield this.onAddingRequested(false, this.formValue);\n }\n catch (_a) {\n return;\n }\n });\n }\n /**\n * @name setInputValue\n * @param value\n */\n setInputValue(value, emitEvent = true) {\n const control = this.getControl();\n // update form value with the transformed item\n control.setValue(value, { emitEvent });\n }\n /**\n * @name getControl\n */\n getControl() {\n return this.inputForm.value;\n }\n /**\n * @name focus\n * @param applyFocus\n * @param displayAutocomplete\n */\n focus(applyFocus = false, displayAutocomplete = false) {\n if (this.dragProvider.getState('dragging')) {\n return;\n }\n this.selectItem(undefined, false);\n if (applyFocus) {\n this.inputForm.focus();\n this.onFocus.emit(this.formValue);\n }\n }\n /**\n * @name blur\n */\n blur() {\n this.onTouched();\n this.onBlur.emit(this.formValue);\n }\n /**\n * @name hasErrors\n */\n hasErrors() {\n return !!this.inputForm && this.inputForm.hasErrors();\n }\n /**\n * @name isInputFocused\n */\n isInputFocused() {\n return !!this.inputForm && this.inputForm.isInputFocused();\n }\n /**\n * - this is the one way I found to tell if the template has been passed and it is not\n * the template for the menu item\n * @name hasCustomTemplate\n */\n hasCustomTemplate() {\n const template = this.templates ? this.templates.first : undefined;\n const menuTemplate = this.dropdown && this.dropdown.templates ?\n this.dropdown.templates.first : undefined;\n return Boolean(template && template !== menuTemplate);\n }\n /**\n * @name maxItemsReached\n */\n get maxItemsReached() {\n return this.maxItems !== undefined &&\n this.items.length >= this.maxItems;\n }\n /**\n * @name formValue\n */\n get formValue() {\n const form = this.inputForm.value;\n return form ? form.value : '';\n }\n /**3\n * @name onDragStarted\n * @param event\n * @param index\n */\n onDragStarted(event, tag, index) {\n event.stopPropagation();\n const item = { zone: this.dragZone, tag, index };\n this.dragProvider.setSender(this);\n this.dragProvider.setDraggedItem(event, item);\n this.dragProvider.setState({ dragging: true, index });\n }\n /**\n * @name onDragOver\n * @param event\n */\n onDragOver(event, index) {\n this.dragProvider.setState({ dropping: true });\n this.dragProvider.setReceiver(this);\n event.preventDefault();\n }\n /**\n * @name onTagDropped\n * @param event\n * @param index\n */\n onTagDropped(event, index) {\n const item = this.dragProvider.getDraggedItem(event);\n if (!item || item.zone !== this.dragZone) {\n return;\n }\n this.dragProvider.onTagDropped(item.tag, item.index, index);\n event.preventDefault();\n event.stopPropagation();\n }\n /**\n * @name isDropping\n */\n isDropping() {\n const isReceiver = this.dragProvider.receiver === this;\n const isDropping = this.dragProvider.getState('dropping');\n return Boolean(isReceiver && isDropping);\n }\n /**\n * @name onTagBlurred\n * @param changedElement {TagModel}\n * @param index {number}\n */\n onTagBlurred(changedElement, index) {\n this.items[index] = changedElement;\n this.blur();\n }\n /**\n * @name trackBy\n * @param items\n */\n trackBy(index, item) {\n return item[this.identifyBy];\n }\n /**\n * @name updateEditedTag\n * @param tag\n */\n updateEditedTag({ tag, index }) {\n this.onTagEdited.emit(tag);\n }\n /**\n * @name moveToTag\n * @param item\n * @param direction\n */\n moveToTag(item, direction) {\n const isLast = this.isLastTag(item);\n const isFirst = this.isFirstTag(item);\n const stopSwitch = (direction === NEXT && isLast) ||\n (direction === PREV && isFirst);\n if (stopSwitch) {\n this.focus(true);\n return;\n }\n const offset = direction === NEXT ? 1 : -1;\n const index = this.getTagIndex(item) + offset;\n const tag = this.getTagAtIndex(index);\n return tag.select.call(tag);\n }\n /**\n * @name isFirstTag\n * @param item {TagModel}\n */\n isFirstTag(item) {\n return this.tags.first.model === item;\n }\n /**\n * @name isLastTag\n * @param item {TagModel}\n */\n isLastTag(item) {\n return this.tags.last.model === item;\n }\n /**\n * @name getTagIndex\n * @param item\n */\n getTagIndex(item) {\n const tags = this.tags.toArray();\n return tags.findIndex(tag => tag.model === item);\n }\n /**\n * @name getTagAtIndex\n * @param index\n */\n getTagAtIndex(index) {\n const tags = this.tags.toArray();\n return tags[index];\n }\n /**\n * @name removeItem\n * @desc removes an item from the array of the model\n * @param tag {TagModel}\n * @param index {number}\n */\n removeItem(tag, index) {\n this.items = this.getItemsWithout(index);\n // if the removed tag was selected, set it as undefined\n if (this.selectedTag === tag) {\n this.selectItem(undefined, false);\n }\n // focus input\n this.focus(true, false);\n // emit remove event\n this.onRemove.emit(tag);\n }\n /**\n * @name addItem\n * @desc adds the current text model to the items array\n * @param fromAutocomplete {boolean}\n * @param item {TagModel}\n * @param index? {number}\n * @param giveupFocus? {boolean}\n */\n addItem(fromAutocomplete = false, item, index, giveupFocus) {\n const display = this.getItemDisplay(item);\n const tag = this.createTag(item);\n if (fromAutocomplete) {\n this.setInputValue(this.getItemValue(item, true));\n }\n return new Promise((resolve, reject) => {\n /**\n * @name reset\n */\n const reset = () => {\n // reset control and focus input\n this.setInputValue('');\n if (giveupFocus) {\n this.focus(false, false);\n }\n else {\n // focus input\n this.focus(true, false);\n }\n resolve(display);\n };\n const appendItem = () => {\n this.appendTag(tag, index);\n // emit event\n this.onAdd.emit(tag);\n if (!this.dropdown) {\n return;\n }\n this.dropdown.hide();\n if (this.dropdown.showDropdownIfEmpty) {\n this.dropdown.show();\n }\n };\n const status = this.inputForm.form.status;\n const isTagValid = this.isTagValid(tag, fromAutocomplete);\n const onValidationError = () => {\n this.onValidationError.emit(tag);\n return reject();\n };\n if (status === 'VALID' && isTagValid) {\n appendItem();\n return reset();\n }\n if (status === 'INVALID' || !isTagValid) {\n reset();\n return onValidationError();\n }\n if (status === 'PENDING') {\n const statusUpdate$ = this.inputForm.form.statusChanges;\n return statusUpdate$\n .pipe(filter(statusUpdate => statusUpdate !== 'PENDING'), first())\n .subscribe((statusUpdate) => {\n if (statusUpdate === 'VALID' && isTagValid) {\n appendItem();\n return reset();\n }\n else {\n reset();\n return onValidationError();\n }\n });\n }\n });\n }\n /**\n * @name setupSeparatorKeysListener\n */\n setupSeparatorKeysListener() {\n const useSeparatorKeys = this.separatorKeyCodes.length > 0 || this.separatorKeys.length > 0;\n const listener = ($event) => {\n const hasKeyCode = this.separatorKeyCodes.indexOf($event.keyCode) >= 0;\n const hasKey = this.separatorKeys.indexOf($event.key) >= 0;\n // the keyCode of keydown event is 229 when IME is processing the key event.\n const isIMEProcessing = $event.keyCode === 229;\n if (hasKeyCode || (hasKey && !isIMEProcessing)) {\n $event.preventDefault();\n this.onAddingRequested(false, this.formValue)\n .catch(() => { });\n }\n };\n listen.call(this, KEYDOWN, listener, useSeparatorKeys);\n }\n /**\n * @name setUpKeypressListeners\n */\n setUpKeypressListeners() {\n const listener = ($event) => {\n const isCorrectKey = $event.keyCode === 37 || $event.keyCode === 8;\n if (isCorrectKey &&\n !this.formValue &&\n this.items.length) {\n this.tags.last.select.call(this.tags.last);\n }\n };\n // setting up the keypress listeners\n listen.call(this, KEYDOWN, listener);\n }\n /**\n * @name setUpKeydownListeners\n */\n setUpInputKeydownListeners() {\n this.inputForm.onKeydown.subscribe(event => {\n if (event.key === 'Backspace' && this.formValue.trim() === '') {\n event.preventDefault();\n }\n });\n }\n /**\n * @name setUpOnPasteListener\n */\n setUpOnPasteListener() {\n const input = this.inputForm.input.nativeElement;\n // attach listener to input\n this.renderer.listen(input, 'paste', (event) => {\n this.onPasteCallback(event);\n event.preventDefault();\n return true;\n });\n }\n /**\n * @name setUpTextChangeSubscriber\n */\n setUpTextChangeSubscriber() {\n this.inputForm.form\n .valueChanges\n .pipe(debounceTime(this.onTextChangeDebounce))\n .subscribe((value) => {\n this.onTextChange.emit(value.item);\n });\n }\n /**\n * @name setUpOnBlurSubscriber\n */\n setUpOnBlurSubscriber() {\n const filterFn = () => {\n const isVisible = this.dropdown && this.dropdown.isVisible;\n return !isVisible && !!this.formValue;\n };\n this.inputForm\n .onBlur\n .pipe(debounceTime(100), filter(filterFn))\n .subscribe(() => {\n const reset = () => this.setInputValue('');\n if (this.addOnBlur) {\n return this\n .onAddingRequested(false, this.formValue, undefined, true)\n .then(reset)\n .catch(reset);\n }\n reset();\n });\n }\n /**\n * @name findDupe\n * @param tag\n * @param isFromAutocomplete\n */\n findDupe(tag, isFromAutocomplete) {\n const identifyBy = isFromAutocomplete ? this.dropdown.identifyBy : this.identifyBy;\n const id = tag[identifyBy];\n return this.items.find(item => this.getItemValue(item) === id);\n }\n /**\n * @name setAnimationMetadata\n */\n setAnimationMetadata() {\n this.animationMetadata = {\n value: 'in',\n params: Object.assign({}, this.animationDuration)\n };\n }\n};\nTagInputComponent.ɵfac = function TagInputComponent_Factory(t) { return new (t || TagInputComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DragProvider)); };\nTagInputComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TagInputComponent, selectors: [[\"tag-input\"]], contentQueries: function TagInputComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TagInputDropdown, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropdown = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.templates = _t);\n } }, viewQuery: function TagInputComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(TagInputForm, 5);\n ɵngcc0.ɵɵviewQuery(TagComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.inputForm = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tags = _t);\n } }, hostVars: 1, hostBindings: function TagInputComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.tabindexAttr);\n } }, inputs: { separatorKeys: \"separatorKeys\", separatorKeyCodes: \"separatorKeyCodes\", placeholder: \"placeholder\", secondaryPlaceholder: \"secondaryPlaceholder\", maxItems: \"maxItems\", validators: \"validators\", asyncValidators: \"asyncValidators\", onlyFromAutocomplete: \"onlyFromAutocomplete\", errorMessages: \"errorMessages\", theme: \"theme\", onTextChangeDebounce: \"onTextChangeDebounce\", inputId: \"inputId\", inputClass: \"inputClass\", clearOnBlur: \"clearOnBlur\", hideForm: \"hideForm\", addOnBlur: \"addOnBlur\", addOnPaste: \"addOnPaste\", pasteSplitPattern: \"pasteSplitPattern\", blinkIfDupe: \"blinkIfDupe\", removable: \"removable\", editable: \"editable\", allowDupes: \"allowDupes\", modelAsStrings: \"modelAsStrings\", trimTags: \"trimTags\", ripple: \"ripple\", tabindex: \"tabindex\", disable: \"disable\", dragZone: \"dragZone\", onRemoving: \"onRemoving\", onAdding: \"onAdding\", animationDuration: \"animationDuration\", inputText: \"inputText\" }, outputs: { onAdd: \"onAdd\", onRemove: \"onRemove\", onSelect: \"onSelect\", onFocus: \"onFocus\", onBlur: \"onBlur\", onTextChange: \"onTextChange\", onPaste: \"onPaste\", onValidationError: \"onValidationError\", onTagEdited: \"onTagEdited\", inputTextChange: \"inputTextChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([CUSTOM_ACCESSOR]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c3, decls: 8, vars: 27, consts: [[1, \"ng2-tag-input\", 3, \"ngClass\", \"click\", \"drop\", \"dragenter\", \"dragover\", \"dragend\"], [1, \"ng2-tags-container\"], [3, \"draggable\", \"canAddTag\", \"disabled\", \"hasRipple\", \"index\", \"removable\", \"editable\", \"displayBy\", \"identifyBy\", \"template\", \"model\", \"onSelect\", \"onRemove\", \"onKeyDown\", \"onTagEdited\", \"onBlur\", \"dragstart\", \"drop\", \"dragenter\", \"dragover\", \"dragleave\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"inputText\", \"disabled\", \"validators\", \"asyncValidators\", \"hidden\", \"placeholder\", \"inputClass\", \"inputId\", \"tabindex\", \"onSubmit\", \"onBlur\", \"click\", \"onKeydown\", \"onKeyup\"], [\"class\", \"progress-bar\", 4, \"ngIf\"], [\"class\", \"error-messages\", 3, \"ngClass\", 4, \"ngIf\"], [3, \"draggable\", \"canAddTag\", \"disabled\", \"hasRipple\", \"index\", \"removable\", \"editable\", \"displayBy\", \"identifyBy\", \"template\", \"model\", \"onSelect\", \"onRemove\", \"onKeyDown\", \"onTagEdited\", \"onBlur\", \"dragstart\", \"drop\", \"dragenter\", \"dragover\", \"dragleave\"], [1, \"progress-bar\"], [1, \"error-messages\", 3, \"ngClass\"], [\"class\", \"error-message\", 4, \"ngFor\", \"ngForOf\"], [1, \"error-message\"]], template: function TagInputComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function TagInputComponent_Template_div_click_0_listener() { return ctx.focus(true, false); })(\"drop\", function TagInputComponent_Template_div_drop_0_listener($event) { return ctx.dragZone ? ctx.onTagDropped($event, undefined) : undefined; })(\"dragenter\", function TagInputComponent_Template_div_dragenter_0_listener($event) { return ctx.dragZone ? ctx.onDragOver($event) : undefined; })(\"dragover\", function TagInputComponent_Template_div_dragover_0_listener($event) { return ctx.dragZone ? ctx.onDragOver($event) : undefined; })(\"dragend\", function TagInputComponent_Template_div_dragend_0_listener() { return ctx.dragZone ? ctx.dragProvider.onDragEnd() : undefined; });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, TagInputComponent_tag_2_Template, 1, 14, \"tag\", 2);\n ɵngcc0.ɵɵelementStart(3, \"tag-input-form\", 3);\n ɵngcc0.ɵɵlistener(\"onSubmit\", function TagInputComponent_Template_tag_input_form_onSubmit_3_listener() { return ctx.onFormSubmit(); })(\"onBlur\", function TagInputComponent_Template_tag_input_form_onBlur_3_listener() { return ctx.blur(); })(\"click\", function TagInputComponent_Template_tag_input_form_click_3_listener() { return ctx.dropdown ? ctx.dropdown.show() : undefined; })(\"onKeydown\", function TagInputComponent_Template_tag_input_form_onKeydown_3_listener($event) { return ctx.fireEvents(\"keydown\", $event); })(\"onKeyup\", function TagInputComponent_Template_tag_input_form_onKeyup_3_listener($event) { return ctx.fireEvents(\"keyup\", $event); });\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(4, TagInputComponent_div_4_Template, 1, 0, \"div\", 4);\n ɵngcc0.ɵɵpipe(5, \"async\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, TagInputComponent_div_6_Template, 2, 2, \"div\", 5);\n ɵngcc0.ɵɵprojection(7);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng2-tag-input--dropping\", ctx.isDropping())(\"ng2-tag-input--disabled\", ctx.disable)(\"ng2-tag-input--loading\", ctx.isLoading)(\"ng2-tag-input--invalid\", ctx.hasErrors())(\"ng2-tag-input--focused\", ctx.isInputFocused());\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.theme);\n ɵngcc0.ɵɵattribute(\"tabindex\", -1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.items)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"inputText\", ctx.inputText)(\"disabled\", ctx.disable)(\"validators\", ctx.validators)(\"asyncValidators\", ctx.asyncValidators)(\"hidden\", ctx.maxItemsReached)(\"placeholder\", ctx.items.length ? ctx.placeholder : ctx.secondaryPlaceholder)(\"inputClass\", ctx.inputClass)(\"inputId\", ctx.inputId)(\"tabindex\", ctx.tabindex);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ɵngcc0.ɵɵpipeBind1(5, 25, ctx.isProgressBarVisible$));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasErrors());\n } }, directives: [ɵngcc2.NgClass, ɵngcc2.NgForOf, TagComponent, TagInputForm, ɵngcc2.NgIf], pipes: [ɵngcc2.AsyncPipe], styles: [\".dark[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%]{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{border:none;box-shadow:none;outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{box-shadow:inset 0 1px 1px rgba(0,0,0,.4);border:1px solid #ccc}.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:.25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{border-bottom:2px solid #2196f3}.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.ng2-tag-input[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{margin:.1em 0}.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.dark.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-radius:4px}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{box-shadow:inset 0 1px 1px #d9534f;border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{margin:.1em 0}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.error-message[_ngcontent-%COMP%]{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%]{color:#d9534f}.progress-bar[_ngcontent-%COMP%], .progress-bar[_ngcontent-%COMP%]:before{height:2px;width:100%;margin:0}.progress-bar[_ngcontent-%COMP%]{background-color:#2196f3;display:flex;position:absolute;bottom:0}.progress-bar[_ngcontent-%COMP%]:before{background-color:#82c4f8;content:\\\"\\\";-webkit-animation:2s cubic-bezier(.4,0,.2,1) infinite running-progress;animation:2s cubic-bezier(.4,0,.2,1) infinite running-progress}@-webkit-keyframes running-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0}100%{margin-left:100%;margin-right:0}}@keyframes running-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0}100%{margin-left:100%;margin-right:0}}tag[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;font-family:Roboto,\\\"Helvetica Neue\\\",sans-serif;font-weight:400;font-size:1em;letter-spacing:.05rem;color:#444;border-radius:16px;transition:.3s;margin:.1rem .3rem .1rem 0;padding:.08rem .45rem;height:32px;line-height:34px;background:#efefef;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):focus{background:#2196f3;color:#fff;box-shadow:0 2px 3px 1px #d4d1d1}tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):active{background:#0d8aee;color:#fff;box-shadow:0 2px 3px 1px #d4d1d1}tag[_ngcontent-%COMP%]:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#e2e2e2;color:initial;box-shadow:0 2px 3px 1px #d4d1d1}tag.readonly[_ngcontent-%COMP%]{cursor:default}tag.readonly[_ngcontent-%COMP%]:focus, tag[_ngcontent-%COMP%]:focus{outline:0}tag.tag--editing[_ngcontent-%COMP%]{background-color:#fff;border:1px solid #ccc;cursor:text}.minimal[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;border-radius:0;background:#f9f9f9;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.minimal[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):active, .minimal[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):focus{background:#d0d0d0;color:initial}.minimal[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#ececec}.minimal[_ngcontent-%COMP%] tag.readonly[_ngcontent-%COMP%]{cursor:default}.minimal[_ngcontent-%COMP%] tag.readonly[_ngcontent-%COMP%]:focus, .minimal[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:focus{outline:0}.minimal[_ngcontent-%COMP%] tag.tag--editing[_ngcontent-%COMP%]{cursor:text}.dark[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;color:#f9f9f9;border-radius:3px;background:#444;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.dark[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):focus{background:#efefef;color:#444}.dark[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#2b2b2b;color:#f9f9f9}.dark[_ngcontent-%COMP%] tag.readonly[_ngcontent-%COMP%]{cursor:default}.dark[_ngcontent-%COMP%] tag.readonly[_ngcontent-%COMP%]:focus, .dark[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:focus{outline:0}.dark[_ngcontent-%COMP%] tag.tag--editing[_ngcontent-%COMP%]{cursor:text}.bootstrap[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;color:#f9f9f9;border-radius:.25rem;background:#0275d8;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.bootstrap[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):active, .bootstrap[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):focus{background:#025aa5}.bootstrap[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#0267bf;color:#f9f9f9}.bootstrap[_ngcontent-%COMP%] tag.readonly[_ngcontent-%COMP%]{cursor:default}.bootstrap[_ngcontent-%COMP%] tag.readonly[_ngcontent-%COMP%]:focus, .bootstrap[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:focus{outline:0}.bootstrap[_ngcontent-%COMP%] tag.tag--editing[_ngcontent-%COMP%]{cursor:text}.bootstrap3-info[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;font-family:inherit;font-weight:400;font-size:95%;color:#fff;border-radius:.25em;background:#5bc0de;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative;padding:.25em .6em;text-align:center;white-space:nowrap}.bootstrap3-info[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):active, .bootstrap3-info[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(.readonly):not(.tag--editing):focus{background:#28a1c5}.bootstrap3-info[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#46b8da;color:#fff}.bootstrap3-info[_ngcontent-%COMP%] tag.readonly[_ngcontent-%COMP%]{cursor:default}.bootstrap3-info[_ngcontent-%COMP%] tag.readonly[_ngcontent-%COMP%]:focus, .bootstrap3-info[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:focus{outline:0}.bootstrap3-info[_ngcontent-%COMP%] tag.tag--editing[_ngcontent-%COMP%]{cursor:text}[_nghost-%COMP%]{display:block}\"], data: { animation: animations } });\nTagInputComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: DragProvider }\n];\n__decorate([\n Input()\n], TagInputComponent.prototype, \"separatorKeys\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"separatorKeyCodes\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"placeholder\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"secondaryPlaceholder\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"maxItems\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"validators\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"asyncValidators\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"onlyFromAutocomplete\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"errorMessages\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"theme\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"onTextChangeDebounce\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"inputId\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"inputClass\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"clearOnBlur\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"hideForm\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"addOnBlur\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"addOnPaste\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"pasteSplitPattern\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"blinkIfDupe\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"removable\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"editable\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"allowDupes\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"modelAsStrings\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"trimTags\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"inputText\", null);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"ripple\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"tabindex\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"disable\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"dragZone\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"onRemoving\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"onAdding\", void 0);\n__decorate([\n Input()\n], TagInputComponent.prototype, \"animationDuration\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onAdd\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onRemove\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onSelect\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onFocus\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onBlur\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onTextChange\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onPaste\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onValidationError\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"onTagEdited\", void 0);\n__decorate([\n ContentChild(TagInputDropdown)\n], TagInputComponent.prototype, \"dropdown\", void 0);\n__decorate([\n ContentChildren(TemplateRef, { descendants: false })\n], TagInputComponent.prototype, \"templates\", void 0);\n__decorate([\n ViewChild(TagInputForm)\n], TagInputComponent.prototype, \"inputForm\", void 0);\n__decorate([\n ViewChildren(TagComponent)\n], TagInputComponent.prototype, \"tags\", void 0);\n__decorate([\n Output()\n], TagInputComponent.prototype, \"inputTextChange\", void 0);\n__decorate([\n HostBinding('attr.tabindex')\n], TagInputComponent.prototype, \"tabindexAttr\", null);\n\nlet DeleteIconComponent = class DeleteIconComponent {\n};\nDeleteIconComponent.ɵfac = function DeleteIconComponent_Factory(t) { return new (t || DeleteIconComponent)(); };\nDeleteIconComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: DeleteIconComponent, selectors: [[\"delete-icon\"]], decls: 3, vars: 0, consts: [[\"height\", \"16px\", \"viewBox\", \"0 0 32 32\", \"width\", \"16px\"], [\"d\", \"M17.459,16.014l8.239-8.194c0.395-0.391,0.395-1.024,0-1.414c-0.394-0.391-1.034-0.391-1.428,0 l-8.232,8.187L7.73,6.284c-0.394-0.395-1.034-0.395-1.428,0c-0.394,0.396-0.394,1.037,0,1.432l8.302,8.303l-8.332,8.286 c-0.394,0.391-0.394,1.024,0,1.414c0.394,0.391,1.034,0.391,1.428,0l8.325-8.279l8.275,8.276c0.394,0.395,1.034,0.395,1.428,0 c0.394-0.396,0.394-1.037,0-1.432L17.459,16.014z\", \"fill\", \"#121313\"]], template: function DeleteIconComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"svg\", 0);\n ɵngcc0.ɵɵelement(2, \"path\", 1);\n ɵngcc0.ɵɵelementEnd()();\n } }, styles: [\".dark[_ngcontent-%COMP%] tag[_ngcontent-%COMP%]:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%]{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{border:none;box-shadow:none;outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{box-shadow:inset 0 1px 1px rgba(0,0,0,.4);border:1px solid #ccc}.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:.25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{border-bottom:2px solid #2196f3}.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.ng2-tag-input[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{margin:.1em 0}.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.dark.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused[_ngcontent-%COMP%]{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%]{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-radius:4px}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%]:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping[_ngcontent-%COMP%]{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid[_ngcontent-%COMP%]{box-shadow:inset 0 1px 1px #d9534f;border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading[_ngcontent-%COMP%]{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%] form[_ngcontent-%COMP%]{margin:.1em 0}.bootstrap3-info.ng2-tag-input[_ngcontent-%COMP%] .ng2-tags-container[_ngcontent-%COMP%]{flex-wrap:wrap;display:flex}.error-message[_ngcontent-%COMP%]{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%]{color:#d9534f}delete-icon[_nghost-%COMP%]{width:20px;height:16px;transition:.15s;display:inline-block;text-align:right}delete-icon[_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#444}delete-icon[_nghost-%COMP%] svg[_ngcontent-%COMP%]{vertical-align:bottom;height:34px}delete-icon[_nghost-%COMP%]:hover{transform:scale(1.5) translateY(-3px)}.dark[_nghost-%COMP%], .dark [_nghost-%COMP%]{text-align:right}.dark[_nghost-%COMP%] path[_ngcontent-%COMP%], .dark [_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#fff}.dark[_nghost-%COMP%] svg[_ngcontent-%COMP%], .dark [_nghost-%COMP%] svg[_ngcontent-%COMP%]{vertical-align:bottom;height:34px}.minimal[_nghost-%COMP%], .minimal [_nghost-%COMP%]{text-align:right}.minimal[_nghost-%COMP%] path[_ngcontent-%COMP%], .minimal [_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#444}.minimal[_nghost-%COMP%] svg[_ngcontent-%COMP%], .minimal [_nghost-%COMP%] svg[_ngcontent-%COMP%]{vertical-align:bottom;height:34px}.bootstrap[_nghost-%COMP%], .bootstrap [_nghost-%COMP%]{text-align:right}.bootstrap[_nghost-%COMP%] path[_ngcontent-%COMP%], .bootstrap [_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#fff}.bootstrap[_nghost-%COMP%] svg[_ngcontent-%COMP%], .bootstrap [_nghost-%COMP%] svg[_ngcontent-%COMP%]{vertical-align:bottom;height:34px}tag:active[_nghost-%COMP%] path[_ngcontent-%COMP%], tag:active [_nghost-%COMP%] path[_ngcontent-%COMP%], tag:focus[_nghost-%COMP%] path[_ngcontent-%COMP%], tag:focus [_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#fff}.darktag:active[_nghost-%COMP%] path[_ngcontent-%COMP%], .darktag:active [_nghost-%COMP%] path[_ngcontent-%COMP%], .darktag:focus[_nghost-%COMP%] path[_ngcontent-%COMP%], .darktag:focus [_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#000}.minimaltag:active[_nghost-%COMP%] path[_ngcontent-%COMP%], .minimaltag:active [_nghost-%COMP%] path[_ngcontent-%COMP%], .minimaltag:focus[_nghost-%COMP%] path[_ngcontent-%COMP%], .minimaltag:focus [_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#000}.bootstraptag:active[_nghost-%COMP%] path[_ngcontent-%COMP%], .bootstraptag:active [_nghost-%COMP%] path[_ngcontent-%COMP%], .bootstraptag:focus[_nghost-%COMP%] path[_ngcontent-%COMP%], .bootstraptag:focus [_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#fff}.bootstrap3-info[_nghost-%COMP%], .bootstrap3-info [_nghost-%COMP%]{height:inherit}.bootstrap3-info[_nghost-%COMP%] path[_ngcontent-%COMP%], .bootstrap3-info [_nghost-%COMP%] path[_ngcontent-%COMP%]{fill:#fff}\"] });\n\nconst optionsProvider = new OptionsProvider();\nlet TagInputModule = class TagInputModule {\n /**\n * @name withDefaults\n * @param options {Options}\n */\n static withDefaults(options) {\n optionsProvider.setOptions(options);\n }\n};\nTagInputModule.ɵfac = function TagInputModule_Factory(t) { return new (t || TagInputModule)(); };\nTagInputModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TagInputModule });\nTagInputModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n DragProvider,\n { provide: COMPOSITION_BUFFER_MODE, useValue: false },\n ], imports: [[\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n Ng2DropdownModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HighlightPipe, [{\n type: Pipe,\n args: [{\n name: 'highlight'\n }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragProvider, [{\n type: Injectable\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagInputAccessor, [{\n type: Directive\n }], function () { return []; }, { displayBy: [{\n type: Input\n }], identifyBy: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagInputForm, [{\n type: Component,\n args: [{\n selector: 'tag-input-form',\n template: \"\\n
\\n \\n
\\n\",\n styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px rgba(0,0,0,.4);border:1px solid #ccc}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:.25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196f3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f;border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}.ng2-tag-input__text-input{display:inline;vertical-align:middle;border:none;padding:0 .5rem;height:38px;font-size:1em;font-family:Roboto,\\\"Helvetica Neue\\\",sans-serif}.ng2-tag-input__text-input:focus{outline:0}.ng2-tag-input__text-input[disabled=true]{opacity:.5;background:#fff}\"]\n }]\n }], function () { return []; }, { onSubmit: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onKeyup: [{\n type: Output\n }], onKeydown: [{\n type: Output\n }], inputTextChange: [{\n type: Output\n }], validators: [{\n type: Input\n }], asyncValidators: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabled: [{\n type: Input\n }], inputText: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], inputId: [{\n type: Input\n }], inputClass: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagRipple, [{\n type: Component,\n args: [{\n selector: 'tag-ripple',\n template: `\n
\n `,\n animations: [\n trigger('ink', [\n state('none', style({ width: 0, opacity: 0 })),\n transition('none => clicked', [\n animate(300, keyframes([\n style({ opacity: 1, offset: 0, width: '30%', borderRadius: '100%' }),\n style({ opacity: 1, offset: 0.5, width: '50%' }),\n style({ opacity: 0.5, offset: 1, width: '100%', borderRadius: '16px' })\n ]))\n ])\n ])\n ],\n styles: [`\n :host {\n width: 100%;\n height: 100%;\n left: 0;\n overflow: hidden;\n position: absolute;\n }\n\n .tag-ripple {\n background: rgba(0, 0, 0, 0.1);\n top: 50%;\n left: 50%;\n height: 100%;\n transform: translate(-50%, -50%);\n position: absolute;\n }\n `]\n }]\n }], function () { return []; }, { state: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagComponent, [{\n type: Component,\n args: [{\n selector: 'tag',\n template: \"
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n
\\n {{ getDisplayValue(model) }}\\n
\\n\\n \\n \\n \\n
\\n
\\n\\n\\n\\n\",\n styles: [\":host,:host>div,:host>div:focus{outline:0;overflow:hidden;transition:opacity 1s;z-index:1}:host{max-width:400px}:host.blink{-webkit-animation:.3s ease-in-out forwards blink;animation:.3s ease-in-out forwards blink}@-webkit-keyframes blink{0%{opacity:.3}}@keyframes blink{0%{opacity:.3}}:host .disabled{cursor:not-allowed}:host [contenteditable=true]{outline:0}.tag-wrapper{flex-direction:row;display:flex}.tag__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { disabled: [{\n type: Input\n }], onSelect: [{\n type: Output\n }], onRemove: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onKeyDown: [{\n type: Output\n }], onTagEdited: [{\n type: Output\n }], moving: [{\n type: HostBinding,\n args: ['class.moving']\n }], \n /**\n * @name keydown\n * @param event\n */\n keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], model: [{\n type: Input\n }], removable: [{\n type: Input\n }], editable: [{\n type: Input\n }], template: [{\n type: Input\n }], displayBy: [{\n type: Input\n }], identifyBy: [{\n type: Input\n }], index: [{\n type: Input\n }], hasRipple: [{\n type: Input\n }], canAddTag: [{\n type: Input\n }], ripple: [{\n type: ViewChild,\n args: [TagRipple]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagInputDropdown, [{\n type: Component,\n args: [{\n selector: 'tag-input-dropdown',\n template: \"\\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n\\n\"\n }]\n }], function () { return [{ type: ɵngcc0.Injector }]; }, { offset: [{\n type: Input\n }], focusFirstElement: [{\n type: Input\n }], showDropdownIfEmpty: [{\n type: Input\n }], minimumTextLength: [{\n type: Input\n }], limitItemsTo: [{\n type: Input\n }], displayBy: [{\n type: Input\n }], identifyBy: [{\n type: Input\n }], matchingFn: [{\n type: Input\n }], appendToBody: [{\n type: Input\n }], keepOpen: [{\n type: Input\n }], dynamicUpdate: [{\n type: Input\n }], zIndex: [{\n type: Input\n }], autocompleteItems: [{\n type: Input\n }], \n /**\n * @name scrollListener\n */\n scrollListener: [{\n type: HostListener,\n args: ['window:scroll']\n }], \n /**\n * @name onWindowBlur\n */\n onWindowBlur: [{\n type: HostListener,\n args: ['window:blur']\n }], dropdown: [{\n type: ViewChild,\n args: [Ng2Dropdown]\n }], templates: [{\n type: ContentChildren,\n args: [TemplateRef]\n }], autocompleteObservable: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagInputComponent, [{\n type: Component,\n args: [{\n selector: 'tag-input',\n providers: [CUSTOM_ACCESSOR],\n template: \"\\n\\n \\n
\\n \\n \\n\\n \\n \\n
\\n\\n \\n\\n\\n\\n\\n \\n {{ error }}\\n

\\n\\n\\n\",\n animations,\n styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px rgba(0,0,0,.4);border:1px solid #ccc}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:.25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196f3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f;border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}.progress-bar,.progress-bar:before{height:2px;width:100%;margin:0}.progress-bar{background-color:#2196f3;display:flex;position:absolute;bottom:0}.progress-bar:before{background-color:#82c4f8;content:\\\"\\\";-webkit-animation:2s cubic-bezier(.4,0,.2,1) infinite running-progress;animation:2s cubic-bezier(.4,0,.2,1) infinite running-progress}@-webkit-keyframes running-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0}100%{margin-left:100%;margin-right:0}}@keyframes running-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0}100%{margin-left:100%;margin-right:0}}tag{display:flex;flex-direction:row;flex-wrap:wrap;font-family:Roboto,\\\"Helvetica Neue\\\",sans-serif;font-weight:400;font-size:1em;letter-spacing:.05rem;color:#444;border-radius:16px;transition:.3s;margin:.1rem .3rem .1rem 0;padding:.08rem .45rem;height:32px;line-height:34px;background:#efefef;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}tag:not(.readonly):not(.tag--editing):focus{background:#2196f3;color:#fff;box-shadow:0 2px 3px 1px #d4d1d1}tag:not(.readonly):not(.tag--editing):active{background:#0d8aee;color:#fff;box-shadow:0 2px 3px 1px #d4d1d1}tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#e2e2e2;color:initial;box-shadow:0 2px 3px 1px #d4d1d1}tag.readonly{cursor:default}tag.readonly:focus,tag:focus{outline:0}tag.tag--editing{background-color:#fff;border:1px solid #ccc;cursor:text}.minimal tag{display:flex;flex-direction:row;flex-wrap:wrap;border-radius:0;background:#f9f9f9;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.minimal tag:not(.readonly):not(.tag--editing):active,.minimal tag:not(.readonly):not(.tag--editing):focus{background:#d0d0d0;color:initial}.minimal tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#ececec}.minimal tag.readonly{cursor:default}.minimal tag.readonly:focus,.minimal tag:focus{outline:0}.minimal tag.tag--editing{cursor:text}.dark tag{display:flex;flex-direction:row;flex-wrap:wrap;color:#f9f9f9;border-radius:3px;background:#444;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.dark tag:not(.readonly):not(.tag--editing):focus{background:#efefef;color:#444}.dark tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#2b2b2b;color:#f9f9f9}.dark tag.readonly{cursor:default}.dark tag.readonly:focus,.dark tag:focus{outline:0}.dark tag.tag--editing{cursor:text}.bootstrap tag{display:flex;flex-direction:row;flex-wrap:wrap;color:#f9f9f9;border-radius:.25rem;background:#0275d8;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.bootstrap tag:not(.readonly):not(.tag--editing):active,.bootstrap tag:not(.readonly):not(.tag--editing):focus{background:#025aa5}.bootstrap tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#0267bf;color:#f9f9f9}.bootstrap tag.readonly{cursor:default}.bootstrap tag.readonly:focus,.bootstrap tag:focus{outline:0}.bootstrap tag.tag--editing{cursor:text}.bootstrap3-info tag{display:flex;flex-direction:row;flex-wrap:wrap;font-family:inherit;font-weight:400;font-size:95%;color:#fff;border-radius:.25em;background:#5bc0de;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative;padding:.25em .6em;text-align:center;white-space:nowrap}.bootstrap3-info tag:not(.readonly):not(.tag--editing):active,.bootstrap3-info tag:not(.readonly):not(.tag--editing):focus{background:#28a1c5}.bootstrap3-info tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#46b8da;color:#fff}.bootstrap3-info tag.readonly{cursor:default}.bootstrap3-info tag.readonly:focus,.bootstrap3-info tag:focus{outline:0}.bootstrap3-info tag.tag--editing{cursor:text}:host{display:block}\"]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: DragProvider }]; }, { separatorKeys: [{\n type: Input\n }], separatorKeyCodes: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], secondaryPlaceholder: [{\n type: Input\n }], maxItems: [{\n type: Input\n }], validators: [{\n type: Input\n }], asyncValidators: [{\n type: Input\n }], onlyFromAutocomplete: [{\n type: Input\n }], errorMessages: [{\n type: Input\n }], theme: [{\n type: Input\n }], onTextChangeDebounce: [{\n type: Input\n }], inputId: [{\n type: Input\n }], inputClass: [{\n type: Input\n }], clearOnBlur: [{\n type: Input\n }], hideForm: [{\n type: Input\n }], addOnBlur: [{\n type: Input\n }], addOnPaste: [{\n type: Input\n }], pasteSplitPattern: [{\n type: Input\n }], blinkIfDupe: [{\n type: Input\n }], removable: [{\n type: Input\n }], editable: [{\n type: Input\n }], allowDupes: [{\n type: Input\n }], modelAsStrings: [{\n type: Input\n }], trimTags: [{\n type: Input\n }], ripple: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disable: [{\n type: Input\n }], dragZone: [{\n type: Input\n }], onRemoving: [{\n type: Input\n }], onAdding: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], onAdd: [{\n type: Output\n }], onRemove: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onTextChange: [{\n type: Output\n }], onPaste: [{\n type: Output\n }], onValidationError: [{\n type: Output\n }], onTagEdited: [{\n type: Output\n }], inputTextChange: [{\n type: Output\n }], inputText: [{\n type: Input\n }], tabindexAttr: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], dropdown: [{\n type: ContentChild,\n args: [TagInputDropdown]\n }], templates: [{\n type: ContentChildren,\n args: [TemplateRef, { descendants: false }]\n }], inputForm: [{\n type: ViewChild,\n args: [TagInputForm]\n }], tags: [{\n type: ViewChildren,\n args: [TagComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DeleteIconComponent, [{\n type: Component,\n args: [{\n selector: 'delete-icon',\n template: \"\\n \\n \\n \\n\",\n styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:0;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px rgba(0,0,0,.4);border:1px solid #ccc}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:.25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196f3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f;border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}:host(delete-icon){width:20px;height:16px;transition:.15s;display:inline-block;text-align:right}:host(delete-icon) path{fill:#444}:host(delete-icon) svg{vertical-align:bottom;height:34px}:host(delete-icon):hover{transform:scale(1.5) translateY(-3px)}:host-context(.dark){text-align:right}:host-context(.dark) path{fill:#fff}:host-context(.dark) svg{vertical-align:bottom;height:34px}:host-context(.minimal){text-align:right}:host-context(.minimal) path{fill:#444}:host-context(.minimal) svg{vertical-align:bottom;height:34px}:host-context(.bootstrap){text-align:right}:host-context(.bootstrap) path{fill:#fff}:host-context(.bootstrap) svg{vertical-align:bottom;height:34px}:host-context(tag:active) path,:host-context(tag:focus) path{fill:#fff}:host-context(.darktag:active) path,:host-context(.darktag:focus) path{fill:#000}:host-context(.minimaltag:active) path,:host-context(.minimaltag:focus) path{fill:#000}:host-context(.bootstraptag:active) path,:host-context(.bootstraptag:focus) path{fill:#fff}:host-context(.bootstrap3-info){height:inherit}:host-context(.bootstrap3-info) path{fill:#fff}\"]\n }]\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TagInputModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n Ng2DropdownModule\n ],\n declarations: [\n TagInputComponent,\n DeleteIconComponent,\n TagInputForm,\n TagComponent,\n HighlightPipe,\n TagInputDropdown,\n TagRipple\n ],\n exports: [\n TagInputComponent,\n DeleteIconComponent,\n TagInputForm,\n TagComponent,\n HighlightPipe,\n TagInputDropdown,\n TagRipple\n ],\n providers: [\n DragProvider,\n { provide: COMPOSITION_BUFFER_MODE, useValue: false },\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TagInputModule, { declarations: function () { return [TagInputComponent, DeleteIconComponent, TagInputForm, TagComponent, HighlightPipe, TagInputDropdown, TagRipple]; }, imports: function () { return [CommonModule,\n ReactiveFormsModule,\n FormsModule,\n Ng2DropdownModule]; }, exports: function () { return [TagInputComponent, DeleteIconComponent, TagInputForm, TagComponent, HighlightPipe, TagInputDropdown, TagRipple]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DeleteIconComponent, TagComponent, TagInputComponent, TagInputDropdown, TagInputForm, TagInputModule, TagRipple, TagInputAccessor as ɵa, animations as ɵb, DragProvider as ɵc, HighlightPipe as ɵd };\n\n","import { Directive, ElementRef, EventEmitter, Input, NgModule, NgZone, Output } from '@angular/core';\nimport { fromEvent, of } from 'rxjs';\nimport { filter, map, mergeMap, tap, throttleTime } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/services/ngx-ins-utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} selector\n * @param {?} scrollWindow\n * @param {?} defaultElement\n * @param {?} fromRoot\n * @return {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nfunction resolveContainerElement(selector, scrollWindow, defaultElement, fromRoot) {\n /** @type {?} */\n const hasWindow = window && !!window.document && window.document.documentElement;\n /** @type {?} */\n let container = hasWindow && scrollWindow ? window : defaultElement;\n if (selector) {\n /** @type {?} */\n const containerIsString = selector && hasWindow && typeof selector === 'string';\n container = containerIsString\n ? findElement(selector, defaultElement.nativeElement, fromRoot)\n : selector;\n if (!container) {\n throw new Error('ngx-infinite-scroll {resolveContainerElement()}: selector for');\n }\n }\n return container;\n}\n/**\n * @param {?} selector\n * @param {?} customRoot\n * @param {?} fromRoot\n * @return {?}\n */\nfunction findElement(selector, customRoot, fromRoot) {\n /** @type {?} */\n const rootEl = fromRoot ? window.document : customRoot;\n return rootEl.querySelector(selector);\n}\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction inputPropChanged(prop) {\n return prop && !prop.firstChange;\n}\n/**\n * @return {?}\n */\nfunction hasWindowDefined() {\n return typeof window !== 'undefined';\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/services/axis-resolver.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst VerticalProps = {\n clientHeight: \"clientHeight\",\n offsetHeight: \"offsetHeight\",\n scrollHeight: \"scrollHeight\",\n pageYOffset: \"pageYOffset\",\n offsetTop: \"offsetTop\",\n scrollTop: \"scrollTop\",\n top: \"top\"\n};\n/** @type {?} */\nconst HorizontalProps = {\n clientHeight: \"clientWidth\",\n offsetHeight: \"offsetWidth\",\n scrollHeight: \"scrollWidth\",\n pageYOffset: \"pageXOffset\",\n offsetTop: \"offsetLeft\",\n scrollTop: \"scrollLeft\",\n top: \"left\"\n};\nclass AxisResolver {\n /**\n * @param {?=} vertical\n */\n constructor(vertical = true) {\n this.vertical = vertical;\n this.propsMap = vertical ? VerticalProps : HorizontalProps;\n }\n /**\n * @return {?}\n */\n clientHeightKey() {\n return this.propsMap.clientHeight;\n }\n /**\n * @return {?}\n */\n offsetHeightKey() {\n return this.propsMap.offsetHeight;\n }\n /**\n * @return {?}\n */\n scrollHeightKey() {\n return this.propsMap.scrollHeight;\n }\n /**\n * @return {?}\n */\n pageYOffsetKey() {\n return this.propsMap.pageYOffset;\n }\n /**\n * @return {?}\n */\n offsetTopKey() {\n return this.propsMap.offsetTop;\n }\n /**\n * @return {?}\n */\n scrollTopKey() {\n return this.propsMap.scrollTop;\n }\n /**\n * @return {?}\n */\n topKey() {\n return this.propsMap.top;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/services/event-trigger.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @record\n */\n\n/**\n * @param {?} alwaysCallback\n * @param {?} shouldFireScrollEvent\n * @param {?} isTriggeredCurrentTotal\n * @return {?}\n */\nfunction shouldTriggerEvents(alwaysCallback, shouldFireScrollEvent, isTriggeredCurrentTotal) {\n if (alwaysCallback && shouldFireScrollEvent) {\n return true;\n }\n if (!isTriggeredCurrentTotal && shouldFireScrollEvent) {\n return true;\n }\n return false;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/services/position-resolver.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction createResolver({ windowElement, axis }) {\n return createResolverWithContainer({ axis, isWindow: isElementWindow(windowElement) }, windowElement);\n}\n/**\n * @param {?} resolver\n * @param {?} windowElement\n * @return {?}\n */\nfunction createResolverWithContainer(resolver, windowElement) {\n /** @type {?} */\n const container = resolver.isWindow || (windowElement && !windowElement.nativeElement)\n ? windowElement\n : windowElement.nativeElement;\n return Object.assign(Object.assign({}, resolver), { container });\n}\n/**\n * @param {?} windowElement\n * @return {?}\n */\nfunction isElementWindow(windowElement) {\n /** @type {?} */\n const isWindow = ['Window', 'global'].some((/**\n * @param {?} obj\n * @return {?}\n */\n (obj) => Object.prototype.toString.call(windowElement).includes(obj)));\n return isWindow;\n}\n/**\n * @param {?} isContainerWindow\n * @param {?} windowElement\n * @return {?}\n */\nfunction getDocumentElement(isContainerWindow, windowElement) {\n return isContainerWindow ? windowElement.document.documentElement : null;\n}\n/**\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePoints(element, resolver) {\n /** @type {?} */\n const height = extractHeightForElement(resolver);\n return resolver.isWindow\n ? calculatePointsForWindow(height, element, resolver)\n : calculatePointsForElement(height, element, resolver);\n}\n/**\n * @param {?} height\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePointsForWindow(height, element, resolver) {\n const { axis, container, isWindow } = resolver;\n const { offsetHeightKey, clientHeightKey } = extractHeightPropKeys(axis);\n // scrolled until now / current y point\n /** @type {?} */\n const scrolled = height +\n getElementPageYOffset(getDocumentElement(isWindow, container), axis, isWindow);\n // total height / most bottom y point\n /** @type {?} */\n const nativeElementHeight = getElementHeight(element.nativeElement, isWindow, offsetHeightKey, clientHeightKey);\n /** @type {?} */\n const totalToScroll = getElementOffsetTop(element.nativeElement, axis, isWindow) +\n nativeElementHeight;\n return { height, scrolled, totalToScroll, isWindow };\n}\n/**\n * @param {?} height\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePointsForElement(height, element, resolver) {\n const { axis, container } = resolver;\n // perhaps use container.offsetTop instead of 'scrollTop'\n /** @type {?} */\n const scrolled = container[axis.scrollTopKey()];\n /** @type {?} */\n const totalToScroll = container[axis.scrollHeightKey()];\n return { height, scrolled, totalToScroll, isWindow: false };\n}\n/**\n * @param {?} axis\n * @return {?}\n */\nfunction extractHeightPropKeys(axis) {\n return {\n offsetHeightKey: axis.offsetHeightKey(),\n clientHeightKey: axis.clientHeightKey()\n };\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction extractHeightForElement({ container, isWindow, axis }) {\n const { offsetHeightKey, clientHeightKey } = extractHeightPropKeys(axis);\n return getElementHeight(container, isWindow, offsetHeightKey, clientHeightKey);\n}\n/**\n * @param {?} elem\n * @param {?} isWindow\n * @param {?} offsetHeightKey\n * @param {?} clientHeightKey\n * @return {?}\n */\nfunction getElementHeight(elem, isWindow, offsetHeightKey, clientHeightKey) {\n if (isNaN(elem[offsetHeightKey])) {\n /** @type {?} */\n const docElem = getDocumentElement(isWindow, elem);\n return docElem ? docElem[clientHeightKey] : 0;\n }\n else {\n return elem[offsetHeightKey];\n }\n}\n/**\n * @param {?} elem\n * @param {?} axis\n * @param {?} isWindow\n * @return {?}\n */\nfunction getElementOffsetTop(elem, axis, isWindow) {\n /** @type {?} */\n const topKey = axis.topKey();\n // elem = elem.nativeElement;\n if (!elem.getBoundingClientRect) {\n // || elem.css('none')) {\n return;\n }\n return (elem.getBoundingClientRect()[topKey] +\n getElementPageYOffset(elem, axis, isWindow));\n}\n/**\n * @param {?} elem\n * @param {?} axis\n * @param {?} isWindow\n * @return {?}\n */\nfunction getElementPageYOffset(elem, axis, isWindow) {\n /** @type {?} */\n const pageYOffset = axis.pageYOffsetKey();\n /** @type {?} */\n const scrollTop = axis.scrollTopKey();\n /** @type {?} */\n const offsetTop = axis.offsetTopKey();\n if (isNaN(window.pageYOffset)) {\n return getDocumentElement(isWindow, elem)[scrollTop];\n }\n else if (elem.ownerDocument) {\n return elem.ownerDocument.defaultView[pageYOffset];\n }\n else {\n return elem[offsetTop];\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/services/scroll-resolver.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} container\n * @param {?} distance\n * @param {?} scrollingDown\n * @return {?}\n */\nfunction shouldFireScrollEvent(container, distance, scrollingDown) {\n /** @type {?} */\n let remaining;\n /** @type {?} */\n let containerBreakpoint;\n if (container.totalToScroll <= 0) {\n return false;\n }\n /** @type {?} */\n const scrolledUntilNow = container.isWindow ? container.scrolled : container.height + container.scrolled;\n if (scrollingDown) {\n remaining =\n (container.totalToScroll - scrolledUntilNow) / container.totalToScroll;\n containerBreakpoint = distance.down / 10;\n }\n else {\n /** @type {?} */\n const totalHiddenContentHeight = container.scrolled + (container.totalToScroll - scrolledUntilNow);\n remaining = container.scrolled / totalHiddenContentHeight;\n containerBreakpoint = distance.up / 10;\n }\n /** @type {?} */\n const shouldFireEvent = remaining <= containerBreakpoint;\n return shouldFireEvent;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} container\n * @return {?}\n */\nfunction isScrollingDownwards(lastScrollPosition, container) {\n return lastScrollPosition < container.scrolled;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} container\n * @param {?} distance\n * @return {?}\n */\nfunction getScrollStats(lastScrollPosition, container, distance) {\n /** @type {?} */\n const scrollDown = isScrollingDownwards(lastScrollPosition, container);\n return {\n fire: shouldFireScrollEvent(container, distance, scrollDown),\n scrollDown\n };\n}\n/**\n * @param {?} position\n * @param {?} scrollState\n * @return {?}\n */\n\n/**\n * @param {?} totalToScroll\n * @param {?} scrollState\n * @return {?}\n */\n\n/**\n * @param {?} scrollState\n * @return {?}\n */\n\n/**\n * @param {?} scroll\n * @param {?} scrollState\n * @param {?} triggered\n * @param {?} isScrollingDown\n * @return {?}\n */\n\n/**\n * @param {?} totalToScroll\n * @param {?} scrollState\n * @param {?} isScrollingDown\n * @return {?}\n */\n\n/**\n * @param {?} scrollState\n * @param {?} scrolledUntilNow\n * @param {?} totalToScroll\n * @return {?}\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/services/scroll-state.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ScrollState {\n /**\n * @param {?} __0\n */\n constructor({ totalToScroll }) {\n this.lastScrollPosition = 0;\n this.lastTotalToScroll = 0;\n this.totalToScroll = 0;\n this.triggered = {\n down: 0,\n up: 0\n };\n this.totalToScroll = totalToScroll;\n }\n /**\n * @param {?} position\n * @return {?}\n */\n updateScrollPosition(position) {\n return (this.lastScrollPosition = position);\n }\n /**\n * @param {?} totalToScroll\n * @return {?}\n */\n updateTotalToScroll(totalToScroll) {\n if (this.lastTotalToScroll !== totalToScroll) {\n this.lastTotalToScroll = this.totalToScroll;\n this.totalToScroll = totalToScroll;\n }\n }\n /**\n * @param {?} scrolledUntilNow\n * @param {?} totalToScroll\n * @return {?}\n */\n updateScroll(scrolledUntilNow, totalToScroll) {\n this.updateScrollPosition(scrolledUntilNow);\n this.updateTotalToScroll(totalToScroll);\n }\n /**\n * @param {?} scroll\n * @param {?} isScrollingDown\n * @return {?}\n */\n updateTriggeredFlag(scroll, isScrollingDown) {\n if (isScrollingDown) {\n this.triggered.down = scroll;\n }\n else {\n this.triggered.up = scroll;\n }\n }\n /**\n * @param {?} totalToScroll\n * @param {?} isScrollingDown\n * @return {?}\n */\n isTriggeredScroll(totalToScroll, isScrollingDown) {\n return isScrollingDown\n ? this.triggered.down === totalToScroll\n : this.triggered.up === totalToScroll;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/services/scroll-register.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} config\n * @return {?}\n */\nfunction createScroller(config) {\n const { scrollContainer, scrollWindow, element, fromRoot } = config;\n /** @type {?} */\n const resolver = createResolver({\n axis: new AxisResolver(!config.horizontal),\n windowElement: resolveContainerElement(scrollContainer, scrollWindow, element, fromRoot)\n });\n /** @type {?} */\n const scrollState = new ScrollState({\n totalToScroll: calculatePoints(element, resolver)\n });\n /** @type {?} */\n const options = {\n container: resolver.container,\n throttle: config.throttle\n };\n /** @type {?} */\n const distance = {\n up: config.upDistance,\n down: config.downDistance\n };\n return attachScrollEvent(options).pipe(mergeMap((/**\n * @return {?}\n */\n () => of(calculatePoints(element, resolver)))), map((/**\n * @param {?} positionStats\n * @return {?}\n */\n (positionStats) => toInfiniteScrollParams(scrollState.lastScrollPosition, positionStats, distance))), tap((/**\n * @param {?} __0\n * @return {?}\n */\n ({ stats }) => scrollState.updateScroll(stats.scrolled, stats.totalToScroll))), filter((/**\n * @param {?} __0\n * @return {?}\n */\n ({ fire, scrollDown, stats: { totalToScroll } }) => shouldTriggerEvents(config.alwaysCallback, fire, scrollState.isTriggeredScroll(totalToScroll, scrollDown)))), tap((/**\n * @param {?} __0\n * @return {?}\n */\n ({ scrollDown, stats: { totalToScroll } }) => {\n scrollState.updateTriggeredFlag(totalToScroll, scrollDown);\n })), map(toInfiniteScrollAction));\n}\n/**\n * @param {?} options\n * @return {?}\n */\nfunction attachScrollEvent(options) {\n /** @type {?} */\n let obs = fromEvent(options.container, 'scroll');\n // For an unknown reason calling `sampleTime()` causes trouble for many users, even with `options.throttle = 0`.\n // Let's avoid calling the function unless needed.\n // Replacing with throttleTime seems to solve the problem\n // See https://github.com/orizens/ngx-infinite-scroll/issues/198\n if (options.throttle) {\n obs = obs.pipe(throttleTime(options.throttle));\n }\n return obs;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} stats\n * @param {?} distance\n * @return {?}\n */\nfunction toInfiniteScrollParams(lastScrollPosition, stats, distance) {\n const { scrollDown, fire } = getScrollStats(lastScrollPosition, stats, distance);\n return {\n scrollDown,\n fire,\n stats\n };\n}\n/** @type {?} */\nconst InfiniteScrollActions = {\n DOWN: '[NGX_ISE] DOWN',\n UP: '[NGX_ISE] UP'\n};\n/**\n * @param {?} response\n * @return {?}\n */\nfunction toInfiniteScrollAction(response) {\n const { scrollDown, stats: { scrolled: currentScrollPosition } } = response;\n return {\n type: scrollDown ? InfiniteScrollActions.DOWN : InfiniteScrollActions.UP,\n payload: {\n currentScrollPosition\n }\n };\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/modules/infinite-scroll.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass InfiniteScrollDirective {\n /**\n * @param {?} element\n * @param {?} zone\n */\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.scrolled = new EventEmitter();\n this.scrolledUp = new EventEmitter();\n this.infiniteScrollDistance = 2;\n this.infiniteScrollUpDistance = 1.5;\n this.infiniteScrollThrottle = 150;\n this.infiniteScrollDisabled = false;\n this.infiniteScrollContainer = null;\n this.scrollWindow = true;\n this.immediateCheck = false;\n this.horizontal = false;\n this.alwaysCallback = false;\n this.fromRoot = false;\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n if (!this.infiniteScrollDisabled) {\n this.setup();\n }\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n ngOnChanges({ infiniteScrollContainer, infiniteScrollDisabled, infiniteScrollDistance }) {\n /** @type {?} */\n const containerChanged = inputPropChanged(infiniteScrollContainer);\n /** @type {?} */\n const disabledChanged = inputPropChanged(infiniteScrollDisabled);\n /** @type {?} */\n const distanceChanged = inputPropChanged(infiniteScrollDistance);\n /** @type {?} */\n const shouldSetup = (!disabledChanged && !this.infiniteScrollDisabled) ||\n (disabledChanged && !infiniteScrollDisabled.currentValue) || distanceChanged;\n if (containerChanged || disabledChanged || distanceChanged) {\n this.destroyScroller();\n if (shouldSetup) {\n this.setup();\n }\n }\n }\n /**\n * @return {?}\n */\n setup() {\n if (hasWindowDefined()) {\n this.zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n this.disposeScroller = createScroller({\n fromRoot: this.fromRoot,\n alwaysCallback: this.alwaysCallback,\n disable: this.infiniteScrollDisabled,\n downDistance: this.infiniteScrollDistance,\n element: this.element,\n horizontal: this.horizontal,\n scrollContainer: this.infiniteScrollContainer,\n scrollWindow: this.scrollWindow,\n throttle: this.infiniteScrollThrottle,\n upDistance: this.infiniteScrollUpDistance\n }).subscribe((/**\n * @param {?} payload\n * @return {?}\n */\n (payload) => this.zone.run((/**\n * @return {?}\n */\n () => this.handleOnScroll(payload)))));\n }));\n }\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n handleOnScroll({ type, payload }) {\n switch (type) {\n case InfiniteScrollActions.DOWN:\n return this.scrolled.emit(payload);\n case InfiniteScrollActions.UP:\n return this.scrolledUp.emit(payload);\n default:\n return;\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroyScroller();\n }\n /**\n * @return {?}\n */\n destroyScroller() {\n if (this.disposeScroller) {\n this.disposeScroller.unsubscribe();\n }\n }\n}\nInfiniteScrollDirective.ɵfac = function InfiniteScrollDirective_Factory(t) { return new (t || InfiniteScrollDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nInfiniteScrollDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: InfiniteScrollDirective, selectors: [[\"\", \"infiniteScroll\", \"\"], [\"\", \"infinite-scroll\", \"\"], [\"\", \"data-infinite-scroll\", \"\"]], inputs: { infiniteScrollDistance: \"infiniteScrollDistance\", infiniteScrollUpDistance: \"infiniteScrollUpDistance\", infiniteScrollThrottle: \"infiniteScrollThrottle\", infiniteScrollDisabled: \"infiniteScrollDisabled\", infiniteScrollContainer: \"infiniteScrollContainer\", scrollWindow: \"scrollWindow\", immediateCheck: \"immediateCheck\", horizontal: \"horizontal\", alwaysCallback: \"alwaysCallback\", fromRoot: \"fromRoot\" }, outputs: { scrolled: \"scrolled\", scrolledUp: \"scrolledUp\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nInfiniteScrollDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone }\n];\nInfiniteScrollDirective.propDecorators = {\n scrolled: [{ type: Output }],\n scrolledUp: [{ type: Output }],\n infiniteScrollDistance: [{ type: Input }],\n infiniteScrollUpDistance: [{ type: Input }],\n infiniteScrollThrottle: [{ type: Input }],\n infiniteScrollDisabled: [{ type: Input }],\n infiniteScrollContainer: [{ type: Input }],\n scrollWindow: [{ type: Input }],\n immediateCheck: [{ type: Input }],\n horizontal: [{ type: Input }],\n alwaysCallback: [{ type: Input }],\n fromRoot: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InfiniteScrollDirective, [{\n type: Directive,\n args: [{\n selector: '[infiniteScroll], [infinite-scroll], [data-infinite-scroll]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { scrolled: [{\n type: Output\n }], scrolledUp: [{\n type: Output\n }], infiniteScrollDistance: [{\n type: Input\n }], infiniteScrollUpDistance: [{\n type: Input\n }], infiniteScrollThrottle: [{\n type: Input\n }], infiniteScrollDisabled: [{\n type: Input\n }], infiniteScrollContainer: [{\n type: Input\n }], scrollWindow: [{\n type: Input\n }], immediateCheck: [{\n type: Input\n }], horizontal: [{\n type: Input\n }], alwaysCallback: [{\n type: Input\n }], fromRoot: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/modules/ngx-infinite-scroll.module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass InfiniteScrollModule {\n}\nInfiniteScrollModule.ɵfac = function InfiniteScrollModule_Factory(t) { return new (t || InfiniteScrollModule)(); };\nInfiniteScrollModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: InfiniteScrollModule });\nInfiniteScrollModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [], imports: [[]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InfiniteScrollModule, [{\n type: NgModule,\n args: [{\n declarations: [InfiniteScrollDirective],\n exports: [InfiniteScrollDirective],\n imports: [],\n providers: []\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(InfiniteScrollModule, { declarations: [InfiniteScrollDirective], exports: [InfiniteScrollDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/ngx-infinite-scroll.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Angular library starter.\n * Build an Angular library compatible with AoT compilation & Tree shaking.\n * Written by Roberto Simonetti.\n * MIT license.\n * https://github.com/robisim74/angular-library-starter\n */\n/**\n * Entry point for all public APIs of the package.\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: ngx-infinite-scroll.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { InfiniteScrollDirective, InfiniteScrollModule };\n\n","import { Subscriber } from '../Subscriber';\nexport function mapTo(value) {\n return (source) => source.lift(new MapToOperator(value));\n}\nclass MapToOperator {\n constructor(value) {\n this.value = value;\n }\n call(subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n }\n}\nclass MapToSubscriber extends Subscriber {\n constructor(destination, value) {\n super(destination);\n this.value = value;\n }\n _next(x) {\n this.destination.next(this.value);\n }\n}\n","/*!\n * perfect-scrollbar v1.5.0\n * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nfunction processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nfunction updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.ceil(rect.width);\n i.containerHeight = Math.ceil(rect.height);\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nfunction clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n\nfunction dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n e.preventDefault();\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n}\n\nfunction keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n\nfunction wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for ` 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.2.7\", 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.2.7\", type: NgForOf, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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](https://angular.io/guide/built-in-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.2.7\", 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.2.7\", type: NgIf, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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 */\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.2.7\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: NgSwitch, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", 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.2.7\", type: NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", 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.2.7\", type: NgSwitchDefault, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: NgPlural, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", 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.2.7\", type: NgPluralCase, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", 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.2.7\", type: NgStyle, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.7\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: AsyncPipe, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: LowerCasePipe, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: TitleCasePipe, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: UpperCasePipe, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", 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.2.7\", ngImport: i0, type: DatePipe, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: I18nPluralPipe, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: I18nSelectPipe, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: JsonPipe, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: KeyValuePipe, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: DecimalPipe, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: PercentPipe, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", 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.2.7\", ngImport: i0, type: CurrencyPipe, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: SlicePipe, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: CommonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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 */\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/**\n * @publicApi\n */\nconst VERSION = new Version('13.2.7');\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/**\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, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, 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, 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.2.7\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.2.7\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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.2.7\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.7\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.7\", 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