{"version":3,"file":"./js/main.js","mappings":"6JAAA,mCACIA,EAAEC,OAAOD,EAAEE,GAAGC,aAAaC,UAAW,CAClCC,YAAa,SAACC,EAAIC,GACd,IAAIC,EAAQR,EAAE,iBAAiBS,KAAKF,EAAKG,OACzC,OAAOV,EAAE,aACJW,KAAK,uBAAwBJ,GAC7BK,OAAOJ,GACPK,SAASP,EAClB,EACAQ,YAAa,WACTC,KAAKC,KAAKC,QAAQC,WAAWlB,EAAE,+CAA+CmB,QAAU,EAC5F,GAER,EAEA,uCACKnB,EAAUoB,OAAOC,aAAe,SAAUC,EAAGC,EAAGC,EAAGC,EAAGC,GACnD,OAAOD,IAAIF,EAAEA,EAAEG,EAAE,GAAGH,EAAEA,EAAI,GAAKC,CACnC,CACJ,C,uECnBA,aACA,SACA,SAKA,0BAgKA,QAvJW,EAAAG,KAAP,WAC8B,IAAtBC,OAAOC,aACPC,EAAIC,gBAGJD,EAAIE,cAAcC,OAAS,IAC3BH,EAAII,yBACJ,UAAGC,EAAEC,GAAG,SAAUN,EAAII,yBAG1BJ,EAAIO,aACR,EAEe,EAAAA,YAAf,WACI,IAAMC,EAAStC,EAAE,kBACXuC,EAAavC,EAAE,4BACfwC,EAASxC,EAAE,cACXyC,EAASzC,EAAE,cACX0C,EAAQ,IACRC,EAAQ,IACRC,EAAS,GAEXC,EAAQ,EACRC,EAAQ,EACRC,EAAQ,EACRC,EAAQ,EAEZ,GAAoB,GAAjBR,EAAOP,QAAgC,GAAjBQ,EAAOR,OAAhC,CAEA,I,EACQgB,EACAC,EA2BJC,EAAO,W,MACHF,EAAUX,EAAOc,SAASC,KAC1BH,EAAU,UAAGf,EAAEmB,aAAehB,EAAOc,SAASC,KAAOE,KAAKC,IAAIlB,EAAOpB,aAAyC,QAA3B,EAAAqB,EAAWrB,YAAW,UAAK,QAAI,GAEtHsB,EAAOiB,IAAI,OAAWR,EAAUJ,EAAQD,EAAM,MAC9CH,EAAOgB,IAAI,QAAYP,EAAUJ,EAAQF,EAAM,KACnD,EAlCQK,EAAUX,EAAOc,SAASC,KAC1BH,EAAU,UAAGf,EAAEmB,aAAehB,EAAOc,SAASC,KAAOE,KAAKC,IAAIlB,EAAOpB,aAAyC,QAA3B,EAAAqB,EAAWrB,YAAW,UAAK,QAAI,GAEtH6B,EAAQC,EAAS,UAAGb,EAAEuB,cAAgB,IAAO,IAAM,IAEhDT,GAAWP,MACVG,EAAQH,EACLO,GAAWN,MACVE,EAAQF,GAGZH,EAAOiB,IAAI,QAAYZ,EAAK,MAC5BL,EAAOiB,IAAI,SAAaV,EAAK,MAC7B,UAAQY,iBAAiBnB,IAG1BU,GAAWR,MACVI,EAAQJ,EACLQ,GAAWP,MACVG,EAAQH,GAGZF,EAAOgB,IAAI,QAAYX,EAAK,MAC5BL,EAAOgB,IAAI,SAAaT,EAAK,MAC7B,UAAQW,iBAAiBlB,IAajCU,IACA,UAAGhB,EAAEC,GAAG,SAAU,EAAAwB,MAAMC,SAASV,EAAM,GAAI,MAzCQ,CA0CvD,EAYe,EAAApB,cAAf,WACI,IAAI+B,EAAMlC,OAAOmC,cAGbC,EAAsB,CACtB,6MAA6MF,EAAG,WAChN,6MAA6MA,EAAG,WAChN,6MAA6MA,EAAG,WAChN,6MAA6MA,EAAG,WAChN,6MAA6MA,EAAG,YAGhNG,EAAyB,EACzBC,EAAW,UAAG/B,EAAEgC,SAChBC,EAAY,EACZC,EAAM,GAGVrE,EAAE,sCAAsCsE,MAAK,SAACC,EAAGC,GACzCD,GAAK,GAAGF,EAAII,KAAKD,EACzB,IAEAxE,EAAE,sCAAsCsE,MAAK,SAACC,EAAGC,GACzCD,GAAK,GAAGF,EAAII,KAAKD,GACrBJ,EAAY,CAChB,IACApE,EAAE,eAAesE,MAAK,SAACC,EAAGC,GACtBH,EAAII,KAAKD,EACb,IAKA,IAHA,IAAIE,EAAW,KAGNC,EAAI,EAAGA,EAAIN,EAAIpC,OAAQ0C,IAAK,CACjC,IAAIC,GAAS,EACTC,EAAO7E,EAAEqE,EAAIM,IAEjB,GAAIA,EAAI,EAEJC,EADqBC,EAAKzB,SAAS0B,IAAMJ,EAAStB,SAAS0B,KAChCZ,EAAWE,EAGtCQ,GAAUX,EAAyBD,EAAoB/B,SACvD4C,EAAKE,OAAO,yBAA2Bf,EAAoBC,GAA0B,UACrF,UAAQe,WACRf,IACAS,EAAWG,E,CAGvB,EAMe,EAAA3C,uBAAf,WAEQJ,EAAImD,oBAAoBC,GAAG,aACvBpD,EAAIqD,yBAAyBlD,OAAS,EACtCH,EAAIsD,gBAAgBC,aAAavD,EAAIqD,0BAErCrD,EAAIsD,gBAAgBvE,SAASiB,EAAIwD,+BAErCxD,EAAIyD,mBAAmB1E,SAASiB,EAAIwD,iCAEpCxD,EAAIsD,gBAAgBvE,SAASiB,EAAI0D,2BACjC1D,EAAIyD,mBAAmB1E,SAASiB,EAAI0D,2BAG5C,EA9Je,EAAAxD,cAAgBhC,EAAE,0BAClB,EAAAmF,yBAA2BnF,EAAE,8EAC7B,EAAAiF,oBAAsBjF,EAAE,WAAY8B,EAAIE,eACxC,EAAAoD,gBAAkBpF,EAAE,yBACpB,EAAAuF,mBAAqBvF,EAAE,4BACvB,EAAAwF,0BAA4BxF,EAAE,yCAC9B,EAAAsF,8BAAgCtF,EAAE,8CAyJrD,C,CAhKA,G,UAAqB8B,C,qECPrB,8BAUA,QATW,EAAAkD,SAAP,YACKpD,OAAO6D,YAAc7D,OAAO6D,aAAe,IAAIhB,KAAK,CAAC,EAC1D,EAEO,EAAAd,iBAAP,SAAwBa,GACRxE,EAAEwE,GACVkB,KAAK,gBAAgBC,YAAY,eAAeC,SAAS,eAC7DC,EAAQb,UACZ,EACJ,EAVA,G,kGCAA,8BA8JA,QArJW,EAAAc,WAAP,WAEI9F,EAAE,wCAAwCoC,GAAG,QAAS2D,EAASC,eAG/D,IAAMC,EAAcjG,EAAE,wBAAyB,4BAC/CiG,EAAY3B,MAAK,SAACC,EAAGC,GAASxE,EAAEwE,GAAI7D,KAAKoF,EAASG,UAAW3B,EAAI,IACjE0B,EAAY7D,GAAG,QAAS2D,EAASI,iBAGjC,IAAMC,EAAiBpG,EAAE,+CACzBoG,EAAe9B,MAAK,SAACC,EAAGC,GAASxE,EAAEwE,GAAI7D,KAAKoF,EAASG,UAAW3B,EAAI,IACpE6B,EAAehE,GAAG,QAAS2D,EAASM,oBAGnBrG,EAAE,aACVoC,GAAG,UAAW2D,EAASO,oBAChBtG,EAAE,WACVoC,GAAG,SAAU2D,EAASQ,kBAClC,EAEO,EAAAP,cAAP,SAAqBQ,GACjB,IAAM9F,EAAQV,EAAEwG,EAAEC,QAAQ9F,KAAKoF,EAASW,WAExCC,KAAK,QACD,QACA,CACI,eAAkBZ,EAASa,YAC3B,YAAelG,EACf,eAAkB,UAS9B,EAEO,EAAAyF,gBAAP,SAAuBK,GACnB,IAAMK,EAAQ7G,EAAEwG,EAAEC,QAAQ9F,KAAKoF,EAASG,WAExCS,KAAK,QACD,QACA,CACI,eAAkBZ,EAASe,YAC3B,YAAe,OACf,MAASD,EACT,eAAkB,UAU9B,EAEO,EAAAR,mBAAP,SAA0BG,GACtB,IAAMK,EAAQ7G,EAAEwG,EAAEC,QAAQ9F,KAAKoF,EAASG,WAExCS,KAAK,QACD,QACA,CACI,eAAkBZ,EAASe,YAC3B,YAAe,UACf,MAASD,EACT,eAAkB,UAU9B,EAEO,EAAAE,iBAAP,SAAwBxG,GAEpBoG,KAAK,QACD,QACA,CACI,eAAkBZ,EAASiB,eAC3B,YAAezG,EAAKsG,MACpB,MAAStG,EAAK0G,MACd,eAAkB,UAU9B,EAEO,EAAAX,mBAAP,SAA0BE,GACR,SAAVA,EAAEU,MAAmBnB,EAASoB,oBAE9BR,KAAK,QACL,YACA,CACI,eAAkBZ,EAASiB,eAC3B,YAAejB,EAASoB,oBAAoBN,MAC5C,MAASd,EAASoB,oBAAoBF,MACtC,eAAkB,WAUJ,cAAXT,EAAEU,MAAmC,cAAXV,EAAEU,MAAmC,eAAXV,EAAEU,MAAoC,YAAXV,EAAEU,OAExFnB,EAASoB,oBAAsB,KAEvC,EAEO,EAAAZ,kBAAP,SAAyBC,GACjBT,EAASoB,qBAETR,KAAK,QACL,SACA,CACI,eAAkBZ,EAASiB,eAC3B,YAAejB,EAASoB,oBAAoBN,MAC5C,MAASd,EAASoB,oBAAoBF,MACtC,eAAkB,UAY9B,EA5Je,EAAAL,YAAc,YACd,EAAAE,YAAc,aACd,EAAAE,eAAiB,cACjB,EAAAN,UAAY,gBACZ,EAAAR,UAAY,gBAEpB,EAAAiB,oBAAsB,KAuJjC,C,CA9JA,GAAa,EAAApB,SAAAA,C,sECAb,aACA,SAGA,0BAwBA,QApBW,EAAApE,KAAP,sBAEOZ,KAAKqG,WAERpH,EAAE,cAAcsE,MAAK,SAACC,EAAGC,GACrB,KAAGD,EAAI,GAAP,CAEA,IAAM8C,EAAMrH,EAAEwE,GACd,EAAK4C,UAAYC,EAAI,GAErB,UAAG7F,EAAEoE,SAAS,iBACdyB,EAAI5D,IAAI,UAAW,IAEnBzD,EAAE,yEAAyEa,SAASwG,GAAKjF,GAAG,SAAS,WAChGiF,EAAIzB,SAAS,oBAClB,IAEA,UAAQjC,iBAAiB0D,EAZT,CAapB,GACJ,EACJ,EAxBA,G,0GCHA,iBAqBI,aAnBQ,KAAAC,WAAa,aAoBjBvG,KAAKyD,GAAKxE,EAAE,kBACRe,KAAKyD,GAAGvC,SACRlB,KAAKwG,SAAWvH,EAAE,aAAce,KAAKyD,IAAIgD,MAEzCzG,KAAK0G,QAAUzH,EAAE,WAAYe,KAAKyD,IAClCzD,KAAK2G,WAAa1H,EAAE,cAAee,KAAKyD,IACxCzD,KAAK4G,MAAQ3H,EAAE,SAAUe,KAAKyD,IAC9BzD,KAAK6G,iBAAmB5H,EAAE,oBAAqBe,KAAKyD,IACpDzD,KAAK8G,MAAQ7H,EAAE,SAAUe,KAAKyD,IAC9BzD,KAAK+G,QAAU9H,EAAE,SAAUe,KAAK8G,OAChC9G,KAAKgH,SAAW/H,EAAE,UAAWe,KAAK8G,OAClC9G,KAAKiH,OAAShI,EAAE,QAASe,KAAK8G,OAC9B9G,KAAKkH,MAAQjI,EAAE,SAAUe,KAAKyD,IAC9BzD,KAAKmH,QAAUlI,EAAE,SAAUe,KAAKkH,OAChClH,KAAKoH,SAAWnI,EAAE,UAAWe,KAAKkH,OAClClH,KAAKqH,SAAWpI,EAAE,YAAae,KAAKyD,IAEpCzD,KAAKsH,QAAU,WAAatH,KAAKwG,SACjCxG,KAAKuH,YAAc,IAAIC,KAEvB5B,KAAK,QACD,OACA,CACI,eAAkB5F,KAAKuG,WACvB,YAAevG,KAAKsH,UAGpC,CAiHJ,OA/GI,YAAAG,cAAA,SAAchC,GACVzF,KAAKkH,MAAMQ,OACX1H,KAAK+G,QAAQW,OAAOhI,KAAK,IACzBM,KAAKgH,SAASU,OAAOhI,KAAK,IAC1BM,KAAKiH,OAAOS,OACZ1H,KAAK2H,cAAclC,EACvB,EAEA,YAAAmC,YAAA,SAAYnC,GAAZ,WA0CI,OAzCAA,EAAEoC,iBAEF7H,KAAKkH,MAAMQ,OACX1H,KAAK+G,QAAQW,OAAOhI,KAAK,IACzBM,KAAKgH,SAASU,OAAOhI,KAAK,IAC1BM,KAAKiH,OAAOS,OACZ1H,KAAK8H,gBAAkB,IAAIN,KAE3B5B,KAAK,QACD,YACA,CACI,eAAkB5F,KAAKuG,WACvB,YAAevG,KAAKsH,QACpB,MAAStH,KAAK8H,gBAAgBC,UAAY/H,KAAKuH,YAAYQ,YAGnEC,MAASnH,OAAOoH,UAAUC,wBAAuB,aAAalI,KAAKwG,SAAQ,eAAexG,KAAK0G,QAAQD,OAClG0B,MAAK,SAAAC,GACF,IAAKA,EAASC,GACV,MAAM,IAAIC,MAAM,+BAEpB,OAAOF,EAASG,MACpB,IACCJ,MAAK,SAACvI,GACCA,EAAK0I,MACL,EAAKvB,QAAQyB,KAAK5I,EAAK6I,KAAKC,QAG5B9I,EAAK+I,iCACL,EAAK5B,QAAQyB,KAAK5I,EAAK+I,iCAAiCD,OAE5D,EAAK1B,SAASwB,KAAK5I,EAAKgJ,gBAAgBF,OACxC,EAAK7B,iBAAiB2B,KAAK5I,EAAKiJ,iBAChC,EAAK5B,OAAOyB,OACZ,EAAKrB,SAASqB,OACd,EAAKxB,MAAMwB,OACf,IACCI,OAAM,SAAAC,GACH,EAAKhC,QAAQyB,KAAK,8BAA8BE,MACpD,KAEG,CACX,EAEA,YAAAf,cAAA,SAAclC,GACVzF,KAAKmH,QAAQO,OAAOhI,KAAK,IACzBM,KAAKoH,SAASM,OAAOhI,KAAK,IAC1BM,KAAK4G,MAAMoC,SAASpE,YAAY,YACpC,EAEA,YAAAqE,YAAA,SAAYxD,GAAZ,WACIA,EAAEoC,iBAEF7H,KAAKmH,QAAQO,OAAOhI,KAAK,IACzBM,KAAKoH,SAASM,OAAOhI,KAAK,IAAIkF,YAAY,gBAAgBA,YAAY,eACtE5E,KAAK4G,MAAMoC,SAASpE,YAAY,aAEhC,IAAMsE,EAAQ,IAAI1B,KA2ClB,OAzCA5B,KAAK,QACD,QACA,CACI,eAAkB5F,KAAKuG,WACvB,YAAevG,KAAKsH,QACpB,MAAS4B,EAAMnB,UAAY/H,KAAK8H,gBAAgBC,YAGxDC,MAASnH,OAAOoH,UAAUkB,oBAAmB,aAAanJ,KAAKwG,SAAQ,eAAexG,KAAK0G,QAAQD,MAAK,cAAczG,KAAK2G,WAAWF,MAAK,SAASzG,KAAK4G,MAAMH,OAC1J0B,MAAK,SAAAC,GACF,IAAKA,EAASC,GACV,MAAM,IAAIC,MAAM,+BAEpB,OAAOF,EAASG,MACpB,IACCJ,MAAK,SAACvI,GACH,GAAIA,EAAK0I,OAEL,GADA,EAAKnB,QAAQqB,KAAK5I,EAAK6I,KAAKC,OACxB9I,EAAKwJ,UAAW,CAChB,EAAKxC,MAAMoC,SAASnE,SAAS,aAE7B,IAAMwE,EAAQ,IAAI7B,KAElB5B,KAAK,QACD,oBACA,CACI,eAAkB,EAAKW,WACvB,YAAe,EAAKe,QACpB,MAAS+B,EAAMtB,UAAY,EAAKD,gBAAgBC,W,OAKhE,EAAKX,SAASoB,KAAK5I,EAAKgJ,gBAAgB/D,SAASjF,EAAK0J,QAAU,cAAgB,gBAAgBZ,OAChG,EAAKrB,SAASqB,OACd,EAAKxB,MAAMwB,MACf,IACCI,OAAM,SAAAC,GACH,EAAK5B,QAAQqB,KAAK,8BAA8BE,MACpD,KAEG,CACX,EACJ,EAlKA,GAAa,EAAAa,iBAAAA,C,uECDb,aAEA,UAAe,CACXC,IAAK,GACLC,SAAU,KACVC,YAAa,GACbC,cAAc,EACdC,OAAO,EAEPC,oBAAA,SAAoBC,GAChBA,EAAInF,KAAK,eAAeC,YAAY,cAAcC,SAAS,eAC3DiF,EAAInF,KAAK,oBAAoBC,YAAY,mBAAmBC,SAAS,kBACzE,EAEAkF,WAAA,SAAWnK,EAA8BoK,GACrC,IAAK,IAAIxG,EAAI,EAAGA,EAAI5D,EAAKsB,OAAQsC,IAAK,CAClC,GAAI5D,EAAK4D,GAAGyG,KAAOD,GAA4B,MAApBpK,EAAK4D,GAAG0G,WAAsBtK,EAAK4D,GAAG2G,YAC7D,OAAO,EAEX,GAAIvK,EAAK4D,GAAG0G,UACJlK,KAAK+J,WAAWnK,EAAK4D,GAAG0G,SAAUF,GAClC,OAAO,C,CAKnB,OAAO,CACX,EAEAI,WAAA,SAAWxK,GAAX,WAEQyK,EADQpL,EAAE,wBAAwBqL,SAAS,SACxBzK,OAAO,aAE1BG,KAAKyJ,WAAazJ,KAAK+J,WAAWnK,EAAMI,KAAKyJ,UAC7CzB,MAAShI,KAAK0J,YAAW,SAAS1J,KAAKyJ,SAAQ,mBAC9CtB,MAAK,SAAAC,GACF,IAAKA,EAASC,GACV,MAAM,IAAIC,MAAM,+BAEpB,OAAOF,EAASG,MACpB,IACCJ,MAAK,SAACvI,GACH,EAAK2K,WAAW3K,EAAMyK,EAC1B,IAEArK,KAAKuK,WAAW3K,EAAMyK,EAE9B,EAEAE,WAAA,SAAW3K,EAA8ByK,GAGrC,IAFA,IAAMG,EAAOxK,KAEJwD,EAAI,EAAGA,EAAI5D,EAAKsB,OAAQsC,IAAK,CAClC,IAAMiH,EAAOzK,KAAK0K,YAAY9K,EAAK4D,GAAI,GACvC6G,EAAWxK,OAAO4K,GACd7K,EAAK4D,GAAG0G,WACJtK,EAAK4D,GAAG0G,SAAShJ,OAAS,IAC1BsJ,EAAKG,UAAU/K,EAAK4D,GAAGyG,IAAMrK,EAAK4D,GAAG0G,UAGzClK,KAAK4K,cAAchL,EAAK4D,GAAG0G,SAAUO,GAAM,G,CAI/CD,EAAKb,cAAgBa,EAAKf,UAC1B,UAAG9I,EACEkK,QAAQ,UACRC,MAAM,EAKnB,EAEAF,cAAA,SAAcG,EAA8BC,EAAiBC,GAIzD,IAHA,IACMnB,EAAMkB,EAAQE,QAAQ,MAEnB1H,EAAIuH,EAAK7J,OAAS,EAAGsC,GAAK,EAAGA,IAAK,CACvC,IAAMiH,EAAOzK,KAAK0K,YAAYK,EAAKvH,GAAIsG,EAAIlK,KAAK,SAAW,GAC3D6K,EAAKU,YAAYrB,GAEbiB,EAAKvH,GAAG0G,WACJa,EAAKvH,GAAG0G,SAAShJ,OAAS,IARzBlB,KASI2K,UAAUI,EAAKvH,GAAGyG,IAAMc,EAAKvH,GAAG0G,UAEzClK,KAAK6J,oBAAoBC,GACrBmB,GACAjL,KAAK4K,cAAcG,EAAKvH,GAAG0G,SAAUO,EAAMQ,G,CAI3D,EAEAP,YAAA,SAAY9K,EAA4BwL,GACpC,IAAItB,EAAM7K,EAAE,UACPW,KAAK,OAAQA,EAAKqK,IAClBrK,KAAK,QAASwL,GAEfC,EAAKpM,EAAE,aACXoM,EAAGxL,OAAO,6EAAkFD,EAAK0L,SAAW,iEAI5G,IAFA,IAAIC,EAActM,EAAE,sCAEXuE,EAAI,EAAGA,EAAI4H,EAAO5H,IACvB+H,EAAY1L,OAAOZ,EAAE,2BAyBzB,OAtBIW,EAAKuK,YACLoB,EAAY1L,OAAOZ,EAAE,uEAChBW,KAAK,OAAQA,EAAKqK,IAClBrK,KAAK,QAASwL,GACdI,KAAK,OAAQ,wBAElBD,EAAY1L,OAAO,kDAGvBwL,EAAGxL,OAAO0L,GAEVF,EAAGxL,OAAOZ,EAAE,sBAA0BW,EAAKqK,GAAK,YAEhDoB,EAAGxL,OAAOZ,EAAE,yBAA2BW,EAAK6L,MAAQ,QAC/CD,KAAK,KAAM5L,EAAKqK,IAChBuB,KAAK,OAAQ5L,EAAKqK,IAClBrK,KAAK,OAAQA,EAAKqK,IAClBuB,KAAK,OAAQ,wBAElBH,EAAGxL,OAAO,0EAA+ED,EAAK0L,SAAW,2BAEzGxB,EAAIjK,OAAOwL,GACJvB,CACX,EAEA/E,WAAA,SAAWyE,EAAakC,GACpB1L,KAAKwJ,IAAMA,EACXxJ,KAAK0J,YAAcgC,EACnB1L,KAAK2J,aAAe+B,QACpB1L,KAAK4J,MAAQJ,EAAImC,SAAS,gBAEtBC,SAASC,MAAQ7L,KAAK2J,eACtB3J,KAAKyJ,SAAWmC,SAASC,KAAKC,QAAQ,MAAO,IAAIA,QAAQ,IAAK,KAG7D9L,KAAK2K,YACN3K,KAAK2K,UAAY,CAAC,GAGtB,IAAIH,EAAOxK,KAEXf,EAAE,wBACGoC,GAAG,QACA,cACA,MACA,sBACQ8E,EAAOlH,EAAEe,MAAMJ,KAAK,QACpBkK,EAAM7K,EAAEe,MAAMkL,QAAQ,MAO1B,GALIV,EAAKb,cACLiC,SAASE,QAAQ,MAAQ3F,GAIzBqE,EAAKG,UAAUxE,GAKf,OAHAqE,EAAKI,cAAcJ,EAAKG,UAAUxE,GAAOlH,EAAEe,OAAO,QAClDwK,EAAKX,oBAAoBC,GAK7B9B,MAASwC,EAAKhB,IAAG,SAASrD,GACrBgC,MAAK,SAAAC,GACF,IAAKA,EAASC,GACV,MAAM,IAAIC,MAAM,+BAEpB,OAAOF,EAASG,MACpB,IACCJ,MAAK,SAACvI,GACH4K,EAAKG,UAAUxE,GAAQvG,EAEvB4K,EAAKI,cAAchL,EAAMX,EAAE,IAAO,GAClCuL,EAAKX,oBAAoBC,EAC7B,GACR,IAER7K,EAAE,wBACGoC,GAAG,QACA,eACA,MACA,WACI,IAAM8E,EAAOlH,EAAEe,MAAMJ,KAAK,QACtBkK,EAAM7K,EAAEe,MAAMkL,QAAQ,MAK1B,IAJApB,EAAInF,KAAK,gBAAgBC,YAAY,eAAeC,SAAS,cAC7DiF,EAAInF,KAAK,oBAAoBC,YAAY,mBAAmBC,SAAS,mBAErEiF,EAAMA,EAAIiC,OACHjC,EAAI,IAAyC,IAAnCA,EAAIlK,KAAK,QAAQoM,QAAQ7F,IAAa,CACnD,IAAM8F,EAAWnC,EACjBA,EAAMA,EAAIiC,OACVE,EAASC,Q,CAGT1B,EAAKb,cACLiC,SAASE,QAAQ,MAAQ3F,EAGjC,GACZ,E,qEC5MJ,8BAyCA,QAlCW,EAAAgG,SAAP,SAAgBC,GAEZ,IADA,IAAMC,EAAUC,SAASC,OAAOC,MAAM,MAC7BhJ,EAAI,EAAGA,EAAI6I,EAAQnL,OAAQsC,IAAK,CACrC,IAAMiJ,EAAWJ,EAAQ7I,GAAGgJ,MAAM,KAClC,GAAIC,EAAS,KAAOL,EAChB,OAAOK,EAAS,E,CAGxB,MAAO,EACX,EAQO,EAAAC,IAAP,SAAWN,EAAatG,EAAe6G,GACnC,IAAIC,EAAU,GACd,GAAID,EAAM,CACN,IAAIE,EAAO,IAAIrF,KACfqF,EAAKC,QAAQD,EAAK9E,UAAoB,GAAP4E,EAAY,GAAK,GAAK,KACrDC,EAAU,aAAeC,EAAKE,a,CAElCT,SAASC,OAASH,EAAM,IAAMtG,EAAQ8G,EAAU,UACpD,EAMO,EAAAI,MAAP,SAAaC,GACTjN,KAAK0M,IAAIO,EAAM,IAAK,EACxB,EACJ,EAzCA,G,gFCCA,8BAeA,QAXW,EAAA7L,EAAInC,EAAE4B,QAKN,EAAAF,EAAI1B,EAAEqN,UAKN,EAAA7L,EAAIxB,EAAE,QACjB,C,CAfA,G,UAAqBiO,C,uFCCrB,iBAKI,aAHQ,KAAAC,YAAa,EAIjBnN,KAAKoN,QAAUnO,EAAE,iBACrB,CA4EJ,OA1EI,YAAAoO,UAAA,WACyB,oBAAV,MAKPzH,KAAK,QACL,OACA,CACI,eAAkB0H,EAAS/G,aAInCtH,EAAE,WAAYe,KAAKoN,SAAS1F,OAC5BzI,EAAE,gBAAiBe,KAAKoN,SAAS1E,OACjC1I,KAAKoN,QAAQG,MAAM,OACvB,EAEA,YAAAC,WAAA,SAAW/H,EAAUgI,QAAA,IAAAA,IAAAA,GAAA,GACI,oBAAV,MAKP7H,KAAK,QACL,QACA,CACI,eAAkB0H,EAAS/G,aAGnCvG,KAAKoN,QAAQG,MAAM,OACvB,EAEA,YAAAG,YAAA,SAAYC,GAiBR,GAhBqB,oBAAV,MAMP/H,KAAK,QACL,SACA,CACI,eAAkB0H,EAAS/G,WAC3B,YAAeoH,IAGvB1O,EAAE,gBAAiBe,KAAKoN,SAAS1F,OACjCzI,EAAE,YAAc0O,EAAO3N,KAAKoN,SAAS1E,QAEhC1I,KAAKmN,YAAwB,iBAAVQ,EAA0B,CAC9C,IAAInD,EAAOxK,KAGAW,EAaR2L,SAZK9L,EAAIG,EAAEiN,QAAQjN,EAAEiN,QAAQ1M,OAAS,IAAI2M,EAAIlN,EAAEmN,cAAc,WAC3D9D,GAAK,cACP6D,EAAEE,OAAQ,EACVF,EAAEG,IASO,gDARTH,EAAEI,OAASJ,EAAEK,mBAAqB,WAC9B,IAAIC,EAAKN,EAAEO,WACPD,GAAc,aAAPA,GAA8B,WAAPA,GAOtCtN,OAAOwN,UAAUC,WAAW,WAAYrP,EAAE,gBAAiBuL,EAAK4C,SAASmB,IAAI,GAH7E,EACA/N,EAAEgO,cAAclK,aAAauJ,EAAGrN,EAAEiO,aAKtCzO,KAAKmN,YAAa,C,CAjBlB,IAAWxM,EACHH,EAAqCqN,CAkBrD,EAjFe,EAAAtH,WAAa,gBAkFhC,C,CAnFA,GAAa,EAAA+G,SAAAA,C,uECLb,aAEA,0BA8CA,QA5CW,EAAA1M,KAAP,WACI,IAAI8N,EAAUzP,EAAE,UAEhByP,EAAQnL,MAAK,SAACC,EAAGC,GACb,IAAIkL,EAAQ1P,EAAEwE,GACGxE,EAAE,cAAe0P,GAEvBC,UAAU,CACjBC,YAAY,EACZC,KAAM,IACNC,QAAQ,EACRC,SAAU,GAElB,IAEA,IAAIC,EAAgB,WAChBP,EAAQnL,MAAK,SAACC,EAAGC,GACb,IAAIkL,EAAQ1P,EAAEwE,GACVyL,EAAajQ,EAAE,cAAe0P,GAE9BQ,EAAeD,EAAW7M,SAASC,KACnC8M,EAAc,UAAGhO,EAAEmB,aACnB8M,EAAgBH,EAAW/O,aAC3BmP,EAAOF,EAAcC,EAAgB,GACrCE,EAAUH,GAAeC,EAEzBE,GACAZ,EAAM/J,YAAY,WAClBsK,EAAWxM,IAAI,CAAE,KAAQ,MAEzBiM,EAAM9J,SAAS,WACVsK,EAAeE,EAAiBD,GACjCF,EAAWxM,IAAI,CAAE,KAAQ4M,KAIjCJ,EAAWN,UAAU,SAAU,WAAYW,GAC3CL,EAAWN,UAAU,SAAU,cAAe,CAACU,EAAM,EAAG,EAAG,GAC/D,GACJ,EAEA,UAAGlO,EAAEC,GAAG,SAAU4N,GAClBA,GACJ,EACJ,EA9CA,G,2JCFA,aACA,SACA,SAMA,0BAuCA,QAnCW,EAAArO,KAAP,WACI,IAAI4O,EAAW,UAAGpO,EACdqO,EAAQ,UAAG9O,EACX+O,EAAS,UAAGjP,EAEZkP,EAAgB,EAEdC,EAAoB,mBAGpBC,EAAchP,OAAOiP,WAAW,yCAuBtCN,EAASnO,GAAG,gBAAiB,EAAAwB,MAAMC,UArBhB,WACf,IAAIiN,EAAWN,EAAMO,YAKjBtH,GAHcmH,EAAYI,SAAWF,GANjB,IASEJ,EAAgBI,EAVnB,GAWnBrI,GAAQgB,GAASqH,EAAWJ,EAXT,IAcpBjI,GAAQgB,KAAMiH,EAAgBI,GAG9BrI,EACCgI,EAAO7K,SAAS+K,GAEXlH,GACLgH,EAAO9K,YAAYgL,EAE3B,GAE0D,IAAK,MACnE,EACJ,EAvCA,GAAa,EAAAM,WAAAA,EA4Cb,8BAsBA,QAjBW,EAAAC,eAAP,WACI,IAAMC,EAAcnR,EAAE,eAChBoR,EAAqB,wBAG3BpR,EAAE,sBAAsBoC,GAAG,SAAS,WAChC+O,EAAYvL,SAASwL,GACrBpR,EAAE,aAAa4L,QAAQ,QAC3B,IAGA5L,EAAE,uBAAuBoC,GAAG,YAAY,WAC/B+O,EAAYjM,GAAG,kBAChBiM,EAAYxL,YAAYyL,EAEhC,GACJ,EACJ,EAtBA,GAAa,EAAAC,iBAAAA,EA2Bb,8BAkBA,QAbW,EAAAC,sBAAP,WACI,IAAIC,EAAQvR,EAAE,gBACVwR,EAAaxR,EAAE,iBACfyR,EAAoB,WAChBD,EAAWtM,GAAG,YACdqM,EAAMhF,KAAK,WAAY,YAEvBgF,EAAMhF,KAAK,WAAY,KAE/B,EACA,UAAGpK,EAAEC,GAAG,SAAUqP,GAClBA,GACJ,EACJ,EAlBA,GAAa,EAAAC,WAAAA,EAuBb,8BA4EA,QAvEW,EAAA/P,KAAP,WACI,IAAMgQ,EAAW3R,EAAE,aACb4R,EAAU5R,EAAE,WACZ6R,EAAK7R,EAAE,KAAM4R,GACbE,EAAK9R,EAAE,KAAM4R,GACbG,EAAK/R,EAAE,KAAM4R,GACbI,EAAahS,EAAE,eAErB2R,EAASxR,aAAa,CAClB8R,MAAO,CAAC,EACRpG,MAAO,IACPqG,KAAI,SAACC,EAAOjS,GACRF,EAAE,sBAAsBmB,MAAM6Q,EAAW7Q,SACrCiR,UAAUC,UAAUC,MAAM,uBAC1BtS,EAAE,oBAAoBuS,IAAI,4BAElC,EACAC,OAAQ,SAAUC,EAAStJ,GACvB,IAAI8I,EAAQlR,KAAK2R,QAAQT,MACzB,GAAIA,EAAMQ,EAAQE,MACdxJ,EAASnJ,EAAE4S,IAAIX,EAAMQ,EAAQE,OAAO,SAAApS,GAAQ,OAAAA,CAAA,SACzC,CACH,IAAMsS,EAAS,IAAIC,gBACnBD,EAAOpF,IAAI,IAAKgF,EAAQE,MAExB5J,MAASnH,OAAOoH,UAAU+J,gBAAe,IAAIF,EAAOG,YAC/C9J,MAAK,SAAAC,GACF,IAAKA,EAASC,GACV,MAAM,IAAIC,MAAM,+BAEpB,OAAOF,EAASG,MACpB,IACCJ,MAAK,SAAAvI,GACFsR,EAAMQ,EAAQE,MAAQhS,EACtBwI,EAASnJ,EAAE4S,IAAIjS,GAAM,SAAAJ,GAAQ,OAAAA,CAAA,IACjC,G,CAEZ,EACA0S,OAAQ,SAACd,EAAOjS,GACW,oBAAnBA,EAAGK,KAAK2S,QACJhT,EAAGK,KAAK4S,SACRtB,EAAGrK,IAAItH,EAAGK,KAAK4S,SAEfjT,EAAGK,KAAK6S,YACRtB,EAAGtK,IAAItH,EAAGK,KAAK6S,YAEflT,EAAGK,KAAK8S,aACRtB,EAAGvK,IAAItH,EAAGK,KAAK8S,aAEnB1B,EAASnK,IAAItH,EAAGK,KAAKsG,OACrB+K,EAAQhG,QAAQ,WACU,WAAnB1L,EAAGK,KAAK2S,SACfvB,EAASnK,IAAItH,EAAGK,KAAKsG,OACrB+K,EAAQhG,QAAQ,WAUpB,EAAA7F,SAASgB,iBAAiB7G,EAAGK,KACjC,EACA+S,MAAO,SAACnB,EAAOjS,GAEX,EAAA6F,SAASoB,oBAAsBjH,EAAGK,IACtC,GAER,EACJ,EA5EA,GAAa,EAAAgT,mBAAAA,C,uECtGb,aAEA,0BAWA,QATW,EAAAC,KAAP,WACI,QAAUnG,SAASoG,YACvB,EAEO,EAAAC,SAAP,WACQC,EAAGH,QACH,UAAGhS,EAAEoE,SAAS,WAEtB,EACJ,EAXA,G,gFCFA,8BAuEA,QArEW,EAAAjE,KAAP,WACI3B,EAAE,cAAc4T,UAAU,CACtBC,YAAa,UACbC,MAAO,KACPC,SAAS,EACTC,QAAQ,EACRC,aAAa,EACbC,eAAgB,SAAU/B,EAAOjS,GAE7B,IAAIiU,EAAajU,EAAGkU,UAAU,GACxBlU,EAAGkU,UACHlU,EAAGmU,UAELC,EAAcH,EAAWrH,KAAK,yBAG9ByH,EAAsD,QAApCJ,EAAW5H,KAAK,iBAGtC4H,EAAWK,YAAY,gBAAiBD,GAAiBC,YAAY,yDAA0DD,GAAiBhI,KAAK,kBAAoBgI,GAAiBvB,YAG1LmB,EAAW9I,SAAS,YAAYmJ,YAAY,uBAAwBD,GAAiBC,YAAY,wBAAyBD,GAG1HD,EAAYE,YAAY,4BAA6BD,GAErD,IAAIE,EAAmBzU,EAAEe,MAAM6S,UAAU,SAAU,WAanD,OAZIW,GACyB,IAArBE,EACAH,EAAY7L,OAEZ6L,EAAYI,QAAQD,IAEC,IAArBA,EACAH,EAAY7K,OAEZ6K,EAAYK,UAAUF,IAGvB,CACX,EACAG,OAAQ,WACJ,IAAIC,EAAW,EAEXxJ,EAAWrL,EAAEe,MAAM2E,KAAK,mBAC5B,GAAwB,IAApB2F,EAASpJ,OAAc,CACvB,IAAI6S,EAAW9U,EAAEqL,EAAS,IAAIY,QAAQ,OAAOM,KAAK,mBAElDvM,EAAEe,MAAM2E,KAAK,wBAAwBpB,MAAK,SAAU2C,EAAOzC,GACnDA,EAAGuG,KAAO+J,IACVD,EAAW5N,EAGnB,G,CAGJjH,EAAEe,MAAM6S,UAAU,SAAU,SAAUiB,GAElCjT,OAAOmT,UAAYnT,OAAOmT,SAASC,SACnChV,EAAEe,MAAM6S,UAAU,SAAU,SAAU,GACtC5T,EAAEe,MAAM6S,UAAU,SAAU,SAAU,IAG1C5T,EAAEe,MAAM6S,UAAU,SAAU,UAAW,CAAExS,OAAQ,iBACjDpB,EAAE,cAAc4F,SAAS,OAC7B,GAER,EACJ,EAvEA,G,ssBCUA,iBAKI,WAAYqP,EAAkBC,GAFpB,KAAAC,sBAAmEC,EAGzErU,KAAKmU,KAAOA,GAActT,OAC1Bb,KAAKkU,QAAUA,QAA4CA,EAAU,kBACzE,CA+JJ,OA7JI,YAAAI,uBAAA,SAAuB9N,GAAvB,WACQ+N,EAAOvU,KAAKkU,QAAU,uCAC1B,GAAI1N,QACA,MAAM,IAAI8B,MAAM,6CAEpBiM,GADAA,EAAOA,EAAKzI,QAAQ,aAAc0I,mBAAmB,GAAKhO,KAC9CsF,QAAQ,QAAS,IAS7B,OAAO9L,KAAKmU,KAAKnM,MAAMuM,EAPK,CACxBE,OAAQ,MACRC,QAAS,CACL,OAAU,sBAIqBvM,MAAK,SAACwM,GACzC,OAAO,EAAKC,8BAA8BD,EAC9C,GACJ,EAEU,YAAAC,8BAAV,SAAwCxM,GAAxC,WACUyM,EAASzM,EAASyM,OACpBC,EAAgB,CAAC,EACrB,OAD4B1M,EAASsM,SAAWtM,EAASsM,QAAQK,SAAW3M,EAASsM,QAAQK,SAAQ,SAACC,EAAQC,GAAW,OAAAH,EAASG,GAAKD,CAAd,IAC1G,MAAXH,EACOzM,EAASI,OAAOL,MAAK,SAAC+M,GAC7B,IACIC,EAAkC,KAAlBD,EAAuB,KAAOE,KAAKC,MAAMH,EAAe,EAAKd,kBAEjF,OADYkB,EAA+BC,OAAOJ,EAElD,IACkB,MAAXN,GAA6B,MAAXA,EAClBzM,EAASI,OAAOL,MAAK,SAAC+M,GAC7B,OAAOM,EAAe,uCAAwCX,EAAQK,EAAeJ,EACrF,IAEGW,QAAQC,QAAwC,KAC3D,EAEA,YAAAC,uBAAA,SAAuBnP,EAAkBoP,GAAzC,WACQrB,EAAOvU,KAAKkU,QAAU,wCAC1B,GAAI1N,QACA,MAAM,IAAI8B,MAAM,6CAEpB,GADAiM,EAAOA,EAAKzI,QAAQ,aAAc0I,mBAAmB,GAAKhO,IACtDoP,QACA,MAAM,IAAItN,MAAM,mDAGpBiM,GADIA,GAAQ,mBAAqBC,mBAAmB,GAAKoB,GAAmB,KAChE9J,QAAQ,QAAS,IAS7B,OAAO9L,KAAKmU,KAAKnM,MAAMuM,EAPK,CACxBE,OAAQ,OACRC,QAAS,CACL,OAAU,sBAIqBvM,MAAK,SAACwM,GACzC,OAAO,EAAKkB,8BAA8BlB,EAC9C,GACJ,EAEU,YAAAkB,8BAAV,SAAwCzN,GAAxC,WACUyM,EAASzM,EAASyM,OACpBC,EAAgB,CAAC,EACrB,OAD4B1M,EAASsM,SAAWtM,EAASsM,QAAQK,SAAW3M,EAASsM,QAAQK,SAAQ,SAACC,EAAQC,GAAW,OAAAH,EAASG,GAAKD,CAAd,IAC1G,MAAXH,EACOzM,EAASI,OAAOL,MAAK,SAAC+M,GAC7B,IACIC,EAAkC,KAAlBD,EAAuB,KAAOE,KAAKC,MAAMH,EAAe,EAAKd,kBAEjF,OADYkB,EAA+BC,OAAOJ,EAElD,IACkB,MAAXN,GAA6B,MAAXA,EAClBzM,EAASI,OAAOL,MAAK,SAAC+M,GAC7B,OAAOM,EAAe,uCAAwCX,EAAQK,EAAeJ,EACrF,IAEGW,QAAQC,QAAwC,KAC3D,EAEA,YAAAI,yBAAA,SAAyBC,GAAzB,WACQxB,EAAOvU,KAAKkU,QAAU,oCAC1BK,EAAOA,EAAKzI,QAAQ,QAAS,IAE7B,IAEIkK,EAAwB,CACxBC,KAHab,KAAKc,UAAUH,GAI5BtB,OAAQ,OACRC,QAAS,CACL,eAAgB,mBAChB,OAAU,qBAIlB,OAAO1U,KAAKmU,KAAKnM,MAAMuM,EAAMyB,GAAU7N,MAAK,SAACwM,GACzC,OAAO,EAAKwB,gCAAgCxB,EAChD,GACJ,EAEU,YAAAwB,gCAAV,SAA0C/N,GAA1C,WACUyM,EAASzM,EAASyM,OACpBC,EAAgB,CAAC,EACrB,OAD4B1M,EAASsM,SAAWtM,EAASsM,QAAQK,SAAW3M,EAASsM,QAAQK,SAAQ,SAACC,EAAQC,GAAW,OAAAH,EAASG,GAAKD,CAAd,IAC1G,MAAXH,EACOzM,EAASI,OAAOL,MAAK,SAAC+M,GAC7B,IACIC,EAAkC,KAAlBD,EAAuB,KAAOE,KAAKC,MAAMH,EAAe,EAAKd,kBAEjF,OADYgC,EAAqCb,OAAOJ,EAExD,IACkB,MAAXN,GAA6B,MAAXA,EAClBzM,EAASI,OAAOL,MAAK,SAAC+M,GAC7B,OAAOM,EAAe,uCAAwCX,EAAQK,EAAeJ,EACrF,IAEGW,QAAQC,QAA8C,KACjE,EAEA,YAAAW,yBAAA,SAAyBT,EAA0BG,GAAnD,WACQxB,EAAOvU,KAAKkU,QAAU,uCAC1B,GAAI0B,QACA,MAAM,IAAItN,MAAM,mDAGpBiM,GADIA,GAAQ,mBAAqBC,mBAAmB,GAAKoB,GAAmB,KAChE9J,QAAQ,QAAS,IAE7B,IAEIkK,EAAwB,CACxBC,KAHab,KAAKc,UAAUH,GAI5BtB,OAAQ,OACRC,QAAS,CACL,eAAgB,mBAChB,OAAU,qBAIlB,OAAO1U,KAAKmU,KAAKnM,MAAMuM,EAAMyB,GAAU7N,MAAK,SAACwM,GACzC,OAAO,EAAK2B,gCAAgC3B,EAChD,GACJ,EAEU,YAAA2B,gCAAV,SAA0ClO,GAA1C,WACUyM,EAASzM,EAASyM,OACpBC,EAAgB,CAAC,EACrB,OAD4B1M,EAASsM,SAAWtM,EAASsM,QAAQK,SAAW3M,EAASsM,QAAQK,SAAQ,SAACC,EAAQC,GAAW,OAAAH,EAASG,GAAKD,CAAd,IAC1G,MAAXH,EACOzM,EAASI,OAAOL,MAAK,SAAC+M,GAC7B,IACIC,EAAkC,KAAlBD,EAAuB,KAAOE,KAAKC,MAAMH,EAAe,EAAKd,kBAEjF,OADYgC,EAAqCb,OAAOJ,EAExD,IACkB,MAAXN,GAA6B,MAAXA,EAClBzM,EAASI,OAAOL,MAAK,SAAC+M,GAC7B,OAAOM,EAAe,uCAAwCX,EAAQK,EAAeJ,EACrF,IAEGW,QAAQC,QAA8C,KACjE,EACJ,EAvKA,GAAa,EAAAa,oBAAAA,EAyKb,iBAGI,WAAY3W,GACR,GAAIA,EACA,IAAK,IAAI4W,KAAY5W,EACbA,EAAK6W,eAAeD,KACdxW,KAAMwW,GAAkB5W,EAAM4W,GAGpD,CA4BJ,OA1BI,YAAA5V,KAAA,SAAK8V,GACD,GAAIA,GACIC,MAAMC,QAAQF,EAAgB,UAAI,CAClC1W,KAAK6W,SAAW,GAChB,IAAiB,UAAAH,EAAgB,SAAhB,eAAiB,CAA7B,IAAIlX,EAAI,KACTQ,KAAK6W,SAAUnT,KAAKlE,E,EAGpC,EAEO,EAAA+V,OAAP,SAAc3V,GACVA,EAAuB,iBAATA,EAAoBA,EAAO,CAAC,EAC1C,IAAIkX,EAAS,IAAIC,EAEjB,OADAD,EAAOlW,KAAKhB,GACLkX,CACX,EAEA,YAAAE,OAAA,SAAOpX,GAEH,GADAA,EAAuB,iBAATA,EAAoBA,EAAO,CAAC,EACtC+W,MAAMC,QAAQ5W,KAAK6W,UAAW,CAC9BjX,EAAe,SAAI,GACnB,IAAiB,UAAAI,KAAK6W,SAAL,eAAa,CAAzB,IAAIrX,EAAI,KACTI,EAAe,SAAE8D,KAAKlE,E,EAE9B,OAAOI,CACX,EACJ,EAtCA,GAAa,EAAAmX,kCAAAA,EA4Cb,iBAGI,WAAYnX,GACR,GAAIA,EACA,IAAK,IAAI4W,KAAY5W,EACbA,EAAK6W,eAAeD,KACdxW,KAAMwW,GAAkB5W,EAAM4W,GAGpD,CAoBJ,OAlBI,YAAA5V,KAAA,SAAK8V,GACGA,IACA1W,KAAKiX,aAAeP,EAAoB,aAEhD,EAEO,EAAAnB,OAAP,SAAc3V,GACVA,EAAuB,iBAATA,EAAoBA,EAAO,CAAC,EAC1C,IAAIkX,EAAS,IAAIxB,EAEjB,OADAwB,EAAOlW,KAAKhB,GACLkX,CACX,EAEA,YAAAE,OAAA,SAAOpX,GAGH,OAFAA,EAAuB,iBAATA,EAAoBA,EAAO,CAAC,GACvB,aAAII,KAAKiX,aACrBrX,CACX,EACJ,EA9BA,GAAa,EAAA0V,+BAAAA,EAoCb,iBAGI,WAAY1V,GACR,GAAIA,EACA,IAAK,IAAI4W,KAAY5W,EACbA,EAAK6W,eAAeD,KACdxW,KAAMwW,GAAkB5W,EAAM4W,GAGpD,CA4BJ,OA1BI,YAAA5V,KAAA,SAAK8V,GACD,GAAIA,GACIC,MAAMC,QAAQF,EAA0B,oBAAI,CAC5C1W,KAAKkX,mBAAqB,GAC1B,IAAiB,UAAAR,EAA0B,mBAA1B,eAA2B,CAAvC,IAAIlX,EAAI,KACTQ,KAAKkX,mBAAoBxT,KAAKlE,E,EAG9C,EAEO,EAAA+V,OAAP,SAAc3V,GACVA,EAAuB,iBAATA,EAAoBA,EAAO,CAAC,EAC1C,IAAIkX,EAAS,IAAIV,EAEjB,OADAU,EAAOlW,KAAKhB,GACLkX,CACX,EAEA,YAAAE,OAAA,SAAOpX,GAEH,GADAA,EAAuB,iBAATA,EAAoBA,EAAO,CAAC,EACtC+W,MAAMC,QAAQ5W,KAAKkX,oBAAqB,CACxCtX,EAAyB,mBAAI,GAC7B,IAAiB,UAAAI,KAAKkX,mBAAL,eAAuB,CAAnC,IAAI1X,EAAI,KACTI,EAAyB,mBAAE8D,KAAKlE,E,EAExC,OAAOI,CACX,EACJ,EAtCA,GAAa,EAAAwW,qCAAAA,EA4Cb,kBAOI,WAAYe,EAAiBtC,EAAgBzM,EAAkBsM,EAAkCoC,GAAjG,MACI,cAAO,K,OASD,EAAAM,gBAAiB,EAPvB,EAAKD,QAAUA,EACf,EAAKtC,OAASA,EACd,EAAKzM,SAAWA,EAChB,EAAKsM,QAAUA,EACf,EAAKoC,OAASA,E,CAClB,CAOJ,OAtBkC,OAmBvB,EAAAM,eAAP,SAAsBC,GAClB,OAA8B,IAAvBA,EAAID,cACf,EACJ,EAtBA,CAAkC9O,OAwBlC,SAASkN,EAAe2B,EAAiBtC,EAAgBzM,EAAkBsM,EAAkCoC,GACzG,MAAIA,QACMA,EAEA,IAAIQ,EAAaH,EAAStC,EAAQzM,EAAUsM,EAAS,KACnE,CA7Ba,EAAA4C,aAAAA,C,kLC/Sb,IAEYC,EAMAC,EARZ,UAEA,SAAYD,GACR,sBACA,oBACA,eACH,CAJD,CAAYA,EAAA,EAAAA,8BAAA,EAAAA,4BAA2B,KAMvC,SAAYC,GACR,oBACA,kBACA,sBACA,wBACH,CALD,CAAYA,EAAA,EAAAA,qBAAA,EAAAA,mBAAkB,KAOjB,EAAAC,wBAA0B,SAACvD,EAAiBwD,EAAkBC,GACnE,EAAAC,oBAAoBC,WAGxB,EAAAD,oBAAoBC,SAAW,IAAI,EAAAD,oBAAoB1D,EAASwD,EAAUC,GAC9E,EAEA,gCAAqCG,EAA2B5X,GACxD4X,EACA5X,EAAQN,KAAK2X,EAA4BQ,MAAOP,EAAmBQ,QAAQpT,YAAY,YAAYC,SAAS,cAG5G3E,EAAQN,KAAK2X,EAA4BQ,MAAOP,EAAmBS,UAAUrT,YAAY,cAAcC,SAAS,WAExH,C,mGC5BA,aAEA,SAEA,0BAiJA,QAnDkB,EAAAqT,mBAAd,SAAiCR,GAC7B,UAAGjX,EAAEZ,OAAO,gCACSsY,EAAsBC,eAAc,iMAG/CD,EAAsBE,aAAa,yBAAyB,GAAK,qBACjEF,EAAsBG,YAAW,GAAM,qBACvCH,EAAsBI,cAAa,GAAM,kIAGzCJ,EAAsBE,aAAa,2BAA2B,GAAK,qBACnEF,EAAsBG,YAAW,GAAK,qBACtCH,EAAsBI,cAAa,GAAK,kIAGxCJ,EAAsBE,aAAa,0BAA0B,GAAM,qFAE3DF,EAAsBK,qBAAoB,GAAM,8BACpDL,EAAsBM,qBAAoB,q2BAarBf,EAAQ,+GACRA,EAAQ,yLAKjCS,EAAsBO,qBAAoB,+HAG1CP,EAAsBE,aAAa,gCAAgC,GAAM,uMAKzEF,EAAsBO,qBAAoB,yDAKxD,EA/Ic,EAAAN,eAAiB,sBACjB,EAAAO,WAAa,+BACb,EAAAC,mBAAqB,wCACrB,EAAAC,qBAAuB,0CACvB,EAAAC,aAAe,kCACf,EAAAC,oBAAsB,iDAErB,EAAAV,aAAe,SAAUW,EAAeC,GACnD,MAAO,ifAQ+BD,EAAK,+BAC7BC,EAAa,gBAAgBd,EAAsBQ,WAAU,YAAc,IAAE,oEAI/F,EAEe,EAAAD,mBAAqB,WAChC,MAAO,uJAIX,EAEe,EAAAF,oBAAsB,SAAUvB,GAC3C,OAAOA,EAAe,oCAAsC,6CAChE,EAEe,EAAAiC,sBAAwB,sHAMxB,EAAAT,qBAAuB,sMAOvB,EAAAH,WAAa,SAAUrB,GAClC,IAAMkC,EAAkBtY,OAAOuY,aAAaC,eAE5C,MAAO,4HAGOlB,EAAsBK,oBAAoBvB,GAAa,0BAC3DkB,EAAsBe,sBAAqB,+TAMAC,EAAe,mLAGtDhB,EAAsBK,oBAAoBvB,GAAa,0BAC3DkB,EAAsBM,qBAAoB,0JAID5X,OAAOuY,aAAaE,UAAS,+BAEpF,EAEe,EAAAf,aAAe,SAAUtB,GACpC,MAAO,kNAKyCkB,EAAsBY,oBAAmB,+SAK1E9B,EACG,+CAA+CkB,EAAsBU,qBAAoB,yBACzF,gDAAgDV,EAAsBS,mBAAkB,wBAAsB,sFAIjGT,EAAsBW,aAAY,6CAErE,EAqDJ,C,CAjJA,GAmJA,aA0BI,WAAYS,EAAgCC,EAA6B9B,EAAkB+B,GACvFzZ,KAAKuZ,UAAYA,EACjBvZ,KAAKwZ,OAASA,EACdxZ,KAAKyZ,kBAAoBA,EAGzBtB,EAAsBD,mBAAmBR,GAGzC1X,KAAK0Z,cAAgBza,EAAE,IAAIkZ,EAAsBC,gBACjD,IAAMuB,EAAiB3Z,KAAK0Z,cAAcpP,SAAS,iBAAiBA,SAAS,kBAC7EtK,KAAK4Z,cAAgBD,EAAerP,SAAS,iBAC7CtK,KAAK6Z,YAAcF,EAAerP,SAAS,eAC3CtK,KAAK8Z,cAAgBH,EAAerP,SAAS,iBAE7CtK,KAAK+Z,UAAY/Z,KAAK4Z,cAAcjV,KAAK,IAAIwT,EAAsBQ,YACnE3Y,KAAKga,kBAAoBha,KAAK8Z,cAAcnV,KAAK,IAAIwT,EAAsBS,oBAC3E5Y,KAAKga,kBAAkB3Y,GAAG,QAAS,KAAM,KAAMrB,KAAKia,uBAAuBC,KAAKla,OAChFA,KAAKma,oBAAsBna,KAAK8Z,cAAcnV,KAAK,IAAIwT,EAAsBU,sBAC7E7Y,KAAKma,oBAAoB9Y,GAAG,QAAS,KAAM,KAAMrB,KAAKoa,yBAAyBF,KAAKla,OACpFA,KAAKqa,YAAcra,KAAK8Z,cAAcnV,KAAK,IAAIwT,EAAsBW,cAGrE9Y,KAAKsa,wBAA0Bta,KAAK8Z,cAAcnV,KAAK,IAAIwT,EAAsBY,qBACjF/Y,KAAKsa,wBAAwBjZ,GAAG,SAAU,KAAM,KAAMrB,KAAKua,6BAA6BL,KAAKla,MACjG,CA2LJ,OAzLW,YAAAY,KAAP,SAAY4Z,EAAmChU,EAAkBiU,EAAkBC,GAE/E1a,KAAKwa,aAAeA,EACpBxa,KAAK2a,WAAaH,EAAaI,SAAS,6BACxC5a,KAAKwG,SAAWA,EAChBxG,KAAKya,QAAUA,EACfza,KAAK0a,MAAQA,EAEb,IACMG,EAA6B,MADlBha,OAAOia,eAAeC,EAAmBC,qBAW1D,GAPAhb,KAAK+Z,UAAUvR,KAAKxI,KAAKya,SACzBza,KAAKib,cACLjb,KAAKsa,wBAAwBY,KAAK,UAAWL,GAC7C7a,KAAKqa,YAAY3S,OACjB1H,KAAKmb,mBAAoB,EAGEN,IAAkB7a,KAAK0a,OAAS,EAAAlD,mBAAmBQ,QAAUhY,KAAK0a,OAAS,EAAAlD,mBAAmBS,UAGrH,OAFAjY,KAAKmb,mBAAoB,OACzBnb,KAAKob,wBAAwBpb,KAAKwG,SAAUxG,KAAK0a,QAAU,EAAAlD,mBAAmBQ,QAKlFhY,KAAK0Z,cAAcnM,MAAM,QAGzBvN,KAAKqb,YACLrb,KAAKsb,yBACT,EAEO,YAAAC,gBAAP,WAEIvb,KAAKwa,aAAe,KACpBxa,KAAK0a,MAAQ,EAAAlD,mBAAmBgE,UAChCxb,KAAK2a,YAAa,EAClB3a,KAAKwG,SAAW,EAChBxG,KAAKya,QAAU,KAGfza,KAAK+Z,UAAUvR,KAAKxI,KAAKya,SACzBza,KAAKib,cACLjb,KAAKsa,wBAAwBY,KAAK,WAAW,GAC7Clb,KAAKqa,YAAY3S,OAGjB1H,KAAK0Z,cAAcnM,MAAM,OAC7B,EAGQ,YAAA+N,wBAAR,WACItb,KAAKqa,YAAY3S,OAEjB1H,KAAKuZ,UACAjF,uBAAuBtU,KAAKwG,UAC5B2B,KAAKnI,KAAKyb,YAAYvB,KAAKla,OAC3BmI,KAAKnI,KAAK0b,mBAAmBxB,KAAKla,OAClC8I,MAAM9I,KAAK2b,SAASzB,KAAKla,MAClC,EAEQ,YAAA2b,SAAR,SAAiBC,GAoBb,OAlBI5b,KAAKmb,mBACLnb,KAAK0Z,cAAcnM,MAAM,QAGL,KAApBqO,EAAU/G,QACV7U,KAAK0a,MAAQ,EAAAlD,mBAAmBgE,UAChCxb,KAAKib,gBAGLjb,KAAK0a,MAAQ,EAAAlD,mBAAmBqE,QAC5B7b,KAAKmb,kBACLnb,KAAKib,eAELjb,KAAKqa,YAAY3R,OACjB1I,KAAK8b,aAINrG,QAAQsG,OAAOH,EAC1B,EAEQ,YAAAR,wBAAR,SAAgC5U,EAAkBoP,GAC9C5V,KAAKqa,YAAY3S,OACjB1H,KAAKqb,YAELrb,KAAKuZ,UACA5D,uBAAuBnP,EAAUoP,GACjCzN,KAAKnI,KAAKyb,YAAYvB,KAAKla,OAC3BmI,KAAKnI,KAAKgc,YAAY9B,KAAKla,OAC3B8I,MAAM9I,KAAK2b,SAASzB,KAAKla,MAClC,EAIQ,YAAAia,uBAAR,SAA+BxU,GAC3BzF,KAAKob,wBAAwBpb,KAAKwG,UAAU,EAChD,EAEQ,YAAA4T,yBAAR,SAAiC3U,GAC7BzF,KAAKob,wBAAwBpb,KAAKwG,UAAU,EAChD,EAEQ,YAAA+T,6BAAR,SAAqC9U,GACfxG,EAAEwG,EAAEwW,eAAe9X,GAAG,YAGpCtD,OAAOqb,UAAUnB,EAAmBC,oBAAqB,IAAK,KAE9Dna,OAAOsb,YAAYpB,EAAmBC,oBAE9C,EAIQ,YAAAK,UAAR,WACIrb,KAAKga,kBAAkBxO,KAAK,WAAY,YACxCxL,KAAKma,oBAAoB3O,KAAK,WAAY,WAC9C,EAEQ,YAAAsQ,SAAR,WACI9b,KAAKga,kBAAkBxO,KAAK,WAAY,MACxCxL,KAAKma,oBAAoB3O,KAAK,WAAY,KAC9C,EAEQ,YAAAwQ,YAAR,WACIhc,KAAK0Z,cAAcnM,MAAM,QAErBvN,KAAKwa,cACL,EAAA4B,qBAAqBpc,KAAK0a,OAAS,EAAAlD,mBAAmBQ,OAAQhY,KAAKwa,cAGnExa,KAAKyZ,mBACLzZ,KAAKyZ,mBAEb,EAEQ,YAAAgC,YAAR,SAAoB3V,GAEhB9F,KAAK0a,MAAQ5U,EAAMmR,aAAe,EAAAO,mBAAmBQ,OAAS,EAAAR,mBAAmBS,QACrF,EAEQ,YAAAyD,mBAAR,WACI1b,KAAKib,cACLjb,KAAK8b,UACT,EAEQ,YAAAb,YAAR,WACI,IAAMoB,EAAY,iCACZC,EAAc,mCACdC,EAAe,iCACfC,EAAa,8BACbC,EAAkB,qCAClBC,EAAgB,mCAKtB,OAJA1c,KAAKqa,YAAY3S,OAEjB1H,KAAK0Z,cAAc9U,YAAY,CAACyX,EAAWC,EAAaC,EAAcC,EAAYC,EAAiBC,IAE3F1c,KAAK0a,OACT,KAAK,EAAAlD,mBAAmBQ,OACpBhY,KAAK0Z,cAAc7U,SAASwX,GAC5B,MACJ,KAAK,EAAA7E,mBAAmBgE,UACpBxb,KAAK0Z,cAAc7U,SAAS0X,GAC5B,MACJ,KAAK,EAAA/E,mBAAmBqE,QACpB7b,KAAK0Z,cAAc7U,SAAS2X,GAC5B,MACJ,KAAK,EAAAhF,mBAAmBS,SACxB,QACIjY,KAAK0Z,cAAc7U,SAASyX,GAIhCzb,OAAOuY,aAAauD,cACpB3c,KAAK0Z,cAAc7U,SAAS4X,GAG5Bzc,KAAK2a,YACL3a,KAAK0Z,cAAc7U,SAAS6X,EAEpC,EA5OuB,EAAA1B,oBAAsB,qBA6OjD,C,CA9OA,GAAa,EAAAD,mBAAAA,C,oGCxJb,YACA,SACA,SAEA,aAaI,WAAY7G,EAAiBwD,EAAkBC,GA4BvC,KAAAiF,qBAAuB,uBA3B3B5c,KAAK2X,UAAYA,EACjB3X,KAAKuZ,UAAY,IAAI,EAAAhD,oBAAoBrC,GACzClU,KAAKuN,MAAQ,IAAI,EAAAwN,mBAAmB/a,KAAKuZ,UAAWvZ,KAAM0X,EAAU1X,KAAK6c,cAAc3C,KAAKla,OAE5FA,KAAK8c,qBAAuB7d,EAAE,sCAC9Be,KAAK+c,uBAAyB9d,EAAE,wCAChCe,KAAKgd,oBAAsBhd,KAAK8c,qBAAqBxS,SAAS,UAC9DtK,KAAKid,sBAAwBjd,KAAK+c,uBAAuBzS,SAAS,UAClEtK,KAAK8c,qBAAqBzb,GAAG,QAAS,KAAM,KAAMrB,KAAKkd,0BAA0BhD,KAAKla,OACtFA,KAAK+c,uBAAuB1b,GAAG,QAAS,KAAM,KAAMrB,KAAKkd,0BAA0BhD,KAAKla,OAGxFA,KAAKmd,mBACT,CA+MJ,OA7MW,YAAAA,kBAAP,WACInd,KAAKod,gBAAkBne,EAAE,sBACzBe,KAAKod,gBAAgB/b,GAAG,QAASrB,KAAKqd,oBAAoBnD,KAAKla,OAC/DA,KAAKsd,mCAE+B,GAA/Btd,KAAKod,gBAAgBlc,QAA8C,GAA/BlB,KAAKod,gBAAgBlc,SACzDlB,KAAKod,gBAAgBpU,SAAS4R,SAAS,iBACxC5a,KAAKud,iBAAiBvd,KAAKod,gBAEnC,EAOA,YAAAG,iBAAA,SAAiB7X,GAGb,KAD8B,MADb7E,OAAOia,eAAe9a,KAAK4c,uBAE5C,CAmBA5c,KAAKwd,iBAAmB9X,EACxBA,EAAO+X,QAhBgB,CACnB5S,QAAS,SACT6S,QAAS,yHACTC,UAAW,SACXC,SAAU,2aAadlY,EAAO+X,QAAQ,QAQf/X,EAAOrE,GAAG,QAASrB,KAAK6d,iBAAiB3D,KAAKla,OAC9Cf,EAAE,qCAAqCoC,GAAG,QAASrB,KAAK6d,iBAAiB3D,KAAKla,M,CAClF,EAEA,YAAA6d,iBAAA,SAAiBpY,GACbA,EAAEoC,iBACFpC,EAAEqY,kBAEFjd,OAAOqb,UAAUlc,KAAK4c,qBAAsB,IAAK,KAEjD5c,KAAKwd,iBAAiBhS,KAAK,QAAS,IACpCxL,KAAKwd,iBAAiBC,QAAQ,OAElC,EAGQ,YAAA9B,SAAR,SAAiBC,GAMb,OALwB,KAApBA,EAAU/G,SACVhU,OAAOuY,aAAa2E,iBAAkB,EACtC/d,KAAKuN,MAAMgO,mBAGR9F,QAAQsG,OAAOH,EAC1B,EAEQ,YAAA0B,iCAAR,WACI,GAAKzc,OAAOuY,aAAa2E,gBAAzB,CAKA,IAAMpG,EAAY,IAAIhB,MAYtB,GAVA3W,KAAKod,gBAAgB7Z,MAAK,SAACC,EAAGC,GAC1B,IACM+C,EADMvH,EAAEwE,GACO7D,KAAK,EAAA2X,4BAA4ByG,UAElDxX,GACAmR,EAAUjU,KAAK8C,EAGvB,IAEyB,IAArBmR,EAAUzW,OAAd,CAIA,IAAM+c,EAAM,IAAI,EAAAlH,kCAAkC,CAAEF,SAAUc,IAE9D3X,KAAKuZ,UACAzD,yBAAyBmI,GACzB9V,KAAKnI,KAAKke,0BAA0BhE,KAAKla,OACzC8I,MAAM9I,KAAK2b,SAASzB,KAAKla,M,EAClC,EAEQ,YAAAme,yBAAR,SAAiCvI,GAC7B,GAAK/U,OAAOuY,aAAa2E,gBAAzB,CAKA,IAAME,EAAM,IAAI,EAAAlH,kCAAkC,CAAEF,SAAU7W,KAAK2X,YAEnE3X,KAAKuZ,UACAlD,yBAAyBT,EAAiBqI,GAC1C9V,KAAKnI,KAAKke,0BAA0BhE,KAAKla,OACzC8I,MAAM9I,KAAK2b,SAASzB,KAAKla,OACzBoe,QAAQpe,KAAK8b,SAAS5B,KAAKla,M,CACpC,EAIQ,YAAAkd,0BAAR,SAAkCzX,GAI9B,GAHAA,EAAEqY,kBACFrY,EAAEoC,iBAEGhH,OAAOuY,aAAa2E,gBAAzB,CAMA/d,KAAKqb,YACL,IAAMgD,EAAWpf,EAAEwG,EAAEwW,eACrBjc,KAAKme,yBAAyBE,EAASla,GAAGnE,KAAK8c,sB,MAN3C9c,KAAKuN,MAAMgO,iBAOnB,EAEQ,YAAA8B,oBAAR,SAA4B5X,GAIxB,GAHAA,EAAEqY,kBACFrY,EAAEoC,iBAEGhH,OAAOuY,aAAa2E,gBAAzB,CAMA,IAAMM,EAAWpf,EAAEwG,EAAEwW,eACfzV,EAAW6X,EAASze,KAAK,EAAA2X,4BAA4ByG,UACrDvD,EAAU4D,EAASze,KAAK,EAAA2X,4BAA4B+G,SACpD5D,EAAQ2D,EAASze,KAAK,EAAA2X,4BAA4BQ,OAExD/X,KAAKuN,MAAM3M,KAAKyd,EAAU7X,EAAUiU,EAASC,E,MATzC1a,KAAKuN,MAAMgO,iBAUnB,EAEQ,YAAAsB,cAAR,WACI7c,KAAKue,oBACT,EAGQ,YAAAlD,UAAR,WACIrb,KAAK8c,qBAAqBtR,KAAK,WAAY,YAC3CxL,KAAK+c,uBAAuBvR,KAAK,WAAY,WACjD,EAEQ,YAAAsQ,SAAR,WACI9b,KAAK8c,qBAAqBtR,KAAK,WAAY,MAC3CxL,KAAK+c,uBAAuBvR,KAAK,WAAY,KACjD,EAEQ,YAAA0S,0BAAR,SAAkCM,GACzBA,IAILxe,KAAKod,gBAAgB7Z,MAAK,SAACC,EAAGC,G,MACpBgb,EAAMxf,EAAEwE,GACR+C,EAAWiY,EAAI7e,KAAK,EAAA2X,4BAA4ByG,UAEtD,GAAIxX,EAAJ,CACI,IAAMsR,EAAyC,QAAtB,EAAA0G,EAAItH,0BAAkB,eAAEwH,MAAK,SAAAC,GAAK,OAAAnY,GAAYmY,CAAZ,IAC3D,EAAAvC,qBAAqBtE,EAAkB2G,E,MAG/C,IAEAze,KAAKue,qBACT,EAEQ,YAAAA,mBAAR,WACI,IAAIK,EAAW,EACXC,EAAa,EAEjB7e,KAAKod,gBAAgB7Z,MAAK,SAACC,EAAGC,GAC1B,IAAMgb,EAAMxf,EAAEwE,GACGgb,EAAI7e,KAAK,EAAA2X,4BAA4ByG,UAElDS,EAAI7e,KAAK,EAAA2X,4BAA4BQ,QAAU,EAAAP,mBAAmBQ,OAClE6G,IACOJ,EAAI7e,KAAK,EAAA2X,4BAA4BQ,QAAU,EAAAP,mBAAmBS,UACzE2G,GAER,IAEA5e,KAAKgd,oBAAoBxU,KAAK,KAAKoW,EAAQ,KAC3C5e,KAAKid,sBAAsBzU,KAAK,KAAKqW,EAAU,IACnD,EACJ,EA1OA,GAAa,EAAAjH,oBAAAA,C,qECFb,8BAOA,QANW,EAAAhX,KAAP,WACK3B,EAAE,2BAAgDwe,QAAQ,CACvD/d,MAAM,EACNmL,QAAS,eAEjB,EACJ,EAPA,G,kICDA,aAIA,GAFgB,EAAQ,KAMpB,SAAYuB,EAAKsR,GACb1d,KAAKoM,IAAMA,EACXpM,KAAK0d,QAAUA,CACnB,GAPS,EAAAoB,UAAAA,EAcA,EAAAC,eAAiC,CAE1CC,eAAgB,IAAIF,EAAU,cAAe,uGAE7CG,mBAAoB,IAAIH,EAAU,QAAS,8EAC3CI,YAAa,IAAIJ,EAAU,cAAe,yFAC1CK,mBAAoB,IAAIL,EAAU,eAAgB,mGAClDM,oBAAqB,IAAIN,EAAU,gBAAiB,8EACpDO,WAAY,IAAIP,EAAU,cAAe,kEAG7C,IAUA,aAOI,aACI9e,KAAKsf,YAAc,EACvB,CAkGJ,OAhGI,YAAAC,qBAAA,SAAqBzZ,GACjB,IAAI0Z,EAEA1Z,IAAU2Z,EAAUC,gBACpBF,EAAY,EAAA1E,eAAe2E,EAAUE,aACvBze,OAAS,IACnBse,GAAa,KAEjBA,GAAa1Z,GAEb0Z,EAAYC,EAAUC,cAE1B,IAAME,EAAa,IAAIpY,KACvBoY,EAAWC,WAAWD,EAAWE,aAAe,KAChDxT,SAASC,OAAYkT,EAAUE,WAAU,IAAIH,EAAS,qBAAqBI,EAC3E/e,OAAOkf,eAAerc,KAAKoC,EAC/B,EAEA,YAAAka,aAAA,SAAa5T,GACT,IAAI5I,EAEJ,IAAK3C,OAAOkf,eAAgB,CACxBlf,OAAOkf,eAAiB,GAExB,IAAME,EAAe,EAAAnF,eAAe2E,EAAUE,YAAYnT,MAAM,KAChE,IAAKhJ,EAAI,EAAGA,EAAIyc,EAAa/e,OAAQsC,IACjC3C,OAAOkf,eAAerc,KAAKuc,EAAazc,G,CAIhD,IAAKA,EAAI,EAAGA,EAAI3C,OAAOkf,eAAe7e,OAAQsC,IAC1C,GAAI3C,OAAOkf,eAAevc,KAAO4I,GAAOvL,OAAOkf,eAAevc,KAAOic,EAAUC,cAC3E,OAAO,EAIf,OAAO,CACX,EAGA,YAAAQ,eAAA,SAAeC,EAAyBC,GAExC,EAEA,YAAAC,WAAA,SAAWC,GAAX,WACIC,YAAW,WAAM,SAAKC,iBAAL,GAAwBF,EAC7C,EAEA,YAAAE,gBAAA,WAGI,IAFA,IAAIJ,EAAYpgB,KAAKsf,YAAYmB,QAE1BL,IAAcpgB,KAAKggB,aAAaI,EAAU5gB,KAAK4M,MAClDgU,EAAYpgB,KAAKsf,YAAYmB,QAGjC,GAAKL,EAAL,CAGA,IAAMM,EAAiB,CACnB7V,QAAS,SACT6S,QAAS0C,EAAU5gB,KAAKke,QACxBC,UAAW,SACXC,SAAU,oEAAmEwC,EAAU5gB,KAAK4M,IAAG,wgBAS/F3I,EAAKxE,EAAEmhB,EAAUO,YAEH,IAAdld,EAAGvC,QACHlB,KAAKwgB,kBAGT,IAAMI,EAAM3hB,EAAEwE,EAAG8K,IAAI,IACrBqS,EAAInD,QAAQiD,GACZE,EAAInD,QAAQ,OAvBF,CAwBd,EAEA,YAAAoD,aAAA,SAAanb,GACT,IAAI+X,EAAUxe,EAAEyG,GAAQsD,OAAO,YAC/BhJ,KAAKuf,qBAAqB9B,EAAQjS,KAAK,oBACvCiS,EAAQA,QAAQ,QAEZzd,KAAKsf,YAAYpe,OAAS,GAC1BlB,KAAKqgB,WAAWZ,EAAUqB,iBAElC,EAEA,YAAAC,iBAAA,WACI/gB,KAAKuf,qBAAqBE,EAAUC,eACpCzgB,EAAE,YAAYwe,QAAQ,OAC1B,EAzGO,EAAAkC,WAAa,gBACb,EAAAD,cAAgB,MAChB,EAAAsB,kBAAoB,GACpB,EAAAF,iBAAmB,IAuG9B,C,CA3GA,GAAa,EAAArB,UAAAA,C,uECxCb,aACA,SAMA,0BAmCA,QA1BW,EAAA7e,KAAP,WAGI3B,EAAE,mBAAmBoC,GAAG,SAAS,WAC7BpC,EAAE,aAAa+T,QAAQ,CAAEhD,UAAW,GAAK,OAC7C,IAEA,IAAIiR,EAA4B,EAAApe,MAAMC,SAClC9C,KAAKkhB,mCAAoC,IAAK,MAE/ClhB,KAAKiB,cAAcC,OAAS,IAC3B+f,IACA,UAAG7f,EAAEC,GAAG,SAAU4f,GAE1B,EAGe,EAAAC,mCAAf,WACI,GAAKC,EAAkBjd,oBAAoBC,GAAG,YAI1Cgd,EAAkBC,mBAAmB1e,IAAI,OAAQ,IAAIA,IAAI,QAAS,QAJX,CACvD,IAAM2e,EAAWF,EAAkBG,kBAAkBjf,SAASC,KAAO6e,EAAkBC,mBAAmBhhB,QAAU,EAAK,KACzH+gB,EAAkBC,mBAAmB1e,IAAI,OAAQ2e,GAAS3e,IAAI,QAAS,O,CAK/E,EAjCe,EAAAzB,cAAgBhC,EAAE,0BAClB,EAAAiF,oBAAsBjF,EAAE,WAAYkiB,EAAkBlgB,eACtD,EAAAqgB,kBAAoBriB,EAAE,SAAUkiB,EAAkBlgB,eAClD,EAAAmgB,mBAAqBniB,EAAE,wBA+B1C,C,CAnCA,G,UAAqBkiB,C,qECPrB,UAAe,CACXI,cAAe,KAEfC,QAAS,SAAUxY,GACf,IAAIwQ,EAASxZ,MACbgJ,EAAS/J,EAAE+J,IACJrE,KAAK,SAASpB,MAAK,WACtB,IAAI5C,EAAI2L,SAASwB,cAAc,OAC/BnN,EAAE8gB,UAAY,aAEdzY,EAAO,GAAG1E,aAAa3D,EAAGX,MAG1BA,KAAKqK,WAAWqX,YAAY1hB,MAC5BW,EAAEghB,YAAY3hB,MAEdwZ,EAAOoI,YAAYjhB,EACvB,GAYJ,EAEAkhB,UAAW,SAAU7Y,GACjB,IAAIwQ,EAASxZ,MACbgJ,EAAS/J,EAAE+J,IACJrE,KAAK,eAAepB,MAAK,WAC5BiW,EAAOoI,YAAY5hB,KACvB,GACJ,EAGA4hB,YAAa,SAAUjhB,GACnB,IAAImhB,EAAK,IAET7iB,EAAE0B,GAAG+B,IAAI,YAAcof,EAAK,IAAO,MAEnC,IAAIC,EAAMlhB,OAAOmhB,aAAY,WAErBrhB,EAAEshB,YAActhB,EAAEuhB,aAAeJ,GAAM,IAEvCA,GAAU,EACV7iB,EAAE0B,GAAG+B,IAAI,YAAcof,EAAK,IAAO,OAGnCjhB,OAAOshB,cAAcJ,EAI7B,GAAG,GACP,E,4FC1DJ,IAAMK,EAAenjB,EAAE,kBACjBojB,EAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzD1C,EAAa,2BAEb2C,EAAyB,SAAC7c,GAC5BA,EAAEoC,iBAEDua,EAAqB3E,QAAQ,SAClC,EAaA,SAAS8E,EAAmBC,EAAqBC,GAC5CL,EAAqB3E,QAAQ,QAE9BnR,SAASC,OAAYoT,EAAU,aAC/B,IAAI+C,EAAOF,EAEXE,GADAA,EAAOA,EAAK5W,QAAQ,SAAU,OAAO2W,IACzB3W,QAAQ,SAAU,OAAO2W,GACrCnW,SAASV,SAAS8W,KAAOA,CAC7B,CAEA,SAASC,IACL,IAAMH,EAAcJ,EAAa5W,KAAK,QAChCoX,EAActW,SAASC,OAAOP,QAAQ2T,EAAa,OAAS,EAGlE1gB,EAAE,qDAAqDoC,GAAG,SAAS,SAACwhB,GAASA,EAAGhb,iBAAkBua,EAAavX,QAAQ,QAAW,IAElIwX,EAAMtN,SAAQ,SAAA0N,GAEVxjB,EAAE,2BAA2BwjB,GAAQ/a,OAGrCzI,EAAE,uCAAuCwjB,GACpCphB,GAAG,SAAS,SAACwhB,GACVA,EAAGhb,iBAEC+a,EACAL,EAAmBC,EAAaC,GAtCpD,SAA2BA,GACvBxjB,EAAE,mCAAmCyI,OAGrC2a,EAAMtN,SAAQ,SAAA0N,GACVxjB,EAAE,2BAA2BwjB,GAAQ/a,MACzC,IAEAzI,EAAE,2BAA2BwjB,GAAQ/Z,MACzC,CA+BoBoa,CAAkBL,EAE1B,IAGJxjB,EAAE,6BAA6BwjB,EAAI,QAAQphB,GAAG,SAAS,SAACwhB,GAASA,EAAGhb,iBAAkB0a,EAAmBC,EAAaC,EAAO,GACjI,GACJ,CAEA,SAASM,IACLV,EAAMtN,SAAQ,SAAA0N,GAEVxjB,EAAE,2BAA2BwjB,GAAQ/a,MACzC,GACJ,CAEA,2BACI,IACQ7G,OAAO+K,SAASoX,KAAKhX,QAAQ,WAAa,GAAKnL,OAAO+K,SAASoX,KAAKhX,QAAQ,cAAgB,GAC5FoW,EAAa/gB,GAAG,QAASihB,GAExBF,EAAqB3E,QAAQ,CAC1BzE,MAAO,gCACP0E,QAAS,8nSAsHThe,MAAM,EACNie,UAAW,SACX9S,QAAS,UAGZuX,EAAqB/gB,GAAG,sBAAuBshB,GAC/CP,EAAqB/gB,GAAG,kBAAmB0hB,IAG5CX,EAAa1a,M,CAEnB,MAAOub,G,CAEb,C,uEC5MA,aAKA,0BAiCA,QA/BW,EAAAriB,KAAP,WACIZ,KAAKkjB,6BACT,EAMO,EAAAC,SAAP,WACI,OAAOlkB,EAAE,cAAckF,GAAG,WAC9B,EAEe,EAAA+e,4BAAf,WACI,IAAIE,EAAe,KACbC,EAAgB,YAElBC,EAAe,WACf,IAAIC,EAAcC,EAAGL,WACjBC,IAAiBG,IACbA,EACA,UAAG9iB,EAAEoE,SAASwe,GAEd,UAAG5iB,EAAEmE,YAAYye,GAErBD,EAAeG,EAEvB,EAEA,UAAGniB,EAAEC,GAAG,SAAUiiB,GAClBA,GACJ,EACJ,EAjCA,G,gFCLA,aACA,SAKA,0BAiBA,QAZW,EAAAG,kBAAP,SAAyBhe,QAAA,IAAAA,IAAAA,EAAA,MACjBA,IACAA,EAAEqY,kBACFrY,EAAEoC,kBAGN,UAAQ6E,IAAI7L,OAAOoH,UAAUyb,iBAAkB,KAAM,GAGrD,UAAGjjB,EAAEoE,SAAS,aACd,UAAGpE,EAAEoE,SAAS,eAClB,EACJ,EAjBA,G,+BCuBA,SAAgBqX,EAAU9P,EAAatG,EAAe6G,GAClD,IAAIC,EAAU,GACd,GAAID,EAAM,CACN,IAAIE,EAAO,IAAIrF,KACfqF,EAAKC,QAAQD,EAAK9E,UAAoB,GAAP4E,EAAY,GAAK,GAAK,KACrDC,EAAU,aAAeC,EAAKE,a,CAElCT,SAASC,OAASH,EAAM,IAAMtG,EAAQ8G,EAAU,UACpD,C,qHApCA,mBAAwB+W,EAAQC,EAAOnd,GACnC,IAAMod,EAAOvX,SAASwX,eAAeH,GACrC,GAAIE,EAAM,CACN,IAAME,EAAgCF,EAAKD,GACvCG,IACAA,EAAYje,MAAQW,EACpBod,EAAKG,S,CAGjB,EAKA,0BAA+B5X,GAE3B,IADA,IAAMC,EAAUC,SAASC,OAAOC,MAAM,MAC7BhJ,EAAI,EAAGA,EAAI6I,EAAQnL,OAAQsC,IAAK,CACrC,IAAMiJ,EAAWJ,EAAQ7I,GAAGgJ,MAAM,KAClC,GAAIC,EAAS,KAAOL,EAChB,OAAOK,EAAS,E,CAGxB,MAAO,EACX,EAKA,cAaA,uBAA4BQ,GACxBiP,EAAUjP,EAAM,IAAK,EACzB,EAGA,8BAqDA,QAnDW,EAAAgX,SAAP,SAAgBC,EAAMC,EAAMC,GAC3B,IAAIC,EACJ,YAF2B,IAAAD,IAAAA,GAAA,GAEpB,WACN,IAAIpZ,EAAUhL,KAAMskB,EAAOC,UAKvBC,EAAUJ,IAAcC,EAC5BI,aAAaJ,GACbA,EAAU9D,YANE,WACX8D,EAAU,KACLD,GAAWF,EAAKQ,MAAM1Z,EAASsZ,EACrC,GAG4BH,GACxBK,GAASN,EAAKQ,MAAM1Z,EAASsZ,EAClC,CACD,EAEO,EAAAxhB,SAAP,SAAgBohB,EAAMC,EAAMxS,GACxB,IAKI3G,EAASsZ,EAAMxN,EALf6N,EAAI,CACJC,IAAKpd,KAAKod,KAAO,WACb,OAAO,IAAIpd,MAAOO,SACtB,GAGAsc,EAAU,KACVQ,EAAW,EACVlT,IAASA,EAAU,CAAC,GACzB,IAAImT,EAAQ,WACRD,GAA+B,IAApBlT,EAAQoT,QAAoB,EAAIJ,EAAEC,MAC7CP,EAAU,KACVvN,EAASoN,EAAKQ,MAAM1Z,EAASsZ,GACxBD,IAASrZ,EAAUsZ,EAAO,KACnC,EACA,OAAO,WACH,IAAIM,EAAMD,EAAEC,MACPC,IAAgC,IAApBlT,EAAQoT,UAAmBF,EAAWD,GACvD,IAAII,EAAYb,GAAQS,EAAMC,GAc9B,OAbA7Z,EAAUhL,KACVskB,EAAOC,UACHS,GAAa,GAAKA,EAAYb,GAC1BE,IACAI,aAAaJ,GACbA,EAAU,MAEdQ,EAAWD,EACX9N,EAASoN,EAAKQ,MAAM1Z,EAASsZ,GACxBD,IAASrZ,EAAUsZ,EAAO,OACvBD,IAAgC,IAArB1S,EAAQsT,WAC3BZ,EAAU9D,WAAWuE,EAAOE,IAEzBlO,CACX,CACJ,EACJ,EArDA,GAAa,EAAAjU,MAAAA,C,kBC/Cb2W,EAAO0L,QAAUC,M,GCCbC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBjR,IAAjBkR,EACH,OAAOA,EAAaL,QAGrB,IAAI1L,EAAS4L,EAAyBE,GAAY,CAGjDJ,QAAS,CAAC,GAOX,OAHAM,EAAoBF,GAAUG,KAAKjM,EAAO0L,QAAS1L,EAAQA,EAAO0L,QAASG,GAGpE7L,EAAO0L,OACf,C,ICtBA,EACA,EAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAtBA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,OACA,SACA,SACA,QACA,SACA,SACA,QAEArkB,OAAO6kB,UAAY,IAAI,EAAAjG,UACvB5e,OAAOke,eAAiB,EAAAA,eAExBle,OAAO8kB,SAAW,IAAI,EAAArY,SACtBzM,OAAO+kB,wBAA0B,UACjC/kB,OAAOglB,YAAc,UACrBhlB,OAAOilB,wBAA0B,EAAArO,wBAGjC5W,OAAOklB,iBAAmB,IAAI,EAAAxc,iBAG9B1I,OAAOmlB,QAAU,EAAAA,QACjBnlB,OAAOia,eAAiB,UAAQ3O,SAChCtL,OAAOqb,UAAY,UAAQxP,IAC3B7L,OAAOsb,YAAc,UAAQnP,MAC7BnM,OAAOwL,QAAU,UAEjBxL,OAAO4iB,kBAAoB,UAAKA,kBAEhC5iB,OAAOyC,IAAM,UAEbrE,GAAE,WAEE,EAAAgnB,4BACA,EAAAC,wBAGA3F,YAAW,WACsB,KAAzB1f,OAAO+K,SAASC,OAChBhL,OAAO+K,SAASC,KAAOhL,OAAO+K,SAASC,KAE/C,GAAG,KAGH,UAAG8G,WAGH,UAAG/R,OAGH,UAAIA,OAGJ,UAAkBA,OAGlB,EAAA0P,iBAAiBH,iBAGjB,EAAAD,WAAWtP,OAGX,EAAA+P,WAAWJ,wBAGX,UAAM3P,OAGN,UAASA,OAGT,EAAA4R,mBAAmB5R,OAEnB,UAAQA,OAERC,OAAO6kB,UAAUrF,WAAW,EAAAZ,UAAUuB,mBAEtC,EAAAhc,SAASD,aAGT,EAAAohB,gBAEA,UAAavlB,MACjB,G","sources":["webpack://adccsk.pro.web/./src/scripts/_object-extends.ts","webpack://adccsk.pro.web/./src/scripts/ads.ts","webpack://adccsk.pro.web/./src/scripts/adsense.ts","webpack://adccsk.pro.web/./src/scripts/analyser.ts","webpack://adccsk.pro.web/./src/scripts/anchor-banner.ts","webpack://adccsk.pro.web/./src/scripts/calculatorDosage.ts","webpack://adccsk.pro.web/./src/scripts/clasificationTreeRender.ts","webpack://adccsk.pro.web/./src/scripts/cookies.ts","webpack://adccsk.pro.web/./src/scripts/el.ts","webpack://adccsk.pro.web/./src/scripts/feedback.ts","webpack://adccsk.pro.web/./src/scripts/hdrag.ts","webpack://adccsk.pro.web/./src/scripts/header.ts","webpack://adccsk.pro.web/./src/scripts/ie.ts","webpack://adccsk.pro.web/./src/scripts/mainMenu.ts","webpack://adccsk.pro.web/./src/scripts/notifications/api-client.ts","webpack://adccsk.pro.web/./src/scripts/notifications/notifications-commons.ts","webpack://adccsk.pro.web/./src/scripts/notifications/notifications-modal.ts","webpack://adccsk.pro.web/./src/scripts/notifications/notifications-module.ts","webpack://adccsk.pro.web/./src/scripts/popover.ts","webpack://adccsk.pro.web/./src/scripts/popup.ts","webpack://adccsk.pro.web/./src/scripts/scrollToTop.ts","webpack://adccsk.pro.web/./src/scripts/tableShrinkToFit.ts","webpack://adccsk.pro.web/./src/scripts/translate.ts","webpack://adccsk.pro.web/./src/scripts/ui.ts","webpack://adccsk.pro.web/./src/scripts/user.ts","webpack://adccsk.pro.web/./src/scripts/utils.ts","webpack://adccsk.pro.web/external var \"jQuery\"","webpack://adccsk.pro.web/webpack/bootstrap","webpack://adccsk.pro.web/./src/scripts/index.ts"],"sourcesContent":["export function Extend$UiAutocomplete() {\r\n $.extend($.ui.autocomplete.prototype, {\r\n _renderItem: (ul, item) => {\r\n var inner = $(\"\").html(item.label);\r\n return $(\"
  • \")\r\n .data(\"ui-autocomplete-item\", item)\r\n .append(inner)\r\n .appendTo(ul);\r\n },\r\n _resizeMenu: function () {\r\n this.menu.element.outerWidth($(\"div#header .navbar .form div.input-group-lg\").width() - 1);\r\n }\r\n });\r\n}\r\n\r\nexport function Define$EasingEaseOutCubic() {\r\n ($ as any).easing.easeOutCubic = function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t + 1) + b;\r\n }\r\n}","import El from \"./el\";\r\nimport Adsense from \"./adsense\";\r\nimport {Utils} from \"./utils\";\r\n\r\n/**\r\n * Represents a class for managing ads on a web page.\r\n */\r\nexport default class Ads {\r\n private static elProductText = $(\"#product .product-text\");\r\n private static elProductTextPlaceholder = $(\"#product .product-text.text-pil #1_0, #product .product-text.text-spc #3_0\");\r\n private static elProductTextIsFlex = $(\".is-flex\", Ads.elProductText);\r\n private static elProductTextAd = $(\"#productDetailAdRight\");\r\n private static elProductTextPromo = $(\"#productDetailPromoRight\");\r\n private static elProductTextAdsContainer = $(\"#product .product-text #ads-container\");\r\n private static elProductTextAdsContainerFlex = $(\"#product .product-text #ads-container-flex\");\r\n\r\n static init() {\r\n if (window.ad_settings == '') {\r\n Ads.initInTextAds();\r\n }\r\n\r\n if (Ads.elProductText.length > 0) {\r\n Ads.updateAdPromoPlacement();\r\n El.w.on(\"resize\", Ads.updateAdPromoPlacement);\r\n }\r\n\r\n Ads.initSideAds();\r\n }\r\n\r\n private static initSideAds() {\r\n const anchor = $('.cnt-body__siz');\r\n const anchor_tbl = $('.cnt-body__siz .tbl-data');\r\n const el_lad = $('.ad_side_l');\r\n const el_rad = $('.ad_side_r');\r\n const min_w = 160;\r\n const max_w = 300;\r\n const margin = 20;\r\n\r\n var lad_w = 0;\r\n var rad_w = 0;\r\n var lad_h = 0;\r\n var rad_h = 0;\r\n\r\n if(el_lad.length == 0 || el_rad.length == 0) return;\r\n\r\n var setSize = function () {\r\n var space_l = anchor.offset().left;\r\n var space_r = El.w.innerWidth() - anchor.offset().left - Math.max(anchor.outerWidth(), anchor_tbl.outerWidth(true) ?? 0);\r\n\r\n lad_h = rad_h = (El.w.innerHeight() > 810) ? 600 : 300;\r\n\r\n if(space_l >= min_w + margin +6) {\r\n lad_w = min_w;\r\n if(space_l >= max_w + margin +6) {\r\n lad_w = max_w;\r\n }\r\n\r\n el_lad.css(\"width\", `${lad_w}px`);\r\n el_lad.css(\"height\", `${lad_h}px`);\r\n Adsense.initPostponedAds(el_lad);\r\n }\r\n\r\n if(space_r >= min_w + margin +6) {\r\n rad_w = min_w; \r\n if(space_r >= max_w + margin +6) {\r\n rad_w = max_w;\r\n }\r\n\r\n el_rad.css(\"width\", `${rad_w}px`);\r\n el_rad.css(\"height\", `${rad_h}px`);\r\n Adsense.initPostponedAds(el_rad);\r\n }\r\n };\r\n\r\n var move = function () {\r\n var space_l = anchor.offset().left;\r\n var space_r = El.w.innerWidth() - anchor.offset().left - Math.max(anchor.outerWidth(), anchor_tbl.outerWidth(true) ?? 0);\r\n\r\n el_lad.css(\"left\", `${space_l - lad_w - margin}px`);\r\n el_rad.css(\"right\", `${space_r - rad_w - margin}px`);\r\n };\r\n \r\n setSize();\r\n move();\r\n El.w.on(\"resize\", Utils.throttle(move, 25, null));\r\n }\r\n \r\n /**\r\n * Initializes in-text ads. Used in PIL and SPC pages.\r\n * \r\n * This function inserts responsive ads into specific elements on the page based on their position.\r\n * It uses a buffer of ad HTML code and inserts the ads at appropriate positions.\r\n * \r\n * @remarks\r\n * The function targets specific elements with CSS selectors and inserts ads before them.\r\n * The ads are inserted based on their position relative to the previous ad and the viewport height.\r\n */\r\n private static initInTextAds() {\r\n var cid = window.ad_channel_id;\r\n\r\n // Responsive ads buffer\r\n var responsiveAdsBuffer = [\r\n ``,\r\n ``,\r\n ``,\r\n ``,\r\n ``\r\n ];\r\n \r\n var responsiveAdsBufferPos = 0;\r\n var vpHeight = El.w.height();\r\n var eachNthVp = 1; // show ad every N viewports\r\n var els = [];\r\n \r\n // pil ads\r\n $(\"#product .product-text.text-pil h4\").each((i, el) => {\r\n if (i >= 1) els.push(el); // start with\r\n });\r\n // spc ads\r\n $(\"#product .product-text.text-spc h4\").each((i, el) => {\r\n if (i >= 7) els.push(el); // start with\r\n eachNthVp = 2; // show ad every 2 viewports\r\n });\r\n $(\".ads-inject\").each((i, el) => {\r\n els.push(el);\r\n });\r\n \r\n var lastAdEl = null;\r\n \r\n // Insert ads\r\n for (var j = 0; j < els.length; j++) {\r\n var showAd = true;\r\n var adEl = $(els[j]);\r\n // Check if the ad should be shown\r\n if (j > 0) {\r\n var distFromPrevEl = adEl.offset().top - lastAdEl.offset().top;\r\n showAd = distFromPrevEl >= vpHeight * eachNthVp; // show ad every N viewports\r\n }\r\n // Insert ad\r\n if (showAd && responsiveAdsBufferPos < responsiveAdsBuffer.length) {\r\n adEl.before(\"
    \" + responsiveAdsBuffer[responsiveAdsBufferPos] + \"
    \");\r\n Adsense.notifyAd();\r\n responsiveAdsBufferPos++;\r\n lastAdEl = adEl;\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Updates the placement of the ad promo based on the visibility of the product text.\r\n */\r\n private static updateAdPromoPlacement() {\r\n // ked sa presunie obsah presunu sa aj reklamy\r\n if (Ads.elProductTextIsFlex.is(\":visible\")) {\r\n if (Ads.elProductTextPlaceholder.length > 0) {\r\n Ads.elProductTextAd.insertBefore(Ads.elProductTextPlaceholder);\r\n } else {\r\n Ads.elProductTextAd.appendTo(Ads.elProductTextAdsContainerFlex);\r\n }\r\n Ads.elProductTextPromo.appendTo(Ads.elProductTextAdsContainerFlex);\r\n } else {\r\n Ads.elProductTextAd.appendTo(Ads.elProductTextAdsContainer);\r\n Ads.elProductTextPromo.appendTo(Ads.elProductTextAdsContainer);\r\n }\r\n\r\n }\r\n}","export default class Adsense {\r\n static notifyAd() {\r\n (window.adsbygoogle = window.adsbygoogle || []).push({});\r\n }\r\n\r\n static initPostponedAds(el) {\r\n const $el = $(el);\r\n $el.find('.ga_postpone').removeClass('ga_postpone').addClass('adsbygoogle');\r\n Adsense.notifyAd();\r\n }\r\n}","export class Analyser {\r\n private static catMainMenu = \"main menu\";\r\n private static catSeachAll = \"search all\";\r\n private static catSuggestions = \"suggestions\";\r\n private static dataLabel = \"analyserLabel\";\r\n private static dataValue = \"analyserValue\";\r\n\r\n static suggestionLastFocus = null;\r\n\r\n static initialize() {\r\n // main menu\r\n $(\"div.main-menu a[data-analyser-label]\").on(\"click\", Analyser.mainMenuClick);\r\n\r\n // search-grid: items\r\n const searchItems = $(\"td > a, td > span > a\", \"div.search-grid table tr\");\r\n searchItems.each((i, el) => { $(el).data(Analyser.dataValue, i); });\r\n searchItems.on(\"click\", Analyser.searchItemClick);\r\n\r\n // search-grid: key-words\r\n const searchKeywords = $(\"div.search-grid div.key-words-box a.product\");\r\n searchKeywords.each((i, el) => { $(el).data(Analyser.dataValue, i); });\r\n searchKeywords.on(\"click\", Analyser.searchKeywordClick);\r\n\r\n // suggestions\r\n const tbSearch = $(\"#tbSearch\");\r\n tbSearch.on(\"keydown\", Analyser.suggestionsKeyDown);\r\n const fSearch = $(\"form#f1\");\r\n fSearch.on(\"submit\", Analyser.suggestionsSubmit);\r\n }\r\n\r\n static mainMenuClick(e: JQuery.ClickEvent) {\r\n const label = $(e.target).data(Analyser.dataLabel);\r\n // console.log(\"mainMenuClick: \" + label);\r\n gtag(\"event\", \r\n \"click\",\r\n {\r\n \"event_category\": Analyser.catMainMenu,\r\n \"event_label\": label,\r\n \"transport_type\": \"beacon\"\r\n });\r\n //ga(\"send\", \"event\",\r\n // {\r\n // eventCategory: Analyser.catMainMenu,\r\n // eventAction: \"click\",\r\n // eventLabel: label,\r\n // transport: \"beacon\"\r\n // });\r\n }\r\n\r\n static searchItemClick(e: JQuery.ClickEvent) {\r\n const value = $(e.target).data(Analyser.dataValue);\r\n // console.log(\"searchItemClick\" + JSON.stringify(value));\r\n gtag(\"event\",\r\n \"click\",\r\n {\r\n \"event_category\": Analyser.catSeachAll,\r\n \"event_label\": \"item\",\r\n \"value\": value,\r\n \"transport_type\": \"beacon\"\r\n });\r\n //ga(\"send\", \"event\",\r\n // {\r\n // eventCategory: Analyser.catSeachAll,\r\n // eventAction: \"click\",\r\n // eventLabel: \"item\",\r\n // eventValue: value,\r\n // transport: \"beacon\"\r\n // });\r\n }\r\n\r\n static searchKeywordClick(e: JQuery.ClickEvent) {\r\n const value = $(e.target).data(Analyser.dataValue);\r\n // console.log(\"searchKeywordClick: \" + JSON.stringify(value));\r\n gtag(\"event\",\r\n \"click\",\r\n {\r\n \"event_category\": Analyser.catSeachAll,\r\n \"event_label\": \"keyword\",\r\n \"value\": value,\r\n \"transport_type\": \"beacon\"\r\n });\r\n //ga(\"send\", \"event\",\r\n // {\r\n // eventCategory: Analyser.catSeachAll,\r\n // eventAction: \"click\",\r\n // eventLabel: \"keyword\",\r\n // eventValue: value,\r\n // transport: \"beacon\"\r\n // });\r\n }\r\n\r\n static suggestionsClick(item: any) {\r\n // console.log(\"suggestionsClick: \" + JSON.stringify(item));\r\n gtag(\"event\",\r\n \"click\",\r\n {\r\n \"event_category\": Analyser.catSuggestions,\r\n \"event_label\": item.value,\r\n \"value\": item.index,\r\n \"transport_type\": \"beacon\"\r\n });\r\n //ga(\"send\", \"event\",\r\n // {\r\n // eventCategory: Analyser.catSuggestions,\r\n // eventAction: \"click\",\r\n // eventLabel: item.value,\r\n // eventValue: item.index,\r\n // transport: \"beacon\"\r\n // });\r\n }\r\n\r\n static suggestionsKeyDown(e: JQuery.KeyDownEvent) {\r\n if (e.code == \"Space\" && Analyser.suggestionLastFocus) {\r\n // console.log(\"suggestionsKeyDown: \" + \"space\");\r\n gtag(\"event\",\r\n \"space_key\",\r\n {\r\n \"event_category\": Analyser.catSuggestions,\r\n \"event_label\": Analyser.suggestionLastFocus.value,\r\n \"value\": Analyser.suggestionLastFocus.index,\r\n \"transport_type\": \"beacon\"\r\n });\r\n //ga(\"send\",\r\n // \"event\",\r\n // {\r\n // eventCategory: Analyser.catSuggestions,\r\n // eventAction: \"space key\",\r\n // eventLabel: Analyser.suggestionLastFocus.value,\r\n // eventValue: Analyser.suggestionLastFocus.index\r\n // });\r\n } else if (e.code !== \"ArrowDown\" && e.code !== \"ArrowLeft\" && e.code !== \"ArrowRight\" && e.code !== \"ArrowUp\") { // ignore arrows\r\n // console.log(\"Analyser.suggestionLastFocus = null; \" + e.keyCode);\r\n Analyser.suggestionLastFocus = null;\r\n }\r\n }\r\n\r\n static suggestionsSubmit(e: JQuery.SubmitEvent) {\r\n if (Analyser.suggestionLastFocus) {\r\n // console.log(\"suggestionsSubmit:\");\r\n gtag(\"event\",\r\n \"submit\",\r\n {\r\n \"event_category\": Analyser.catSuggestions,\r\n \"event_label\": Analyser.suggestionLastFocus.value,\r\n \"value\": Analyser.suggestionLastFocus.index,\r\n \"transport_type\": \"beacon\"\r\n });\r\n //ga(\"send\",\r\n // \"event\",\r\n // {\r\n // eventCategory: Analyser.catSuggestions,\r\n // eventAction: \"submit\",\r\n // eventLabel: Analyser.suggestionLastFocus.value,\r\n // eventValue: Analyser.suggestionLastFocus.index,\r\n // transport: \"beacon\"\r\n // });\r\n }\r\n }\r\n}","import El from \"./el\";\r\nimport Adsense from \"./adsense\";\r\n\r\n\r\nexport default class AnchorBanner {\r\n\r\n private static _instance: Element;\r\n\r\n static init() {\r\n\r\n if(this._instance) return;\r\n\r\n $('.anchor-ad').each((i, el) => {\r\n if(i > 0) return;\r\n\r\n const $el = $(el);\r\n this._instance = $el[0];\r\n\r\n El.b.addClass('has-anchor-ad');\r\n $el.css('display', '');\r\n\r\n $('
    ').appendTo($el).on('click', () => {\r\n $el.addClass('anchor-ad--closed');\r\n });\r\n\r\n Adsense.initPostponedAds($el);\r\n });\r\n }\r\n}","\r\nexport class CalculatorDosage {\r\n private publicId: string;\r\n private gaCategory = \"calculator\";\r\n private gaLabel: string;\r\n private gaStartTime: Date;\r\n private gaCalculateTime: Date;\r\n\r\n el: JQuery;\r\n fWeight: JQuery;\r\n fDoseCount: JQuery;\r\n fDose: JQuery;\r\n fProductunitName: JQuery;\r\n step1: JQuery;\r\n s1Error: JQuery;\r\n s1Result: JQuery;\r\n s1Info: JQuery;\r\n step2: JQuery;\r\n s2Error: JQuery;\r\n s2Result: JQuery;\r\n disclaim: JQuery;\r\n\r\n constructor() {\r\n this.el = $(\"#webcalculator\");\r\n if (this.el.length) {\r\n this.publicId = $(\"#fPublicId\", this.el).val() as string;\r\n\r\n this.fWeight = $(\"#fWeight\", this.el);\r\n this.fDoseCount = $(\"#fDoseCount\", this.el);\r\n this.fDose = $(\"#fDose\", this.el);\r\n this.fProductunitName = $(\"#fProductunitName\", this.el);\r\n this.step1 = $(\".step1\", this.el);\r\n this.s1Error = $(\".error\", this.step1);\r\n this.s1Result = $(\".result\", this.step1);\r\n this.s1Info = $(\".info\", this.step1);\r\n this.step2 = $(\".step2\", this.el);\r\n this.s2Error = $(\".error\", this.step2);\r\n this.s2Result = $(\".result\", this.step2);\r\n this.disclaim = $(\".disclaim\", this.el);\r\n\r\n this.gaLabel = \"product-\" + this.publicId;\r\n this.gaStartTime = new Date();\r\n \r\n gtag(\"event\",\r\n \"show\",\r\n {\r\n \"event_category\": this.gaCategory,\r\n \"event_label\": this.gaLabel\r\n });\r\n }\r\n }\r\n\r\n s1Inputchange(e: Event) {\r\n this.step2.hide();\r\n this.s1Error.hide().html(\"\");\r\n this.s1Result.hide().html(\"\");\r\n this.s1Info.hide();\r\n this.s2Inputchange(e);\r\n }\r\n\r\n s1Calculate(e: Event) {\r\n e.preventDefault();\r\n\r\n this.step2.hide();\r\n this.s1Error.hide().html(\"\");\r\n this.s1Result.hide().html(\"\");\r\n this.s1Info.hide();\r\n this.gaCalculateTime = new Date();\r\n\r\n gtag(\"event\", \r\n \"calculate\",\r\n {\r\n \"event_category\": this.gaCategory,\r\n \"event_label\": this.gaLabel,\r\n \"value\": this.gaCalculateTime.getTime() - this.gaStartTime.getTime()\r\n });\r\n\r\n fetch(`${window.variables.webCalculatorsCalculate}?publicId=${this.publicId}&weightInKg=${this.fWeight.val()}`)\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error(\"Network response was not OK\");\r\n }\r\n return response.json();\r\n })\r\n .then((data: Adcsk.DosageCalcResult) => {\r\n if (data.Error) {\r\n this.s1Error.text(data.Msg).show();\r\n return;\r\n }\r\n if (data.FormatedOutOfWeightRangeWarning) {\r\n this.s1Error.text(data.FormatedOutOfWeightRangeWarning).show();\r\n }\r\n this.s1Result.text(data.FormatedResult).show();\r\n this.fProductunitName.text(data.ProductUnitName);\r\n this.s1Info.show();\r\n this.disclaim.show();\r\n this.step2.show();\r\n })\r\n .catch(reason => {\r\n this.s1Error.text(\"Nastala neočakávaná chyba.\").show();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n s2Inputchange(e: Event) {\r\n this.s2Error.hide().html(\"\");\r\n this.s2Result.hide().html(\"\");\r\n this.fDose.parent().removeClass(\"has-error\");\r\n }\r\n\r\n s2Calculate(e: Event) {\r\n e.preventDefault();\r\n\r\n this.s2Error.hide().html(\"\");\r\n this.s2Result.hide().html(\"\").removeClass(\"text-success\").removeClass(\"text-danger\");\r\n this.fDose.parent().removeClass(\"has-error\");\r\n\r\n const dNow1 = new Date();\r\n\r\n gtag(\"event\",\r\n \"check\",\r\n {\r\n \"event_category\": this.gaCategory,\r\n \"event_label\": this.gaLabel,\r\n \"value\": dNow1.getTime() - this.gaCalculateTime.getTime()\r\n });\r\n\r\n fetch(`${window.variables.webCalculatorsCheck}?publicId=${this.publicId}&weightInKg=${this.fWeight.val()}&doseCount=${this.fDoseCount.val()}&dose=${this.fDose.val()}`)\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error(\"Network response was not OK\");\r\n }\r\n return response.json();\r\n })\r\n .then((data: Adcsk.DosageCheckResult) => {\r\n if (data.Error) {\r\n this.s2Error.text(data.Msg).show();\r\n if (data.DoseError) {\r\n this.fDose.parent().addClass(\"has-error\");\r\n\r\n const dNow2 = new Date();\r\n\r\n gtag(\"event\",\r\n \"check-input-error\",\r\n {\r\n \"event_category\": this.gaCategory,\r\n \"event_label\": this.gaLabel,\r\n \"value\": dNow2.getTime() - this.gaCalculateTime.getTime()\r\n });\r\n }\r\n return;\r\n }\r\n this.s2Result.text(data.FormatedResult).addClass(data.Problem ? \"text-danger\" : \"text-success\").show();\r\n this.disclaim.show();\r\n this.step2.show();\r\n })\r\n .catch(reason => {\r\n this.s2Error.text(\"Nastala neočakávaná chyba.\").show();\r\n });\r\n\r\n return false;\r\n }\r\n};","import El from \"./el\";\r\n\r\nexport default {\r\n url: \"\",\r\n hashCode: null,\r\n openTreeUrl: \"\",\r\n storeHistory: false,\r\n isAtc: true,\r\n\r\n changeExpandedIcons(row: JQuery) {\r\n row.find(\".expandable\").removeClass(\"expandable\").addClass(\"collapsible\");\r\n row.find(\".pi-icon-treeExp\").removeClass(\"pi-icon-treeExp\").addClass(\"pi-icon-treeCol\");\r\n },\r\n\r\n existsNode(data: Adcsk.Classification[], id: string) {\r\n for (let i = 0; i < data.length; i++) {\r\n if (data[i].Id === id && ((data[i].Children != null) === data[i].HasChildren)) {\r\n return true;\r\n }\r\n if (data[i].Children) {\r\n if (this.existsNode(data[i].Children, id)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n\r\n renderTree(data: Adcsk.Classification[]) {\r\n var table = $(\".classification-tree\").children(\"table\");\r\n var parentNode = table.append(\"\");\r\n\r\n if (this.hashCode && !this.existsNode(data, this.hashCode)) {\r\n fetch(`${this.openTreeUrl}?open=${this.hashCode}&including=true`)\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error(\"Network response was not OK\");\r\n }\r\n return response.json();\r\n })\r\n .then((data: Adcsk.Classification[]) => {\r\n this.renderData(data, parentNode);\r\n });\r\n } else {\r\n this.renderData(data, parentNode);\r\n }\r\n },\r\n\r\n renderData(data: Adcsk.Classification[], parentNode: JQuery) {\r\n const that = this;\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const node = this.prepareNode(data[i], 0);\r\n parentNode.append(node);\r\n if (data[i].Children) {\r\n if (data[i].Children.length > 0) {\r\n that.treeCache[data[i].Id] = data[i].Children;\r\n }\r\n //pri prvom zobrazeni zobrazit vsetky data\r\n this.addChildNodes(data[i].Children, node, true);\r\n }\r\n }\r\n\r\n if (that.storeHistory && that.hashCode) {\r\n El.d\r\n .trigger(\"scroll\") //nastavi anchorfix (funcia fScrollfixRefresh)\r\n .delay(1/*,\r\n function() {\r\n location.replace(\"#\" + that.hashCode); //odskroluj na danu poziciu\r\n })*/);\r\n }\r\n },\r\n\r\n addChildNodes(tree: Adcsk.Classification[], context: JQuery, expandChildren: boolean) {\r\n const that = this;\r\n const row = context.closest(\"tr\");\r\n\r\n for (let i = tree.length - 1; i >= 0; i--) {\r\n const node = this.prepareNode(tree[i], row.data(\"level\") + 1);\r\n node.insertAfter(row);\r\n\r\n if (tree[i].Children) {\r\n if (tree[i].Children.length > 0) {\r\n that.treeCache[tree[i].Id] = tree[i].Children;\r\n }\r\n this.changeExpandedIcons(row);\r\n if (expandChildren) {\r\n this.addChildNodes(tree[i].Children, node, expandChildren);\r\n }\r\n }\r\n }\r\n },\r\n\r\n prepareNode(data: Adcsk.Classification, level: number): JQuery {\r\n var row = $(\"\")\r\n .data(\"code\", data.Id)\r\n .data(\"level\", level);\r\n\r\n var td = $(\"\");\r\n td.append(\"\");\r\n\r\n var divExpander = $(\"
    \");\r\n\r\n for (let i = 0; i < level; i++) {\r\n divExpander.append($(\"\"));\r\n }\r\n\r\n if (data.HasChildren) {\r\n divExpander.append($(\"\")\r\n .data(\"code\", data.Id)\r\n .data(\"level\", level)\r\n .attr(\"href\", \"javascript:void(0);\"));\r\n } else {\r\n divExpander.append(\"\");\r\n }\r\n\r\n td.append(divExpander);\r\n\r\n td.append($(\"\" + data.Id + \"\"));\r\n \r\n td.append($('' + data.Title + \"\")\r\n .attr(\"id\", data.Id)\r\n .attr(\"name\", data.Id)\r\n .data(\"code\", data.Id)\r\n .attr(\"href\", \"javascript:void(0);\"));\r\n\r\n td.append(\"Zobraziť produkty\");\r\n\r\n row.append(td);\r\n return row;\r\n },\r\n\r\n initialize(url: string, openedTreeUrl: string) {\r\n this.url = url;\r\n this.openTreeUrl = openedTreeUrl;\r\n this.storeHistory = openedTreeUrl !== undefined && openedTreeUrl !== null;\r\n this.isAtc = url.endsWith(\"atc-children\");\r\n\r\n if (location.hash && this.storeHistory) {\r\n this.hashCode = location.hash.replace(\"#go\", \"\").replace(\"#\", \"\");\r\n }\r\n\r\n if (!this.treeCache) {\r\n this.treeCache = {};\r\n }\r\n\r\n var that = this;\r\n\r\n $(\".classification-tree\")\r\n .on(\"click\",\r\n \".expandable\",\r\n null,\r\n function () {\r\n var code = $(this).data(\"code\");\r\n var row = $(this).closest(\"tr\");\r\n\r\n if (that.storeHistory) {\r\n location.replace(\"#go\" + code);\r\n // prehliadac neskace pocas otvarania a pri stlaceni spat v browseri bude element zbaleny\r\n }\r\n\r\n if (that.treeCache[code]) {\r\n //pri kliknuti otvorit iba jeden level\r\n that.addChildNodes(that.treeCache[code], $(this), false);\r\n that.changeExpandedIcons(row);\r\n\r\n return;\r\n }\r\n\r\n fetch(`${that.url}?code=${code}`)\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error(\"Network response was not OK\");\r\n }\r\n return response.json();\r\n })\r\n .then((data: Adcsk.Classification[]) => {\r\n that.treeCache[code] = data;\r\n //pri kliknuti otvorit iba jeden level\r\n that.addChildNodes(data, $(this), false);\r\n that.changeExpandedIcons(row);\r\n });\r\n });\r\n\r\n $(\".classification-tree\")\r\n .on(\"click\",\r\n \".collapsible\",\r\n null,\r\n function () {\r\n const code = $(this).data(\"code\");\r\n var row = $(this).closest(\"tr\");\r\n row.find(\".collapsible\").removeClass(\"collapsible\").addClass(\"expandable\");\r\n row.find(\".pi-icon-treeCol\").removeClass(\"pi-icon-treeCol\").addClass(\"pi-icon-treeExp\");\r\n\r\n row = row.next();\r\n while (row[0] && row.data(\"code\").indexOf(code) === 0) {\r\n const toRemove = row;\r\n row = row.next();\r\n toRemove.remove();\r\n }\r\n\r\n if (that.storeHistory) {\r\n location.replace(\"#go\" + code);\r\n // prehliadac neskace pocas otvarania a pri stlaceni spat v browseri bude element zbaleny\r\n }\r\n });\r\n }\r\n}","/**\r\n * Utility class for working with cookies.\r\n */\r\nexport default class Cookies {\r\n\r\n /**\r\n * Retrieves the value of a cookie by its key.\r\n * @param key - The key of the cookie.\r\n * @returns The value of the cookie, or an empty string if the cookie does not exist.\r\n */\r\n static getValue(key: string): string {\r\n const cookies = document.cookie.split(\"; \");\r\n for (var i = 0; i < cookies.length; i++) {\r\n const splitted = cookies[i].split(\"=\");\r\n if (splitted[0] === key) {\r\n return splitted[1];\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Sets a cookie with the specified key, value, and expiration days.\r\n * @param key - The key of the cookie.\r\n * @param value - The value of the cookie.\r\n * @param days - The number of days until the cookie expires.\r\n */\r\n static set(key: string, value: string, days: number): void {\r\n var expires = \"\";\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = \"; expires=\" + date.toUTCString();\r\n }\r\n document.cookie = key + \"=\" + value + expires + \"; path=/\";\r\n }\r\n\r\n /**\r\n * Deletes a cookie by setting its expiration to a past date.\r\n * @param name - The name of the cookie to delete.\r\n */\r\n static erase(name: string): void {\r\n this.set(name, \"\", -1);\r\n }\r\n}\r\n","\r\n/**\r\n * Represents a utility class for DOM elements.\r\n */\r\nexport default class El {\r\n /**\r\n * The window object.\r\n */\r\n static w = $(window); \r\n\r\n /**\r\n * The document object.\r\n */\r\n static d = $(document);\r\n\r\n /**\r\n * The body element.\r\n */\r\n static b = $(\"body\");\r\n}","interface LAHTMLScriptElement extends HTMLScriptElement {\r\n onreadystatechange: (this: HTMLElement, ev: Event) => any;\r\n readyState: string;\r\n}\r\n\r\nexport class Feedback {\r\n private static gaCategory = \"Feedback form\";\r\n private formExists = false;\r\n private elModal;\r\n\r\n constructor() {\r\n this.elModal = $(\"#feedbackModal\");\r\n }\r\n\r\n showModal() {\r\n if (typeof (gtag) != \"undefined\") {\r\n// ga(\"send\", \"event\", {\r\n// \"eventCategory\": Feedback.gaCategory,\r\n// \"eventAction\": \"open\"\r\n// });\r\n gtag(\"event\",\r\n \"open\",\r\n {\r\n \"event_category\": Feedback.gaCategory\r\n });\r\n }\r\n\r\n $(\"div.page\", this.elModal).hide();\r\n $(\"div.page-main\", this.elModal).show();\r\n this.elModal.modal(\"show\");\r\n }\r\n\r\n closeModal(e: Event, success: boolean = false) {\r\n if (typeof (gtag) != \"undefined\") {\r\n// ga(\"send\", \"event\", {\r\n// \"eventCategory\": Feedback.gaCategory,\r\n// \"eventAction\": \"close\"\r\n// });\r\n gtag(\"event\",\r\n \"close\",\r\n {\r\n \"event_category\": Feedback.gaCategory\r\n });\r\n }\r\n this.elModal.modal(\"hide\");\r\n }\r\n\r\n selectTheme(theme) {\r\n if (typeof (gtag) != \"undefined\") {\r\n //ga(\"send\", \"event\", {\r\n // \"eventCategory\": Feedback.gaCategory,\r\n // \"eventAction\": \"select\",\r\n // \"eventLabel\": theme\r\n //});\r\n gtag(\"event\",\r\n \"select\",\r\n {\r\n \"event_category\": Feedback.gaCategory,\r\n \"event_label\": theme\r\n });\r\n }\r\n $(\"div.page-main\", this.elModal).hide();\r\n $(\"div.page-\" + theme, this.elModal).show();\r\n\r\n if (!this.formExists && theme === \"contact-form\") {\r\n var that = this;\r\n\r\n // create LiveAgent when needed\r\n (function (d: Document, src: string, c: Function) {\r\n var t = d.scripts[d.scripts.length - 1], s = d.createElement('script') as LAHTMLScriptElement;\r\n s.id = \"la_x2s6df8d\";\r\n s.async = true;\r\n s.src = src;\r\n s.onload = s.onreadystatechange = function () {\r\n var rs = s.readyState;\r\n if (rs && (rs !== \"complete\") && (rs !== \"loaded\")) {\r\n return;\r\n }\r\n c();\r\n };\r\n t.parentElement.insertBefore(s, t.nextSibling);\r\n })(document, 'https://pharminfo.ladesk.com/scripts/track.js', function () {\r\n window.LiveAgent.createForm(\"839ded1f\", $(\".contact-form\", that.elModal).get(0));\r\n });\r\n\r\n this.formExists = true;\r\n }\r\n }\r\n};","import El from \"./el\";\r\n\r\nexport default class HDrag {\r\n\r\n static init() {\r\n var elHdrag = $(\".hdrag\");\r\n\r\n elHdrag.each((i, el) => {\r\n var elBox = $(el);\r\n var elBoxInner = $(\".drag-inner\", elBox);\r\n\r\n elBoxInner.draggable({\r\n addClasses: false,\r\n axis: \"x\",\r\n scroll: false,\r\n distance: 5\r\n });\r\n });\r\n\r\n var fHDragRefresh = () => {\r\n elHdrag.each((i, el) => {\r\n var elBox = $(el);\r\n var elBoxInner = $(\".drag-inner\", elBox);\r\n\r\n var boxInnerLeft = elBoxInner.offset().left;\r\n var windowWidth = El.w.innerWidth();\r\n var boxInnerWidth = elBoxInner.outerWidth();\r\n var minX = windowWidth - boxInnerWidth - 15; // margin\r\n var bCanFit = windowWidth >= boxInnerWidth;\r\n\r\n if (bCanFit) {\r\n elBox.removeClass(\"canDrag\");\r\n elBoxInner.css({ 'left': 0 });\r\n } else {\r\n elBox.addClass(\"canDrag\");\r\n if ((boxInnerLeft + boxInnerWidth) < windowWidth) {\r\n elBoxInner.css({ 'left': minX });\r\n }\r\n }\r\n\r\n elBoxInner.draggable(\"option\", \"disabled\", bCanFit);\r\n elBoxInner.draggable(\"option\", \"containment\", [minX, 0, 0, 0]);\r\n });\r\n };\r\n \r\n El.w.on(\"resize\", fHDragRefresh);\r\n fHDragRefresh();\r\n }\r\n}","import {Utils} from './utils';\r\nimport El from './el';\r\nimport { Analyser } from './analyser';\r\nimport { IMyAutocomplete } from './types';\r\n\r\n/**\r\n * Class representing the header hide functionality.\r\n */\r\nexport class HeaderHide {\r\n /**\r\n * Initializes the header hide functionality.\r\n */\r\n static init() {\r\n var elWindow = El.w;\r\n var elDoc = El.d;\r\n var elBody = El.b;\r\n \r\n var lastScrollPos = 0;\r\n\r\n const headerHiddenClass = 'bd_header-hidden'; // class to add to body when header is hidden\r\n const ignoreScrollMargin = 60; // ignore scroll events within this margin\r\n const alwaysShowThreshold = 80; // always show header when scrolled to top\r\n const mediaFilter = window.matchMedia('(hover: none) and (max-height: 900px)'); // mobile devices\r\n \r\n var handleScroll = function() {\r\n var scrolled = elDoc.scrollTop(); \r\n\r\n var alwaysShow = !mediaFilter.matches || scrolled <= alwaysShowThreshold;\r\n\r\n // show/hide header\r\n var show = alwaysShow || (lastScrollPos - scrolled) > ignoreScrollMargin;\r\n var hide = !show && (scrolled - lastScrollPos) > ignoreScrollMargin;\r\n \r\n // update last scroll position\r\n if(hide || show) lastScrollPos = scrolled;\r\n\r\n // update header visibility\r\n if(hide) {\r\n elBody.addClass(headerHiddenClass);\r\n }\r\n else if (show) {\r\n elBody.removeClass(headerHiddenClass);\r\n }\r\n }\r\n\r\n elWindow.on(\"scroll resize\", Utils.throttle(handleScroll, 100, null));\r\n }\r\n}\r\n\r\n/**\r\n * Class representing the header search form functionality.\r\n */\r\nexport class HeaderSearchForm {\r\n \r\n /**\r\n * Initializes the header search form expand functionality.\r\n */\r\n static initFormExpand() {\r\n const topMenuForm = $('.tmnu__form') // top menu search form\r\n const fullWidthClassName = 'tmnu__form_full-width'; // class to add to form when expanded\r\n\r\n // expand search form on button click\r\n $('.tmnu__btns button').on('click', function() {\r\n topMenuForm.addClass(fullWidthClassName);\r\n $('#tbSearch').trigger(\"focus\");\r\n });\r\n\r\n // collapse search form on focus out\r\n $('#tbSearch, #bSubmit').on('focusout', function() {\r\n if (!topMenuForm.is(\":focus-within\")) {\r\n topMenuForm.removeClass(fullWidthClassName);\r\n }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Class representing the header menu functionality.\r\n */\r\nexport class HeaderMenu {\r\n\r\n /**\r\n * Initializes the header menu button display.\r\n */\r\n static initMenuButtonDisplay() {\r\n var bMenu = $(\".tmnu__mnbtn\");\r\n var menuInBody = $(\"#menu-in-body\");\r\n var fToggleMenuButton = () => {\r\n if (menuInBody.is(\":visible\")) {\r\n bMenu.attr(\"disabled\", \"disabled\");\r\n } else {\r\n bMenu.attr(\"disabled\", null);\r\n }\r\n };\r\n El.w.on(\"resize\", fToggleMenuButton);\r\n fToggleMenuButton();\r\n }\r\n}\r\n\r\n/**\r\n * Represents a search autocomplete functionality.\r\n */\r\nexport class SearchAutocomplete {\r\n\r\n /**\r\n * Initializes the search autocomplete functionality.\r\n */\r\n static init() {\r\n const tbSearch = $(\"#tbSearch\");\r\n const fSearch = $(\"form#f1\");\r\n const fW = $(\"#w\", fSearch);\r\n const fX = $(\"#x\", fSearch);\r\n const fP = $(\"#p\", fSearch);\r\n const tmnu__form = $(\".tmnu__form\");\r\n\r\n tbSearch.autocomplete({\r\n cache: {},\r\n delay: 100,\r\n open(event, ui) {\r\n $(\"ul.ui-autocomplete\").width(tmnu__form.width());\r\n if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {\r\n $('.ui-autocomplete').off('menufocus hover mouseover');\r\n }\r\n },\r\n source: function (request, response) {\r\n var cache = this.options.cache;\r\n if (cache[request.term]) {\r\n response($.map(cache[request.term], item => item));\r\n } else {\r\n const params = new URLSearchParams();\r\n params.set('q', request.term);\r\n \r\n fetch(`${window.variables.autoCompleteUrl}?${params.toString()}`)\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error(\"Network response was not OK\");\r\n }\r\n return response.json();\r\n })\r\n .then(data => {\r\n cache[request.term] = data;\r\n response($.map(data, item => item));\r\n });\r\n }\r\n },\r\n select: (event, ui) => {\r\n if (ui.item.action === \"SearchInSection\") {\r\n if (ui.item.section) {\r\n fW.val(ui.item.section);\r\n }\r\n if (ui.item.subSection) {\r\n fX.val(ui.item.subSection);\r\n }\r\n if (ui.item.productType) {\r\n fP.val(ui.item.productType);\r\n }\r\n tbSearch.val(ui.item.value);\r\n fSearch.trigger(\"submit\");\r\n } else if (ui.item.action === \"Search\") {\r\n tbSearch.val(ui.item.value);\r\n fSearch.trigger(\"submit\");\r\n }/* else if (ui.item.action === \"Rerun\") {\r\n tbSearch.val(ui.item.value);\r\n const e = $.Event(\"keydown\");\r\n e.which = 40;\r\n tbSearch.trigger(\"focus\").attr(\"value\", \" \").trigger(e);\r\n } else {\r\n tbSearch.val(ui.item.value).trigger(\"focus\");\r\n }*/\r\n \r\n Analyser.suggestionsClick(ui.item);\r\n },\r\n focus: (event, ui) => {\r\n // console.log(\"Analyser.suggestionLastFocus = ui.item;\");\r\n Analyser.suggestionLastFocus = ui.item;\r\n }\r\n } as IMyAutocomplete);\r\n }\r\n}","import El from \"./el\";\r\n\r\nexport default class IE {\r\n\r\n static isIE() {\r\n return (!!document.documentMode);\r\n }\r\n\r\n static markBody() {\r\n if (IE.isIE()) {\r\n El.b.addClass(\"bd_is-ie\");\r\n }\r\n }\r\n}","export default class MainMenu {\r\n\r\n static init() {\r\n $(\".main-menu\").accordion({\r\n heightStyle: \"content\",\r\n icons: null,\r\n animate: false,\r\n active: false,\r\n collapsible: true,\r\n beforeActivate: function (event, ui) {\r\n //http://stackoverflow.com/a/15704827\r\n var currHeader = ui.newHeader[0]\r\n ? ui.newHeader // The accordion believes a panel is being opened\r\n : ui.oldHeader; // The accordion believes a panel is being closed\r\n \r\n var currContent = currHeader.next(\".ui-accordion-content\");\r\n \r\n // Since we've changed the default behavior, this detects the actual status\r\n var isPanelSelected = currHeader.attr(\"aria-selected\") == \"true\";\r\n \r\n // Toggle the panel's header\r\n currHeader.toggleClass(\"ui-corner-all\", isPanelSelected).toggleClass(\"accordion-header-active ui-state-active ui-corner-top\", !isPanelSelected).attr(\"aria-selected\", ((!isPanelSelected).toString()));\r\n \r\n // Toggle the panel's icon\r\n currHeader.children(\".ui-icon\").toggleClass(\"ui-icon-triangle-1-e\", isPanelSelected).toggleClass(\"ui-icon-triangle-1-s\", !isPanelSelected);\r\n \r\n // Toggle the panel's content\r\n currContent.toggleClass(\"accordion-content-active\", !isPanelSelected);\r\n \r\n var accordionAnimate = $(this).accordion(\"option\", \"animate\");\r\n if (isPanelSelected) {\r\n if (accordionAnimate === false)\r\n currContent.hide();\r\n else\r\n currContent.slideUp(accordionAnimate);\r\n } else {\r\n if (accordionAnimate === false)\r\n currContent.show();\r\n else\r\n currContent.slideDown(accordionAnimate);\r\n }\r\n \r\n return false; // Cancels the default action\r\n },\r\n create: function () {\r\n var tabIndex = 0;\r\n \r\n var children = $(this).find(\"li.child.active\");\r\n if (children.length === 1) {\r\n var headerId = $(children[0]).closest(\"div\").attr(\"aria-labelledby\");\r\n \r\n $(this).find(\".ui-accordion-header\").each(function (index, el) {\r\n if (el.id === headerId) {\r\n tabIndex = index;\r\n return;\r\n }\r\n });\r\n }\r\n \r\n $(this).accordion(\"option\", \"active\", tabIndex);\r\n \r\n if (window.pageConf && window.pageConf.isHome) {\r\n $(this).accordion(\"option\", \"active\", 1); // categorisation menu\r\n $(this).accordion(\"option\", \"active\", 5); // services menu\r\n }\r\n \r\n $(this).accordion(\"option\", \"animate\", { easing: \"easeOutCubic\" }); // set future animations\r\n $(\"#menu-wrap\").addClass(\"load\"); // fadein\r\n }\r\n });\r\n }\r\n}","//----------------------\r\n// \r\n// Generated using the NSwag toolchain v13.19.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n\r\n/* tslint:disable */\r\n/* eslint-disable */\r\n// ReSharper disable InconsistentNaming\r\n\r\nexport class NotificationsClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost\";\r\n }\r\n\r\n getProductSubscription(publicId: number): Promise {\r\n let url_ = this.baseUrl + \"api/notifications/product/{publicId}\";\r\n if (publicId === undefined || publicId === null)\r\n throw new Error(\"The parameter 'publicId' must be defined.\");\r\n url_ = url_.replace(\"{publicId}\", encodeURIComponent(\"\" + publicId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processGetProductSubscription(_response);\r\n });\r\n }\r\n\r\n protected processGetProductSubscription(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = AdcskProductSubcriptionInfoDto.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n setProductSubscription(publicId: number, setSubscription: boolean): Promise {\r\n let url_ = this.baseUrl + \"api/notifications/product/{publicId}?\";\r\n if (publicId === undefined || publicId === null)\r\n throw new Error(\"The parameter 'publicId' must be defined.\");\r\n url_ = url_.replace(\"{publicId}\", encodeURIComponent(\"\" + publicId));\r\n if (setSubscription === undefined || setSubscription === null)\r\n throw new Error(\"The parameter 'setSubscription' cannot be null.\");\r\n else\r\n url_ += \"setSubscription=\" + encodeURIComponent(\"\" + setSubscription) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processSetProductSubscription(_response);\r\n });\r\n }\r\n\r\n protected processSetProductSubscription(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = AdcskProductSubcriptionInfoDto.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n \r\n getProductsSubscriptions(filter: AdcskProductSubscriptionFilterDto): Promise {\r\n let url_ = this.baseUrl + \"api/notifications/products/filter\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(filter);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processGetProductsSubscriptions(_response);\r\n });\r\n }\r\n\r\n protected processGetProductsSubscriptions(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = AdcskProductSubscriptionsResponseDto.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n setProductsSubscriptions(setSubscription: boolean, filter: AdcskProductSubscriptionFilterDto): Promise {\r\n let url_ = this.baseUrl + \"api/notifications/products/set-many?\";\r\n if (setSubscription === undefined || setSubscription === null)\r\n throw new Error(\"The parameter 'setSubscription' cannot be null.\");\r\n else\r\n url_ += \"setSubscription=\" + encodeURIComponent(\"\" + setSubscription) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(filter);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processSetProductsSubscriptions(_response);\r\n });\r\n }\r\n\r\n protected processSetProductsSubscriptions(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = AdcskProductSubscriptionsResponseDto.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class AdcskProductSubscriptionFilterDto implements IAdcskProductSubscriptionFilterDto {\r\n products?: number[] | undefined;\r\n\r\n constructor(data?: IAdcskProductSubscriptionFilterDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"products\"])) {\r\n this.products = [] as any;\r\n for (let item of _data[\"products\"])\r\n this.products!.push(item);\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): AdcskProductSubscriptionFilterDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AdcskProductSubscriptionFilterDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.products)) {\r\n data[\"products\"] = [];\r\n for (let item of this.products)\r\n data[\"products\"].push(item);\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAdcskProductSubscriptionFilterDto {\r\n products?: number[] | undefined;\r\n}\r\n\r\nexport class AdcskProductSubcriptionInfoDto implements IAdcskProductSubcriptionInfoDto {\r\n isSubscribed?: boolean;\r\n\r\n constructor(data?: IAdcskProductSubcriptionInfoDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.isSubscribed = _data[\"isSubscribed\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AdcskProductSubcriptionInfoDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AdcskProductSubcriptionInfoDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"isSubscribed\"] = this.isSubscribed;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAdcskProductSubcriptionInfoDto {\r\n isSubscribed?: boolean;\r\n}\r\n\r\nexport class AdcskProductSubscriptionsResponseDto implements IAdcskProductSubscriptionsResponseDto {\r\n subscribedProducts?: number[] | undefined;\r\n\r\n constructor(data?: IAdcskProductSubscriptionsResponseDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"subscribedProducts\"])) {\r\n this.subscribedProducts = [] as any;\r\n for (let item of _data[\"subscribedProducts\"])\r\n this.subscribedProducts!.push(item);\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): AdcskProductSubscriptionsResponseDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AdcskProductSubscriptionsResponseDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.subscribedProducts)) {\r\n data[\"subscribedProducts\"] = [];\r\n for (let item of this.subscribedProducts)\r\n data[\"subscribedProducts\"].push(item);\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAdcskProductSubscriptionsResponseDto {\r\n subscribedProducts?: number[] | undefined;\r\n}\r\n\r\nexport class ApiException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isApiException = true;\r\n\r\n static isApiException(obj: any): obj is ApiException {\r\n return obj.isApiException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\r\n if (result !== null && result !== undefined)\r\n throw result;\r\n else\r\n throw new ApiException(message, status, response, headers, null);\r\n}","import { NotificationsModule } from \"./notifications-module\";\r\n\r\nexport enum NotificationsDataAttributes {\r\n PublicId = 'publicId',\r\n Subject = 'subject',\r\n State = 'state',\r\n}\r\n\r\nexport enum NotificationsState {\r\n Offline = \"offline\",\r\n Active = \"active\",\r\n Inactive = \"inactive\",\r\n NeedLogin = \"need-login\",\r\n}\r\n\r\nexport const NotificationsModuleInit = (baseUrl: string, loginUrl: string, publicIds: number[]): void => {\r\n if (NotificationsModule.Instance)\r\n return;\r\n\r\n NotificationsModule.Instance = new NotificationsModule(baseUrl, loginUrl, publicIds);\r\n}\r\n\r\nexport function DecorateTargetButton(hasSubscriptions: boolean, element: JQuery) {\r\n if (hasSubscriptions) {\r\n element.data(NotificationsDataAttributes.State, NotificationsState.Active).removeClass(\"inactive\").addClass(\"ntf-active\");\r\n }\r\n else {\r\n element.data(NotificationsDataAttributes.State, NotificationsState.Inactive).removeClass(\"ntf-active\").addClass(\"inactive\");\r\n }\r\n}","import { AdcskProductSubcriptionInfoDto, ApiException, NotificationsClient } from './api-client';\r\nimport { DecorateTargetButton, NotificationsState } from './notifications-commons';\r\nimport { NotificationsModule } from './notifications-module';\r\nimport El from '../el';\r\n\r\nclass NotificationsModalDom {\r\n public static clsModalWindow = \"notifications-modal\";\r\n public static clsSubject = \"notifications-modal__subject\";\r\n public static clsSubscribeButton = \"notifications-modal__subscribe-button\";\r\n public static clsUnsubscribeButton = \"notifications-modal__unsubscribe-button\";\r\n public static clsSaveError = \"notifications-modal__save-error\";\r\n public static clsSuppressCheckbox = \"notifications-suppress-modal-fom-grid-checkbox\";\r\n\r\n private static renderHeader = function (title: string, hasSubject: boolean) {\r\n return `\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    ${title}

    \r\n ${hasSubject ? `` : \"\"}\r\n
    \r\n
    `;\r\n };\r\n\r\n private static renderSimpleFooter = function () {\r\n return `\r\n
    \r\n \r\n
    `;\r\n };\r\n\r\n private static renderBodyListTitle = function (isSubscribed: boolean) {\r\n return isSubscribed ? \"Aktuálne dostávate notifikácie o:\" : \"Po aktivácii budete dostávať notifikácie o:\";\r\n };\r\n\r\n private static notExpertFeaturesList = `\r\n
      \r\n
    • Zmenách v príbalovom letáku
    • \r\n
    • Zmenách dodávok (Oznamy ŠÚKL)
    • \r\n
    `;\r\n\r\n private static isExpertFeaturesList = `\r\n
      \r\n
    • Zmenách v príbalovom letáku
    • \r\n
    • Zmenách v SPC (Súhrn charakteristických vlastností lieku)
    • \r\n
    • Zmenách dodávok (Oznamy ŠÚKL)
    • \r\n
    `;\r\n\r\n private static renderBody = function (isSubscribed: boolean) {\r\n const becomeExpertUrl = window.userIdentity.expertRedirect;\r\n\r\n return `\r\n
    \r\n
    \r\n

    ${NotificationsModalDom.renderBodyListTitle(isSubscribed)}

    \r\n ${NotificationsModalDom.notExpertFeaturesList}\r\n
    \r\n

    Tieto notifikácie sú dostupné len odborníkom v oblasti medicíny a farmácie:

    \r\n
      \r\n
    • Zmeny SPC (Súhrn charakteristických vlastností lieku)
    • \r\n
    \r\n Pokiaľ ste lekár alebo farmaceut, doplňte si svoju odbornosť v ADC Účte.
    \r\n
    \r\n
    \r\n

    ${NotificationsModalDom.renderBodyListTitle(isSubscribed)}

    \r\n ${NotificationsModalDom.isExpertFeaturesList}\r\n
    \r\n
    \r\n

    Spôsob doručenia notifikácií:

    \r\n e-mailom na adresu: ${window.userIdentity.userEmail}
    \r\n
    `;\r\n };\r\n\r\n private static renderFooter = function (isSubscribed: boolean) {\r\n return `\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n ${ isSubscribed \r\n ? ``\r\n : ``\r\n }\r\n
    \r\n
    \r\n Nastala chyba!\r\n
    `;\r\n };\r\n\r\n public static createModalElement(loginUrl: string) {\r\n El.b.append(`\r\n
    \r\n
    \r\n
    \r\n ${NotificationsModalDom.renderHeader(\"Aktivovať notifikáciu\", true)}\r\n ${NotificationsModalDom.renderBody(false)}\r\n ${NotificationsModalDom.renderFooter(false)}\r\n
    \r\n
    \r\n ${NotificationsModalDom.renderHeader(\"Deaktivovať notifikáciu\", true)}\r\n ${NotificationsModalDom.renderBody(true)}\r\n ${NotificationsModalDom.renderFooter(true)}\r\n
    \r\n
    \r\n ${NotificationsModalDom.renderHeader(`Služba ADC Notifikácie`, false)} \r\n
    \r\n

    ${NotificationsModalDom.renderBodyListTitle(false)}

    \r\n ${NotificationsModalDom.isExpertFeaturesList}\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n

    \r\n Aktivácia notifikácií je dostupná len registrovaným používateľom\r\n

    \r\n

    \r\n Registrácia nového používateľa
    \r\n Prihlásenie\r\n

    \r\n
    \r\n
    \r\n ${NotificationsModalDom.renderSimpleFooter()}\r\n
    \r\n
    \r\n ${NotificationsModalDom.renderHeader(\"Služba je dočasne nedostupná\", false)}\r\n
    \r\n

    Upozornenie

    \r\n

    Služba Notifikácie je dočasne nedostupná.

    \r\n
    \r\n ${NotificationsModalDom.renderSimpleFooter()}\r\n
    \r\n
    \r\n
    \r\n `);\r\n }\r\n}\r\n\r\nexport class NotificationsModal {\r\n public static readonly cookieSuppressModal = \"notfic-supress-mod\";\r\n\r\n private readonly apiClient: NotificationsClient;\r\n private readonly module: NotificationsModule;\r\n\r\n private readonly elModalWindow: JQuery;\r\n private readonly elModalHeader: JQuery;\r\n private readonly elModalBody: JQuery;\r\n private readonly elModalFooter: JQuery;\r\n\r\n private readonly elSubject: JQuery;\r\n private readonly elSubscribeButton: JQuery;\r\n private readonly elUnsubscribeButton: JQuery;\r\n private readonly elSaveError: JQuery;\r\n private readonly elSuppressModalCheckbox: JQuery;\r\n\r\n private actionButton: JQuery;\r\n private state: NotificationsState;\r\n private isFromGrid: boolean;\r\n private publicId: number;\r\n private subject?: string;\r\n private modalIsSuppressed: boolean;\r\n\r\n private closeModalHandler: () => void;\r\n\r\n constructor(apiClient: NotificationsClient, module: NotificationsModule, loginUrl: string, closeModalHandler: () => void) {\r\n this.apiClient = apiClient;\r\n this.module = module;\r\n this.closeModalHandler = closeModalHandler;\r\n\r\n // create modal window\r\n NotificationsModalDom.createModalElement(loginUrl);\r\n\r\n // init modal window\r\n this.elModalWindow = $(`.${NotificationsModalDom.clsModalWindow}`);\r\n const elModalContent = this.elModalWindow.children('.modal-dialog').children('.modal-content');\r\n this.elModalHeader = elModalContent.children('.modal-header');\r\n this.elModalBody = elModalContent.children('.modal-body');\r\n this.elModalFooter = elModalContent.children('.modal-footer');\r\n\r\n this.elSubject = this.elModalHeader.find(`.${NotificationsModalDom.clsSubject}`);\r\n this.elSubscribeButton = this.elModalFooter.find(`.${NotificationsModalDom.clsSubscribeButton}`);\r\n this.elSubscribeButton.on('click', null, null, this.onSubscribeButtonClick.bind(this));\r\n this.elUnsubscribeButton = this.elModalFooter.find(`.${NotificationsModalDom.clsUnsubscribeButton}`);\r\n this.elUnsubscribeButton.on('click', null, null, this.onUnsubscribeButtonClick.bind(this));\r\n this.elSaveError = this.elModalFooter.find(`.${NotificationsModalDom.clsSaveError}`);\r\n\r\n // suppress modal\r\n this.elSuppressModalCheckbox = this.elModalFooter.find(`.${NotificationsModalDom.clsSuppressCheckbox}`);\r\n this.elSuppressModalCheckbox.on('change', null, null, this.onSuppressModalCheckboxClick.bind(this));\r\n }\r\n\r\n public init(actionButton: JQuery, publicId: number, subject?: string, state?: NotificationsState) {\r\n // reset\r\n this.actionButton = actionButton;\r\n this.isFromGrid = actionButton.hasClass(\"notifications-btn_in-grid\");\r\n this.publicId = publicId;\r\n this.subject = subject;\r\n this.state = state;\r\n\r\n const cSuppMod = window.getCookieValue(NotificationsModal.cookieSuppressModal);\r\n const suppressModal = cSuppMod === \"1\";\r\n\r\n // prepare UI\r\n this.elSubject.text(this.subject);\r\n this.renderState();\r\n this.elSuppressModalCheckbox.prop('checked', suppressModal);\r\n this.elSaveError.hide();\r\n this.modalIsSuppressed = false;\r\n\r\n // suppress\r\n if (/*this.isFromGrid && */suppressModal && (this.state == NotificationsState.Active || this.state == NotificationsState.Inactive)) {\r\n this.modalIsSuppressed = true;\r\n this.setProductSubscriptions(this.publicId, this.state !== NotificationsState.Active);\r\n return;\r\n }\r\n\r\n // show\r\n this.elModalWindow.modal('show');\r\n\r\n // load\r\n this.disableUi();\r\n this.getProductTopicsFromApi();\r\n }\r\n\r\n public showLoginScreen() {\r\n // reset\r\n this.actionButton = null;\r\n this.state = NotificationsState.NeedLogin;\r\n this.isFromGrid = false;\r\n this.publicId = 0;\r\n this.subject = null;\r\n\r\n // prepare UI\r\n this.elSubject.text(this.subject);\r\n this.renderState();\r\n this.elSuppressModalCheckbox.prop('checked', false);\r\n this.elSaveError.hide();\r\n\r\n // show\r\n this.elModalWindow.modal('show');\r\n }\r\n\r\n // API calls\r\n private getProductTopicsFromApi() {\r\n this.elSaveError.hide();\r\n\r\n this.apiClient\r\n .getProductSubscription(this.publicId)\r\n .then(this.updateState.bind(this))\r\n .then(this.renderSubscription.bind(this))\r\n .catch(this.apiError.bind(this));\r\n }\r\n\r\n private apiError(exception: ApiException): Promise {\r\n // console.log(exception);\r\n if (this.modalIsSuppressed) {\r\n this.elModalWindow.modal('show');\r\n }\r\n\r\n if (exception.status == 403) {\r\n this.state = NotificationsState.NeedLogin;\r\n this.renderState();\r\n }\r\n else {\r\n this.state = NotificationsState.Offline;\r\n if (this.modalIsSuppressed) {\r\n this.renderState();\r\n } else {\r\n this.elSaveError.show();\r\n this.enableUi();\r\n }\r\n }\r\n\r\n return Promise.reject(exception);\r\n }\r\n\r\n private setProductSubscriptions(publicId: number, setSubscription: boolean) {\r\n this.elSaveError.hide();\r\n this.disableUi();\r\n\r\n this.apiClient\r\n .setProductSubscription(publicId, setSubscription)\r\n .then(this.updateState.bind(this))\r\n .then(this.closeWindow.bind(this))\r\n .catch(this.apiError.bind(this));\r\n }\r\n\r\n // events\r\n\r\n private onSubscribeButtonClick(e: JQuery.ClickEvent) {\r\n this.setProductSubscriptions(this.publicId, true);\r\n }\r\n\r\n private onUnsubscribeButtonClick(e: JQuery.ClickEvent) {\r\n this.setProductSubscriptions(this.publicId, false);\r\n }\r\n\r\n private onSuppressModalCheckboxClick(e: JQuery.ChangeEvent) {\r\n const isChecked = $(e.currentTarget).is(\":checked\");\r\n\r\n if (isChecked) {\r\n window.setCookie(NotificationsModal.cookieSuppressModal, \"1\", 365);\r\n } else {\r\n window.eraseCookie(NotificationsModal.cookieSuppressModal);\r\n }\r\n }\r\n\r\n // rendering UI\r\n\r\n private disableUi() {\r\n this.elSubscribeButton.attr('disabled', 'disabled');\r\n this.elUnsubscribeButton.attr('disabled', 'disabled');\r\n }\r\n\r\n private enableUi() {\r\n this.elSubscribeButton.attr('disabled', null);\r\n this.elUnsubscribeButton.attr('disabled', null);\r\n }\r\n\r\n private closeWindow() {\r\n this.elModalWindow.modal('hide');\r\n\r\n if (this.actionButton) {\r\n DecorateTargetButton(this.state == NotificationsState.Active, this.actionButton);\r\n }\r\n\r\n if (this.closeModalHandler) {\r\n this.closeModalHandler();\r\n }\r\n }\r\n\r\n private updateState(value: AdcskProductSubcriptionInfoDto) {\r\n // console.log(value);\r\n this.state = value.isSubscribed ? NotificationsState.Active : NotificationsState.Inactive;\r\n }\r\n\r\n private renderSubscription() {\r\n this.renderState();\r\n this.enableUi();\r\n }\r\n\r\n private renderState() {\r\n const clsActive = \"notifications-modal_subscribed\";\r\n const clsInactive = \"notifications-modal_unsubscribed\";\r\n const clsNeedLogin = \"notifications-modal_need-login\";\r\n const clsOffline = \"notifications-modal_offline\";\r\n const clsUserIsExpert = \"notifications-modal_user-is-expert\";\r\n const clsIsFromGrid = \"notifications-modal_is-from-grid\";\r\n this.elSaveError.hide();\r\n\r\n this.elModalWindow.removeClass([clsActive, clsInactive, clsNeedLogin, clsOffline, clsUserIsExpert, clsIsFromGrid]);\r\n\r\n switch (this.state) {\r\n case NotificationsState.Active:\r\n this.elModalWindow.addClass(clsActive);\r\n break;\r\n case NotificationsState.NeedLogin:\r\n this.elModalWindow.addClass(clsNeedLogin);\r\n break;\r\n case NotificationsState.Offline:\r\n this.elModalWindow.addClass(clsOffline);\r\n break;\r\n case NotificationsState.Inactive:\r\n default:\r\n this.elModalWindow.addClass(clsInactive);\r\n break;\r\n }\r\n\r\n if (window.userIdentity.userIsExpert) {\r\n this.elModalWindow.addClass(clsUserIsExpert);\r\n }\r\n\r\n if (this.isFromGrid) {\r\n this.elModalWindow.addClass(clsIsFromGrid);\r\n }\r\n }\r\n}","import { AdcskProductSubscriptionFilterDto, AdcskProductSubscriptionsResponseDto, ApiException, NotificationsClient } from './api-client';\r\nimport { DecorateTargetButton, NotificationsDataAttributes, NotificationsState } from './notifications-commons';\r\nimport { NotificationsModal } from './notifications-modal';\r\n\r\nexport class NotificationsModule {\r\n public static Instance: NotificationsModule;\r\n\r\n private readonly apiClient: NotificationsClient;\r\n private readonly publicIds: number[];\r\n private readonly modal: NotificationsModal;\r\n\r\n private elActionButtons: JQuery;\r\n private elSubscribeAllButton: JQuery;\r\n private elUnsubscribeAllButton: JQuery;\r\n private elSubscribeAllCount: JQuery;\r\n private elUnsubscribeAllCount: JQuery;\r\n\r\n constructor(baseUrl: string, loginUrl: string, publicIds: number[]) {\r\n this.publicIds = publicIds;\r\n this.apiClient = new NotificationsClient(baseUrl);\r\n this.modal = new NotificationsModal(this.apiClient, this, loginUrl, this.onModalClosed.bind(this));\r\n\r\n this.elSubscribeAllButton = $('.notifications-batch_subscribe-all');\r\n this.elUnsubscribeAllButton = $('.notifications-batch_unsubscribe-all');\r\n this.elSubscribeAllCount = this.elSubscribeAllButton.children('.count');\r\n this.elUnsubscribeAllCount = this.elUnsubscribeAllButton.children('.count');\r\n this.elSubscribeAllButton.on(\"click\", null, null, this.onSubscribeAllButtonClick.bind(this));\r\n this.elUnsubscribeAllButton.on(\"click\", null, null, this.onSubscribeAllButtonClick.bind(this));\r\n\r\n // init notification action buttons\r\n this.initActionButtons();\r\n }\r\n\r\n public initActionButtons() {\r\n this.elActionButtons = $('.notifications-btn');\r\n this.elActionButtons.on('click', this.onActionButtonClick.bind(this));\r\n this.getSubscriptionsForActionButtons();\r\n\r\n if ((this.elActionButtons.length == 1 || this.elActionButtons.length == 2) &&\r\n this.elActionButtons.parent().hasClass(\"product-name\")) {\r\n this.showPromoPopover(this.elActionButtons);\r\n }\r\n }\r\n\r\n // promo popup\r\n private showPromoPopupCookie = 'notfic-promo-popover';\r\n private promoPopupTarget: JQuery | undefined;\r\n // private promoPopoverBackdrop: JQuery | undefined;\r\n\r\n showPromoPopover(target: JQuery) {\r\n const cSuppMod = window.getCookieValue(this.showPromoPopupCookie);\r\n const suppress = cSuppMod === \"1\";\r\n if (suppress) {\r\n return;\r\n }\r\n\r\n const popoverOptions = {\r\n trigger: \"manual\",\r\n content: \"Nové: Aktivujte si zasielanie notifikácií a buďte informovaní o zmene príbalového letáku, SPC a dodávkach tohto lieku.\",\r\n placement: \"bottom\",\r\n template: `\r\n
    \r\n
    \r\n

    \r\n
    \r\n

    \r\n OK\r\n

    \r\n
    `\r\n };\r\n\r\n this.promoPopupTarget = target;\r\n target.popover(popoverOptions);\r\n target.popover('show');\r\n\r\n // backdrop (PP: vypnuty, neda sa to pouzivat po prerobeni cnt-title)\r\n // this.promoPopoverBackdrop = $('
    ').addClass('modal-backdrop fade in');\r\n // $('body').append(this.promoPopoverBackdrop);\r\n // target.attr('style', 'z-index: 1100; position: relative;')\r\n\r\n // on click\r\n target.on('click', this.hidePromoPopover.bind(this));\r\n $('.notifications-promo-popover .btn').on('click', this.hidePromoPopover.bind(this));\r\n }\r\n\r\n hidePromoPopover(e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n \r\n window.setCookie(this.showPromoPopupCookie, '1', 365);\r\n\r\n this.promoPopupTarget.attr('style', '')\r\n this.promoPopupTarget.popover('hide');\r\n // this.promoPopoverBackdrop.removeClass('in', null, () => this.promoPopoverBackdrop.remove());\r\n }\r\n\r\n // API calls\r\n private apiError(exception: ApiException): Promise {\r\n if (exception.status == 403) {\r\n window.userIdentity.isAuthenticated = false;\r\n this.modal.showLoginScreen();\r\n }\r\n\r\n return Promise.reject(exception);\r\n }\r\n\r\n private getSubscriptionsForActionButtons() {\r\n if (!window.userIdentity.isAuthenticated) {\r\n // user nie je prihlaseny -> tlacidla ostanu oznacene ako offline\r\n return;\r\n }\r\n\r\n const publicIds = new Array();\r\n\r\n this.elActionButtons.each((i, el) => {\r\n const jel = $(el);\r\n const publicId = jel.data(NotificationsDataAttributes.PublicId) as number;\r\n\r\n if (publicId) {\r\n publicIds.push(publicId);\r\n return;\r\n }\r\n });\r\n\r\n if (publicIds.length === 0) {\r\n return;\r\n }\r\n\r\n const req = new AdcskProductSubscriptionFilterDto({ products: publicIds });\r\n\r\n this.apiClient\r\n .getProductsSubscriptions(req)\r\n .then(this.renderSubscriptionRespons.bind(this))\r\n .catch(this.apiError.bind(this));\r\n }\r\n\r\n private setSubscriptionsForBatch(setSubscription: boolean) {\r\n if (!window.userIdentity.isAuthenticated) {\r\n // user nie je prihlaseny\r\n return;\r\n }\r\n\r\n const req = new AdcskProductSubscriptionFilterDto({ products: this.publicIds });\r\n\r\n this.apiClient\r\n .setProductsSubscriptions(setSubscription, req)\r\n .then(this.renderSubscriptionRespons.bind(this))\r\n .catch(this.apiError.bind(this))\r\n .finally(this.enableUi.bind(this));\r\n }\r\n\r\n // events\r\n\r\n private onSubscribeAllButtonClick(e: JQuery.ClickEvent) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if (!window.userIdentity.isAuthenticated) {\r\n // user nie je prihlaseny\r\n this.modal.showLoginScreen();\r\n return;\r\n }\r\n\r\n this.disableUi();\r\n const elTarget = $(e.currentTarget);\r\n this.setSubscriptionsForBatch(elTarget.is(this.elSubscribeAllButton));\r\n }\r\n\r\n private onActionButtonClick(e: JQuery.ClickEvent) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if (!window.userIdentity.isAuthenticated) {\r\n // user nie je prihlaseny\r\n this.modal.showLoginScreen();\r\n return;\r\n }\r\n\r\n const elTarget = $(e.currentTarget);\r\n const publicId = elTarget.data(NotificationsDataAttributes.PublicId) as number;\r\n const subject = elTarget.data(NotificationsDataAttributes.Subject);\r\n const state = elTarget.data(NotificationsDataAttributes.State);\r\n\r\n this.modal.init(elTarget, publicId, subject, state);\r\n }\r\n\r\n private onModalClosed() {\r\n this.updateButtonCounts();\r\n }\r\n\r\n // rendering UI\r\n private disableUi() {\r\n this.elSubscribeAllButton.attr('disabled', 'disabled');\r\n this.elUnsubscribeAllButton.attr('disabled', 'disabled');\r\n }\r\n\r\n private enableUi() {\r\n this.elSubscribeAllButton.attr('disabled', null);\r\n this.elUnsubscribeAllButton.attr('disabled', null);\r\n }\r\n\r\n private renderSubscriptionRespons(res: AdcskProductSubscriptionsResponseDto) {\r\n if (!res) {\r\n return;\r\n }\r\n\r\n this.elActionButtons.each((i, el) => {\r\n const jel = $(el);\r\n const publicId = jel.data(NotificationsDataAttributes.PublicId) as number;\r\n\r\n if (publicId) {\r\n const hasSubscriptions = res.subscribedProducts?.some(q => publicId == q);\r\n DecorateTargetButton(hasSubscriptions, jel);\r\n return;\r\n }\r\n });\r\n\r\n this.updateButtonCounts();\r\n }\r\n\r\n private updateButtonCounts() {\r\n let subCount = 0;\r\n let unsubCount = 0;\r\n\r\n this.elActionButtons.each((i, el) => {\r\n const jel = $(el);\r\n const publicId = jel.data(NotificationsDataAttributes.PublicId) as number;\r\n\r\n if (jel.data(NotificationsDataAttributes.State) == NotificationsState.Active) {\r\n unsubCount++;\r\n } else if (jel.data(NotificationsDataAttributes.State) == NotificationsState.Inactive) {\r\n subCount++;\r\n }\r\n });\r\n\r\n this.elSubscribeAllCount.text(` (${subCount})`);\r\n this.elUnsubscribeAllCount.text(` (${unsubCount})`);\r\n }\r\n}\r\n","import { BootstrapPopover } from './types';\r\n\r\nexport default class Popover {\r\n static init() {\r\n ($('[data-toggle=\"popover\"]') as BootstrapPopover).popover({\r\n html: true,\r\n trigger: \"focus hover\"\r\n });\r\n }\r\n}","import { BootstrapPopover } from \"./types\";\r\nimport { getCookieValue } from \"./utils\";\r\n\r\nvar Bootstrap = require(\"bootstrap\");\r\n\r\nexport class PopupItem {\r\n content: string; //text v tele napovedy\r\n key: string; //idntifikator napovedy (pouziva sa ako hodnota v cookie na oznacenie zavretej napovedy)\r\n\r\n constructor(key, content) {\r\n this.key = key;\r\n this.content = content;\r\n }\r\n}\r\n\r\nexport type PopupItemsList = { \r\n [key: string]: PopupItem \r\n}\r\n\r\nexport const helpPopupItems: PopupItemsList = {\r\n // homeSearchWindow: new PopupItem('hp_search', 'Vyhľadávanie produktov podľa zdravotného problému. Zadajte do vyhľadávania zdravotný problém, napríklad \"Zápal\" a stlačte \"Enter'),\r\n freeSearchAll2: new PopupItem('search_all2', 'Výsledky vyhľadávania sú zatriedené do záložiek. Pre tabuľkové zobrazenie zvoľte záložku \"Produkty\"'),\r\n //freeSearchAll: new PopupItem('search_all', 'Kliknite na záložku \"Určenie\", kde sa Vám zobrazia produkty, ktoré majú v Popise a určení zadaný zdravotný problém'),\r\n categorizationMain: new PopupItem('categ', 'Všimnite si filtre nad sĺpcami. Zadajte napríklad \"klacid\" a stlačte enter'),\r\n detailBasic: new PopupItem('detail_info', 'Informácie k produktu sú umiestnené v záložkách pod názvom. Zvoľte \"Podobné produkty\"'),\r\n detailAlternatives: new PopupItem('detail_alter', 'Zeleným pozadím sú zobrazené parametre, ktoré sú identické s parameterami zobrazeného produktu.'),\r\n detailAlternatives2: new PopupItem('detail_alter2', 'Pre zobrazenie rovnakých parametrov zvoľte vo filtroch parameter \"Rovnaký\"'),\r\n detailText: new PopupItem('detail_text', 'Pre rýchly prístup k jednotlivým častiam PIL/SPC použite menu')\r\n}\r\n\r\nclass QueuedPopupItem {\r\n elementKey: string;\r\n item: PopupItem;\r\n\r\n constructor(element, item) {\r\n this.elementKey = element;\r\n this.item = item;\r\n }\r\n}\r\n\r\nexport class HelpPopup {\r\n static cookieName = \"closed_popups\";\r\n static closeAllValue = \"all\";\r\n static firstPopoverDelay = 10;\r\n static nextPopoverDelay = 10000;\r\n popupsQueue: QueuedPopupItem[];\r\n\r\n constructor() {\r\n this.popupsQueue = [];\r\n }\r\n\r\n addClosedPopupCookie(value: string) {\r\n let cookieVal: string;\r\n\r\n if (value !== HelpPopup.closeAllValue) {\r\n cookieVal = getCookieValue(HelpPopup.cookieName);\r\n if (cookieVal.length > 0) {\r\n cookieVal += ',';\r\n }\r\n cookieVal += value;\r\n } else {\r\n cookieVal = HelpPopup.closeAllValue;\r\n }\r\n const expireDate = new Date();\r\n expireDate.setUTCDate(expireDate.getUTCDate() + 365);\r\n document.cookie = `${HelpPopup.cookieName}=${cookieVal}; path=/; expires=${expireDate}`;\r\n window.closedPopovers.push(value);\r\n };\r\n\r\n getShowPopup(key: string) {\r\n var i: number;\r\n\r\n if (!window.closedPopovers) {\r\n window.closedPopovers = [];\r\n\r\n const closedPopups = getCookieValue(HelpPopup.cookieName).split(',');\r\n for (i = 0; i < closedPopups.length; i++) {\r\n window.closedPopovers.push(closedPopups[i]);\r\n }\r\n }\r\n\r\n for (i = 0; i < window.closedPopovers.length; i++) {\r\n if (window.closedPopovers[i] === key || window.closedPopovers[i] === HelpPopup.closeAllValue) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n /* elementSelector: element ku ktoremu sa prideli popisok */\r\n placeHelpPopup(elementSelector: string, popupItem: PopupItem) {\r\n //this.popupsQueue.push(new QueuedPopupItem(elementSelector, popupItem));\r\n };\r\n\r\n startTimer(waitTime: number) {\r\n setTimeout(() => this.showNextPopover(), waitTime);\r\n };\r\n\r\n showNextPopover() {\r\n var popupItem = this.popupsQueue.shift() as QueuedPopupItem;\r\n\r\n while (popupItem && !this.getShowPopup(popupItem.item.key)) {\r\n popupItem = this.popupsQueue.shift() as QueuedPopupItem;\r\n }\r\n\r\n if (!popupItem)\r\n return;\r\n\r\n const popoverOptions = {\r\n trigger: \"manual\",\r\n content: popupItem.item.content,\r\n placement: \"bottom\",\r\n template: `
    \r\n
    \r\n \r\n

    \r\n
    \r\n Nezobrazovať nápovedy\r\n
    `\r\n };\r\n\r\n let el = $(popupItem.elementKey);\r\n\r\n if (el.length === 0) {\r\n this.showNextPopover();\r\n }\r\n \r\n const el1 = $(el.get(0)) as BootstrapPopover;\r\n el1.popover(popoverOptions);\r\n el1.popover('show');\r\n };\r\n\r\n popoverClose(target) {\r\n var popover = $(target).parent(\".popover\");\r\n this.addClosedPopupCookie(popover.attr('data-popoverKey'));\r\n popover.popover('hide');\r\n\r\n if (this.popupsQueue.length > 0) {\r\n this.startTimer(HelpPopup.nextPopoverDelay);\r\n }\r\n };\r\n\r\n closeAllPopovers() {\r\n this.addClosedPopupCookie(HelpPopup.closeAllValue);\r\n $('.popover').popover('hide');\r\n }\r\n}","import El from \"./el\";\r\nimport { Utils } from \"./utils\";\r\n\r\n\r\n/**\r\n * Represents a utility class for scrolling to the top of the page.\r\n */\r\nexport default class ScrollToTopButton {\r\n private static elProductText = $(\"#product .product-text\");\r\n private static elProductTextIsFlex = $(\".is-flex\", ScrollToTopButton.elProductText);\r\n private static elProductTextColR = $(\".col-r\", ScrollToTopButton.elProductText);\r\n private static elScrollToTopFixed = $(\".scroll-to-top-fixed\");\r\n\r\n /**\r\n * Initializes the scroll to top functionality.\r\n */\r\n static init() {\r\n\r\n // initialize the scroll to top button\r\n $(\".btnScrollToTop\").on('click', () => {\r\n $(\"html,body\").animate({ scrollTop: 0 }, \"slow\");\r\n });\r\n\r\n var updateScrollToTopPosition = Utils.throttle(\r\n this.updateScrollToTopPosition_internal, 100, null);\r\n\r\n if(this.elProductText.length > 0) {\r\n updateScrollToTopPosition();\r\n El.w.on(\"resize\", updateScrollToTopPosition);\r\n }\r\n }\r\n\r\n // update scroll to top button in product text\r\n private static updateScrollToTopPosition_internal() {\r\n if (!ScrollToTopButton.elProductTextIsFlex.is(\":visible\")) {\r\n const newLeft = (ScrollToTopButton.elProductTextColR.offset().left - ScrollToTopButton.elScrollToTopFixed.width() - 5) + \"px\";\r\n ScrollToTopButton.elScrollToTopFixed.css(\"left\", newLeft).css(\"right\", \"auto\");\r\n } else {\r\n ScrollToTopButton.elScrollToTopFixed.css(\"left\", \"\").css(\"right\", \"\");\r\n }\r\n // console.log(\"updateScrollToTopPosition\");\r\n }\r\n}","export default {\r\n __resizeTimer: null,\r\n\r\n modTbls: function (parent) {\r\n var module = this;\r\n parent = $(parent);\r\n parent.find(\"table\").each(function () {\r\n var d = document.createElement(\"div\");\r\n d.className = \"tbl-shrink\";\r\n\r\n parent[0].insertBefore(d, this);\r\n\r\n // NOTE IE 10 compatible\r\n this.parentNode.removeChild(this);\r\n d.appendChild(this);\r\n\r\n module.__runShrink(d);\r\n });\r\n\r\n //$(window).on('resize', function (e) {\r\n\r\n // clearTimeout(module.__resizeTimer);\r\n // module.__resizeTimer = setTimeout(function () {\r\n\r\n // module.recalTbls(parent);\r\n\r\n // }, 250);\r\n\r\n //});\r\n },\r\n\r\n recalTbls: function (parent) {\r\n var module = this;\r\n parent = $(parent);\r\n parent.find(\".tbl-shrink\").each(function () {\r\n module.__runShrink(this);\r\n });\r\n },\r\n\r\n\r\n __runShrink: function (d) {\r\n var lm = 100;\r\n\r\n $(d).css(\"font-size\", (lm / 100) + \"em\");\r\n\r\n var iid = window.setInterval(function () {\r\n\r\n if (d.offsetWidth < d.scrollWidth && lm >= 50) {\r\n // your element have overflow\r\n lm = lm - 5;\r\n $(d).css(\"font-size\", (lm / 100) + \"em\");\r\n } else {\r\n // your element doesn't have overflow\r\n window.clearInterval(iid);\r\n //console.log(\"shrink stopped: \" + iid);\r\n }\r\n\r\n }, 10);\r\n }\r\n}","const translateBtn = $(\"#translate-btn\");\r\nconst langs = ['en', 'ua', 'hu', 'de', 'es', 'pt', 'fr', 'ja', 'ru'];\r\nconst cookieName = \"google-translate-consent\";\r\n\r\nconst onTranslateButtonClick = (e: JQuery.ClickEvent) => {\r\n e.preventDefault();\r\n\r\n (translateBtn as any).popover(\"toggle\");\r\n};\r\n\r\nfunction onLangChoiceClick(lang: string) {\r\n $(\".translate-popup__page--choices\").hide();\r\n\r\n // hide language pages\r\n langs.forEach(lang => {\r\n $(`.translate-popup__page--${lang}`).hide();\r\n });\r\n\r\n $(`.translate-popup__page--${lang}`).show();\r\n}\r\n\r\nfunction onLangConsentClick(newLocation: string, lang: string) {\r\n (translateBtn as any).popover(\"hide\");\r\n // set cookie, redirect\r\n document.cookie = `${cookieName}=1; path=/`;\r\n let href = newLocation;\r\n href = href.replace(\"&tl=en\", `&tl=${lang}`);\r\n href = href.replace(\"&hl=en\", `&hl=${lang}`);\r\n document.location.href = href;\r\n}\r\n\r\nfunction onPopupInsert() {\r\n const newLocation = translateBtn.attr(\"href\");\r\n const skipConsent = document.cookie.indexOf(cookieName + \"=1\") > -1;\r\n\r\n // no-consent-btn\r\n $(\".translate-popup .translate-popup__no-consent-btn\").on(\"click\", (e1) => { e1.preventDefault(); translateBtn.trigger('click'); });\r\n\r\n langs.forEach(lang => {\r\n // hide language page\r\n $(`.translate-popup__page--${lang}`).hide();\r\n\r\n // translate choice\r\n $(`.translate-popup .translate-choice--${lang}`)\r\n .on(\"click\", (e1) => {\r\n e1.preventDefault();\r\n\r\n if (skipConsent) {\r\n onLangConsentClick(newLocation, lang);\r\n } else {\r\n onLangChoiceClick(lang);\r\n }\r\n });\r\n\r\n // consent-**-btn\r\n $(`.translate-popup__consent-${lang}-btn`).on(\"click\", (e1) => { e1.preventDefault(); onLangConsentClick(newLocation, lang); });\r\n });\r\n}\r\n\r\nfunction onPopupShow() {\r\n langs.forEach(lang => {\r\n // hide language page\r\n $(`.translate-popup__page--${lang}`).hide();\r\n });\r\n}\r\n\r\nexport function TranslateInit() {\r\n try {\r\n if (window.location.host.indexOf(\"adc.sk\") > -1 || window.location.host.indexOf(\"localhost\") > -1) {\r\n translateBtn.on(\"click\", onTranslateButtonClick);\r\n\r\n (translateBtn as any).popover({\r\n title: \"Preložiť cez Google Translate\",\r\n content: `
    \r\n
    \r\n \r\n
    \r\n
    \r\n WARNING!
    \r\n The machine-translated content of the page may not be identical with the original\r\n Slovak version and is therefore purely informative.\r\n The operator of the site assumes no liability for the information provided\r\n in this translation. Please read the\r\n Terms and Conditions of Use\r\n carefully before using the site!\r\n

    \r\n Decline\r\n Accept\r\n
    \r\n
    \r\n УВАГА!
    \r\n Машинний переклад змісту сторінки може не збігатися з оригінальною словацькою\r\n версією і тому носить суто інформативний характер. Оператор сайту не несе\r\n жодної відповідальності за інформацію, надану в цьому перекладі. Будь ласка,\r\n уважно прочитайте Умови використання перед тим, як користуватися сайтом!\r\n

    \r\n я не згоден\r\n я згоден\r\n
    \r\n
    \r\n FIGYELEM!
    \r\n Az oldal gépi fordítású tartalma nem feltétlenül azonos az eredeti szlovák\r\n változattal, ezért kizárólag tájékoztató jellegű. Az oldal üzemeltetője nem\r\n vállal felelősséget a fordításban szereplő információkért. Kérjük, hogy az\r\n oldal használata előtt figyelmesen olvassa el a\r\n Felhasználási feltételeket!\r\n

    \r\n Elutasítás\r\n Elfogadom\r\n
    \r\n
    \r\n WARNUNG!
    \r\n Der maschinell übersetzte Inhalt der Seite ist möglicherweise nicht mit der\r\n slowakischen Originalversion identisch und hat daher rein informativen Charakter.\r\n Der Betreiber der Seite übernimmt keine Haftung für die in dieser Übersetzung\r\n enthaltenen Informationen. Bitte lesen Sie die\r\n Nutzungsbedingungen\r\n sorgfältig durch, bevor Sie die Seite nutzen!\r\n

    \r\n Ablehnen\r\n Akzeptieren\r\n
    \r\n
    \r\n ADVERTENCIA!
    \r\n El contenido de la página traducido automáticamente puede no ser idéntico\r\n a la versión original en eslovaco, por lo que tiene carácter meramente informativo.\r\n El operador de la página no asume ninguna responsabilidad por la información\r\n facilitada en esta traducción. Por favor, lea las\r\n Condiciones de uso\r\n antes de utilizar el sitio.\r\n

    \r\n Rechazar\r\n Aceptar\r\n
    \r\n
    \r\n ATENÇÃO!
    \r\n O conteúdo da página, traduzido automaticamente, pode não ser idêntico à versão\r\n original eslovaca, pelo que tem um carácter meramente informativo.\r\n O operador do sítio não assume qualquer responsabilidade pelas informações\r\n fornecidas nesta tradução. Por favor, leia os\r\n Termos e condições de utilização\r\n cuidadosamente antes de utilizar o sítio!\r\n

    \r\n Recusar\r\n Aceitar\r\n
    \r\n
    \r\n ATTENTION !
    \r\n Le contenu de la page traduit mécaniquement peut ne pas être identique\r\n à la version originale slovaque et est donc purement informatif.\r\n L'opérateur du site n'assume aucune responsabilité pour les informations\r\n fournies dans cette traduction. Veuillez lire les\r\n Conditions d'utilisation\r\n avant d'utiliser le site !\r\n

    \r\n Refuser\r\n Accepter\r\n
    \r\n
    \r\n 警告
    \r\n 機械翻訳されたページの内容は、オリジナルのスロバキア語版と同一ではない可能性があります。\r\n 本サイトの運営者は、この翻訳で提供された情報に関して一切の責任を負いません。利用規約\r\n 利用規約\r\n をよくお読みください!\r\n

    \r\n 辞退する\r\n 承諾する\r\n
    \r\n
    \r\n ВНИМАНИЕ!
    \r\n Переведенное машинным способом содержание страницы может не совпадать\r\n с оригинальной словацкой версией и поэтому носит исключительно информационный характер.\r\n Оператор сайта не несет никакой ответственности за информацию, \r\n представленную в этом переводе. Пожалуйста, ознакомьтесь с\r\n Правила и условия использования\r\n перед использованием сайта!\r\n

    \r\n Отклонить\r\n Принять\r\n
    \r\n
    `,\r\n html: true,\r\n placement: \"bottom\",\r\n trigger: \"click\",\r\n });\r\n\r\n (translateBtn as any).on('inserted.bs.popover', onPopupInsert);\r\n (translateBtn as any).on('show.bs.popover', onPopupShow);\r\n }\r\n else {\r\n translateBtn.hide();\r\n }\r\n } catch (error) {\r\n }\r\n}","import El from \"./el\";\r\n\r\n/**\r\n * Represents the UI helper class.\r\n */\r\nexport default class UI {\r\n\r\n static init() {\r\n this.initDetectMobileAndMarkBody();\r\n }\r\n \r\n /**\r\n * Checks if the UI is being displayed on a mobile device.\r\n * @returns A boolean value indicating whether the UI is being displayed on a mobile device.\r\n */\r\n static isMobile(): boolean {\r\n return $(\"#detect-xs\").is(\":visible\");\r\n }\r\n\r\n private static initDetectMobileAndMarkBody() {\r\n var lastIsMobile = null;\r\n const isMobileClass = \"is-mobile\"; // class to add to body when UI is displayed on a mobile device\r\n\r\n var detectMobile = () => {\r\n var newIsMobile = UI.isMobile();\r\n if (lastIsMobile !== newIsMobile) {\r\n if (newIsMobile) {\r\n El.b.addClass(isMobileClass);\r\n } else {\r\n El.b.removeClass(isMobileClass);\r\n }\r\n lastIsMobile = newIsMobile;\r\n }\r\n };\r\n \r\n El.w.on(\"resize\", detectMobile);\r\n detectMobile();\r\n }\r\n}","import El from \"./el\";\r\nimport Cookies from \"./cookies\";\r\n\r\n/**\r\n * Represents a User helper class.\r\n */\r\nexport default class User {\r\n /**\r\n * Sets the isExpert cookie and mark body.\r\n * @param e - The event object (optional).\r\n */\r\n static setIsExpertCookie(e: Event = null) {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n Cookies.set(window.variables.cookieExpertName, \"ok\", 7);\r\n\r\n // mark body\r\n El.b.addClass(\"is-expert\");\r\n El.b.addClass(\"bd_is-expert\");\r\n };\r\n}","\r\nexport function SubmitF(formId, input, val) {\r\n const form = document.getElementById(formId) as HTMLFormElement;\r\n if (form) {\r\n const htmlElement = form[input];\r\n if (htmlElement) {\r\n htmlElement.value = val;\r\n form.submit();\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated use Cookies class instead\r\n **/ \r\nexport function getCookieValue(key: string): string {\r\n const cookies = document.cookie.split(\"; \");\r\n for (var i = 0; i < cookies.length; i++) {\r\n const splitted = cookies[i].split(\"=\");\r\n if (splitted[0] === key) {\r\n return splitted[1];\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * @deprecated use Cookies class instead\r\n **/ \r\nexport function setCookie(key: string, value: string, days: number): void {\r\n var expires = \"\";\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = \"; expires=\" + date.toUTCString();\r\n }\r\n document.cookie = key + \"=\" + value + expires + \"; path=/\";\r\n}\r\n\r\n/**\r\n * @deprecated use Cookies class instead\r\n **/ \r\nexport function eraseCookie(name: string): void {\r\n setCookie(name, \"\", -1);\r\n}\r\n\r\n\r\nexport class Utils {\r\n\r\n static debounce(func, wait, immediate = false) {\r\n\t var timeout;\r\n\t return function() {\r\n\t\t var context = this, args = arguments;\r\n\t\t var later = function() {\r\n\t\t\t timeout = null;\r\n\t\t\t if (!immediate) func.apply(context, args);\r\n\t\t };\r\n\t\t var callNow = immediate && !timeout;\r\n\t\t clearTimeout(timeout);\r\n\t\t timeout = setTimeout(later, wait);\r\n\t\t if (callNow) func.apply(context, args);\r\n\t };\r\n };\r\n\r\n static throttle(func, wait, options) {\r\n var _ = {\r\n now: Date.now || function () {\r\n return new Date().getTime();\r\n }\r\n }\r\n var context, args, result;\r\n var timeout = null;\r\n var previous = 0;\r\n if (!options) options = {};\r\n var later = function () {\r\n previous = options.leading === false ? 0 : _.now();\r\n timeout = null;\r\n result = func.apply(context, args);\r\n if (!timeout) context = args = null;\r\n };\r\n return function () {\r\n var now = _.now();\r\n if (!previous && options.leading === false) previous = now;\r\n var remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n result = func.apply(context, args);\r\n if (!timeout) context = args = null;\r\n } else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n };\r\n}","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { HelpPopup, helpPopupItems, PopupItem } from './popup';\r\nimport { CalculatorDosage } from './calculatorDosage';\r\n//import { Newsletter } from './newsletter';\r\nimport { Analyser } from './analyser';\r\nimport { Feedback } from './feedback';\r\nimport { SubmitF } from './utils';\r\nimport clasificationTreeRender from './clasificationTreeRender';\r\nimport tableShrink from './tableShrinkToFit';\r\nimport { NotificationsModuleInit } from './notifications/notifications-commons';\r\nimport { TranslateInit } from './translate';\r\nimport Ads from './ads';\r\nimport { HeaderHide, HeaderSearchForm, HeaderMenu, SearchAutocomplete } from './header';\r\nimport IE from './ie';\r\nimport El from './el';\r\nimport UI from './ui';\r\nimport Cookies from './cookies';\r\nimport User from './user';\r\nimport MainMenu from './mainMenu';\r\nimport ScrollToTopButton from './scrollToTop';\r\nimport { Extend$UiAutocomplete, Define$EasingEaseOutCubic } from './_object-extends';\r\nimport Popover from './popover';\r\nimport HDrag from './hdrag';\r\nimport AnchorBanner from './anchor-banner';\r\n\r\nwindow.helpPopup = new HelpPopup();\r\nwindow.helpPopupItems = helpPopupItems;\r\n//window.newsletter = new Newsletter();\r\nwindow.feedback = new Feedback();\r\nwindow.clasificationTreeRender = clasificationTreeRender;\r\nwindow.tableShrink = tableShrink;\r\nwindow.notificationsModuleInit = NotificationsModuleInit;\r\n\r\n// calculators\r\nwindow.dosageCalculator = new CalculatorDosage();\r\n\r\n// functions\r\nwindow.SubmitF = SubmitF;\r\nwindow.getCookieValue = Cookies.getValue;\r\nwindow.setCookie = Cookies.set;\r\nwindow.eraseCookie = Cookies.erase;\r\nwindow.cookies = Cookies;\r\n\r\nwindow.setIsExpertCookie = User.setIsExpertCookie;\r\n\r\nwindow.els = El;\r\n\r\n$(() => {\r\n // extend or define objects\r\n Define$EasingEaseOutCubic();\r\n Extend$UiAutocomplete();\r\n\r\n // NOTE: ??\r\n setTimeout(() => {\r\n if (window.location.hash !== \"\") {\r\n window.location.hash = window.location.hash;\r\n }\r\n }, 100);\r\n\r\n // detect IE and add body css modifier\r\n IE.markBody();\r\n\r\n // init UI helper, detect mobile and add body css modifier\r\n UI.init();\r\n\r\n // init Ads helper\r\n Ads.init();\r\n\r\n // scroll to top\r\n ScrollToTopButton.init();\r\n\r\n // search form expand\r\n HeaderSearchForm.initFormExpand();\r\n\r\n // header hide\r\n HeaderHide.init();\r\n\r\n // toggle menu\r\n HeaderMenu.initMenuButtonDisplay();\r\n\r\n // hdrag\r\n HDrag.init();\r\n\r\n // main menu\r\n MainMenu.init();\r\n\r\n // search autocomplete\r\n SearchAutocomplete.init();\r\n\r\n Popover.init();\r\n\r\n window.helpPopup.startTimer(HelpPopup.firstPopoverDelay);\r\n\r\n Analyser.initialize();\r\n\r\n // google translate\r\n TranslateInit();\r\n\r\n AnchorBanner.init();\r\n});"],"names":["$","extend","ui","autocomplete","prototype","_renderItem","ul","item","inner","html","label","data","append","appendTo","_resizeMenu","this","menu","element","outerWidth","width","easing","easeOutCubic","x","t","b","c","d","init","window","ad_settings","Ads","initInTextAds","elProductText","length","updateAdPromoPlacement","w","on","initSideAds","anchor","anchor_tbl","el_lad","el_rad","min_w","max_w","margin","lad_w","rad_w","lad_h","rad_h","space_l","space_r","move","offset","left","innerWidth","Math","max","css","innerHeight","initPostponedAds","Utils","throttle","cid","ad_channel_id","responsiveAdsBuffer","responsiveAdsBufferPos","vpHeight","height","eachNthVp","els","each","i","el","push","lastAdEl","j","showAd","adEl","top","before","notifyAd","elProductTextIsFlex","is","elProductTextPlaceholder","elProductTextAd","insertBefore","elProductTextAdsContainerFlex","elProductTextPromo","elProductTextAdsContainer","adsbygoogle","find","removeClass","addClass","Adsense","initialize","Analyser","mainMenuClick","searchItems","dataValue","searchItemClick","searchKeywords","searchKeywordClick","suggestionsKeyDown","suggestionsSubmit","e","target","dataLabel","gtag","catMainMenu","value","catSeachAll","suggestionsClick","catSuggestions","index","code","suggestionLastFocus","_instance","$el","gaCategory","publicId","val","fWeight","fDoseCount","fDose","fProductunitName","step1","s1Error","s1Result","s1Info","step2","s2Error","s2Result","disclaim","gaLabel","gaStartTime","Date","s1Inputchange","hide","s2Inputchange","s1Calculate","preventDefault","gaCalculateTime","getTime","fetch","variables","webCalculatorsCalculate","then","response","ok","Error","json","text","Msg","show","FormatedOutOfWeightRangeWarning","FormatedResult","ProductUnitName","catch","reason","parent","s2Calculate","dNow1","webCalculatorsCheck","DoseError","dNow2","Problem","CalculatorDosage","url","hashCode","openTreeUrl","storeHistory","isAtc","changeExpandedIcons","row","existsNode","id","Id","Children","HasChildren","renderTree","parentNode","children","renderData","that","node","prepareNode","treeCache","addChildNodes","trigger","delay","tree","context","expandChildren","closest","insertAfter","level","td","RouteUrl","divExpander","attr","Title","openedTreeUrl","endsWith","location","hash","replace","next","indexOf","toRemove","remove","getValue","key","cookies","document","cookie","split","splitted","set","days","expires","date","setTime","toUTCString","erase","name","El","formExists","elModal","showModal","Feedback","modal","closeModal","success","selectTheme","theme","scripts","s","createElement","async","src","onload","onreadystatechange","rs","readyState","LiveAgent","createForm","get","parentElement","nextSibling","elHdrag","elBox","draggable","addClasses","axis","scroll","distance","fHDragRefresh","elBoxInner","boxInnerLeft","windowWidth","boxInnerWidth","minX","bCanFit","elWindow","elDoc","elBody","lastScrollPos","headerHiddenClass","mediaFilter","matchMedia","scrolled","scrollTop","matches","HeaderHide","initFormExpand","topMenuForm","fullWidthClassName","HeaderSearchForm","initMenuButtonDisplay","bMenu","menuInBody","fToggleMenuButton","HeaderMenu","tbSearch","fSearch","fW","fX","fP","tmnu__form","cache","open","event","navigator","userAgent","match","off","source","request","options","term","map","params","URLSearchParams","autoCompleteUrl","toString","select","action","section","subSection","productType","focus","SearchAutocomplete","isIE","documentMode","markBody","IE","accordion","heightStyle","icons","animate","active","collapsible","beforeActivate","currHeader","newHeader","oldHeader","currContent","isPanelSelected","toggleClass","accordionAnimate","slideUp","slideDown","create","tabIndex","headerId","pageConf","isHome","baseUrl","http","jsonParseReviver","undefined","getProductSubscription","url_","encodeURIComponent","method","headers","_response","processGetProductSubscription","status","_headers","forEach","v","k","_responseText","resultData200","JSON","parse","AdcskProductSubcriptionInfoDto","fromJS","throwException","Promise","resolve","setProductSubscription","setSubscription","processSetProductSubscription","getProductsSubscriptions","filter","options_","body","stringify","processGetProductsSubscriptions","AdcskProductSubscriptionsResponseDto","setProductsSubscriptions","processSetProductsSubscriptions","NotificationsClient","property","hasOwnProperty","_data","Array","isArray","products","result","AdcskProductSubscriptionFilterDto","toJSON","isSubscribed","subscribedProducts","message","isApiException","obj","ApiException","NotificationsDataAttributes","NotificationsState","NotificationsModuleInit","loginUrl","publicIds","NotificationsModule","Instance","hasSubscriptions","State","Active","Inactive","createModalElement","NotificationsModalDom","clsModalWindow","renderHeader","renderBody","renderFooter","renderBodyListTitle","isExpertFeaturesList","renderSimpleFooter","clsSubject","clsSubscribeButton","clsUnsubscribeButton","clsSaveError","clsSuppressCheckbox","title","hasSubject","notExpertFeaturesList","becomeExpertUrl","userIdentity","expertRedirect","userEmail","apiClient","module","closeModalHandler","elModalWindow","elModalContent","elModalHeader","elModalBody","elModalFooter","elSubject","elSubscribeButton","onSubscribeButtonClick","bind","elUnsubscribeButton","onUnsubscribeButtonClick","elSaveError","elSuppressModalCheckbox","onSuppressModalCheckboxClick","actionButton","subject","state","isFromGrid","hasClass","suppressModal","getCookieValue","NotificationsModal","cookieSuppressModal","renderState","prop","modalIsSuppressed","setProductSubscriptions","disableUi","getProductTopicsFromApi","showLoginScreen","NeedLogin","updateState","renderSubscription","apiError","exception","Offline","enableUi","reject","closeWindow","currentTarget","setCookie","eraseCookie","DecorateTargetButton","clsActive","clsInactive","clsNeedLogin","clsOffline","clsUserIsExpert","clsIsFromGrid","userIsExpert","showPromoPopupCookie","onModalClosed","elSubscribeAllButton","elUnsubscribeAllButton","elSubscribeAllCount","elUnsubscribeAllCount","onSubscribeAllButtonClick","initActionButtons","elActionButtons","onActionButtonClick","getSubscriptionsForActionButtons","showPromoPopover","promoPopupTarget","popover","content","placement","template","hidePromoPopover","stopPropagation","isAuthenticated","PublicId","req","renderSubscriptionRespons","setSubscriptionsForBatch","finally","elTarget","Subject","updateButtonCounts","res","jel","some","q","subCount","unsubCount","PopupItem","helpPopupItems","freeSearchAll2","categorizationMain","detailBasic","detailAlternatives","detailAlternatives2","detailText","popupsQueue","addClosedPopupCookie","cookieVal","HelpPopup","closeAllValue","cookieName","expireDate","setUTCDate","getUTCDate","closedPopovers","getShowPopup","closedPopups","placeHelpPopup","elementSelector","popupItem","startTimer","waitTime","setTimeout","showNextPopover","shift","popoverOptions","elementKey","el1","popoverClose","nextPopoverDelay","closeAllPopovers","firstPopoverDelay","updateScrollToTopPosition","updateScrollToTopPosition_internal","ScrollToTopButton","elScrollToTopFixed","newLeft","elProductTextColR","__resizeTimer","modTbls","className","removeChild","appendChild","__runShrink","recalTbls","lm","iid","setInterval","offsetWidth","scrollWidth","clearInterval","translateBtn","langs","onTranslateButtonClick","onLangConsentClick","newLocation","lang","href","onPopupInsert","skipConsent","e1","onLangChoiceClick","onPopupShow","host","error","initDetectMobileAndMarkBody","isMobile","lastIsMobile","isMobileClass","detectMobile","newIsMobile","UI","setIsExpertCookie","cookieExpertName","formId","input","form","getElementById","htmlElement","submit","debounce","func","wait","immediate","timeout","args","arguments","callNow","clearTimeout","apply","_","now","previous","later","leading","remaining","trailing","exports","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","helpPopup","feedback","clasificationTreeRender","tableShrink","notificationsModuleInit","dosageCalculator","SubmitF","Define$EasingEaseOutCubic","Extend$UiAutocomplete","TranslateInit"],"sourceRoot":""}