{"version":3,"file":"js/scripts.bundle.js","mappings":";uBAKA,IAAIA,EAEO,CACHC,KAAM,WACJC,MAAMD,OACNE,SAASF,OACTG,OAAOH,OACPI,SAASJ,OACTK,SAASL,OACTM,UAAUN,OACVO,SAASP,OACTQ,YAAYR,OACZS,SAAST,OACTU,aAAaV,OACbW,gBAAgBX,MAClB,GAKoB,YAAxBY,SAASC,YAIXD,SAASE,iBAAiB,cAAc,WACtCf,EAAaC,MACf,IACAY,SAASE,iBAAiB,gBAAgB,WACxCf,EAAaC,MACf,KAEDD,EAAaC,OAIde,OAAOD,iBAAiB,QAAQ,WAC5Bb,MAAMe,iBACV,SAG+D,IAAnBC,EAAOC,UAClDH,OAAOhB,aAAekB,EAAOC,QAAUnB,2BC3CxC,IACQoB,EACAC,EACAC,EAEAC,EAiDAC,EAqOAC,EAwGAC,EAnYJxB,GACIkB,GAAc,EACdC,GAA6B,EAC7BC,GAAqB,EAErBC,EAAyB,SAAUI,EAAIC,GACvC,GAA+C,MAA3CD,EAAGE,aAAa,uBAApB,CAIA,IAAIC,EAAQ,CAAC,EAGTH,EAAGI,aAAa,wBAChBD,EAAY,KAAIH,EAAGE,aAAa,uBAGhCF,EAAGI,aAAa,wBAChBD,EAAY,KAAIH,EAAGE,aAAa,uBAGhCC,IACAF,EAAe,MAAIE,GAInBH,EAAGI,aAAa,oBAA4D,SAAtCJ,EAAGE,aAAa,qBACtDD,EAAiB,QAAI,SAIzB,IAAII,EAAK,IAAIC,UAAUC,QAAQP,EAAIC,GAYnC,OATIA,EAAiB,SAA4B,UAAvBA,EAAiB,SAEvCD,EAAGZ,iBAAiB,SAAS,SAAUoB,GACnCH,EAAGI,MACP,IAGJT,EAAGU,aAAa,sBAAuB,KAEhCL,CAnCP,CAoCJ,EAUIR,EAAyB,SAAUG,EAAIC,GACvC,GAA+C,MAA3CD,EAAGE,aAAa,uBAApB,CAIA,IAAIC,EAAQ,CAAC,EAGTH,EAAGI,aAAa,wBAChBD,EAAY,KAAIH,EAAGE,aAAa,uBAGhCF,EAAGI,aAAa,wBAChBD,EAAY,KAAIH,EAAGE,aAAa,uBAGhCC,IACAF,EAAe,MAAIE,GAImB,QAAtCH,EAAGE,aAAa,qBAChBD,EAAiB,SAAI,IAGE,IAAvBA,EAAiB,UACjBA,EAAkB,SAAI,iMAI1B,IAAIU,EAAU,IAAIL,UAAUM,QAAQZ,EAAIC,GAGxC,IAA2B,IAAvBA,EAAiB,QAAY,CAC7B,IAAIY,EAAiB,SAAUL,GAC3BG,EAAQF,MACZ,EAEAT,EAAGZ,iBAAiB,oBAAoB,WACpBF,SAAS4B,eAAed,EAAGE,aAAa,qBAC9Cd,iBAAiB,QAASyB,EACxC,IAEAb,EAAGZ,iBAAiB,mBAAmB,WACnBF,SAAS4B,eAAed,EAAGE,aAAa,qBAC9Ca,oBAAoB,QAASF,EAC3C,GACJ,CAIA,OAFAb,EAAGU,aAAa,sBAAuB,KAEhCC,CAhDP,CAiDJ,EAiLIb,EAAgB,WACO,oBAAZkB,SAII,GAAGC,MAAMC,KAAKhC,SAASiC,iBAAiB,2CAE9CC,KAAI,SAAUC,GACnB,GAAIC,OAAOC,aAAaF,IAAYC,OAAOE,QAAQH,GAAU,CACzD,GAAoD,MAAhDA,EAAQnB,aAAa,uBACrB,OAGJ,IAAID,EAAU,CAAC,EAEXwB,EAAQJ,EAAQnB,aAAa,yBACjCuB,EAAQC,WAAWD,EAAME,QAAQ,KAAM,KAEnCN,EAAQjB,aAAa,+BACrBH,EAAQ2B,SAAWF,WAAWL,EAAQnB,aAAa,+BAGnDmB,EAAQjB,aAAa,8BACrBH,EAAQ4B,SAAWC,SAAST,EAAQnB,aAAa,8BAGjDmB,EAAQjB,aAAa,oCACrBH,EAAQ8B,cAAgBD,SAAST,EAAQnB,aAAa,oCAGtDmB,EAAQjB,aAAa,4BACrBH,EAAQ+B,OAASX,EAAQnB,aAAa,2BAGtCmB,EAAQjB,aAAa,+BACrBH,EAAQgC,UAAYZ,EAAQnB,aAAa,8BAGzCmB,EAAQjB,aAAa,4BACrBH,EAAQiC,OAASb,EAAQnB,aAAa,2BAG9B,IAAIc,QAAQmB,QAAQd,EAASI,EAAOxB,GAE1CmC,QAENf,EAAQgB,UAAUC,IAAI,WAEtBjB,EAAQX,aAAa,sBAAuB,IAChD,CACJ,GACJ,EAqDIX,EAAiB,SAAUC,GAC3B,IAAKA,EACD,OAGJ,MAAMuC,EAAa,CAAC,EAcpBvC,EAAGwC,oBAAoBC,SAAQ,SAAUC,GAErC,GAAI,gBAAkBC,KAAKD,GAAW,CAClC,IAAIE,EAAaF,EAASf,QAAQ,YAAa,IAAIkB,cAAclB,QAAQ,gBAAgB,SAAUmB,GAC/F,OAAOA,EAAMnB,QAAQ,IAAK,IAAIoB,aAClC,IAEA,GAAiB,wBAAbL,EAAoC,CAEpC,MAAMM,EAAUhD,EAAGE,aAAawC,GAAUf,QAAQ,mBAAmB,SAAUsB,GAC3E,MAAO,IAAMA,EAAQC,UAAU,EAAGD,EAAQE,OAAS,GAAK,IAC5D,IACA,IAEIZ,EAAWK,GAAcQ,KAAKC,MAAML,EAGxC,CADA,MAAOxC,GACP,CACJ,MAEI+B,EAAWK,GA9BP,UADYU,EA+BmBtD,EAAGE,aAAawC,KA3B/C,UAARY,GAGGA,CA0BP,CAjCc,IAAUA,CAkC5B,IAEA,MAAMC,EAAMC,OAAOC,OAAO,CAAC,EAAG,CAC1BC,UAAW1D,EACX2D,QAAS,OACTC,UAAU,EACVC,QAAQ,EACRC,sBAAsB,GACvBvB,GAMH,OAJIvC,EAAG+D,QAAQ,SACXzC,OAAO0C,SAAShE,EAAG+D,QAAQ,QAAS,mBAGjCE,IAAIV,EACf,EA4KO,CACHjF,KAAM,WA1GM,IACR4F,EAqFiB,oBAAVC,OAIAA,QACFC,WA3JW,IAAhB3E,GAIwB,oBAAjB4E,cAIX,IAAIA,aAAa,sCAAuC,CACpDC,MAAO,IACPC,iBAAiB,EACjBC,OAAQ,SAAUC,EAAQC,GAKtB,OAAID,EAAOrE,aAAa,yBACVkB,OAAOqD,mBAAmBF,EAAOvE,aAAa,0BAIjD,CAEf,IAMJoB,OAAOsD,GAAG1F,SAAS2F,KAAM,iCAAkC,SAAS,SAAUrE,GAC1EA,EAAEsE,iBAEF,MAAMC,EAAOC,KAAKjB,QAAQ,SAE1B,IAAKgB,EACD,OAGJ,MAAME,EAAiBD,KAAK9E,aAAa,gCACqB,SAA9C8E,KAAK9E,aAAa,wBAI9BgF,KAAKC,KAAK,CACNC,KAAMH,GAAkC,2BACxCI,KAAM,UACNC,gBAAgB,EAChBC,kBAAmB,UACnBC,eAAgB,SAChBC,YAAa,CACTC,cAAe,kBACfC,WAAY,oBAEjBC,MAAK,SAAUC,GACVA,EAAOC,aACPf,EAAKgB,QAEb,IAEAhB,EAAKgB,QAEb,KAII7B,EAAW8B,MAAMC,UAAUhF,MAAMC,KAAKhC,SAASiC,iBAAiB,8BAEpD+C,EAASf,OAAS,GAC9Be,EAASzB,SAASpB,IACsC,MAAhDA,EAAQnB,aAAa,yBAIzBmB,EAAQX,aAAa,sBAAuB,KAE5CW,EAAQjC,iBAAiB,SAAS,SAASoB,GACvCA,EAAEsE,iBAEF,MAAMoB,EAAUhH,SAASiH,cAAcnB,KAAK9E,aAAa,0BAErDgG,GACc,IAAI5F,UAAU8F,MAAMF,GAC5BG,MAEd,IAAE,KAMU,IAAhB5G,GAKJ6B,OAAOsD,GAAG1F,SAAS2F,KAAM,yBAA0B,UAAU,SAAUrE,GACnE,IAAI8F,EAAQtB,KACRuB,EAAUrH,SAASiC,iBAAiBmF,EAAMpG,aAAa,yBAE3DoB,OAAOkF,KAAKD,GAAS,SAAUE,GACR,YAAfA,EAAOC,KACPD,EAAOE,QAAUL,EAAMK,QAEvBF,EAAOpE,UAAUqC,OAAO,SAEhC,GACJ,KAIoB,IAAhBjF,GAIJ6B,OAAOsD,GAAG1F,SAAS2F,KAAO,0CAA2C,SAAS,SAASrE,GAQnF,GAPIwE,KAAK3C,UAAUuE,SAAS,cACxB5B,KAAK3C,UAAU0D,OAAO,UACtBf,KAAK6B,QAEL7B,KAAK3C,UAAUC,IAAI,UAGnB0C,KAAK5E,aAAa,uBAAwB,CAC1C,IAAIgF,EAAOJ,KAAK9E,aAAa,uBAEzBuG,GADAA,EAASzB,KAAKmB,cAAc,yCACDnB,KAE/BA,KAAKtE,aAAa,sBAAuB+F,EAAOK,WAChDL,EAAOK,UAAY1B,CACvB,CACJ,KAIoB,IAAhB3F,GAIJ6B,OAAOsD,GAAG1F,SAAS2F,KAAO,0BAA2B,SAAS,SAASrE,GAC/DwE,KAAK3C,UAAUuE,SAAS,WACxB5B,KAAK3C,UAAU0D,OAAO,UACtBf,KAAK6B,QAEL7B,KAAK3C,UAAUC,IAAI,SAE3B,IAjiByB,GAAGrB,MAAMC,KAAKhC,SAASiC,iBAAiB,+BAE5BC,KAAI,SAAU2F,GAC/CnH,EAAuBmH,EAAkB,CAAC,EAC9C,IA0DyB,GAAG9F,MAAMC,KAAKhC,SAASiC,iBAAiB,+BAE5BC,KAAI,SAAU4F,GAC/CnH,EAAuBmH,EAAkB,CAAC,EAC9C,IAIkB,GAAG/F,MAAMC,KAAKhC,SAASiC,iBAAiB,WAC9BC,KAAI,SAAU6F,GACtC,GAAoD,MAAhDA,EAAQ/G,aAAa,uBAMzB,OAFA+G,EAAQvG,aAAa,sBAAuB,KAErC,IAAIJ,UAAU4G,MAAMD,EAAS,CAAC,EACzC,IA2ByB,WAEzB,GAAqB,oBAAVE,aAKyB,IAAzBC,EAAEC,GAAGC,gBAAhB,CAIA,IAAIpD,EAAW,GAAGjD,MAAMC,KAAKhC,SAASiC,iBAAiB,qCACnDiB,EAAQmF,SAASC,SAAS,GAAI,QAC9BC,EAAMF,SAEVrD,EAAS9C,KAAI,SAAUC,GACnB,GAAoD,MAAhDA,EAAQnB,aAAa,uBAAzB,CAIA,IAAIwH,EAAUrG,EAAQ8E,cAAc,OAChCwB,EAAatG,EAAQjB,aAAa,iCAAmCiB,EAAQnB,aAAa,iCAAmC,OAG7H0H,EAAK,SAASxF,EAAOqF,GACrB,IAAII,EAAUN,SAEVG,IACKG,EAAQC,OAAO1F,EAAO,QAAUyF,EAAQC,OAAOL,EAAK,OACrDC,EAAQK,UAAY3F,EAAM4F,OAAO,cAEjCN,EAAQK,UAAY3F,EAAM4F,OAAO,cAAgB,MAAQP,EAAIO,OAAO,cAGhF,EAEe,UAdH3G,EAAQnB,aAAa,mCAe7BkC,EAAQmF,SACRE,EAAMF,UAGVH,EAAE/F,GAASiG,gBAAgB,CACvBW,UAAW7F,EACX8F,QAAST,EACTU,MAAOR,EACPS,OAAQ,CACR,MAAS,CAACb,SAAUA,UACpB,UAAa,CAACA,SAASC,SAAS,EAAG,QAASD,SAASC,SAAS,EAAG,SACjE,cAAe,CAACD,SAASC,SAAS,EAAG,QAASD,UAC9C,eAAgB,CAACA,SAASC,SAAS,GAAI,QAASD,UAChD,aAAc,CAACA,SAASc,QAAQ,SAAUd,SAASe,MAAM,UACzD,aAAc,CAACf,SAASC,SAAS,EAAG,SAASa,QAAQ,SAAUd,SAASC,SAAS,EAAG,SAASc,MAAM,YAEpGV,GAEHA,EAAGxF,EAAOqF,GAEVpG,EAAQX,aAAa,sBAAuB,IAvC5C,CAwCJ,GAjDA,CAkDJ,CA0aQ6H,GA5fe,GAAGtH,MAAMC,KAAKhC,SAASiC,iBAAiB,6BAE9CC,KAAI,SAAUoH,GACvB,GAAkD,MAA9CA,EAAMtI,aAAa,uBAAvB,CAIA,IAAIuI,EAAWD,EAAMpI,aAAa,0BAA4BoI,EAAMtI,aAAa,0BAA4B,OACzGwI,EAAgB,GAAGzH,MAAMC,KAAKsH,EAAMrH,iBAAiBsH,IAGzDnH,OAAOsD,GAAG4D,EAAOC,EAAU,SAAS,SAAUjI,GAC1CkI,EAActH,KAAI,SAAUuH,GACxBA,EAAOtG,UAAU0D,OAAO,SAC5B,IAEAf,KAAK3C,UAAUC,IAAI,SACvB,IAEAkG,EAAM9H,aAAa,sBAAuB,IAd1C,CAeJ,IAkEqB,oBAAVyG,aAKiB,IAAjBC,EAAEC,GAAGuB,UAID,GAAG3H,MAAMC,KAAKhC,SAASiC,iBAAiB,uDAE9CC,KAAI,SAAUC,GACnB,GAAoD,MAAhDA,EAAQnB,aAAa,uBAAzB,CAIA,IAAID,EAAU,CACV4I,IAAK3J,SAAS2F,KAAK3E,aAAa,cAGY,QAA5CmB,EAAQnB,aAAa,sBACrBD,EAAQ6I,wBAA0BC,KAGtC3B,EAAE/F,GAASuH,QAAQ3I,GAEnBoB,EAAQX,aAAa,sBAAuB,IAZ5C,CAaJ,KAUmC,IAA/BhB,IACAA,GAA6B,EAE7B0H,EAAElI,UAAU0F,GAAG,gBAAgB,SAASpE,GACpC,IAAI0D,EAAWhF,SAASiC,iBAAiB,mDACrC+C,EAASf,OAAS,GAClBe,EAASA,EAASf,OAAS,GAAG6F,OAEtC,MA+XAlJ,IAnTmB,oBAAZkB,WAIgB,IAAvBrB,IAEAG,IAGAT,OAAOD,iBAAiB,SAAUU,IAI3B,GAAGmB,MAAMC,KAAKhC,SAASiC,iBAAiB,wDAC9CC,KAAI,SAAU6H,GACiC,MAA5CA,EAAI/I,aAAa,yBAIrB+I,EAAI7J,iBAAiB,eAAgBU,GAErCmJ,EAAIvI,aAAa,sBAAuB,KAC5C,IAEAf,GAAqB,GA/FG,oBAAbuJ,UAIE,GAAGjI,MAAMC,KAAKhC,SAASiC,iBAAiB,8BAE9CC,KAAI,SAAU+H,GACiC,MAA9CA,EAAMjJ,aAAa,yBAIvBgJ,SAASC,GAETA,EAAMzI,aAAa,sBAAuB,KAC9C,IAoFoB,WACpB,GAAmB,oBAARuD,IACP,OAIJ,MAAMC,EAAW8B,MAAMC,UAAUhF,MAAMC,KAAKhC,SAASiC,iBAAiB,qBAAsB,IAEvF+C,GAAgC,IAApBA,EAASf,SAI1Be,EAASzB,SAAQ,SAAUzC,GACwB,MAA3CA,EAAGE,aAAa,yBAIpBH,EAAeC,GAEfA,EAAGU,aAAa,sBAAuB,KAC3C,GACJ,CAyQQ0I,GAEA3J,GAAc,CAClB,EAEAM,eAAgB,SAASC,GACrBD,EAAeC,EACnB,EAEAqJ,gBAAiB,WArDjBnK,SAAS2F,KAAKxC,UAAUC,IAAI,gBAC5BpD,SAAS2F,KAAKnE,aAAa,2BAA4B,KAsDvD,EAEApB,gBAAiB,WAnDjBJ,SAAS2F,KAAKxC,UAAU0D,OAAO,gBAC/B7G,SAAS2F,KAAKyE,gBAAgB,2BAoD9B,EAEAzJ,uBAAwB,SAASG,EAAIC,GACjC,OAAOJ,EAAuBG,EAAIC,EACtC,EAEAL,uBAAwB,SAASI,EAAIC,GACjC,OAAOL,EAAuBI,EAAIC,EACtC,SAKuD,IAAnBV,EAAOC,UAC/CD,EAAOC,QAAUjB,2BCvqBrB,IAAIgL,EAAY,SAASlI,EAASpB,GAI9B,IAAIuJ,EAAMxE,KAEV,GAAK,MAAO3D,EAAZ,CAKA,IAAIoI,EAAiB,CACjBC,QAAQ,EACRC,aAAc,GACdC,SAAU,SACVC,QAAS,qDAeTC,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAInI,QAAUA,EACdmI,EAAIQ,eAAiB,KACrBR,EAAIS,SAAU,EACdT,EAAIU,iBAAkB,EACtBV,EAAIW,iBAAkB,EAGtB7I,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,UAAWb,EAC5C,EAlBSlI,OAAO8I,KAAK/I,GAASiJ,IAAI,WAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,WAE/BT,IAqGRN,EAAIgB,MAAQ,YApFC,WACT,IAAsE,IAAjEC,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GAA7D,CAIA,IAAImB,EAAkC,SAAxBnB,EAAInI,QAAQuJ,QAEtBC,EAAWvJ,OAAOwJ,IAAItB,EAAInI,QAAS,YACnCuI,EAAWtI,OAAOwJ,IAAItB,EAAInI,QAAS,YACnCqI,EAASiB,EAAS,IAAQ,EAE1BnB,EAAIvJ,QAAQyJ,OAAS,EACrBA,EAASF,EAAIvJ,QAAQyJ,OAEqB,QAAtCpI,OAAOwJ,IAAItB,EAAInI,QAAS,aACxBqI,EAASpI,OAAOwJ,IAAItB,EAAInI,QAAS,YAIzCmI,EAAInI,QAAQgB,UAAUC,IAAI,WAET,aAAbuI,GAAwC,aAAbA,GAAwC,UAAbA,IACtDvJ,OAAOwJ,IAAItB,EAAInI,QAAS,WAAY,YACpCmI,EAAIU,iBAAkB,GAGG,WAAzBV,EAAIvJ,QAAQ2J,UAAsC,YAAbA,IACrCtI,OAAOwJ,IAAItB,EAAInI,QAAS,WAAY,UACpCmI,EAAIW,iBAAkB,GAG1BX,EAAIQ,eAAiB9K,SAAS6L,cAAc,OAC5CvB,EAAIQ,eAAetJ,aAAa,QAAS,mBAAqB8I,EAAIvJ,QAAQ0J,cAE1EH,EAAIQ,eAAejC,UAAYyB,EAAIvJ,QAAQ4J,QAE3CvI,OAAOwJ,IAAItB,EAAIQ,eAAgB,UAAWN,GAE1CF,EAAInI,QAAQ2J,OAAOxB,EAAIQ,gBACvBR,EAAIS,SAAU,EAEdQ,eAAeC,QAAQlB,EAAInI,QAAS,2BAA4BmI,EAtChE,CAuCJ,CA2CIyB,EACJ,EAEAzB,EAAI0B,QAAU,YA3C8D,IAAnET,eAAeC,QAAQlB,EAAInI,QAAS,qBAAsBmI,KAI/DA,EAAInI,QAAQgB,UAAUC,IAAI,WAEtBkH,EAAIU,iBACJ5I,OAAOwJ,IAAItB,EAAInI,QAAS,WAAY,IAGpCmI,EAAIW,iBACJ7I,OAAOwJ,IAAItB,EAAInI,QAAS,WAAY,IAGpCmI,EAAIQ,gBACJ1I,OAAOyE,OAAOyD,EAAIQ,gBAGtBR,EAAIS,SAAU,EAEdQ,eAAeC,QAAQlB,EAAInI,QAAS,sBAAuBmI,GAyB/D,EAEAA,EAAI2B,UAAY,WACZ,OAxBO3B,EAAIS,OAyBf,EAEAT,EAAI4B,QAAU,WAvBV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,UAyBpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CAtJA,CAuJJ,EAGAnC,EAAUoC,YAAc,SAAStK,GAC7B,OAAgB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,WACtChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,WAEzB,IAEf,OAG+D,IAAnBhL,EAAOC,UAC/CD,EAAOC,QAAU+J,2BC3KrB,IAAIqC,EACO,CAGHrB,IAAK,SAASc,GACV,IAAIQ,EAAU3M,SAAS4M,OAAOhJ,MAAM,IAAIiJ,OACpC,WAAaV,EAAK1J,QAAQ,+BAAgC,QAAU,aAGxE,OAAOkK,EAAUG,mBAAmBH,EAAQ,IAAM,IACtD,EAIAxB,IAAK,SAASgB,EAAM5J,EAAOxB,GAClB,MAAOA,IACRA,EAAU,CAAC,IAGfA,EAAUuD,OAAOC,OAAO,CAAC,EAAG,CACxBwI,KAAM,KACPhM,IAEUiM,mBAAmBC,OAC5BlM,EAAQiM,QAAUjM,EAAQiM,QAAQE,eAGtC,IAAIC,EAAgBC,mBAAmBjB,GAAQ,IAAMiB,mBAAmB7K,GAExE,IAAM,IAAI8K,KAAatM,EACnB,IAA2C,IAAtCA,EAAQuM,eAAeD,GAA5B,CAIAF,GAAiB,KAAOE,EACxB,IAAIE,EAAcxM,EAAQsM,IAEL,IAAhBE,IACDJ,GAAiB,IAAMI,EAN3B,CAUJvN,SAAS4M,OAASO,CACtB,EAGAtG,OAAQ,SAASsF,GACbrG,KAAKqF,IAAIgB,EAAM,GAAI,CACf,WAAY,GAEpB,QAKuD,IAAnB9L,EAAOC,UAC/CD,EAAOC,QAAUoM,2BCzDrB,IAAI7M,EAAW,SAASsC,EAASpB,GAI7B,IAAIuJ,EAAMxE,KAEV,GAAK3D,EAAL,CAKA,IAAIoI,EAAiB,CACjBiD,IAAK,KACLC,IAAK,KACLC,KAAM,EACNC,SAAU,EACV7K,OAAQ,GACRE,OAAQ,IAiBR4H,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GAGpDuJ,EAAInI,QAAUA,EACdmI,EAAIsD,WAAatD,EAAInI,QAAQ8E,cAAc,uCAC3CqD,EAAIuD,WAAavD,EAAInI,QAAQ8E,cAAc,uCAC3CqD,EAAIwD,aAAexD,EAAInI,QAAQ8E,cAAc,eAGzC8G,EAAW,cACXzD,EAAIvJ,QAAQ4M,SAAW/K,SAASmL,EAAW,cAG3CA,EAAW,YACXzD,EAAIvJ,QAAQ+B,OAASiL,EAAW,WAGhCA,EAAW,YACXzD,EAAIvJ,QAAQiC,OAAS+K,EAAW,WAGhCA,EAAW,UACXzD,EAAIvJ,QAAQ2M,KAAOlL,WAAWuL,EAAW,UAGzCA,EAAW,SACXzD,EAAIvJ,QAAQyM,IAAMhL,WAAWuL,EAAW,SAGxCA,EAAW,SACXzD,EAAIvJ,QAAQ0M,IAAMjL,WAAWuL,EAAW,SAG5CzD,EAAI/H,MAAQC,WAAW8H,EAAIwD,aAAavL,MAAME,QAAQ,UAAW,KAEjEuL,IAGAC,IAGA7L,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,SAAUb,EAC3C,EAGI2D,EAAY,WACZ7L,OAAO8L,SAAS5D,EAAIsD,WAAY,SAAS,SAAStM,GAC9CA,EAAEsE,iBAEFuI,GACJ,IAEA/L,OAAO8L,SAAS5D,EAAIuD,WAAY,SAAS,SAASvM,GAC9CA,EAAEsE,iBAEFwI,GACJ,IAEAhM,OAAO8L,SAAS5D,EAAIwD,aAAc,SAAS,SAASxM,GAChDA,EAAEsE,iBAEFoI,GACJ,GACJ,EAGIG,EAAY,WAUZ,OARA5C,eAAeC,QAAQlB,EAAInI,QAAS,qBAAsBmI,GAE1DA,EAAIwD,aAAavL,MAAQ+H,EAAI/H,MAAQ+H,EAAIvJ,QAAQ2M,KACjDM,IAGAzC,eAAeC,QAAQlB,EAAInI,QAAS,sBAAuBmI,GAEpDA,CACX,EAEI8D,EAAY,WAWZ,OATA7C,eAAeC,QAAQlB,EAAInI,QAAS,qBAAsBmI,GAE1DA,EAAIwD,aAAavL,MAAQ+H,EAAI/H,MAAQ+H,EAAIvJ,QAAQ2M,KAEjDM,IAGAzC,eAAeC,QAAQlB,EAAInI,QAAS,sBAAuBmI,GAEpDA,CACX,EAGI0D,EAAY,SAASzL,GAErBgJ,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GAGpDA,EAAI/H,WADM8L,IAAV9L,EACYA,EAEA+L,EAAOhE,EAAIwD,aAAavL,OAGhB,OAApB+H,EAAIvJ,QAAQyM,KAAgBlD,EAAI/H,MAAQ+H,EAAIvJ,QAAQyM,MACpDlD,EAAI/H,MAAQ+H,EAAIvJ,QAAQyM,KAGJ,OAApBlD,EAAIvJ,QAAQ0M,KAAgBnD,EAAI/H,MAAQ+H,EAAIvJ,QAAQ0M,MACpDnD,EAAI/H,MAAQ+H,EAAIvJ,QAAQ0M,KAG5BnD,EAAIwD,aAAavL,MAAQgM,EAAQjE,EAAI/H,OAGrC+H,EAAIwD,aAAaU,cAAc,IAAIC,MAAM,WAGzClD,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,EAC7D,EAEIgE,EAAS,SAASlK,GAalB,OAZAA,EAAMA,EACD3B,QAAQ,YAAa,IACrBA,QAAQ,YAAa,MACrBA,QAAQ,UAAW,IACnBA,QAAQ,YAAa,MAE1B2B,EAAM5B,WAAW4B,GAEbsK,MAAMtK,KACNA,EAAM,GAGHA,CACX,EAGImK,EAAU,SAASnK,GACnB,OAAOkG,EAAIvJ,QAAQ+B,OAASN,WAAW4B,GAAKuK,QAAQrE,EAAIvJ,QAAQ4M,UAAYrD,EAAIvJ,QAAQiC,MAC5F,EAGI+K,EAAa,SAAS5B,GACtB,OAA4D,IAAvD7B,EAAInI,QAAQjB,aAAa,kBAAoBiL,GACnC7B,EAAInI,QAAQnB,aAAa,kBAAoBmL,GAKjD,IAEf,GAlKgD,IAAvC/J,OAAO8I,KAAK/I,GAASiJ,IAAI,UAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,UAE/BT,IA6KRN,EAAIsE,YAAc,SAASrM,GACvB+H,EAAIvJ,QAAQyM,IAAMjL,CACtB,EAEA+H,EAAIuE,YAAc,SAAStM,GACvB+H,EAAIvJ,QAAQ0M,IAAMlL,CACtB,EAEA+H,EAAIwE,SAAW,SAASvM,GACpByL,EAAUzL,EACd,EAEA+H,EAAIyE,SAAW,WACX,OAAOzE,EAAIwD,aAAavL,KAC5B,EAEA+H,EAAI0E,OAAS,WACThB,GACJ,EAEA1D,EAAI2E,SAAW,WACX,OAAOd,GACX,EAEA7D,EAAI4E,SAAW,WACX,OAAOd,GACX,EAEA9D,EAAI6E,WAAa,WACb,OAAO7E,EAAInI,OACf,EAEAmI,EAAI4B,QAAU,WA3CV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,SA6CpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CArPA,CAsPJ,EAGA3M,EAAS4M,YAAc,SAAStK,GAC5B,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,UACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,UAEzB,IAEf,EAGAxL,EAASuP,gBAAkB,SAAS7F,EAAW,2BAE3C,IAAIvE,EAAWhF,SAASiC,iBAAiBsH,GAEzC,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAC5C,IAAIxP,EAASmF,EAASqK,GAGlC,EAGAxP,EAAST,KAAO,WACZS,EAASuP,iBACb,OAG+D,IAAnB/O,EAAOC,UAC/CD,EAAOC,QAAUT,2BC7RrB,IAAI0P,GAA8B,EAG9BjQ,EAAW,SAAS6C,EAASpB,GAI7B,IAAIuJ,EAAMxE,KAEV,GAAK,MAAO3D,EAAZ,CAKA,IAAIoI,EAAiB,CACjBiF,SAAS,EACTC,UAAW,MACXC,UAAW,SACXjF,aAAc,kBAedG,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIqF,IAAMvN,OAAOwN,YAAY,UAC7BtF,EAAInI,QAAUA,EACdmI,EAAIQ,eAAiB,KACrBR,EAAI6B,KAAO7B,EAAInI,QAAQnB,aAAa,uBACpCsJ,EAAIuF,OAAQ,EACZvF,EAAIwF,UACJxF,EAAIyF,cAAgB,KAGpBzF,EAAInI,QAAQX,aAAa,iBAAkB,QAG3CyM,IAGA+B,IAGA5N,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,SAAUb,EAC3C,EAEI2D,EAAY,WACZ,IAAIgC,EAAWlC,EAAW,UACtBmC,EAAUnC,EAAW,SAEP,OAAbkC,GAAqBA,EAAShM,OAAS,GACxC7B,OAAOsD,GAAG1F,SAAS2F,KAAMsK,EAAU,SAAS,SAAS3O,GACjDA,EAAEsE,iBAEF0E,EAAIyF,cAAgBjK,KACpBqK,GACJ,IAGa,OAAZD,GAAoBA,EAAQjM,OAAS,GACtC7B,OAAOsD,GAAG1F,SAAS2F,KAAMuK,EAAS,SAAS,SAAS5O,GAChDA,EAAEsE,iBAEF0E,EAAI8F,aAAetK,KACnBuK,GACJ,GAER,EAEIF,EAAU,YAC4D,IAAjE5E,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,MAI1C,IAAdA,EAAIuF,MACLQ,IAEAC,IAGJ/E,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,GAC7D,EAEI+F,EAAQ,YAC4D,IAA/D9E,eAAeC,QAAQlB,EAAInI,QAAS,iBAAkBmI,KAI3DA,EAAIuF,OAAQ,EAEZU,IAEAvQ,SAAS2F,KAAKyE,gBAAgB,kBAAoBE,EAAI6B,KAAM,MAC5DnM,SAAS2F,KAAKyE,gBAAgB,kBAE9BhI,OAAOoO,YAAYlG,EAAInI,QAASmI,EAAIvJ,QAAQ2O,UAAY,OAE7B,OAAtBpF,EAAIyF,eACL3N,OAAOoO,YAAYlG,EAAIyF,cAAe,UAG1CxE,eAAeC,QAAQlB,EAAInI,QAAS,yBAA0BmI,GAClE,EAEIgG,EAAQ,YAC4D,IAA/D/E,eAAeC,QAAQlB,EAAInI,QAAS,iBAAkBmI,KAI3DA,EAAIuF,OAAQ,EAEZY,IACAzQ,SAAS2F,KAAKnE,aAAa,kBAAoB8I,EAAI6B,KAAM,MACzDnM,SAAS2F,KAAKnE,aAAa,iBAAkB,MAE7CY,OAAO0C,SAASwF,EAAInI,QAASmI,EAAIvJ,QAAQ2O,UAAY,OAE1B,OAAtBpF,EAAIyF,eACL3N,OAAO0C,SAASwF,EAAIyF,cAAe,UAGvCxE,eAAeC,QAAQlB,EAAInI,QAAS,kBAAmBmI,GAC3D,EAEI0F,EAAU,WACV,IAAIU,EAAQC,IACRlB,EAAY1B,EAAW,aAEvB6C,EAAM7C,EAAW,OACjB8C,EAAS9C,EAAW,UACpB7K,EAAQ6K,EAAW,SACnBxF,EAAMwF,EAAW,QAGgD,IAAhE3L,OAAO0O,SAASxG,EAAInI,QAASmI,EAAIvJ,QAAQ2O,UAAY,QAA8F,OAA3EqB,OAAO/Q,SAAS2F,KAAK3E,aAAa,kBAAoBsJ,EAAI6B,KAAO,MAC1I7B,EAAIuF,OAAQ,EAEZvF,EAAIuF,OAAQ,GAIgB,IAA3B9B,EAAW,aACZ3L,OAAO0C,SAASwF,EAAInI,QAASmI,EAAIvJ,QAAQ2O,WACzCtN,OAAO0C,SAASwF,EAAInI,QAASmI,EAAIvJ,QAAQ2O,UAAY,IAAMD,GAE3DrN,OAAOwJ,IAAItB,EAAInI,QAAS,QAASuO,GAAO,GACxCpG,EAAIwF,UAAYY,EAEZE,GACAxO,OAAOwJ,IAAItB,EAAInI,QAAS,MAAOyO,GAG/BC,GACAzO,OAAOwJ,IAAItB,EAAInI,QAAS,SAAU0O,GAGlC3N,IACId,OAAO4O,QACP5O,OAAOwJ,IAAItB,EAAInI,QAAS,QAASe,GAEjCd,OAAOwJ,IAAItB,EAAInI,QAAS,OAAQe,IAIpCqF,IACInG,OAAO4O,QACP5O,OAAOwJ,IAAItB,EAAInI,QAAS,OAAQoG,GAEhCnG,OAAOwJ,IAAItB,EAAInI,QAAS,QAASoG,MAIzCnG,OAAOoO,YAAYlG,EAAInI,QAASmI,EAAIvJ,QAAQ2O,WAC5CtN,OAAOoO,YAAYlG,EAAInI,QAASmI,EAAIvJ,QAAQ2O,UAAY,IAAMD,GAE9DrN,OAAOwJ,IAAItB,EAAInI,QAAS,QAAS,IAE7ByO,GACAxO,OAAOwJ,IAAItB,EAAInI,QAAS,MAAO,IAG/B0O,GACAzO,OAAOwJ,IAAItB,EAAInI,QAAS,SAAU,IAGlCe,IACId,OAAO4O,QACP5O,OAAOwJ,IAAItB,EAAInI,QAAS,QAAS,IAEjCC,OAAOwJ,IAAItB,EAAInI,QAAS,OAAQ,KAIpCoG,IACInG,OAAO4O,QACP5O,OAAOwJ,IAAItB,EAAInI,QAAS,OAAQ,IAEhCC,OAAOwJ,IAAItB,EAAInI,QAAS,QAAS,KAIzCkO,IAER,EAEII,EAAiB,YACc,IAA1B1C,EAAW,aACZzD,EAAIQ,eAAiB9K,SAAS6L,cAAc,OAE5CzJ,OAAOwJ,IAAItB,EAAIQ,eAAgB,UAAW1I,OAAOwJ,IAAItB,EAAInI,QAAS,WAAa,GAE/EnC,SAAS2F,KAAKmG,OAAOxB,EAAIQ,gBAEzB1I,OAAO0C,SAASwF,EAAIQ,eAAgBiD,EAAW,kBAE/C3L,OAAO8L,SAAS5D,EAAIQ,eAAgB,SAAS,SAASxJ,GAClDA,EAAEsE,kBAE+B,IAA5BmI,EAAW,cACZsC,GAER,IAER,EAEIE,EAAiB,WACW,OAAvBjG,EAAIQ,gBACL1I,OAAOyE,OAAOyD,EAAIQ,eAE1B,EAEIiD,EAAa,SAAS5B,GACtB,IAA4D,IAAvD7B,EAAInI,QAAQjB,aAAa,kBAAoBiL,GAAiB,CAC/D,IAAI8E,EAAO3G,EAAInI,QAAQnB,aAAa,kBAAoBmL,GACpD5J,EAAQH,OAAOqD,mBAAmBwL,GAQtC,OANe,OAAV1O,GAAoC,SAAlBwO,OAAOxO,GAC1BA,GAAQ,EACU,OAAVA,GAAoC,UAAlBwO,OAAOxO,KACjCA,GAAQ,GAGLA,CACX,CACI,IAAImB,EAAatB,OAAO8O,aAAa/E,GAErC,OAAK7B,EAAIvJ,QAAQ2C,GACNtB,OAAOqD,mBAAmB6E,EAAIvJ,QAAQ2C,IAEtC,IAGnB,EAEIiN,EAAY,WACZ,IAAID,EAAQ3C,EAAW,SAMvB,MAJe,SAAV2C,IACDA,EAAQtO,OAAOwJ,IAAItB,EAAInI,QAAS,UAG7BuO,CACX,EAvPStO,OAAO8I,KAAK/I,GAASiJ,IAAI,UAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,UAE/BT,IAkQRN,EAAI9E,OAAS,WACT,OAAO2K,GACX,EAEA7F,EAAInD,KAAO,WACP,OAAOmJ,GACX,EAEAhG,EAAI/I,KAAO,WACP,OAAO8O,GACX,EAEA/F,EAAI6G,QAAU,WACV,OAAO7G,EAAIuF,KACf,EAEAvF,EAAI0E,OAAS,WACTgB,GACJ,EAEA1F,EAAI8G,UAAY,WACZ,OAAO9G,EAAInI,OACf,EAEAmI,EAAI4B,QAAU,WAnCV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,SAqCpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CA/TA,CAgUJ,EAGAlN,EAASmN,YAAc,SAAStK,GAC5B,OAAgB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,UACtChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,UAEzB,IAEf,EAGA/L,EAAS+R,QAAU,SAASC,EAAO,KAAM/H,EAAW,2BAChD,IAAIgI,EAAQvR,SAASiC,iBAAiBsH,GAEtC,GAAIgI,GAASA,EAAMtN,OAAS,EACxB,IAAK,IAAIoL,EAAI,EAAGC,EAAMiC,EAAMtN,OAAQoL,EAAIC,EAAKD,IAAK,CAC9C,IAAImC,EAAOD,EAAMlC,GACboC,EAASnS,EAASmN,YAAY+E,GAE7BC,IAIAH,EACIE,IAASF,GACVG,EAAOlQ,OAGXkQ,EAAOlQ,OAEf,CAER,EAGAjC,EAASoS,UAAY,SAASnI,EAAW,2BACrC,IAAIgI,EAAQvR,SAASiC,iBAAiBsH,GAEtC,GAAIgI,GAASA,EAAMtN,OAAS,EACxB,IAAK,IAAIoL,EAAI,EAAGC,EAAMiC,EAAMtN,OAAQoL,EAAIC,EAAKD,IAAK,CAC9C,IAAIoC,EAASnS,EAASmN,YAAY8E,EAAMlC,IAEpCoC,GACAA,EAAOzC,QAEf,CAER,EAGA1P,EAAS8P,gBAAkB,SAAS7F,EAAW,2BAE3C,IAAIvE,EAAWhF,SAASiC,iBAAiBsH,GAEzC,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAC5C,IAAI/P,EAAS0F,EAASqK,GAGlC,EAGA/P,EAASqS,WAAa,WAElBvP,OAAOsD,GAAG1F,SAAS2F,KAAO,sDAAuD,SAAS,SAASrE,GAC/FA,EAAEsE,iBAEF,IAAIzD,EAAUnC,SAASiH,cAAcnB,KAAK9E,aAAa,0BAEnDmB,GACA7C,EAASmN,YAAYtK,GAASgF,MAEtC,GACJ,EAGA7H,EAASsS,cAAgB,WAErBxP,OAAOsD,GAAG1F,SAAS2F,KAAO,kCAAmC,SAAS,SAASrE,GAC3E,IAAIa,EAAU2D,KAAKjB,QAAQ,2BAE3B,GAAI1C,EAAS,CACT,IAAIsP,EAASnS,EAASmN,YAAYtK,GAC9BsP,EAAON,WACPM,EAAOlQ,MAEf,CACJ,GACJ,EAGAjC,EAASuS,aAAe,WAEpB1R,OAAOD,iBAAiB,UAAU,WAG9BkC,OAAO0P,SAFHC,WAEmB,WAEnB,IAAI/M,EAAWhF,SAASiC,iBAAiB,2BAEzC,GAAK+C,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAAK,CACjD,IAAIoC,EAASnS,EAASmN,YAAYzH,EAASqK,IACvCoC,GACAA,EAAOzC,QAEf,CAER,GAAG,IACP,GACJ,EAGA1P,EAASF,KAAO,WACZE,EAAS8P,mBAE2B,IAAhCG,IACAjQ,EAASuS,eACTvS,EAASqS,aACTrS,EAASsS,gBAETrC,GAA8B,EAEtC,OAG+D,IAAnBlP,EAAOC,UAC/CD,EAAOC,QAAUhB,2BC1crB,IAIQ2O,EA0CA+D,EA9CJzG,GAII0C,EAAY,CAAC,EA0Cb+D,EAAY,SAAS7P,EAASgK,EAAM8F,EAAU5F,GAC9C,IAAIE,EAAYnK,OAAOwN,YAAY,SAC/BsC,EAAa9P,OAAO8I,KAAK/I,GAASkJ,IAAIc,GAqB1C,OAnBM+F,IACFA,EAAa,IAGjBA,EAAWC,KAAK5F,GAEhBnK,OAAO8I,KAAK/I,GAASgJ,IAAIgB,EAAM+F,GAEzBjE,EAAU9B,KACZ8B,EAAU9B,GAAQ,CAAC,GAGvB8B,EAAU9B,GAAMI,GAAa,CACzBJ,KAAMA,EACN8F,SAAUA,EACV5F,IAAKA,EACL+F,OAAO,GAGJ7F,CACX,EAmBO,CACHf,QAAS,SAASrJ,EAASgK,EAAM5E,GAC7B,OAlFY,SAASpF,EAASgK,EAAM5E,GACxC,IACI8K,EADAC,GAAc,EAGlB,IAAwC,IAAnClQ,OAAO8I,KAAK/I,GAASiJ,IAAIe,GAI1B,IAHA,IACII,EADA2F,EAAa9P,OAAO8I,KAAK/I,GAASkJ,IAAIc,GAGjCkD,EAAI,EAAGA,EAAI6C,EAAWjO,OAAQoL,IAGnC,GAFA9C,EAAY2F,EAAW7C,GAElBpB,EAAU9B,IAAS8B,EAAU9B,GAAMI,GAAa,CACjD,IAAIH,EAAU6B,EAAU9B,GAAMI,GAGzBH,EAAQD,OAASA,IACE,GAAfC,EAAQC,IACa,GAAjBD,EAAQgG,QACTnE,EAAU9B,GAAMI,GAAW6F,OAAQ,EAEnCC,EAAajG,EAAQ6F,SAASjQ,KAAK8D,KAAMyB,IAG7C8K,EAAajG,EAAQ6F,SAASjQ,KAAK8D,KAAMyB,IAGzB,IAAf8K,IACDC,GAAc,GAG1B,CAIR,OAAOA,CACX,CA+CeC,CAAcpQ,EAASgK,EAAM5E,EACxC,EAEA7B,GAAI,SAASvD,EAASgK,EAAMC,GACxB,OAAO4F,EAAU7P,EAASgK,EAAMC,EACpC,EAEAC,IAAK,SAASlK,EAASgK,EAAMC,GACzB,OAAO4F,EAAU7P,EAASgK,EAAMC,GAAS,EAC7C,EAEAE,IAAK,SAASnK,EAASgK,EAAMI,GACzB,OA/BW,SAASpK,EAASgK,EAAMI,GACvC,IAAI2F,EAAa9P,OAAO8I,KAAK/I,GAASkJ,IAAIc,GACtCqG,EAAQN,GAAcA,EAAWO,QAAQlG,IAE9B,IAAXiG,IACAN,EAAWQ,OAAOF,EAAO,GACzBpQ,OAAO8I,KAAK/I,GAASgJ,IAAIgB,EAAM+F,IAG/BjE,EAAU9B,IAAS8B,EAAU9B,GAAMI,WAC5B0B,EAAU9B,GAAMI,EAE/B,CAmBeoG,CAAaxQ,EAASgK,EAAMI,EACvC,EAEAqG,MAAO,WACH,IAAK,IAAIC,KAAK5E,EACLA,EAAUX,eAAeuF,IAAKC,QAAQC,IAAIF,EAEvD,SAKuD,IAAnBxS,EAAOC,UAC/CD,EAAOC,QAAUiL,gCCyC0C,IAAnBlL,EAAOC,UAC/CD,EAAOC,QA9JM,SAASS,GAItB,IAAIuJ,EAAMxE,KAGNyE,EAAiB,CACjB,MAAU,IACV,UAAc,aACd,QAAY,GACZ,KAAQ,SAWRK,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIqF,IAAMvN,OAAOwN,YAAY,YAC7BtF,EAAInI,QACJmI,EAAIuF,OAAQ,EAGZ5B,IAGA7L,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,WAAYb,EAC7C,EAEI2D,EAAY,WACZ7L,OAAO8L,SAAS5D,EAAInI,QAAS,SAAS,SAASb,GAC3CA,EAAEsE,iBAEFoN,KACJ,GACJ,EAgCIC,EAAa,WACb3I,EAAInI,QAAUnC,SAAS6L,cAAc,OAErCzJ,OAAO0C,SAASwF,EAAInI,QAAS,2BAC7BC,OAAO8Q,QAAQ5I,EAAInI,QAASmI,EAAIvJ,QAAQoS,SAEX,cAAzB7I,EAAIvJ,QAAQqS,WACZC,IAGJrT,SAAS2F,KAAK2N,YAAYhJ,EAAInI,SAE9BC,OAAO0C,SAASwF,EAAInI,QAAS,kBAE7BmI,EAAIuF,OAAQ,CAChB,EAEIwD,EAA6B,WAC7B,IAAI3C,EAAQtO,OAAOqD,mBAAmB6E,EAAIvJ,QAAQ2P,OAC9C6C,EAASnR,OAAOwJ,IAAItB,EAAInI,QAAS,UAErCC,OAAO0C,SAASwF,EAAInI,QAAS,uBAE7BC,OAAOwJ,IAAItB,EAAInI,QAAS,QAASuO,GACjCtO,OAAOwJ,IAAItB,EAAInI,QAAS,OAAQ,OAChCC,OAAOwJ,IAAItB,EAAInI,QAAS,MAAO,IAAMoR,EACzC,EAEIC,EAAa,WACblJ,EAAInI,QAAQ0E,QAChB,EArFI+D,IAmGJN,EAAInD,KAAO,WACP,OA3EQ,WACR,IAAsE,IAAjEoE,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GAU7D,MAN0B,UAArBA,EAAIvJ,QAAQyG,MACbyL,IAGJ1H,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,GAElDA,CACX,CA+DWgG,EACX,EAEAhG,EAAI/I,KAAO,WACP,OAjEQ,WACR,IAAsE,IAAjEgK,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GAY7D,MAR0B,UAArBA,EAAIvJ,QAAQyG,MACbgM,IAGJlJ,EAAIuF,OAAQ,EAEZtE,eAAeC,QAAQlB,EAAInI,QAAS,qBAAsBmI,GAEnDA,CACX,CAmDW+F,EACX,EAEA/F,EAAI6G,QAAU,WACV,OAAO7G,EAAIuF,KACf,EAEAvF,EAAI6E,WAAa,WACb,OAAO7E,EAAInI,OACf,EAEAmI,EAAI4B,QAAU,WA3BV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,WA6BpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CACJ,2BC1JA,IAAI1M,EAAe,SAASqC,EAASpB,GAIjC,IAAIuJ,EAAMxE,KAEV,GAAK,MAAO3D,EAAZ,CAKA,IAAIoI,EAAiB,CAErB,EAcIK,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIqF,IAAMvN,OAAOwN,YAAY,eAG7BtF,EAAInI,QAAUA,EACdmI,EAAIwD,aAAe1L,OAAOqR,KAAKtR,EAAS,sBACxCmI,EAAIoJ,eAAiBtR,OAAOqR,KAAKtR,EAAS,wBAC1CmI,EAAIqJ,cAAgBvR,OAAOqR,KAAKtR,EAAS,yCACzCmI,EAAIsJ,cAAgBxR,OAAOqR,KAAKtR,EAAS,yCACzCmI,EAAIuJ,cAAgBzR,OAAOqR,KAAKtR,EAAS,wBACzCmI,EAAIwJ,IAAM1R,OAAOwJ,IAAItB,EAAIoJ,eAAgB,mBAGzCpJ,EAAInI,QAAQX,aAAa,sBAAuB,QAGhDyM,IAGA7L,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,cAAeb,EAChD,EAGI2D,EAAY,WACZ7L,OAAO8L,SAAS5D,EAAIwD,aAAc,SAAUiG,GAC5C3R,OAAO8L,SAAS5D,EAAIqJ,cAAe,QAASK,GAC5C5R,OAAO8L,SAAS5D,EAAIsJ,cAAe,QAASK,EAChD,EAGIF,EAAU,SAASzS,GAGnB,GAFAA,EAAEsE,iBAEwB,OAArB0E,EAAIwD,cAAyBxD,EAAIwD,aAAaoG,OAAS5J,EAAIwD,aAAaoG,MAAM,GAAK,CAEpF,IAA0E,IAArE3I,eAAeC,QAAQlB,EAAInI,QAAS,uBAAwBmI,GAC7D,OAGJ,IAAI6J,EAAS,IAAIC,WAEjBD,EAAOE,OAAS,SAAS/S,GACrBc,OAAOwJ,IAAItB,EAAIoJ,eAAgB,mBAAoB,OAAQpS,EAAEiG,OAAOZ,OAAQ,IAChF,EAEAwN,EAAOG,cAAchK,EAAIwD,aAAaoG,MAAM,IAE5C5J,EAAInI,QAAQgB,UAAUC,IAAI,uBAC1BkH,EAAInI,QAAQgB,UAAU0D,OAAO,qBAG7B0E,eAAeC,QAAQlB,EAAInI,QAAS,wBAAyBmI,EACjE,CACJ,EAEI0J,EAAU,SAAS1S,GACnBA,EAAEsE,kBAGwE,IAArE2F,eAAeC,QAAQlB,EAAInI,QAAS,uBAAwBmI,KAIjEA,EAAInI,QAAQgB,UAAU0D,OAAO,uBAC7ByD,EAAInI,QAAQgB,UAAU0D,OAAO,qBAEb,SAAZyD,EAAIwJ,KACJ1R,OAAOwJ,IAAItB,EAAIoJ,eAAgB,mBAAoB,IACnDpJ,EAAInI,QAAQgB,UAAUC,IAAI,sBAE1BhB,OAAOwJ,IAAItB,EAAIoJ,eAAgB,mBAAoBpJ,EAAIwJ,KAG3DxJ,EAAIwD,aAAavL,MAAQ,GAEE,OAAtB+H,EAAIuJ,gBACLvJ,EAAIuJ,cAActR,MAAQ,KAI9BgJ,eAAeC,QAAQlB,EAAInI,QAAS,yBAA0BmI,GAClE,EAEI2J,EAAU,SAAS3S,GACnBA,EAAEsE,kBAGwE,IAArE2F,eAAeC,QAAQlB,EAAInI,QAAS,uBAAwBmI,KAIjEA,EAAInI,QAAQgB,UAAU0D,OAAO,uBAC7ByD,EAAInI,QAAQgB,UAAUC,IAAI,qBAE1BhB,OAAOwJ,IAAItB,EAAIoJ,eAAgB,mBAAoB,QACnDpJ,EAAIwD,aAAavL,MAAQ,GAEE,OAAtB+H,EAAIuJ,gBACLvJ,EAAIuJ,cAActR,MAAQ,KAI9BgJ,eAAeC,QAAQlB,EAAInI,QAAS,wBAAyBmI,GACjE,GAhHqD,IAA5ClI,OAAO8I,KAAK/I,GAASiJ,IAAI,eAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,eAE/BT,IA2HRN,EAAIiK,gBAAkB,WAClB,OAAOjK,EAAIwD,YACf,EAEAxD,EAAI6E,WAAa,WACb,OAAO7E,EAAInI,OACf,EAEAmI,EAAI4B,QAAU,WAnBV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,cAqBpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CArKA,CAsKJ,EAGA1M,EAAa2M,YAAc,SAAStK,GAChC,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,eACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,eAEzB,IAEf,EAGAvL,EAAasP,gBAAkB,SAAS7F,EAAW,yBAE/C,IAAIvE,EAAWhF,SAASiC,iBAAiBsH,GAEzC,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAC5C,IAAIvP,EAAakF,EAASqK,GAGtC,EAGAvP,EAAaV,KAAO,WAChBU,EAAasP,iBACjB,OAG+D,IAAnB/O,EAAOC,UAC/CD,EAAOC,QAAUR,2BC7MrB,IAGIP,EAAS,SAAS4C,EAASpB,GAI3B,IAAIuJ,EAAMxE,KAEV,GAAK,MAAO3D,EAAZ,CAKA,IAAIoI,EAAiB,CACjBiK,SAAU,CACNC,aAAc,IACdC,OAAQ,KAGZC,UAAW,CACPC,WAAY,IACZC,QAAQ,IAgBZjK,EAAQ,WACRN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIqF,IAAMvN,OAAOwN,YAAY,QAC7BtF,EAAInI,QAAUA,EACdmI,EAAIwK,eACJxK,EAAIyK,UAAW,EAGfzK,EAAInI,QAAQX,aAAa,eAAgB,QAEzCwT,IACAhF,IAEA5N,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,OAAQb,EACzC,EAmHI6F,EAAU,SAASqB,GACbA,IACFA,EAAOlH,EAAIwK,iBAGgB,IAA1BG,EAAgBzD,GACjBnB,EAAMmB,GAENlB,EAAMkB,EAEd,EAGIlB,EAAQ,SAASkB,GACXA,IACFA,EAAOlH,EAAIwK,iBAGgB,IAA1BG,EAAgBzD,KAIU,aAA1B0D,EAAgB1D,GACjB2D,EAAc3D,GACoB,cAA1B0D,EAAgB1D,IACxB4D,EAAe5D,GAInBpP,OAAO8I,KAAKsG,GAAMrG,IAAI,OAAQ+J,EAAgB1D,IAClD,EAGInB,EAAQ,SAASmB,GACXA,IACFA,EAAOlH,EAAIwK,iBAGgB,IAA1BG,EAAgBzD,KAIU,aAA1B0D,EAAgB1D,GACjB6D,EAAc7D,GACoB,cAA1B0D,EAAgB1D,IACxB8D,EAAe9D,GAEvB,EAGI+D,EAAS,SAAS/D,GAClB,IAA2B,IAAtBgE,EAAYhE,GAAjB,CAIA,IAAIiE,EAAMC,EAAmBlE,GAGxBpP,OAAO8I,KAAKsG,GAAMpG,IAAI,SAAWhJ,OAAO8I,KAAKsG,GAAMnG,IAAI,UAAY6J,EAAgB1D,KACpFpP,OAAOoO,YAAYgB,EAAM,SACzBpP,OAAOoO,YAAYgB,EAAM,QACzBpP,OAAOoO,YAAYiF,EAAK,QAR5B,CAUJ,EAGIzF,EAAU,WACV,IAAIuB,EAAQjH,EAAInI,QAAQF,iBAAiB,oCAEzC,GAAKsP,GAASA,EAAMtN,OAAS,EACzB,IAAK,IAAIoL,EAAI,EAAGC,EAAMiC,EAAMtN,OAAQoL,EAAIC,EAAKD,IACzCkG,EAAOhE,EAAMlC,GAGzB,EAGI2F,EAAqB,WACrB,IAAIzN,EAASvH,SAASiH,cAAc,0BAA4BqD,EAAInI,QAAQnB,aAAa,MAAS,MAElF,OAAXuG,EACD+C,EAAIwK,eAAiBvN,EACb+C,EAAInI,QAAQ0C,QAAQ,0BAC5ByF,EAAIwK,eAAiBxK,EAAInI,QAAQ0C,QAAQ,0BACjCyF,EAAInI,QAAQwT,YAAcvT,OAAOwT,MAAMtL,EAAInI,QAAQwT,WAAY,4BACvErL,EAAIwK,eAAiB1S,OAAOwT,MAAMtL,EAAInI,QAAQwT,WAAY,2BAGzDrL,EAAIwK,gBACL1S,OAAO8I,KAAKZ,EAAIwK,gBAAgB3J,IAAI,OAAQb,EAEpD,EAGIuL,EAAoB,SAASrE,GAC7B,OAASlH,EAAIwK,iBAAmBtD,CACpC,EAGIyD,EAAkB,SAASzD,GAC3B,IAAIiE,EAAMC,EAAmBlE,GAE7B,OAAa,OAARiE,IAC8B,aAA1BP,EAAgB1D,IACqB,IAAjCpP,OAAO0O,SAAS2E,EAAK,UAAkE,IAA9CA,EAAIvU,aAAa,yBAMxDkB,OAAO0O,SAASU,EAAM,QAKzC,EAkBIgE,EAAc,SAAShE,GACvB,OAAQpP,OAAO0O,SAASU,EAAM,cAAgBA,EAAKtQ,aAAa,uBACpE,EAGI4U,EAAsB,SAAStE,GAC/B,OAAOpP,OAAOwT,MAAMpE,EAAM,aAC9B,EAYIkE,EAAqB,SAASlE,GAC9B,OAAiC,IAA5BqE,EAAkBrE,GACZlH,EAAInI,SACgC,IAAxCqP,EAAKrO,UAAUuE,SAAS,YACpB8J,EACCpP,OAAO8I,KAAKsG,GAAMpG,IAAI,OACvBhJ,OAAO8I,KAAKsG,GAAMnG,IAAI,OAEtBjJ,OAAOwT,MAAMpE,EAAM,YAElC,EAGI0D,EAAkB,SAAS/S,GAC3B,IAAIsT,EAAMC,EAAmBvT,GAE7B,OAAKsT,GAAO7S,SAASR,OAAOwJ,IAAI6J,EAAK,YAAc,EACxC,WAEA,WAEf,EAGIM,EAAkB,SAAS5T,GAC3B,IAAIqP,EAAMiE,EAGV,OAAII,EAAkB1T,IAKjBA,EAAQjB,aAAa,wBAJfiB,EASNC,OAAO8I,KAAK/I,GAASiJ,IAAI,QACnBhJ,OAAO8I,KAAK/I,GAASkJ,IAAI,SAI9BmG,EAAOrP,EAAQ0C,QAAQ,qCAClB2M,GAILiE,EAAMtT,EAAQ0C,QAAQ,gBACc,IAAjCzC,OAAO8I,KAAKuK,GAAKrK,IAAI,QACfhJ,OAAO8I,KAAKuK,GAAKpK,IAAI,aAFpC,CAKJ,EAGI2K,EAAwB,SAASxE,GACjC,IACIyE,EADAR,EAAMjE,EAAK3M,QAAQ,aAGvB,OAAK4Q,GAAOrT,OAAO8I,KAAKuK,GAAKrK,IAAI,QACtBhJ,OAAO8I,KAAKuK,GAAKpK,IAAI,QAG3BoK,IAAQQ,EAAaR,EAAI5Q,QAAQ,qCAC3BoR,EAGJ,IACX,EAGIC,EAAyB,SAAS1E,GAClC,IACI2E,EADAC,EAAU,GAEV/G,EAAI,EAER,IACI8G,EAASH,EAAsBxE,MAG3B4E,EAAQjE,KAAKgE,GACb3E,EAAO2E,GAGX9G,UACgB,OAAX8G,GAAmB9G,EAAI,IAMhC,OAJK/E,EAAIwK,gBACLsB,EAAQC,QAAQ/L,EAAIwK,gBAGjBsB,CACX,EAGIE,EAAuB,SAAS9E,GAChC,IAAIjI,EAAWiI,EAOf,OAJKpP,OAAO8I,KAAKsG,GAAMnG,IAAI,SACvB9B,EAAWnH,OAAO8I,KAAKsG,GAAMnG,IAAI,QAGnB,OAAb9B,GAESA,EAAStC,cAAc,qCAQ1B,IAEf,EAGIsP,EAAwB,SAAS/E,GACjC,IACIoE,EADAY,EAAW,GAEXnH,EAAI,EAER,IACIuG,EAAQU,EAAqB9E,MAGzBgF,EAASrE,KAAKyD,GACdpE,EAAOoE,GAGXvG,UACe,OAAVuG,GAAkBvG,EAAI,IAE/B,OAAOmH,CACX,EAGIrB,EAAgB,SAAS3D,GAEzB,IAA4E,IAAvEjG,eAAeC,QAAQlB,EAAInI,QAAS,wBAAyBqP,GAAlE,CAKAjS,EAAOkX,cAAcjF,GAERqE,EAAkBrE,IAAesE,EAAoBtE,GAAlE,IACIiE,EAAMC,EAAmBlE,GAEzBd,EAAQgG,EAA+BlF,EAAM,SAC7C+B,EAASmD,EAA+BlF,EAAM,UAE9CkD,EAASpK,EAAIvJ,QAAQyT,SAASE,OAC9BiC,EAAevU,OAAOwU,iBAAiBpF,GAGrB,OAAjBmF,GAAyBA,GAAgBjC,IAC1CA,EAASiC,EAAe,GAGvBjC,EAAS,GACVtS,OAAOwJ,IAAI6J,EAAK,UAAWf,GAGhB,OAAVhE,GACDtO,OAAOwJ,IAAI6J,EAAK,QAAS/E,GAGb,OAAX6C,GACDnR,OAAOwJ,IAAI6J,EAAK,SAAUlC,GAG9BnR,OAAOwJ,IAAI6J,EAAK,UAAW,IAC3BrT,OAAOwJ,IAAI6J,EAAK,WAAY,IAG5BoB,EAAoBrF,EAAMiE,GAE1BrT,OAAO0C,SAAS0M,EAAM,QACtBpP,OAAO0C,SAAS0M,EAAM,iBACtBpP,OAAO0C,SAAS2Q,EAAK,SAGqC,IAArDiB,EAA+BlF,EAAM,aACtCxR,SAAS2F,KAAK2N,YAAYmC,GAC1BrT,OAAO8I,KAAKsG,GAAMrG,IAAI,MAAOsK,GAC7BrT,OAAO8I,KAAKuK,GAAKtK,IAAI,OAAQqG,GAC7BpP,OAAO8I,KAAKuK,GAAKtK,IAAI,OAAQb,IAE7BlI,OAAO8I,KAAKuK,GAAKtK,IAAI,OAAQqG,GAIjCjG,eAAeC,QAAQlB,EAAInI,QAAS,yBAA0BqP,EApD9D,CAqDJ,EAGI6D,EAAgB,SAAS7D,GAEzB,IAA4E,IAAvEjG,eAAeC,QAAQlB,EAAInI,QAAS,wBAAyBqP,GAAlE,CAIA,IAAIiE,EAAMC,EAAmBlE,GAE7BpP,OAAOwJ,IAAI6J,EAAK,UAAW,IAC3BrT,OAAOwJ,IAAI6J,EAAK,QAAS,IACzBrT,OAAOwJ,IAAI6J,EAAK,SAAU,IAE1BrT,OAAOoO,YAAYgB,EAAM,QACzBpP,OAAOoO,YAAYgB,EAAM,iBACzBpP,OAAOoO,YAAYiF,EAAK,SAGkC,IAArDiB,EAA+BlF,EAAM,cAClCA,EAAKrO,UAAUuE,SAAS,aACxB8J,EAAK8B,YAAYmC,GAEjBrT,OAAO0U,YAAYxM,EAAInI,QAASqP,GAGpCpP,OAAO8I,KAAKsG,GAAM3K,OAAO,OACzBzE,OAAO8I,KAAKuK,GAAK5O,OAAO,QACxBzE,OAAO8I,KAAKuK,GAAK5O,OAAO,SAI5BkQ,EAAuBvF,GAGvBjG,eAAeC,QAAQlB,EAAInI,QAAS,0BAA2BqP,EA7B/D,CA8BJ,EAGIqF,EAAsB,SAASrF,EAAMiE,GAErC,IAAIuB,EACAC,EAASP,EAA+BlF,EAAM,UAI1CwF,EAFHC,EACe,WAAXA,EACWzF,EAAKmE,WAEL3V,SAASiH,cAAcgQ,GAG3BzF,EAGhB,IAAI0F,EAASC,OAAOC,aAAaJ,EAAWvB,EAAK4B,EAAyB7F,IAC1EpP,OAAO8I,KAAKsG,GAAMrG,IAAI,SAAU+L,EACpC,EAGIH,EAAyB,SAASvF,IACO,IAApCpP,OAAO8I,KAAKsG,GAAMpG,IAAI,YACvBhJ,OAAO8I,KAAKsG,GAAMnG,IAAI,UAAUa,UAChC9J,OAAO8I,KAAKsG,GAAM3K,OAAO,UAEjC,EAGIwQ,EAA2B,SAAS7F,GAEpC,IAAI4B,EAAYsD,EAA+BlF,EAAM,aAChD4B,IACDA,EAAY,SAIhB,IAAIkE,EAAcZ,EAA+BlF,EAAM,UACnDlM,EAASgS,EAAcA,EAAYC,MAAM,KAAO,GAiCpD,OA/BsB,IAAlBjS,EAAOrB,SACPqB,EAAO,GAAK1C,SAAS0C,EAAO,IAC5BA,EAAO,GAAK1C,SAAS0C,EAAO,KAQb,CACf8N,UAAWA,EACXoE,UANgE,IAArDd,EAA+BlF,EAAM,YAAuB,WAAa,QAOpFiG,UAAW,CAAC,CACRtL,KAAM,SACNpL,QAAS,CACLuE,OAAQA,IAEb,CACC6G,KAAM,kBACNpL,QAAS,CACL2W,SAbmD,IAAjDhB,EAA+BlF,EAAM,UAe5C,CACCrF,KAAM,OACNpL,QAAS,CACL4W,gBAAgB,KAMhC,EAGIvC,EAAiB,SAAS5D,GAC1B,IAA6E,IAAxEjG,eAAeC,QAAQlB,EAAInI,QAAS,yBAA0BqP,GAAnE,CAIA,IAAIiE,EAAMC,EAAmBlE,GACzBqD,EAASvK,EAAIvJ,QAAQ4T,UAAUE,QAEoB,IAAnD6B,EAA+BlF,EAAM,UACrCqD,GAAS,GACiD,IAAnD6B,EAA+BlF,EAAM,UAC5CqD,GAAS,GACwD,IAA1D6B,EAA+BpM,EAAInI,QAAS,YACnD0S,GAAS,IAGG,IAAXA,GACD+C,EAAgBpG,IAGqB,IAApCpP,OAAO8I,KAAKsG,GAAMpG,IAAI,WACvBiK,EAAc7D,GAGlBpP,OAAO0C,SAAS0M,EAAM,SAEtBpP,OAAO0C,SAAS0M,EAAM,WAEtBpP,OAAOyV,UAAUpC,EAAKnL,EAAIvJ,QAAQ4T,UAAUC,YAAY,WACpDxS,OAAOoO,YAAYgB,EAAM,WACzBpP,OAAO0C,SAAS0M,EAAM,QACtBpP,OAAO0C,SAAS2Q,EAAK,QAErBlK,eAAeC,QAAQlB,EAAInI,QAAS,0BAA2BqP,EACnE,GA/BA,CAgCJ,EAGI8D,EAAiB,SAAS9D,GAC1B,IAA6E,IAAxEjG,eAAeC,QAAQlB,EAAInI,QAAS,yBAA0BqP,GAAnE,CAIA,IAAIiE,EAAMC,EAAmBlE,GAE7BpP,OAAO0C,SAAS0M,EAAM,UAEtBpP,OAAO0V,QAAQrC,EAAKnL,EAAIvJ,QAAQ4T,UAAUC,YAAY,WAClDxS,OAAOoO,YAAYgB,EAAM,UACzBpP,OAAOoO,YAAYgB,EAAM,QACzBpP,OAAOoO,YAAYiF,EAAK,QAExBrT,OAAOoO,YAAYgB,EAAM,SAEzBjG,eAAeC,QAAQlB,EAAInI,QAAS,2BAA4BqP,EACpE,GAdA,CAeJ,EA+DIoG,EAAkB,SAASpG,GAC3B,IACIuG,EADAC,EAAc5V,OAAO6V,QAAQ3N,EAAInI,QAAS,+BAG9C,GAAI6V,GAAeA,EAAY/T,OAAS,EACpC,IAAK,IAAIoL,EAAI,EAAGC,EAAM0I,EAAY/T,OAAQoL,EAAIC,EAAKD,IAC/C0I,EAAaC,EAAY3I,GAEY,cAAhC6F,EAAgB6C,IAA+BA,IAAevG,IAAsC,IAA9BA,EAAK9J,SAASqQ,KAAuD,IAA9BA,EAAWrQ,SAAS8J,IAClI8D,EAAeyC,EAI/B,EAGIrB,EAAiC,SAASlF,EAAMrF,GAChD,IAAI8E,EACA1O,EAAQ,KAaZ,OAXKiP,GAAQA,EAAKtQ,aAAa,gBAAkBiL,KAC7C8E,EAAOO,EAAKxQ,aAAa,gBAAkBmL,GAG5B,QAFf5J,EAAQH,OAAOqD,mBAAmBwL,KAEO,SAAlBF,OAAOxO,GAC1BA,GAAQ,EACU,OAAVA,GAAoC,UAAlBwO,OAAOxO,KACjCA,GAAQ,IAITA,CACX,GA7uB8C,IAArCH,OAAO8I,KAAK/I,GAASiJ,IAAI,QAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,QAE/BT,IAwvBRN,EAAI4N,MAAQ,SAAS/V,EAASb,GAC1B,OA/tBS,SAASa,EAASb,GAG3B,GAFAA,EAAEsE,kBAEmB,IAAjB0E,EAAIyK,SAAR,CAIA,IAAIvD,EAAOuE,EAAgB5T,GAE8B,UAApDuU,EAA+BlF,EAAM,cAIc,IAAnDkF,EAA+BlF,EAAM,UACtClB,EAAMkB,GAENrB,EAAQqB,GAXZ,CAaJ,CA6sBW2G,CAAOhW,EAASb,EAC3B,EAEAgJ,EAAI8N,KAAO,SAASjW,EAASb,GACzB,OA9sBQ,SAASa,EAASb,IACL,IAAjBgJ,EAAIyK,WAIoE,IAAvExJ,eAAeC,QAAQlB,EAAInI,QAAS,qBAAsBA,KAK/D5C,EAAOkX,gBAEPlL,eAAeC,QAAQlB,EAAInI,QAAS,uBAAwBA,GAChE,CAisBWkW,CAAMlW,EACjB,EAEAmI,EAAIgO,QAAU,SAASnW,EAASb,GAC5B,OAlsBW,SAASa,EAASb,GAC7B,IAAIkQ,EAAOuE,EAAgB5T,GACvBoP,EAAQgF,EAAsB/E,GAElC,GAAc,OAATA,GAA2C,aAA1B0D,EAAgB1D,KAClCnB,EAAMmB,GAGDD,EAAMtN,OAAS,GAChB,IAAK,IAAIoL,EAAI,EAAGC,EAAMiC,EAAMtN,OAAQoL,EAAIC,EAAKD,IACvB,OAAbkC,EAAMlC,IAA8C,aAA9B6F,EAAgB3D,EAAMlC,KAC7CgB,EAAMkI,KAAKlJ,GAK/B,CAkrBWmJ,CAASrW,EACpB,EAEAmI,EAAImO,UAAY,SAAStW,EAASb,GAC9B,OAnrBa,SAASa,EAASb,GAC/B,IAAIkQ,EAAOuE,EAAgB5T,IAEN,IAAjBmI,EAAIyK,UAIM,OAATvD,GAIoD,UAApDkF,EAA+BlF,EAAM,aAIF,MAAnCpP,OAAO8I,KAAKsG,GAAMnG,IAAI,WACvBqN,aAAatW,OAAO8I,KAAKsG,GAAMnG,IAAI,YACnCjJ,OAAO8I,KAAKsG,GAAM3K,OAAO,SACzBzE,OAAO8I,KAAKsG,GAAM3K,OAAO,YAG7ByJ,EAAMkB,GACV,CA6pBWmH,CAAWxW,EACtB,EAEAmI,EAAIsO,SAAW,SAASzW,EAASb,GAC7B,OA9pBY,SAASa,EAASb,GAC9B,IAAIkQ,EAAOuE,EAAgB5T,GAE3B,IAAqB,IAAjBmI,EAAIyK,UAIM,OAATvD,GAIoD,UAApDkF,EAA+BlF,EAAM,WAA1C,CAIA,IAAIqH,EAAUC,YAAW,WACmB,MAAnC1W,OAAO8I,KAAKsG,GAAMnG,IAAI,UACvBgF,EAAMmB,EAEd,GAAGlH,EAAIvJ,QAAQyT,SAASC,cAExBrS,OAAO8I,KAAKsG,GAAMrG,IAAI,QAAS,KAC/B/I,OAAO8I,KAAKsG,GAAMrG,IAAI,UAAW0N,EATjC,CAUJ,CAuoBWE,CAAU5W,EACrB,EAGAmI,EAAI0O,mBAAqB,SAASxH,GAC9B,OAAOkF,EAA+BlF,EAAM,UAChD,EAEAlH,EAAI2O,eAAiB,SAAS9W,GAC3B,OAAO+S,EAAgB/S,EAC1B,EAEAmI,EAAInD,KAAO,SAASqK,GAChB,OAAOlB,EAAMkB,EACjB,EAEAlH,EAAI/I,KAAO,SAASiQ,GAChB,OAAOnB,EAAMmB,EACjB,EAEAlH,EAAI9E,OAAS,SAASgM,GAClB,OAAOrB,EAAQqB,EACnB,EAEAlH,EAAI4O,MAAQ,SAAS1H,GACjB,OAAO+D,EAAO/D,EAClB,EAEAlH,EAAI0E,OAAS,WACT,OAAOgB,GACX,EAEA1F,EAAI6E,WAAa,WACb,OAAO7E,EAAInI,OACf,EAEAmI,EAAI6O,cAAgB,SAASf,GACzB,OAjKiB,SAASA,GAC1B,IAAI5G,EAAOuE,EAAgBqC,GACvBgB,EAAclD,EAAuB1E,GACrC6H,EAAgBjB,EAAKvT,QAAQ,aAE7ByU,EAAc,GAAGvX,MAAMC,KAAKsI,EAAInI,QAAQF,iBAAiB,sBACzDsX,EAAoB,GAAGxX,MAAMC,KAAKsI,EAAInI,QAAQF,iBAAiB,qCAQnE,GAN8B,cAA1BiT,EAAgB1D,GAChB4D,EAAe5D,GAEfA,EAAKrO,UAAUC,IAAI,QAGlBgW,GAAeA,EAAYnV,OAAS,EACrC,IAAK,IAAIoL,EAAI,EAAGC,EAAM8J,EAAYnV,OAAQoL,EAAIC,EAAKD,IAAK,CACpD,IAAI4G,EAAamD,EAAY/J,GAEO,cAAhC6F,EAAgBe,GAChBb,EAAea,GAEfA,EAAW9S,UAAUC,IAAI,OAEjC,CAeJ,GAZAkW,EAAYpX,KAAI,SAAUsX,GACtBA,EAAWrW,UAAU0D,OAAO,SAChC,IAEA0S,EAAkBrX,KAAI,SAAUuX,IACY,IAApCA,EAAiB/R,SAAS8J,KAC1BiI,EAAiBtW,UAAU0D,OAAO,QAClC4S,EAAiBtW,UAAU0D,OAAO,QAE1C,IAGIwS,GAAiBjY,UAAUsY,IAAK,CAChC,IAAIC,EAAQrP,EAAInI,QAAQ8E,cAAc,qBAAuBoS,EAAcrY,aAAa,MAAQ,MAC5F+I,EAAM,IAAI3I,UAAUsY,IAAIC,GAExB5P,GACAA,EAAI5C,MAEZ,CAEAiR,EAAKjV,UAAUC,IAAI,SACvB,CAiHWwW,CAAexB,EAC1B,EAEA9N,EAAIuP,mBAAqB,SAAStX,EAAO4J,EAAO,QAC5C,OAnHsB,SAAS5J,EAAO4J,EAAO,QAC7C,IAAIiM,EAAO9N,EAAInI,QAAQ8E,cAAc,KAAOkF,EAAO,KAAO5J,EAAQ,MAElE,GAAI6V,EACA,OAAOA,CAIf,CA2GW0B,CAAoBvX,EAAO4J,EACtC,EAEA7B,EAAIyP,mBAAqB,SAASvI,GAC9B,OAAOsE,EAAoBtE,EAC/B,EAEAlH,EAAI0P,qBAAuB,SAASxI,GAChC,OAtiBwB,SAASA,GACjC,OAAKlH,EAAIwK,eACExK,EAAIwK,eAEJgB,EAAoBtE,EAEnC,CAgiBWyI,CAAsBzI,EACjC,EAEAlH,EAAI4P,kBAAoB,SAAS1I,GAC7B,OAAOkE,EAAmBlE,EAC9B,EAEAlH,EAAI6P,sBAAwB,SAAS3I,GACjC,OAAO0E,EAAuB1E,EAClC,EAEAlH,EAAI8P,eAAiB,SAAS5I,GAC1B,OAAOyD,EAAgBzD,EAC3B,EAEAlH,EAAI+P,kBAAoB,SAAS7I,GAC7B,OA1kBqB,SAASA,GAC9B,OAAOpP,OAAOgU,QAAQ5E,EAAM,mBAAmBvN,OAAS,CAC5D,CAwkBWqW,CAAmB9I,EAC9B,EAEAlH,EAAIiQ,kBAAoB,WACpB,OAAOjQ,EAAIwK,cACf,EAEAxK,EAAIkQ,wBAA0B,SAAShJ,GACnC,OAvlB2B,SAASA,GACpC,OAA6D,IAAtDkF,EAA+BlF,EAAM,YAChD,CAqlBWiJ,CAAyBjJ,EACpC,EAEAlH,EAAI4B,QAAU,WAxGV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,OA0GpC,EAEAyD,EAAIoQ,QAAU,WACVpQ,EAAIyK,UAAW,CACnB,EAEAzK,EAAIqQ,OAAS,WACTrQ,EAAIyK,UAAW,CACnB,EAGAzK,EAAIsQ,eAAiB,SAASpJ,GAC1B,OAAOoG,EAAgBpG,EAC3B,EAGAlH,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,CAx4BA,CAy4BJ,EAGAhN,EAAOkN,YAAc,SAAStK,GAC1B,IAAI0Y,EAGJ,IAAK1Y,EACD,OAAO,KAIX,GAAKC,OAAO8I,KAAK/I,GAASiJ,IAAI,QAC1B,OAAOhJ,OAAO8I,KAAK/I,GAASkJ,IAAI,QAIpC,IAAKwP,EAAO1Y,EAAQ0C,QAAQ,WACnBzC,OAAO8I,KAAK2P,GAAMzP,IAAI,QACvB,OAAOhJ,OAAO8I,KAAK2P,GAAMxP,IAAI,QAKrC,GAAKjJ,OAAO0O,SAAS3O,EAAS,aAAe,CACzC,IAAIsT,EAAMtT,EAAQ0C,QAAQ,aAE1B,GAAKzC,OAAO8I,KAAKuK,GAAKrK,IAAI,QACtB,OAAOhJ,OAAO8I,KAAKuK,GAAKpK,IAAI,OAEpC,CAEA,OAAO,IACX,EAGA9L,EAAOkX,cAAgB,SAASnF,GAC5B,IAAIC,EAAQvR,SAASiC,iBAAiB,6CAEtC,GAAIsP,GAASA,EAAMtN,OAAS,EACxB,IAAK,IAAIoL,EAAI,EAAGC,EAAMiC,EAAMtN,OAAQoL,EAAIC,EAAKD,IAAK,CAC9C,IAAImC,EAAOD,EAAMlC,GACbwL,EAAOtb,EAAOkN,YAAY+E,GAEzBqJ,GAAsC,aAA9BA,EAAK5B,eAAezH,KACxBF,GACoD,IAAhDuJ,EAAKX,kBAAkB1I,GAAM9J,SAAS4J,KAA2C,IAAxBE,EAAK9J,SAAS4J,IAAoBE,IAASF,GACrGuJ,EAAKtZ,KAAKiQ,GAGdqJ,EAAKtZ,KAAKiQ,GAGtB,CAER,EAGAjS,EAAOub,gBAAkB,WACrB,IAAIvJ,EAAQvR,SAASiC,iBAAiB,6CAEtC,GAAIsP,GAASA,EAAMtN,OAAS,EACxB,IAAK,IAAIoL,EAAI,EAAGC,EAAMiC,EAAMtN,OAAQoL,EAAIC,EAAKD,IAAK,CAC9C,IAAImC,EAAOD,EAAMlC,GAEZjN,OAAO8I,KAAKsG,GAAMpG,IAAI,WACvBhJ,OAAO8I,KAAKsG,GAAMnG,IAAI,UAAU0P,aAExC,CAER,EAGAxb,EAAOyb,aAAe,WAElBhb,SAASE,iBAAiB,SAAS,SAASoB,GACxC,IAEIkQ,EACAiE,EACAwF,EAJA1J,EAAQvR,SAASiC,iBAAiB,+EAMtC,GAAKsP,GAASA,EAAMtN,OAAS,EACzB,IAAM,IAAIoL,EAAI,EAAGC,EAAMiC,EAAMtN,OAAQoL,EAAIC,EAAKD,IAI1C,GAHAmC,EAAOD,EAAMlC,IACb4L,EAAU1b,EAAOkN,YAAY+E,KAEmB,aAAjCyJ,EAAQhC,eAAezH,GAAsB,CAIxD,GAHOyJ,EAAQ9L,aACfsG,EAAMwF,EAAQf,kBAAkB1I,GAE3BA,IAASlQ,EAAEiG,QAAUiK,EAAK9J,SAASpG,EAAEiG,QACtC,SAGJ,GAAKkO,IAAQnU,EAAEiG,QAAUkO,EAAI/N,SAASpG,EAAEiG,QACpC,SAGJ0T,EAAQ1Z,KAAKiQ,EACjB,CAGZ,IAGApP,OAAOsD,GAAG1F,SAAS2F,KAAO,2HAA4H,SAAS,SAASrE,GACpK,IAAIuZ,EAAOtb,EAAOkN,YAAY3G,MAE9B,GAAc,OAAT+U,EACD,OAAOA,EAAK3C,MAAMpS,KAAMxE,EAEhC,IAGAc,OAAOsD,GAAG1F,SAAS2F,KAAO,sDAAuD,SAAS,SAASrE,GAC/F,IAAIuZ,EAAOtb,EAAOkN,YAAY3G,MAE9B,GAAc,OAAT+U,EACD,OAAOA,EAAKzC,KAAKtS,KAAMxE,EAE/B,IAGAc,OAAOsD,GAAG1F,SAAS2F,KAAO,gCAAiC,SAAS,SAASrE,GACzE,IAAIuZ,EAAOtb,EAAOkN,YAAY3G,MAE9B,GAAc,OAAT+U,EACD,OAAOA,EAAKvC,QAAQxS,KAAMxE,EAElC,IAGAc,OAAOsD,GAAG1F,SAAS2F,KAAO,oCAAqC,aAAa,SAASrE,GACjF,IAAIuZ,EAAOtb,EAAOkN,YAAY3G,MAE9B,GAAc,OAAT+U,GAA+C,aAA9BA,EAAK5B,eAAenT,MACtC,OAAO+U,EAAKpC,UAAU3S,KAAMxE,EAEpC,IAGAc,OAAOsD,GAAG1F,SAAS2F,KAAO,oCAAqC,YAAY,SAASrE,GAChF,IAAIuZ,EAAOtb,EAAOkN,YAAY3G,MAE9B,GAAc,OAAT+U,GAA+C,aAA9BA,EAAK5B,eAAenT,MACtC,OAAO+U,EAAKjC,SAAS9S,KAAMxE,EAEnC,IAGAnB,OAAOD,iBAAiB,UAAU,WAC9B,IAAI2a,EAGJzY,OAAO0P,SAFHC,WAEmB,WAEnB,IAAI/M,EAAWhF,SAASiC,iBAAiB,yBAEzC,GAAK+C,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,KAC5CwL,EAAOtb,EAAOkN,YAAYzH,EAASqK,MAE/BwL,EAAK7L,QAIrB,GAAG,IACP,GACJ,EAGAzP,EAAO2b,sBAAwB,SAAS3Y,EAAO4J,EAAO,QAElD,IAAInH,EAAWhF,SAASiC,iBAAiB,yBAEzC,GAAK+C,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAAK,CACjD,IAAIwL,EAAOtb,EAAOkN,YAAYzH,EAASqK,IAEvC,GAAIwL,EAAM,CACN,IAAIzC,EAAOyC,EAAKhB,mBAAmBtX,EAAO4J,GACtCiM,GACAyC,EAAK1B,cAAcf,EAE3B,CACJ,CAER,EAGA7Y,EAAO6P,gBAAkB,SAAS7F,EAAW,yBAEzC,IAAIvE,EAAWhF,SAASiC,iBAAiBsH,GACzC,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAC5C,IAAI9P,EAAOyF,EAASqK,GAGhC,EAGA9P,EAAOH,KAAO,WACVG,EAAO6P,kBACP7P,EAAOyb,cAOX,OAG+D,IAAnB3a,EAAOC,UAC/CD,EAAOC,QAAUf,2BC1mCrB,IAAIQ,EAAkB,SAASoC,EAASpB,GAIpC,IAAIuJ,EAAMxE,KAEV,GAAK3D,EAAL,CAKA,IAAIoI,EAAiB,CACjB4Q,UAAW,EACXC,gBAAgB,EAChBC,gBAAgB,EAChBC,YAAY,EACZC,WAAW,EACXC,oBAAqB,UAiBrB5Q,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAImR,MAAQ,EACZnR,EAAIoR,WAAa,EAGjBpR,EAAInI,QAAUA,EACdmI,EAAIwD,aAAexD,EAAInI,QAAQ8E,cAAc,eAC7CqD,EAAIqR,kBAAoBrR,EAAInI,QAAQ8E,cAAc,iDAClDqD,EAAIsR,iBAAmBtR,EAAInI,QAAQ8E,cAAc,gDAGjDqD,EAAInI,QAAQX,aAAa,yBAA0B,QAGnDyM,IAGA7L,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,iBAAkBb,EACnD,EAGI2D,EAAY,WACR3D,EAAIsR,kBACJtR,EAAIwD,aAAa5N,iBAAiB,SAAS,WACvC2b,GACJ,IAGAvR,EAAIqR,mBACJrR,EAAIqR,kBAAkBzb,iBAAiB,SAAS,WAC5C4b,GACJ,GAER,EAGID,EAAS,WACT,IAAIJ,EAAQ,EACRM,EAAaC,KAEM,IAAnBC,MACAR,GAAgBM,IAGe,IAA/BzR,EAAIvJ,QAAQqa,iBAAiD,IAAtBc,MACvCT,GAAgBM,IAGe,IAA/BzR,EAAIvJ,QAAQsa,iBAAiD,IAAtBc,MACvCV,GAAgBM,IAGW,IAA3BzR,EAAIvJ,QAAQua,aAAyC,IAAlBc,MACnCX,GAAgBM,IAGU,IAA1BzR,EAAIvJ,QAAQwa,YAAuC,IAAjBc,MAClCZ,GAAgBM,GAGpBzR,EAAImR,MAAQA,EAEZa,GACJ,EAEIL,EAAe,WACf,OAAO3R,EAAIwD,aAAavL,MAAM0B,QAAUqG,EAAIvJ,QAAQoa,SACxD,EAEIe,EAAkB,WAClB,MAAO,QAAQzY,KAAK6G,EAAIwD,aAAavL,MACzC,EAEI4Z,EAAkB,WAClB,MAAO,QAAQ1Y,KAAK6G,EAAIwD,aAAavL,MACzC,EAEI6Z,EAAc,WACd,MAAO,QAAQ3Y,KAAK6G,EAAIwD,aAAavL,MACzC,EAEI8Z,EAAa,WACb,MAAO,0CAA0C5Y,KAAK6G,EAAIwD,aAAavL,MAC3E,EAEIyZ,EAAiB,WACjB,IAAIO,EAAQ,EAoBZ,OAlBmC,IAA/BjS,EAAIvJ,QAAQqa,gBACZmB,KAG+B,IAA/BjS,EAAIvJ,QAAQsa,gBACZkB,KAG2B,IAA3BjS,EAAIvJ,QAAQua,YACZiB,KAG0B,IAA1BjS,EAAIvJ,QAAQwa,WACZgB,IAGJjS,EAAIoR,WAAaa,EAEV,IAAMjS,EAAIoR,UACrB,EAEIY,EAAa,WACb,IAAI/K,EAAQ,GAAGxP,MAAMC,KAAKsI,EAAIsR,iBAAiB3Z,iBAAiB,QAC5Dua,EAAQjL,EAAMtN,OACduO,EAAQ,EACRuJ,EAAaC,IACbP,EAAQgB,IAEZlL,EAAMrP,KAAI,SAAUsP,GAChBgB,IAEMuJ,EAAavJ,GAASlI,EAAIoR,WAAac,IAAWf,EACpDjK,EAAKrO,UAAUC,IAAI,UAEnBoO,EAAKrO,UAAU0D,OAAO,SAE9B,GACJ,EAEIiV,EAAc,WACd,IAAIY,EAAcpS,EAAIqR,kBAAkB1U,cAAc,2BAClD0V,EAAarS,EAAIqR,kBAAkB1U,cAAc,qBAEO,aAAxDqD,EAAIwD,aAAa9M,aAAa,QAAQ2C,cACtC2G,EAAIwD,aAAatM,aAAa,OAAQ,QAEtC8I,EAAIwD,aAAatM,aAAa,OAAQ,YAG1Ckb,EAAYvZ,UAAUC,IAAI,UAC1BuZ,EAAWxZ,UAAU0D,OAAO,UAE5ByD,EAAIwD,aAAahE,OACrB,EASI2S,EAAY,WACb,OAAOnS,EAAImR,KACd,GAlKwD,IAA/CrZ,OAAO8I,KAAK/I,GAASiJ,IAAI,kBAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,kBAE/BT,IA6KRN,EAAIlD,MAAQ,WACR,OAAOyU,GACX,EAEAvR,EAAIsS,SAAW,WACX,OAAOH,GACX,EAEAnS,EAAI4O,MAAQ,WACR,OA/BA5O,EAAImR,MAAQ,OAEZa,GA8BJ,EAEAhS,EAAI4B,QAAU,WAvBV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,iBAyBpC,CAhNA,CAiNJ,EAGA9G,EAAgB0M,YAAc,SAAStK,GACnC,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,kBACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,kBAEzB,IAEf,EAGAtL,EAAgBqP,gBAAkB,SAAS7F,EAAW,4BAElD,IAAIvE,EAAWhF,SAAS2F,KAAK1D,iBAAiBsH,GAE9C,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAE5C,IAAItP,EAAgBiF,EAASqK,GAGzC,EAGAtP,EAAgBX,KAAO,WACnBW,EAAgBqP,iBACpB,OAG+D,IAAnB/O,EAAOC,UAC/CD,EAAOC,QAAUP,0BCzPrB,IAAI8c,GAA8B,EAG9Brd,EAAW,SAAS2C,EAASpB,GAI7B,IAAIuJ,EAAMxE,KAEV,GAAK3D,EAAL,CAKA,IAAIoI,EAAiB,CACjBuS,WAAW,GAeXlS,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GAGpDuJ,EAAInI,QAAUA,EACdmI,EAAIyS,GAAKzS,EAAInI,QAAQnB,aAAa,MAGlCsJ,EAAInI,QAAQX,aAAa,iBAAkB,QAG3CwO,IAGA5N,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,SAAUb,EAC3C,EA+BI0S,EAAuB,SAASC,GAChC,OAAOjd,SAAS2F,KAAKzE,aAAa,gBAAkBlB,SAAS2F,KAAK3E,aAAa,gBAAkB,IAAM,EAC3G,EAkBIkc,EAAiB,WACjB,IAAIC,EAAYH,IAChBI,aAAaC,QAAQF,EAAY7S,EAAIyS,GAAK,KAAMzS,EAAInI,QAAQmb,UAChE,EAEItN,EAAU,WAtDK,IACXuN,EACAhK,GAsD4B,IAA3BxF,EAAW,cAAgF,IAAxDzD,EAAInI,QAAQjB,aAAa,4BAvD7Dqc,EAAaC,IAID,QAHZjK,EAASkK,MAGWlK,EAAOtP,OAAS,EACpC7B,OAAOwJ,IAAItB,EAAInI,QAASob,EAAYhK,GAEpCnR,OAAOwJ,IAAItB,EAAInI,QAASob,EAAY,IAkDpCG,KAxB8B,IAA7B3P,EAAW,eAA0BzD,EAAIyS,GAC1CzS,EAAInI,QAAQjC,iBAAiB,SAAUgd,GAEvC5S,EAAInI,QAAQN,oBAAoB,SAAUqb,GAzBhC,WACd,IAAIC,EAAYH,IAEhB,IAAkC,IAA7BjP,EAAW,eAA0BzD,EAAIyS,IACrCK,aAAaO,QAAQR,EAAY7S,EAAIyS,GAAK,MAAQ,CACnD,IAAIa,EAAMhb,SAASwa,aAAaO,QAAQR,EAAY7S,EAAIyS,GAAK,OAExDa,EAAM,GACPtT,EAAInI,QAAQ0b,OAAO,CACfjN,IAAKgN,EACLE,SAAU,WAGtB,CAER,CAiCQC,KAdJ3b,OAAOwJ,IAAItB,EAAInI,QAASqb,IAAkB,IAJ1ClT,EAAInI,QAAQN,oBAAoB,SAAUqb,GAuB9C,EAEIQ,EAAsB,WACtB,IAAIM,EAAUjQ,EAAW,WAGzB,GAAiB,OAAZiQ,EAAmB,CACpB,IAAIhZ,EAAWhF,SAASiC,iBAAiB+b,GAEzC,GAAKhZ,GAA+B,GAAnBA,EAASf,OAAc,CACpC,IAAIga,EAAWjZ,EAAS,GACpBkZ,EAAWlZ,EAAS,GACpBmZ,EAAOC,EAAkBF,GAAYE,EAAkBH,GAE3D,GAAIE,EAAO,EAAG,CACV,IAAI5K,EAAS3Q,SAASR,OAAOwJ,IAAItB,EAAInI,QAASqb,MAAqBW,EAEnE/b,OAAOwJ,IAAItB,EAAInI,QAASqb,IAAkBzM,OAAOwC,GAAU,KAC/D,CACJ,CACJ,CACJ,EAEIkK,EAAa,WACb,IAAIlK,EAASxF,EAAWyP,KAExB,OAAKjK,aAAkB8K,SACZ9K,EAAOvR,OACK,OAAXuR,GAAqC,iBAAXA,GAAgD,SAAzBA,EAAO5P,cACzD2a,IAEA/K,CAEf,EAEI+K,EAAiB,WACjB,IA2BQtZ,EA3BJuO,EAASnR,OAAOmc,cAAchL,OAC9BiL,EAAezQ,EAAW,gBAC1B0Q,EAAW1Q,EAAW,YACtBzI,EAASyI,EAAW,UAQxB,IALAwF,GAAkBmL,EAAmBpU,EAAInI,SAKnB,OAAjBqc,MACGxZ,EAAWhF,SAASiC,iBAAiBuc,KAExBxZ,EAASf,OAAS,GAC/B,IAAM,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,KACR,IAAhCjN,OAAOE,QAAQ0C,EAASqK,MAI7BkE,GAAkB6K,EAAkBpZ,EAASqK,KAMzD,GAAkB,OAAboP,KACGzZ,EAAWhF,SAASiC,iBAAiBwc,KACxBzZ,EAASf,OAAS,GAC/B,IAAUoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,KACR,IAAhCjN,OAAOE,QAAQ0C,EAASqK,MAI7BkE,GAAkBmL,EAAmB1Z,EAASqK,KAU1D,OAJgB,OAAX/J,GAAqC,iBAAXA,IAC3BiO,GAAkB3Q,SAAS0C,IAGxByL,OAAOwC,GAAU,IAC5B,EAEI6K,EAAoB,SAASjc,GAC7B,IAAIoR,EAAS,EAgBb,OAdgB,OAAZpR,IACAoR,GAAkB3Q,SAASR,OAAOwJ,IAAIzJ,EAAS,WAC/CoR,GAAkB3Q,SAASR,OAAOwJ,IAAIzJ,EAAS,eAC/CoR,GAAkB3Q,SAASR,OAAOwJ,IAAIzJ,EAAS,kBAE3CC,OAAOwJ,IAAIzJ,EAAS,gBACpBoR,GAAkB3Q,SAASR,OAAOwJ,IAAIzJ,EAAS,gBAG/CC,OAAOwJ,IAAIzJ,EAAS,mBACpBoR,GAAkB3Q,SAASR,OAAOwJ,IAAIzJ,EAAS,oBAIhDoR,CACX,EAEImL,EAAqB,SAASvc,GAC9B,IAAIwc,EAAU,EAiBd,OAfgB,OAAZxc,IACAwc,GAAoB/b,SAASR,OAAOwJ,IAAIzJ,EAAS,eACjDwc,GAAoB/b,SAASR,OAAOwJ,IAAIzJ,EAAS,kBACjDwc,GAAoB/b,SAASR,OAAOwJ,IAAIzJ,EAAS,gBACjDwc,GAAoB/b,SAASR,OAAOwJ,IAAIzJ,EAAS,mBAE7CC,OAAOwJ,IAAIzJ,EAAS,gBACpBwc,GAAoB/b,SAASR,OAAOwJ,IAAIzJ,EAAS,gBAGjDC,OAAOwJ,IAAIzJ,EAAS,mBACpBwc,GAAoB/b,SAASR,OAAOwJ,IAAIzJ,EAAS,oBAIlDwc,CACX,EAEI5Q,EAAa,SAAS5B,GACtB,IAA4D,IAAvD7B,EAAInI,QAAQjB,aAAa,kBAAoBiL,GAAiB,CAC/D,IAAI8E,EAAO3G,EAAInI,QAAQnB,aAAa,kBAAoBmL,GAEpD5J,EAAQH,OAAOqD,mBAAmBwL,GAQtC,OANe,OAAV1O,GAAoC,SAAlBwO,OAAOxO,GAC1BA,GAAQ,EACU,OAAVA,GAAoC,UAAlBwO,OAAOxO,KACjCA,GAAQ,GAGLA,CACX,CACI,IAAImB,EAAatB,OAAO8O,aAAa/E,GAErC,OAAK7B,EAAIvJ,QAAQ2C,GACNtB,OAAOqD,mBAAmB6E,EAAIvJ,QAAQ2C,IAEtC,IAGnB,EAEI8Z,EAAiB,WACjB,OAAIzP,EAAW,UACJ,SACLA,EAAW,cACN,aACLA,EAAW,cACN,kBADT,CAGN,EAtPS3L,OAAO8I,KAAK/I,GAASiJ,IAAI,UAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,UAE/BT,IAgQRN,EAAI0E,OAAS,WACT,OAAOgB,GACX,EAEA1F,EAAIsU,UAAY,WACZ,OAAOnB,GACX,EAEAnT,EAAI6E,WAAa,WACb,OAAO7E,EAAInI,OACf,EAEAmI,EAAI4B,QAAU,WAtBV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,SAwBpC,CA7RA,CA8RJ,EAGArH,EAASiN,YAAc,SAAStK,GAC5B,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,UACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,UAEzB,IAEf,EAGA7L,EAAS4P,gBAAkB,SAAS7F,EAAW,2BAE3C,IAAIvE,EAAWhF,SAAS2F,KAAK1D,iBAAiBsH,GAE9C,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAC5C,IAAI7P,EAASwF,EAASqK,GAGlC,EAGA7P,EAASqS,aAAe,WACpB1R,OAAOD,iBAAiB,UAAU,WAG9BkC,OAAO0P,SAFHC,WAEmB,WAEnB,IAAI/M,EAAWhF,SAAS2F,KAAK1D,iBAAiB,2BAE9C,GAAK+C,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAAK,CACjD,IAAIwO,EAASre,EAASiN,YAAYzH,EAASqK,IACvCwO,GACAA,EAAO7O,QAEf,CAER,GAAG,IACP,GACJ,EAGAxP,EAASJ,KAAO,WACZI,EAAS4P,mBAE2B,IAAhCyN,IACArd,EAASqS,eAETgL,GAA8B,EAEtC,OAG+D,IAAnBxc,EAAOC,UAC/CD,EAAOC,QAAUd,2BCjWrB,IAAII,EAAc,SAASuC,EAASpB,GAIhC,IAAIuJ,EAAMxE,KAEV,GAAK,MAAO3D,EAAZ,CAKA,IAAIoI,EAAiB,CACjBjF,OAAQ,IACRF,MAAO,KAePwF,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIqF,IAAMvN,OAAOwN,YAAY,aAC7BtF,EAAInI,QAAUA,EAGdmI,EAAInI,QAAQX,aAAa,oBAAqB,QAG9CyM,IAGA7L,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,YAAab,EAC9C,EAEI2D,EAAY,WAGZ9N,OAAOD,iBAAiB,UAAU,WAC9BkC,OAAO0P,SAHPC,WAGuB,WACnB8M,GACJ,GAAG,IACP,IAEAzc,OAAO8L,SAAS5D,EAAInI,QAAS,SAAS,SAASb,GAC3CA,EAAEsE,iBAEFoN,GACJ,GACJ,EAEI6L,EAAU,WACV,IAAIvZ,EAAS1C,SAASmL,EAAW,WAEvB3L,OAAO0c,eAENxZ,GACkD,IAApDtF,SAAS2F,KAAKzE,aAAa,sBAC5BlB,SAAS2F,KAAKnE,aAAa,oBAAqB,OAGK,IAApDxB,SAAS2F,KAAKzE,aAAa,sBAC5BlB,SAAS2F,KAAKyE,gBAAgB,oBAG1C,EAEI4I,EAAM,WACMpQ,SAASmL,EAAW,UAEhC5N,OAAO4e,SAAS,CAACnO,IAAK,EAAGkN,SAAU,UAEvC,EAEI/P,EAAa,SAAS5B,GACtB,IAA+D,IAA1D7B,EAAInI,QAAQjB,aAAa,qBAAuBiL,GAAiB,CAClE,IAAI8E,EAAO3G,EAAInI,QAAQnB,aAAa,qBAAuBmL,GACvD5J,EAAQH,OAAOqD,mBAAmBwL,GAQtC,OANe,OAAV1O,GAAoC,SAAlBwO,OAAOxO,GAC1BA,GAAQ,EACU,OAAVA,GAAoC,UAAlBwO,OAAOxO,KACjCA,GAAQ,GAGLA,CACX,CACI,IAAImB,EAAatB,OAAO8O,aAAa/E,GAErC,OAAK7B,EAAIvJ,QAAQ2C,GACNtB,OAAOqD,mBAAmB6E,EAAIvJ,QAAQ2C,IAEtC,IAGnB,EAnFQtB,OAAO8I,KAAK/I,GAASiJ,IAAI,aACzBd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,aAE/BT,IA8FRN,EAAI0U,GAAK,WACL,OAAOhM,GACX,EAEA1I,EAAI6E,WAAa,WACb,OAAO7E,EAAInI,OACf,EAEAmI,EAAI4B,QAAU,WAnBV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,YAqBpC,CAxHA,CAyHJ,EAGAjH,EAAY6M,YAAc,SAAStK,GAC/B,OAAIA,GAAWC,OAAO8I,KAAK/I,GAASiJ,IAAI,aAC7BhJ,OAAO8I,KAAK/I,GAASkJ,IAAI,aAEzB,IAEf,EAGAzL,EAAYwP,gBAAkB,SAAS7F,EAAW,8BAE9C,IAAIvE,EAAWhF,SAAS2F,KAAK1D,iBAAiBsH,GAE9C,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAC5C,IAAIzP,EAAYoF,EAASqK,GAGrC,EAGAzP,EAAYR,KAAO,WACfQ,EAAYwP,iBAChB,OAG+D,IAAnB/O,EAAOC,UAC/CD,EAAOC,QAAUV,2BC/JrB,IAAIqf,EAAW,SAAS9c,EAASpB,GAI7B,IAAIuJ,EAAMxE,KAEV,GAAK3D,EAAL,CAKA,IAAIoI,EAAiB,CACjB4Q,UAAW,EACX+D,UAAU,EACVC,OAAO,EACPC,OAAQ,OACRC,WAAY,KACZC,aAAa,GAiBb1U,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIiV,YAAa,EAGjBjV,EAAInI,QAAUA,EACdmI,EAAIkV,eAAiBC,EAAY,WACjCnV,EAAIoV,YAAcD,EAAY,QAC9BnV,EAAIwD,aAAe2R,EAAY,SAC/BnV,EAAIqV,eAAiBF,EAAY,WACjCnV,EAAIsV,aAAeH,EAAY,SAC/BnV,EAAIyF,cAAgB0P,EAAY,UAChCnV,EAAIuV,cAAgBJ,EAAY,UAChCnV,EAAIwV,eAAiBL,EAAY,WAEjCnV,EAAIyV,eAAiBN,EAAY,WACjCnV,EAAI0V,kBAAoBP,EAAY,cACpCnV,EAAI2V,aAAeR,EAAY,SAG/BnV,EAAInI,QAAQX,aAAa,iBAAkB,QAG3C8I,EAAI8U,OAASrR,EAAW,UAGJ,SAAfzD,EAAI8U,OACL9U,EAAI4V,WAAa,IAAI3gB,OAAO+K,EAAIkV,gBAEhClV,EAAI4V,WAAa,KAIrBlQ,IAGA/B,IAGA7L,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,SAAUb,EAC3C,EAGI2D,EAAY,WAEZ3D,EAAIwD,aAAa5N,iBAAiB,QAASigB,GAG3C7V,EAAIwD,aAAa5N,iBAAiB,OAAQkgB,IAGV,IAA3BrS,EAAW,aACZzD,EAAIwD,aAAa5N,iBAAiB,QAASmgB,GAI1C/V,EAAIuV,eACLvV,EAAIuV,cAAc3f,iBAAiB,QAASogB,IAInB,IAAxBvS,EAAW,UACZzD,EAAIwD,aAAa5N,iBAAiB,WAAYqgB,GAI7CjW,EAAIsV,cACLtV,EAAIsV,aAAa1f,iBAAiB,QAASsgB,GAI1ClW,EAAI4V,aAEA5V,EAAIyF,gBACLzF,EAAIyF,cAAc7P,iBAAiB,QAASoQ,GAE5ChG,EAAI4V,WAAWxa,GAAG,yBAAyB,SAAS8L,GAC5CpP,OAAOE,QAAQgI,EAAIyF,iBACnBzF,EAAIyF,cAAc5M,UAAUC,IAAI,UAChCkH,EAAIyF,cAAc5M,UAAUC,IAAI,QAExC,IAEAkH,EAAI4V,WAAWxa,GAAG,yBAAyB,SAAS8L,GAC5CpP,OAAOE,QAAQgI,EAAIyF,iBACnBzF,EAAIyF,cAAc5M,UAAU0D,OAAO,UACnCyD,EAAIyF,cAAc5M,UAAU0D,OAAO,QAE3C,KAGJyD,EAAI4V,WAAWxa,GAAG,0BAA0B,WACxC4E,EAAIwD,aAAahE,OACrB,KAIJ3J,OAAOD,iBAAiB,UAAU,WAG9BkC,OAAO0P,SAFHC,WAEmB,WACnB/B,GACJ,GAAG,IACP,GACJ,EAGImQ,EAAS,WACT7V,EAAInI,QAAQgB,UAAUC,IAAI,WAEW,IAAhC2K,EAAW,kBAA6BzD,EAAIwD,aAAavL,MAAM0B,QAAUkX,YAC1E7K,GAER,EAGI8P,EAAQ,WACR9V,EAAInI,QAAQgB,UAAU0D,OAAO,QACjC,EAGI0Z,EAAS,SAASjf,GAGP,KAFDA,EAAEmf,UAAYnf,EAAEof,SAAW,KAGjCpf,EAAEsE,iBAEF0a,IAER,EAGID,EAAS,WACT,GAAKtS,EAAW,cAAiB,CAC7B,IAAIoN,EAAYvY,SAASmL,EAAW,eAE/BzD,EAAIwD,aAAavL,MAAM0B,QAAUkX,EAClCmF,IAC0C,IAAlChW,EAAIwD,aAAavL,MAAM0B,QAC/Buc,GAER,CACJ,EAGIF,EAAU,YACa,IAAnBhW,EAAIiV,aAEAjV,EAAIqV,gBACJrV,EAAIqV,eAAexc,UAAU0D,OAAO,UAIpCyD,EAAIsV,cACJtV,EAAIsV,aAAazc,UAAUC,IAAI,UAI/BkH,EAAIwV,gBAAkBxV,EAAIoV,YAAYhY,SAAS4C,EAAIwV,iBACnDxV,EAAIwV,eAAe3c,UAAUC,IAAI,UAIrCkH,EAAIwD,aAAahE,QAEjBQ,EAAIiV,YAAa,EACjBhU,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,GAEjE,EA0BIkW,EAAS,YAC4D,IAAhEjV,eAAeC,QAAQlB,EAAInI,QAAS,kBAAmBmI,KAK5DA,EAAIwD,aAAavL,MAAQ,GACzB+H,EAAIwD,aAAahE,QAGbQ,EAAIsV,cACJtV,EAAIsV,aAAazc,UAAUC,IAAI,UAI/BkH,EAAIwV,gBAAkBxV,EAAIoV,YAAYhY,SAAS4C,EAAIwV,iBACnDxV,EAAIwV,eAAe3c,UAAU0D,OAAO,WAIH,IAAhCkH,EAAW,kBACZsC,IAGJ9E,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,GAC7D,EAGI0F,EAAU,WAEV,GAAmB,SAAf1F,EAAI8U,OAAmB,CACvB,IAAIuB,EAAqBC,IAEG,OAAvBD,IAAgF,IAAjDrW,EAAIkV,eAAe9X,SAAS4C,EAAIoV,cAChEpV,EAAIkV,eAAeqB,QAAQvW,EAAIoV,aAC/BpV,EAAIoV,YAAYvc,UAAU0D,OAAO,WACF,QAAvB8Z,IAAiF,IAAjDrW,EAAIkV,eAAe9X,SAAS4C,EAAIoV,eACxEpV,EAAInI,QAAQ0e,QAAQvW,EAAIoV,aACxBpV,EAAIoV,YAAYvc,UAAUC,IAAI,UAEtC,CACJ,EAGIkN,EAAQ,WACHhG,EAAI4V,aACLlQ,IAEA1F,EAAI4V,WAAW/Y,KAAKmD,EAAInI,SAEhC,EAGIkO,EAAQ,WACH/F,EAAI4V,aACLlQ,IAEA1F,EAAI4V,WAAW3e,KAAK+I,EAAInI,SAEhC,EAGI4L,EAAa,SAAS5B,GACtB,IAA4D,IAAvD7B,EAAInI,QAAQjB,aAAa,kBAAoBiL,GAAiB,CAC/D,IAAI8E,EAAO3G,EAAInI,QAAQnB,aAAa,kBAAoBmL,GACpD5J,EAAQH,OAAOqD,mBAAmBwL,GAQtC,OANe,OAAV1O,GAAoC,SAAlBwO,OAAOxO,GAC1BA,GAAQ,EACU,OAAVA,GAAoC,UAAlBwO,OAAOxO,KACjCA,GAAQ,GAGLA,CACX,CACI,IAAImB,EAAatB,OAAO8O,aAAa/E,GAErC,OAAK7B,EAAIvJ,QAAQ2C,GACNtB,OAAOqD,mBAAmB6E,EAAIvJ,QAAQ2C,IAEtC,IAGnB,EAGI+b,EAAc,SAAStT,GACvB,OAAO7B,EAAInI,QAAQ8E,cAAc,4BAA8BkF,EAAO,KAC1E,EAGIyU,EAAyB,WACzB,IAAIvB,EAAatR,EAAW,cACxB2C,EAAQtO,OAAOmc,cAAc7N,MAEjC,IAAK2O,EACD,OAAO,KAGX,IAAIyB,EAAa1e,OAAO2e,cAAc1B,GAMtC,OAJKyB,IACDA,EAAale,SAASyc,IAGtB3O,EAAQoQ,EACD,KAEA,KAEf,GAzTgD,IAAvC1e,OAAO8I,KAAK/I,GAASiJ,IAAI,UAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,UAE/BT,IAoURN,EAAInD,KAAO,WACP,OAAOmJ,GACX,EAEAhG,EAAI/I,KAAO,WACP,OAAO8O,GACX,EAEA/F,EAAI0E,OAAS,WACT,OAAOgB,GACX,EAEA1F,EAAI0W,OAAS,WACT,OAAOV,GACX,EAEAhW,EAAI2W,SAAW,WACX,OAnKI3W,EAAIqV,gBACJrV,EAAIqV,eAAexc,UAAUC,IAAI,UAIjCkH,EAAIsV,cACJtV,EAAIsV,aAAazc,UAAU0D,OAAO,UAGC,IAAlCyD,EAAIwD,aAAavL,MAAM0B,QACxBuc,IAIJlW,EAAIwD,aAAahE,QAEjBwG,SAEAhG,EAAIiV,YAAa,EAkJrB,EAEAjV,EAAI4W,MAAQ,WACR,OAAOV,GACX,EAEAlW,EAAI6W,aAAe,WACf,OAAO7W,EAAIiV,UACf,EAEAjV,EAAI8W,SAAW,WACX,OAAO9W,EAAIwD,aAAavL,KAC5B,EAEA+H,EAAI+W,QAAU,WACV,OAAO/W,EAAI4V,UACf,EAEA5V,EAAIgX,eAAiB,WACjB,OAAOhX,EAAIoV,WACf,EAEApV,EAAIiK,gBAAkB,WAClB,OAAOjK,EAAIwD,YACf,EAEAxD,EAAIiX,kBAAoB,WACpB,OAAOjX,EAAIkV,cACf,EAEAlV,EAAI6E,WAAa,WACb,OAAO7E,EAAInI,OACf,EAEAmI,EAAI4B,QAAU,WA/DV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,SAiEpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,CA5ZA,CA6ZJ,EAGA0S,EAASxS,YAAc,SAAStK,GAC5B,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,UACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,UAEzB,IAEf,OAG+D,IAAnBhL,EAAOC,UAC/CD,EAAOC,QAAU2e,2BClbrB,IAAIuC,EAAY,SAASrf,EAASpB,GAI9B,IAAIuJ,EAAMxE,KAEV,GAAK,MAAO3D,EAAZ,CAKA,IAAIoI,EAAiB,CACjBkX,WAAY,EACZC,WAAW,EACXC,eAAgB,OAChBC,mBAAoB,wDACpBC,uBAAwB,wDAexBjX,EAAQ,WACRN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIqF,IAAMvN,OAAOwN,YAAY,WAE7BtF,EAAInI,QAAUA,EAGdmI,EAAInI,QAAQX,aAAa,kBAAmB,QAG5C8I,EAAIwX,MAAQ1f,OAAO6V,QAAQ3N,EAAInI,QAAS,mCACxCmI,EAAIyX,QAAU3f,OAAOqR,KAAKnJ,EAAInI,QAAS,mCACvCmI,EAAI0X,YAAc5f,OAAOqR,KAAKnJ,EAAInI,QAAS,uCAC3CmI,EAAI2X,UAAY7f,OAAOqR,KAAKnJ,EAAInI,QAAS,qCAGzCmI,EAAI4X,iBAAmB5X,EAAIwX,MAAM7d,OACjCqG,EAAI6X,gBAAkB,EACtB7X,EAAI8X,iBAAmB,EACvB9X,EAAI+X,iBAAmB,EAGlB/X,EAAIvJ,QAAQ0gB,WAAa,GAC1Ba,EAAMhY,EAAIvJ,QAAQ0gB,YAItBnX,EAAIiY,aAAe,SAASjhB,GACxBA,EAAEsE,iBAEF2F,eAAeC,QAAQlB,EAAInI,QAAS,kBAAmBmI,EAC3D,EAEAA,EAAIkY,iBAAmB,SAASlhB,GAC5BA,EAAEsE,iBAEF2F,eAAeC,QAAQlB,EAAInI,QAAS,sBAAuBmI,EAC/D,EAEAA,EAAImY,aAAe,SAASnhB,GAGxB,GAFAA,EAAEsE,iBAEG0E,EAAIwX,OAASxX,EAAIwX,MAAM7d,OAAS,EACjC,IAAK,IAAIoL,EAAI,EAAGC,EAAMhF,EAAIwX,MAAM7d,OAAQoL,EAAIC,EAAKD,IAC7C,GAAK/E,EAAIwX,MAAMzS,KAAOvJ,KAKlB,OAJAwE,EAAI+X,iBAAmBhT,EAAI,OAE3B9D,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,EAMxE,EAGAlI,OAAO8L,SAAS5D,EAAIyX,QAAS,QAASzX,EAAIiY,cAE1CngB,OAAO8L,SAAS5D,EAAI0X,YAAa,QAAS1X,EAAIkY,kBAE9ClY,EAAIoY,eAAiBtgB,OAAOsD,GAAG4E,EAAInI,QAAS,kCAAmC,QAASmI,EAAImY,cAG5FrgB,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,UAAWb,EAC5C,EAEIgY,EAAQ,SAAS9P,GAKjB,GAHAjH,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,KAGpDkI,IAAUlI,EAAI8X,kBAAoB5P,EAAQlI,EAAI4X,kBAAoB1P,EAAQ,GAiB/E,OAZAA,EAAQ5P,SAAS4P,GAGjBlI,EAAI6X,gBAAkB7X,EAAI8X,iBAC1B9X,EAAI8X,iBAAmB5P,EAGvBmQ,IAGApX,eAAeC,QAAQlB,EAAInI,QAAS,qBAAsBmI,GAEnDA,CACX,EAkBIqY,EAAa,WACb,IAAIC,EAAQ,GAGRA,EADCC,IACO,OACAC,IACA,QAEA,UAIZ1gB,OAAOoO,YAAYlG,EAAInI,QAAS,QAChCC,OAAOoO,YAAYlG,EAAInI,QAAS,SAChCC,OAAOoO,YAAYlG,EAAInI,QAAS,WAEhCC,OAAO0C,SAASwF,EAAInI,QAASygB,GAG7B,IAAI5d,EAAW5C,OAAO6V,QAAQ3N,EAAInI,QAAS,0GAE3C,GAAK6C,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAAK,CACjD,IAAIlN,EAAU6C,EAASqK,GACnBmD,EAAQpQ,OAAOoQ,MAAMrQ,GAAW,EAMpC,GAJAC,OAAOoO,YAAYrO,EAAS,WAC5BC,OAAOoO,YAAYrO,EAAS,aAC5BC,OAAOoO,YAAYrO,EAAS,WAEvBqQ,GAASlI,EAAI8X,kBAGd,GAFAhgB,OAAO0C,SAAS3C,EAAS,YAEM,IAA1BmI,EAAIvJ,QAAQ2gB,WAA0E,WAAnDvf,EAAQnB,aAAa,2BAA0C,CACnGoB,OAAOwJ,IAAIzJ,EAAS,oBAAqBmI,EAAIvJ,QAAQ4gB,gBAErD,IAAID,EAAuD,aAA3CqB,EAAkBzY,EAAI6X,iBAAmC7X,EAAIvJ,QAAQ8gB,uBAAyBvX,EAAIvJ,QAAQ6gB,mBAC1Hxf,OAAO4gB,aAAa7gB,EAASuf,EACjC,OAEKlP,EAAQlI,EAAI8X,iBACbhgB,OAAO0C,SAAS3C,EAAS,aAEzBC,OAAO0C,SAAS3C,EAAS,UAGrC,CAER,EAEI0gB,EAAc,WACd,OAAOvY,EAAI8X,mBAAqB9X,EAAI4X,gBACxC,EAEIY,EAAe,WACf,OAAgC,IAAzBxY,EAAI8X,gBACf,EAMIa,EAAoB,WACpB,OAAK3Y,EAAI4X,kBAAsB5X,EAAI8X,iBAAmB,EAC3C9X,EAAI8X,iBAAmB,EAEvB9X,EAAI4X,gBAEnB,EAEIgB,EAAwB,WACxB,OAAO5Y,EAAI8X,iBAAmB,EAAM,EACzB9X,EAAI8X,iBAAmB,EAEvB,CAEf,EAEIe,EAAqB,WACrB,OAAO,CACX,EAEIC,EAAoB,WACpB,OAAO9Y,EAAI4X,gBACf,EAMIa,EAAoB,SAASvQ,GAC7B,OAAKA,EAAQlI,EAAI8X,iBACN,OAEA,UAEf,GAlNiD,IAAxChgB,OAAO8I,KAAK/I,GAASiJ,IAAI,WAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,WAE/BT,IA8ORN,EAAI6E,WAAa,SAASqD,GACtB,OAAOlI,EAAInI,OACf,EAEAmI,EAAI+Y,KAAO,SAAS7Q,GAChB,OAAO8P,EAAM9P,EACjB,EAEAlI,EAAIgZ,WAAa,WACb,OAnJOhB,EAAOY,IAoJlB,EAEA5Y,EAAIiZ,OAAS,WACT,OA3JOjB,EAAOW,IA4JlB,EAEA3Y,EAAIkZ,QAAU,WACV,OAnJOlB,EAAOa,IAoJlB,EAEA7Y,EAAImZ,OAAS,WACT,OA3JOnB,EAAOc,IA4JlB,EAEA9Y,EAAIoZ,oBAAsB,WACtB,OAAOpZ,EAAI8X,gBACf,EAEA9X,EAAIqZ,iBAAmB,WACnB,OAAOV,GACX,EAEA3Y,EAAIsZ,mBAAqB,WACrB,OAAOtZ,EAAI6X,eACf,EAEA7X,EAAIuZ,oBAAsB,WACtB,OAAOvZ,EAAI+X,gBACf,EAEA/X,EAAIwZ,qBAAuB,WACvB,OAAOZ,GACX,EAEA5Y,EAAI4B,QAAU,WACV,OA9DA9J,OAAO2hB,YAAYzZ,EAAIyX,QAAS,QAASzX,EAAIiY,cAE7CngB,OAAO2hB,YAAYzZ,EAAI0X,YAAa,QAAS1X,EAAIkY,kBAEjDpgB,OAAOkK,IAAIhC,EAAInI,QAAS,QAASmI,EAAIoY,qBAErCtgB,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,UAyDpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CAhUA,CAiUJ,EAGAgV,EAAU/U,YAAc,SAAStK,GAC7B,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,WACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,WAEzB,IAEf,OAG+D,IAAnBhL,EAAOC,UAC/CD,EAAOC,QAAUkhB,2BCvVrB,IAAIwC,GAA8B,EAG9BvkB,EAAW,SAAS0C,EAASpB,GAI7B,IAAIuJ,EAAMxE,KAEV,GAAK,MAAO3D,EAAZ,CAKA,IAAIoI,EAAiB,CACjBjF,OAAQ,IACR2e,SAAS,EACTjY,QAAS,KACT0V,WAAW,EACXC,eAAgB,OAChBuC,eAAgB,2BAchBtZ,EAAQ,WACRN,EAAInI,QAAUA,EACdmI,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIqF,IAAMvN,OAAOwN,YAAY,UAC7BtF,EAAI6B,KAAO7B,EAAInI,QAAQnB,aAAa,uBACpCsJ,EAAI6Z,cAAgB,kBAAoB7Z,EAAI6B,KAC5C7B,EAAI8Z,eAAiB,WAAa9Z,EAAI6B,KACtC7B,EAAI+Z,mBAAoB,EACxB/Z,EAAIga,cAAgB,EACpBha,EAAIia,cAGJja,EAAInI,QAAQX,aAAa,iBAAkB,QAG3CrB,OAAOD,iBAAiB,SAAU2e,GAGlCA,IAGAzc,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,SAAUb,EAC3C,EAEIuU,EAAU,SAASvd,GACnB,IAGIkjB,EAHAlf,EAASyI,EAAW,UACpB/B,EAAU+B,EAAW,WACrBkW,EAAUlW,EAAW,WAMzB,IAAgB,IAAXzI,EAAL,CAIAA,EAAS1C,SAAS0C,GAClB0G,EAAUA,EAAUhM,SAASiH,cAAc+E,GAAW,KAEtDwY,EAAKpiB,OAAO0c,eACL9e,SAASykB,gBAAgBC,aAAevkB,OAAOwkB,YAAcviB,OAAO0c,eAE3E,IAAI8F,GAAY5Y,GAAYA,EAAQ6Y,UAAY7Y,EAAQ8Y,aAAgBN,EAExE,IAAiB,IAAZP,EAAmB,CACpB,GAAKO,EAAKlf,GAAUsf,EAAU,CAC1B,IAAuD,IAAlD5kB,SAAS2F,KAAKzE,aAAaoJ,EAAI6Z,eAA0B,CAE1D,IAAkB,IAAdY,IACA,OAGJ/kB,SAAS2F,KAAKnE,aAAa8I,EAAI6Z,cAAe,MAC9CnkB,SAAS2F,KAAKnE,aAAa8I,EAAI8Z,eAAgB,MAC/C9Z,EAAInI,QAAQX,aAAa,yBAA0B,OACvD,EAE+B,IAA1B8I,EAAI+Z,oBACL9Y,eAAeC,QAAQlB,EAAInI,QAAS,eAAgBmI,GACpDiB,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GAExDA,EAAI+Z,mBAAoB,EAEhC,MAC2D,IAAlDrkB,SAAS2F,KAAKzE,aAAaoJ,EAAI6Z,iBAChCa,IACAhlB,SAAS2F,KAAKyE,gBAAgBE,EAAI6Z,eAClCnkB,SAAS2F,KAAKyE,gBAAgBE,EAAI8Z,gBAClC9Z,EAAInI,QAAQiI,gBAAgB,4BAGD,IAA1BE,EAAI+Z,oBACL9Y,eAAeC,QAAQlB,EAAInI,QAAS,gBAAiBmI,GACrDiB,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GACxDA,EAAI+Z,mBAAoB,GAIhC/Z,EAAIga,cAAgBE,CACxB,MACI,GAAKA,EAAKlf,GAAUsf,EAAU,CAC1B,IAAuD,IAAlD5kB,SAAS2F,KAAKzE,aAAaoJ,EAAI6Z,eAA0B,CAE1D,IAAkB,IAAdY,IACA,OAGJ/kB,SAAS2F,KAAKnE,aAAa8I,EAAI6Z,cAAe,MAC9CnkB,SAAS2F,KAAKnE,aAAa8I,EAAI8Z,eAAgB,MAC/C9Z,EAAInI,QAAQX,aAAa,yBAA0B,OACvD,EAE+B,IAA1B8I,EAAI+Z,oBACL9Y,eAAeC,QAAQlB,EAAInI,QAAS,eAAgBmI,GACpDiB,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GACxDA,EAAI+Z,mBAAoB,EAEhC,MAC2D,IAAlDrkB,SAAS2F,KAAKzE,aAAaoJ,EAAI6Z,iBAChCa,IACAhlB,SAAS2F,KAAKyE,gBAAgBE,EAAI6Z,eAClCnkB,SAAS2F,KAAKyE,gBAAgBE,EAAI8Z,gBAClC9Z,EAAInI,QAAQiI,gBAAgB,4BAGD,IAA1BE,EAAI+Z,oBACL9Y,eAAeC,QAAQlB,EAAInI,QAAS,gBAAiBmI,GACrDiB,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GACxDA,EAAI+Z,mBAAoB,GAKhCrY,IACKA,EAAQ6Y,UAAY7Y,EAAQ8Y,aAAeN,EAC5Cla,EAAInI,QAAQX,aAAa,0BAA2B,QAEpD8I,EAAInI,QAAQiI,gBAAgB,2BAnFpC,CAsFJ,EAEI2a,EAAU,SAAS/V,GACnB,IAAI4B,EAAM7C,EAAW,OACrB6C,EAAMA,EAAMhO,SAASgO,GAAO,EAE5B,IAAIqU,EAAOlX,EAAW,QAClBmX,EAAQnX,EAAW,SACnB2C,EAAQ3C,EAAW,SACnB2G,EAAS3G,EAAW,UACpByQ,EAAezQ,EAAW,gBAC1BoX,EAAUpX,EAAW,SAErBwF,EAAS6R,IACTC,EAAetX,EAAW,iBAG9B,GAAIwF,GAFJ8R,EAAeA,EAAeziB,SAASyiB,GAAgB,GAE3BzU,EAAMxO,OAAOmc,cAAchL,OACnD,OAAO,EAqBX,IAlBgB,IAAXvE,IAA+C,IAA5BjB,EAAW,eAC/B3L,OAAOwJ,IAAItB,EAAInI,QAAS,oBAAqB4L,EAAW,mBACxD3L,OAAO4gB,aAAa1Y,EAAInI,QAAS,aAAe4L,EAAW,oBAG9C,OAAZoX,GACD/iB,OAAO0C,SAASwF,EAAInI,QAASgjB,GAGjB,OAAXzQ,IACDtS,OAAOwJ,IAAItB,EAAInI,QAAS,UAAWuS,GACnCtS,OAAOwJ,IAAItB,EAAInI,QAAS,WAAY,UAGnCyO,GAAO,GACRxO,OAAOwJ,IAAItB,EAAInI,QAAS,MAAO4O,OAAOH,GAAO,MAGlC,OAAVF,EAAiB,CAClB,GAAIA,EAAc,OAAG,CACjB,IAAI4U,EAAgBtlB,SAASiH,cAAcyJ,EAAc,QACrD4U,IACA5U,EAAQtO,OAAOwJ,IAAI0Z,EAAe,SAE1C,CAEAljB,OAAOwJ,IAAItB,EAAInI,QAAS,QAASuO,EACrC,CAEA,GAAc,OAATuU,EACD,GAAoC,SAA/BlU,OAAOkU,GAAMthB,cAA2B,CACzC,IAAI4hB,EAAanjB,OAAOkD,OAAOgF,EAAInI,SAAS8iB,KAEvCM,GAAc,GACfnjB,OAAOwJ,IAAItB,EAAInI,QAAS,OAAQ4O,OAAOwU,GAAc,KAE7D,MACInjB,OAAOwJ,IAAItB,EAAInI,QAAS,OAAQ8iB,GASxC,GALe,OAAVC,GACD9iB,OAAOwJ,IAAItB,EAAInI,QAAS,QAAS+iB,GAIf,OAAjB1G,EAAwB,CACzB,IAAIgH,EAAqBxlB,SAASiC,iBAAiBuc,GAEnD,GAAKgH,GAAsBA,EAAmBvhB,OAAS,EACnD,IAAM,IAAIoL,EAAI,EAAGC,EAAMkW,EAAmBvhB,OAAQoL,EAAIC,EAAKD,IACvDjN,OAAOwJ,IAAI4Z,EAAmBnW,GAAI,cAAe0B,OAAOwC,GAAU,KAG9E,CACJ,EAEIyR,EAAW,WACX5iB,OAAOwJ,IAAItB,EAAInI,QAAS,MAAO,IAC/BC,OAAOwJ,IAAItB,EAAInI,QAAS,QAAS,IACjCC,OAAOwJ,IAAItB,EAAInI,QAAS,OAAQ,IAChCC,OAAOwJ,IAAItB,EAAInI,QAAS,QAAS,IACjCC,OAAOwJ,IAAItB,EAAInI,QAAS,UAAW,IACnCC,OAAOwJ,IAAItB,EAAInI,QAAS,WAAY,IAEpC,IAAIqc,EAAezQ,EAAW,gBAC1BoX,EAAUpX,EAAW,SAOzB,GALiB,OAAZoX,GACD/iB,OAAOoO,YAAYlG,EAAInI,QAASgjB,GAId,OAAjB3G,EAAwB,CACzB,IAAIgH,EAAqBxlB,SAASiC,iBAAiBuc,GAEnD,GAAKgH,GAAsBA,EAAmBvhB,OAAS,EACnD,IAAM,IAAIoL,EAAI,EAAGC,EAAMkW,EAAmBvhB,OAAQoL,EAAIC,EAAKD,IACvDjN,OAAOwJ,IAAI4Z,EAAmBnW,GAAI,cAAe,GAG7D,CACJ,EAMI+V,EAAmB,WACnB,IAAI7R,EAAS/Q,WAAWJ,OAAOwJ,IAAItB,EAAInI,QAAS,WAahD,OAXAoR,GAAkB/Q,WAAWJ,OAAOwJ,IAAItB,EAAInI,QAAS,eACrDoR,GAAkB/Q,WAAWJ,OAAOwJ,IAAItB,EAAInI,QAAS,kBAEjDC,OAAOwJ,IAAIzJ,EAAS,gBACpBoR,GAAkB/Q,WAAWJ,OAAOwJ,IAAItB,EAAInI,QAAS,gBAGrDC,OAAOwJ,IAAIzJ,EAAS,mBACpBoR,GAAkB/Q,WAAWJ,OAAOwJ,IAAItB,EAAInI,QAAS,mBAGlDoR,CACX,EAEIxF,EAAa,SAAS5B,GACtB,IAA4D,IAAvD7B,EAAInI,QAAQjB,aAAa,kBAAoBiL,GAAiB,CAC/D,IAAI8E,EAAO3G,EAAInI,QAAQnB,aAAa,kBAAoBmL,GACpD5J,EAAQH,OAAOqD,mBAAmBwL,GAQtC,OANe,OAAV1O,GAAoC,SAAlBwO,OAAOxO,GAC1BA,GAAQ,EACU,OAAVA,GAAoC,UAAlBwO,OAAOxO,KACjCA,GAAQ,GAGLA,CACX,CACI,IAAImB,EAAatB,OAAO8O,aAAa/E,GAErC,OAAK7B,EAAIvJ,QAAQ2C,GACNtB,OAAOqD,mBAAmB6E,EAAIvJ,QAAQ2C,IAEtC,IAGnB,GAnRgD,IAAvCtB,OAAO8I,KAAK/I,GAASiJ,IAAI,UAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,UAE/BT,IA+RRN,EAAI0E,OAAS,YAC8C,IAAlDhP,SAAS2F,KAAKzE,aAAaoJ,EAAI6Z,iBAChCa,IACAhlB,SAAS2F,KAAKyE,gBAAgBE,EAAI6Z,eAClCnkB,SAAS2F,KAAKyE,gBAAgBE,EAAI8Z,gBAClCW,GAAQ,GACR/kB,SAAS2F,KAAKnE,aAAa8I,EAAI6Z,cAAe,MAC9CnkB,SAAS2F,KAAKnE,aAAa8I,EAAI8Z,eAAgB,MAEvD,EAEA9Z,EAAI4B,QAAU,WACV,OAxBA/L,OAAO0B,oBAAoB,SAAUgd,QACrCzc,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,SAwBpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CAhVA,CAiVJ,EAGA/M,EAASgN,YAAc,SAAStK,GAC5B,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,UACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,UAEzB,IAEf,EAGA5L,EAAS2P,gBAAkB,SAAS7F,EAAW,2BAE3C,IAAIvE,EAAWhF,SAAS2F,KAAK1D,iBAAiBsH,GAG9C,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IACnC,IAAI5P,EAASuF,EAASqK,GAG3C,EAGA5P,EAASoS,aAAe,WACpB1R,OAAOD,iBAAiB,UAAU,WAG9BkC,OAAO0P,SAFHC,WAEmB,WAEnB,IAAI/M,EAAWhF,SAAS2F,KAAK1D,iBAAiB,2BAE9C,GAAK+C,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAAK,CACjD,IAAIoW,EAAShmB,EAASgN,YAAYzH,EAASqK,IACvCoW,GACAA,EAAOzW,QAEf,CAER,GAAG,IACP,GACJ,EAGAvP,EAASL,KAAO,WACZK,EAAS2P,mBAE2B,IAAhC4U,IACAvkB,EAASoS,eACTmS,GAA8B,EAEtC,OAG+D,IAAnB3jB,EAAOC,UAC/CD,EAAOC,QAAUb,2BCrZrB,IAAIimB,GAA+B,EAG/BhmB,EAAY,SAASyC,EAASpB,GAI9B,IAAIuJ,EAAMxE,KAEV,GAAK,MAAO3D,EAAZ,CAKA,IAAIoI,EAAiB,CACjBob,KAAM,UAeN/a,EAAQ,WACRN,EAAInI,QAAUA,EACdmI,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GAGpDuJ,EAAInI,QAAQX,aAAa,kBAAmB,QAG5CwO,IAGA5N,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,UAAWb,EAC5C,EAEI0F,EAAU,SAAS1O,GACnB,IAAIskB,EAAiB7X,EAAW,UAE5B4X,EAAO5X,EAAW,QAClB8X,EAAgBD,EAAiB5lB,SAASiH,cAAc2e,GAAkB,KAG1EC,GAAiB1jB,EAAQwT,aAAekQ,IAC3B,YAATF,EACAE,EAAchF,QAAQ1e,GACN,WAATwjB,GACPE,EAAc/Z,OAAO3J,GAGjC,EAEI4L,EAAa,SAAS5B,GACtB,IAA6D,IAAxD7B,EAAInI,QAAQjB,aAAa,mBAAqBiL,GAAiB,CAChE,IAAI8E,EAAO3G,EAAInI,QAAQnB,aAAa,mBAAqBmL,GACrD5J,EAAQH,OAAOqD,mBAAmBwL,GAQtC,OANe,OAAV1O,GAAoC,SAAlBwO,OAAOxO,GAC1BA,GAAQ,EACU,OAAVA,GAAoC,UAAlBwO,OAAOxO,KACjCA,GAAQ,GAGLA,CACX,CACI,IAAImB,EAAatB,OAAO8O,aAAa/E,GAErC,OAAK7B,EAAIvJ,QAAQ2C,GACNtB,OAAOqD,mBAAmB6E,EAAIvJ,QAAQ2C,IAEtC,IAGnB,GA1DiD,IAAxCtB,OAAO8I,KAAK/I,GAASiJ,IAAI,WAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,WAE/BT,IAqERN,EAAI0E,OAAS,WACTgB,GACJ,EAEA1F,EAAI4B,QAAU,WAfV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,UAiBpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CA3GA,CA4GJ,EAGA9M,EAAU+M,YAAc,SAAStK,GAC7B,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,WACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,WAEzB,IAEf,EAGA3L,EAAU0P,gBAAkB,SAAS7F,EAAW,4BAE5C,IAAIvE,EAAWhF,SAASiC,iBAAiBsH,GAGzC,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAClC,IAAI3P,EAAUsF,EAASqK,GAG7C,EAGA3P,EAAUmS,aAAe,WACrB1R,OAAOD,iBAAiB,UAAU,WAG9BkC,OAAO0P,SAFHC,WAEmB,WAEnB,IAAI/M,EAAWhF,SAASiC,iBAAiB,4BAEzC,GAAK+C,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAAK,CACjD,IAAIyW,EAAUpmB,EAAU+M,YAAYzH,EAASqK,IACzCyW,GACAA,EAAQ9W,QAEhB,CAER,GAAG,IACP,GACJ,EAGAtP,EAAUN,KAAO,WACbM,EAAU0P,mBAE2B,IAAjCsW,IACAhmB,EAAUmS,eACV6T,GAA+B,EAEvC,OAG+D,IAAnBrlB,EAAOC,UAC/CD,EAAOC,QAAUZ,2BC/KrB,IAAIC,EAAW,SAASwC,EAASpB,GAI7B,IAAIuJ,EAAMxE,KAEV,GAAK3D,EAAL,CAKA,IAAIoI,EAAiB,CACjBuS,WAAW,GAeXlS,EAAQ,WAERN,EAAIvJ,QAAUqB,OAAOyI,WAAW,CAAC,EAAGN,EAAgBxJ,GACpDuJ,EAAIqF,IAAMvN,OAAOwN,YAAY,UAG7BtF,EAAInI,QAAUA,EAEdmI,EAAI/C,OAASvH,SAASiH,cAAcqD,EAAInI,QAAQnB,aAAa,0BAA4BhB,SAASiH,cAAcqD,EAAInI,QAAQnB,aAAa,0BAA4BsJ,EAAInI,QACzKmI,EAAIsY,MAAQtY,EAAInI,QAAQjB,aAAa,wBAA0BoJ,EAAInI,QAAQnB,aAAa,wBAA0B,GAClHsJ,EAAIqb,KAAOrb,EAAInI,QAAQjB,aAAa,uBAAyBoJ,EAAInI,QAAQnB,aAAa,uBAAyB,GAC/GsJ,EAAIyb,UAAY,WAAazb,EAAInI,QAAQnB,aAAa,uBAGtDiN,IAGA7L,OAAO8I,KAAKZ,EAAInI,SAASgJ,IAAI,SAAUb,EAC3C,EAEI2D,EAAY,WACZ7L,OAAO8L,SAAS5D,EAAInI,QAAS,SAAS,SAASb,GAC3CA,EAAEsE,iBAEgB,KAAb0E,EAAIqb,MACa,QAAbrb,EAAIqb,OAAmC,IAAjBK,KAEF,OAAb1b,EAAIqb,OAAkC,IAAjBK,MAD7B7V,IAKJA,GAER,GACJ,EAGIA,EAAU,WAaV,OAXA5E,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GAEnD0b,IACDhB,IAEAD,IAIJxZ,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,GAElDA,CACX,EAEIya,EAAU,WACV,IAAsB,IAAjBiB,IAkBL,OAdAza,eAAeC,QAAQlB,EAAInI,QAAS,mBAAoBmI,GAExDA,EAAI/C,OAAO/F,aAAa8I,EAAIyb,UAAW,MAEnCzb,EAAIsY,MAAM3e,OAAS,GACnBqG,EAAInI,QAAQgB,UAAUC,IAAIkH,EAAIsY,OAGT,oBAAblW,WAAsD,IAA1BpC,EAAIvJ,QAAQ+b,WAChDpQ,SAASvB,IAAIb,EAAIyb,UAAW,MAGhCxa,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,GAElDA,CACX,EAEI0a,EAAW,WACX,IAAsB,IAAjBgB,IAkBL,OAdAza,eAAeC,QAAQlB,EAAInI,QAAS,oBAAqBmI,GAEzDA,EAAI/C,OAAO6C,gBAAgBE,EAAIyb,WAE3Bzb,EAAIsY,MAAM3e,OAAS,GACnBqG,EAAInI,QAAQgB,UAAU0D,OAAOyD,EAAIsY,OAGZ,oBAAblW,WAAsD,IAA1BpC,EAAIvJ,QAAQ+b,WAChDpQ,SAAS7F,OAAOyD,EAAIyb,WAGxBxa,eAAeC,QAAQlB,EAAInI,QAAS,qBAAsBmI,GAEnDA,CACX,EAEI0b,EAAa,WACb,MAAyE,OAAjEjV,OAAOzG,EAAI/C,OAAOvG,aAAasJ,EAAIyb,YAAYpiB,aAC3D,GA1GgD,IAAvCvB,OAAO8I,KAAK/I,GAASiJ,IAAI,UAC1Bd,EAAMlI,OAAO8I,KAAK/I,GAASkJ,IAAI,UAE/BT,IAqHRN,EAAI9E,OAAS,WACT,OAAO2K,GACX,EAEA7F,EAAIqQ,OAAS,WACT,OAAOoK,GACX,EAEAza,EAAIoQ,QAAU,WACV,OAAOsK,GACX,EAEA1a,EAAI2b,UAAY,WACZ,OAAOD,GACX,EAEA1b,EAAI8G,UAAY,WACZ,OAAO9G,EAAInI,OACf,EAEAmI,EAAI4B,QAAU,WA/BV9J,OAAO8I,KAAKZ,EAAInI,SAAS0E,OAAO,SAiCpC,EAGAyD,EAAI5E,GAAK,SAASyG,EAAMC,GACpB,OAAOb,eAAe7F,GAAG4E,EAAInI,QAASgK,EAAMC,EAChD,EAEA9B,EAAI+B,IAAM,SAASF,EAAMC,GACrB,OAAOb,eAAec,IAAI/B,EAAInI,QAASgK,EAAMC,EACjD,EAEA9B,EAAIgC,IAAM,SAASH,EAAMI,GACrB,OAAOhB,eAAee,IAAIhC,EAAInI,QAASgK,EAAMI,EACjD,EAEAjC,EAAIkB,QAAU,SAASW,EAAMK,GACzB,OAAOjB,eAAeC,QAAQlB,EAAInI,QAASgK,EAAMK,EAAOlC,EAAKkC,EACjE,CA3KA,CA4KJ,EAGA7M,EAAS8M,YAAc,SAAStK,GAC5B,OAAiB,OAAZA,GAAoBC,OAAO8I,KAAK/I,GAASiJ,IAAI,UACvChJ,OAAO8I,KAAK/I,GAASkJ,IAAI,UAEzB,IAEf,EAGA1L,EAASyP,gBAAkB,SAAS7F,EAAW,oBAE3C,IAAIvE,EAAWhF,SAAS2F,KAAK1D,iBAAiBsH,GAE9C,GAAKvE,GAAYA,EAASf,OAAS,EAC/B,IAAK,IAAIoL,EAAI,EAAGC,EAAMtK,EAASf,OAAQoL,EAAIC,EAAKD,IAE5C,IAAI1P,EAASqF,EAASqK,GAGlC,EAGA1P,EAASP,KAAO,WACZO,EAASyP,iBACb,OAG+D,IAAnB/O,EAAOC,UAC/CD,EAAOC,QAAUX,2BC7MhBumB,QAAQnf,UAAU4F,UACnBuZ,QAAQnf,UAAU4F,QAAU,SAASwZ,GAGjC,IAFA,IAAIxZ,GAAW7G,KAAK9F,UAAY8F,KAAKsgB,eAAenkB,iBAAiBkkB,GACjE9W,EAAI1C,EAAQ1I,SACPoL,GAAK,GAAK1C,EAAQ6E,KAAKnC,KAAOvJ,OACvC,OAAOuJ,GAAK,CAChB,GAOC6W,QAAQnf,UAAUlC,UACtBqhB,QAAQnf,UAAUlC,QAAU,SAAUshB,GACrC,IACIE,EAAWvgB,KACf,IAAK9F,SAASykB,gBAAgB/c,SAFrB5B,MAEmC,OAAO,KACnD,EAAG,CACF,GAAIugB,EAAS1Z,QAAQwZ,GAAI,OAAOE,EAChCA,EAAWA,EAASR,aACrB,OAAsB,OAAbQ,GACT,OAAO,IACR,GASD,SAAWC,GACV,IAAK,IAAIjX,EAAI,EAAGA,EAAIiX,EAAKriB,OAAQoL,IAC3BlP,OAAOmmB,EAAKjX,OAAO,WAAYlP,OAAOmmB,EAAKjX,IAAItI,aACpD5G,OAAOmmB,EAAKjX,IAAItI,UAAUF,OAAS,WAClCf,KAAK6P,WAAW4Q,YAAYzgB,KAC7B,EAED,CAPD,CAOG,CAAC,UAAW,gBAAiB,iBAY/B,WAGG,IAFA,IAAI0gB,EAAW,EACXC,EAAU,CAAC,SAAU,OAChBC,EAAI,EAAGA,EAAID,EAAQxiB,SAAW9D,OAAOwmB,wBAAyBD,EACnEvmB,OAAOwmB,sBAAwBxmB,OAAOsmB,EAAQC,GAAK,yBACnDvmB,OAAOymB,qBACHzmB,OAAOsmB,EAAQC,GAAK,yBAA2BvmB,OAAOsmB,EAAQC,GAAK,+BAGtEvmB,OAAOwmB,wBACRxmB,OAAOwmB,sBAAwB,SAAS1U,GACpC,IAAI4U,GAAW,IAAI5Z,MAAO6Z,UACtBC,EAAaC,KAAKvZ,IAAI,EAAG,IAAMoZ,EAAWL,IAC1CzJ,EAAK5c,OAAO2Y,YAAW,WACvB7G,EAAS4U,EAAWE,EACxB,GAAGA,GAEH,OADAP,EAAWK,EAAWE,EACfhK,CACX,GAEC5c,OAAOymB,uBACRzmB,OAAOymB,qBAAuB,SAAS7J,GACnCrE,aAAaqE,EACjB,EACR,CAxBA,GAiDG,CAACmJ,QAAQnf,UAAWkgB,SAASlgB,UAAWmgB,iBAAiBngB,WArBpDxD,SAAQ,SAASiO,GACbA,EAAKlE,eAAe,YAGxBhJ,OAAO6iB,eAAe3V,EAAM,UAAW,CACnC4V,cAAc,EACdC,YAAY,EACZC,UAAU,EACV/kB,MAAO,WACH,IAAIglB,EAASzgB,MAAMC,UAAUhF,MAAMC,KAAKwlB,WACpCC,EAAUznB,SAAS0nB,yBAEvBH,EAAOhkB,SAAQ,SAASokB,GACpB,IAAIC,EAASD,aAAmBE,KAChCJ,EAAQnU,YAAYsU,EAASD,EAAU3nB,SAAS8nB,eAAe/W,OAAO4W,IAC1E,IAEA7hB,KAAKiiB,aAAaN,EAAS3hB,KAAKkiB,WACpC,GAER,IAIuC3Z,MAAvC6X,QAAQnf,UAAUzD,oBACpB4iB,QAAQnf,UAAUzD,kBAAoB,WAIpC,IAHA,IAAI2kB,EAAaniB,KAAKmiB,WAClBhkB,EAASgkB,EAAWhkB,OACpB0C,EAAS,IAAIG,MAAM7C,GACdoL,EAAI,EAAGA,EAAIpL,EAAQoL,IAC1B1I,EAAO0I,GAAK4Y,EAAW5Y,GAAGlD,KAE5B,OAAOxF,CACT,GAIFxG,OAAO+nB,uBAAyB,CAAC,EACjC/nB,OAAOgoB,yBAA2B,EAClChoB,OAAOioB,6BAA+B,CAAC,EAEvC,IACQC,EAMAC,EAPJlmB,GACIimB,EAAiB,GAMjBC,EAAuB,WAWvBnoB,OAAOD,iBAAiB,UAAU,WAC9BkC,EAAO0P,cAHPC,GAGuB,YAXF,WAErB,IAAK,IAAI1C,EAAI,EAAGA,EAAIgZ,EAAepkB,OAAQoL,IAC5BgZ,EAAehZ,GACrBrN,MAEb,CAMQumB,EACJ,GAAG,IACP,GACJ,EAEO,CAOHnpB,KAAM,SAASopB,GACXF,GACJ,EAMAG,iBAAkB,SAASxW,GACvBoW,EAAelW,KAAKF,EACxB,EAMAyW,oBAAqB,SAASzW,GAC1B,IAAK,IAAI5C,EAAI,EAAGA,EAAIgZ,EAAepkB,OAAQoL,IACnC4C,IAAaoW,EAAehZ,WACrBgZ,EAAehZ,EAGlC,EAKAsZ,kBAAmB,WACfJ,oBACJ,EAEAK,OAAQ,WACJ,GAAsB,mBAAZ,MAENzoB,OAAOqO,cAAc,IAAIC,MAAM,eAC5B,CAGH,IAAIoa,EAAM1oB,OAAOH,SAAS8oB,YAAY,YACtCD,EAAIE,YAAY,UAAU,GAAM,EAAO5oB,OAAQ,GAC/CA,OAAOqO,cAAcqa,EACzB,CACJ,EAOAG,YAAa,SAASC,GAClB,IACI5Z,EAAGjL,EAAK8kB,EADO/oB,OAAOgpB,SAASnI,OAAOhd,UAAU,GAClBuT,MAAM,KAExC,IAAKlI,EAAI,EAAGA,EAAI6Z,EAAOjlB,OAAQoL,IAE3B,IADAjL,EAAM8kB,EAAO7Z,GAAGkI,MAAM,MACd,IAAM0R,EACV,OAAOG,SAAShlB,EAAI,IAI5B,OAAO,IACX,EAMAilB,eAAgB,WACZ,IAAI5lB,EAAQqC,KAAKyY,cAAc7N,MAAQ5K,KAAKib,cAAc,MAO1D,OALa,IAATtd,IAEAA,EAA6C,MAAtC6lB,UAAUC,UAAU3lB,MAAM,UAG9BH,CACX,EAMA+lB,gBAAiB,WACb,OAAOpnB,EAAOinB,gBAClB,EAOA9K,YAAa,WACT,IAAIjd,EAAInB,OACJspB,EAAI,QAMR,MALM,eAAgBtpB,SAClBspB,EAAI,SACJnoB,EAAItB,SAASykB,iBAAmBzkB,SAAS2F,MAGtC,CACH+K,MAAOpP,EAAEmoB,EAAI,SACblW,OAAQjS,EAAEmoB,EAAI,UAEtB,EAQAC,eAAgB,SAAS/D,GAI9B,OAHqB7f,KAAKyY,cAAc7N,OACvB5K,KAAKib,cAAc4E,EAG/B,EAENgE,iBAAkB,SAAShE,GAI1B,OAHqB7f,KAAKyY,cAAc7N,MACvB5K,KAAKib,cAAc4E,EAG/B,EAEAiE,iBAAkB,WACd,OAAO9jB,KAAKyY,cAAc7N,KAC9B,EAOAd,YAAa,SAAS9M,GAClB,OAAOA,EAASkkB,KAAK6C,MAAM7C,KAAK8C,UAAW,IAAK7c,MAAQ6Z,UAC5D,EAOA/F,cAAe,SAASD,GACpB,IAAIve,EAAQuD,KAAKikB,oBAAoB,QAAUjJ,GAM/C,OAJKve,IACDA,EAAQK,SAASL,EAAMynB,SAGpBznB,CACX,EAQA0nB,MAAO,SAASC,EAAKC,GACjB,IAAIC,EAIJ,IAA2B,KAF3BD,EAAOA,GAAQ,IAEN1X,QAAQ,KACb,MAAM,IAAI4X,MAAM,qCAGpBF,EAAOA,EAAK5S,MAAM,KAElB,EAAG,CACC,QAAYlJ,IAAR6b,EACA,OAAO,EAKX,GAFAE,EAAQD,EAAKG,SAERJ,EAAI5c,eAAe8c,GACpB,OAAO,EAGXF,EAAMA,EAAIE,EAEd,OAASD,EAAKlmB,QAEd,OAAO,CACX,EAOA2S,iBAAkB,SAAS9V,GAGvB,IAFA,IAAI6K,EAAUpJ,EAEPzB,GAAMA,IAAOd,UAAU,CAM1B,IAAiB,cAFjB2L,EAAWvJ,EAAOwJ,IAAI9K,EAAI,cAEkB,aAAb6K,GAAwC,UAAbA,KAKtDpJ,EAAQK,SAASR,EAAOwJ,IAAI9K,EAAI,aAE3B4N,MAAMnM,IAAoB,IAAVA,GACjB,OAAOA,EAIfzB,EAAKA,EAAG6U,UACZ,CAEA,OAAO,CACX,EAOA4U,yBAA0B,SAASzpB,GAG/B,KAAOA,GAAMA,IAAOd,UAAU,CAG1B,GAAiB,UAFNoC,EAAOwJ,IAAI9K,EAAI,YAGtB,OAAO,EAGXA,EAAKA,EAAG6U,UACZ,CAEA,OAAO,CACX,EAKA6U,MAAO,SAASC,GAEZ,IADA,IAAIvnB,GAAQ,IAAI+J,MAAO6Z,UACdzX,EAAI,EAAGA,EAAI,QACX,IAAIpC,MAAO6Z,UAAY5jB,EAASunB,GADhBpb,KAK7B,EAQAqb,aAAc,SAASld,EAAKC,GACxB,OAAOuZ,KAAK6C,MAAM7C,KAAK8C,UAAYrc,EAAMD,EAAM,IAAMA,CACzD,EAMAmd,iBAAkB,WACd,YAAuBtc,IAAhBlO,OAAOyqB,IAClB,EAGA/f,WAAY,SAASggB,GACjBA,EAAMA,GAAO,CAAC,EAEd,IAAK,IAAIxb,EAAI,EAAGA,EAAImY,UAAUvjB,OAAQoL,IAAK,CACvC,IAAI6a,EAAM1C,UAAUnY,GACpB,GAAK6a,EAEL,IAAK,IAAIY,KAAOZ,EACPA,EAAI5c,eAAewd,KAK0B,oBAA7CxmB,OAAOyC,UAAUgkB,SAAS/oB,KAAKkoB,EAAIY,IAKxCD,EAAIC,GAAOZ,EAAIY,GAJXD,EAAIC,GAAO1oB,EAAOyI,WAAWggB,EAAIC,GAAMZ,EAAIY,IAMvD,CAEA,OAAOD,CACX,EAGAG,OAAQ,SAASH,GACbA,EAAMA,GAAO,CAAC,EAEd,IAAK,IAAIxb,EAAI,EAAGA,EAAImY,UAAUvjB,OAAQoL,IAClC,GAAKmY,UAAUnY,GAGf,IAAK,IAAIyb,KAAOtD,UAAUnY,GAClBmY,UAAUnY,GAAG/B,eAAewd,KAC5BD,EAAIC,GAAOtD,UAAUnY,GAAGyb,IAIpC,OAAOD,CACX,EAEAI,QAAS,WACL,OAAOjrB,SAASkrB,qBAAqB,QAAQ,EACjD,EAQAC,WAAY,SAASrqB,EAAIqkB,GACrB,GAAKrkB,EAAL,CAMA,IAFA,IAAIsqB,EAAajG,EAAQ5N,MAAM,KAEtBlI,EAAI,EAAGA,EAAI+b,EAAWnnB,OAAQoL,IACnC,GAAuD,GAAnDjN,EAAO0O,SAAShQ,EAAIsB,EAAO4nB,KAAKoB,EAAW/b,KAC3C,OAAO,EAIf,OAAO,CAVP,CAWJ,EAEAyB,SAAU,SAAShQ,EAAIuqB,GACnB,GAAKvqB,EAIL,OAAOA,EAAGqC,UAAYrC,EAAGqC,UAAUuE,SAAS2jB,GAAa,IAAIxe,OAAO,MAAQwe,EAAY,OAAO5nB,KAAK3C,EAAGuqB,UAC3G,EAEAvmB,SAAU,SAAShE,EAAIuqB,GACnB,GAAKvqB,QAA2B,IAAduqB,EAAlB,CAIA,IAAIC,EAAaD,EAAU9T,MAAM,KAEjC,GAAIzW,EAAGqC,UACH,IAAK,IAAIkM,EAAI,EAAGA,EAAIic,EAAWrnB,OAAQoL,IAC/Bic,EAAWjc,IAAMic,EAAWjc,GAAGpL,OAAS,GACxCnD,EAAGqC,UAAUC,IAAIhB,EAAO4nB,KAAKsB,EAAWjc,UAG7C,IAAKjN,EAAO0O,SAAShQ,EAAIuqB,GAC5B,IAAK,IAAI3E,EAAI,EAAGA,EAAI4E,EAAWrnB,OAAQyiB,IACnC5lB,EAAGuqB,WAAa,IAAMjpB,EAAO4nB,KAAKsB,EAAW5E,GAZrD,CAeJ,EAEAlW,YAAa,SAAS1P,EAAIuqB,GACxB,GAAKvqB,QAA2B,IAAduqB,EAAlB,CAIE,IAAIC,EAAaD,EAAU9T,MAAM,KAEjC,GAAIzW,EAAGqC,UACH,IAAK,IAAIkM,EAAI,EAAGA,EAAIic,EAAWrnB,OAAQoL,IACnCvO,EAAGqC,UAAU0D,OAAOzE,EAAO4nB,KAAKsB,EAAWjc,UAE5C,GAAIjN,EAAO0O,SAAShQ,EAAIuqB,GAC3B,IAAK,IAAI3E,EAAI,EAAGA,EAAI4E,EAAWrnB,OAAQyiB,IACnC5lB,EAAGuqB,UAAYvqB,EAAGuqB,UAAU5oB,QAAQ,IAAIoK,OAAO,MAAQzK,EAAO4nB,KAAKsB,EAAW5E,IAAM,MAAO,KAAM,GAVzG,CAaJ,EAEA6E,mBAAoB,SAASzqB,EAAI0qB,EAAWtgB,GACxC,IAAIsB,EACArM,OAAOsrB,YACPjf,EAAQ,IAAIif,YAAYD,EAAW,CAC/BE,OAAQxgB,KAGZsB,EAAQxM,SAAS8oB,YAAY,gBACvB6C,gBAAgBH,GAAW,GAAM,EAAMtgB,GAGjDpK,EAAG0N,cAAchC,EACrB,EAEAof,aAAc,SAASC,EAAML,GAEzB,IAAIM,EAEJ,GAAID,EAAKzF,cACL0F,EAAMD,EAAKzF,kBACR,IAAqB,GAAjByF,EAAKE,SAIZ,MAAM,IAAI1B,MAAM,qCAAuCwB,EAAK9O,IAF5D+O,EAAMD,CAGV,CAEA,GAAIA,EAAKrd,cAAe,CAEpB,IAAIwd,EAAa,GAKjB,OAAQR,GACR,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,UACDQ,EAAa,cACb,MAEJ,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACDA,EAAa,aACb,MAEJ,QACI,KAAM,sDAAwDR,EAAY,KAG9E,IAEIS,EAAuB,UAAbT,GAFVhf,EAAQsf,EAAIhD,YAAYkD,IAGtBE,UAAUV,EAAWS,GAAS,GAEpCzf,EAAM2f,WAAY,EAElBN,EAAKrd,cAAchC,GAAO,EAC9B,MAAO,GAAIqf,EAAKO,UAAW,CAEvB,IAAI5f,KAAQsf,EAAIO,qBACVF,WAAY,EAClBN,EAAKO,UAAU,KAAOZ,EAAWhf,EACrC,CACJ,EAEAgG,MAAO,SAAU1R,GAEb,IADA,IAAIwrB,EAAIxrB,EAAG6U,WAAWa,SAAUnH,EAAI,EAC9BA,EAAIid,EAAEroB,OAAQoL,IAChB,GAAIid,EAAEjd,IAAMvO,EAAK,OAAOuO,CAChC,EAEA2a,KAAM,SAASuC,GACX,OAAOA,EAAOvC,MAClB,EAEAwC,eAAgB,SAASlrB,GACrB,QAAIA,EAAEmrB,cAAcC,QAAQC,YAGxBrrB,EAAEmrB,cAAcC,QAAQC,WAAY,GAE7B,EAEf,EAEA9lB,OAAQ,SAAS/F,GACTA,GAAMA,EAAG6U,YACT7U,EAAG6U,WAAW4Q,YAAYzlB,EAElC,EAEA2S,KAAM,SAAS0C,EAAQyW,GACnB,OAAgB,OAAXzW,EACMA,EAAOlP,cAAc2lB,GAErB,IAEf,EAEA3U,QAAS,SAAS9B,EAAQyW,GACtB,OAAgB,OAAXzW,EACMA,EAAOlU,iBAAiB2qB,GAExB,IAEf,EAEA9V,YAAa,SAAShW,EAAI+rB,GACtB,OAAOA,EAAclX,WAAWoS,aAAajnB,EAAI+rB,EAAcC,YACnE,EAEA1W,QAAS,SAASkQ,EAAM/c,GAKpB,IAHA,IAAI6M,EAAU,GAGNkQ,GAAQA,IAAStmB,SAAUsmB,EAAOA,EAAK3Q,WACvCpM,EACI+c,EAAK3Z,QAAQpD,IACb6M,EAAQjE,KAAKmU,GAIrBlQ,EAAQjE,KAAKmU,GAIjB,OAAOlQ,CACX,EAEAI,SAAU,SAAS1V,EAAIyI,EAAUwJ,GAC7B,IAAKjS,IAAOA,EAAGisB,WACX,OAAO,KAOX,IAJA,IAAIpmB,EAAS,GACT0I,EAAI,EACJ2d,EAAIlsB,EAAGisB,WAAW9oB,OAEVoL,EAAI2d,IAAK3d,EACgB,GAA7BvO,EAAGisB,WAAW1d,GAAG0c,UAAiB3pB,EAAOuK,QAAQ7L,EAAGisB,WAAW1d,GAAI9F,EAAUwJ,IAC7EpM,EAAOwL,KAAKrR,EAAGisB,WAAW1d,IAIlC,OAAO1I,CACX,EAEAiP,MAAO,SAAS9U,EAAIyI,EAAUwJ,GAC1B,IAAIyD,EAAWpU,EAAOoU,SAAS1V,EAAIyI,EAAUwJ,GAE7C,OAAOyD,EAAWA,EAAS,GAAK,IACpC,EAEA7J,QAAS,SAAS7L,EAAIyI,EAAUwJ,GAC5B,IAAIka,EAAI/G,QAAQnf,UACZmmB,EAAID,EAAEtgB,SAAWsgB,EAAEE,uBAAyBF,EAAEG,oBAAsBH,EAAEI,mBAAqB,SAASlH,GACpG,OAAgE,IAAzD,GAAG1T,QAAQzQ,KAAKhC,SAASiC,iBAAiBkkB,GAAIrgB,KACzD,EAEA,SAAIhF,IAAMA,EAAG4K,UACFwhB,EAAElrB,KAAKlB,EAAIyI,EAI1B,EAEA2B,KAAM,SAASpK,GACX,MAAO,CACHqK,IAAK,SAASgB,EAAMjB,GACXpK,SAIoBuN,IAArBvN,EAAGwsB,gBACHntB,OAAOgoB,2BACPrnB,EAAGwsB,cAAgBntB,OAAOgoB,+BAG0B9Z,IAApDlO,OAAO+nB,uBAAuBpnB,EAAGwsB,iBACjCntB,OAAO+nB,uBAAuBpnB,EAAGwsB,eAAiB,CAAC,GAGvDntB,OAAO+nB,uBAAuBpnB,EAAGwsB,eAAenhB,GAAQjB,EAC5D,EAEAG,IAAK,SAASc,GACV,GAAKrL,EAIL,YAAyBuN,IAArBvN,EAAGwsB,cACI,KAGJxnB,KAAKsF,IAAIe,GAAQhM,OAAO+nB,uBAAuBpnB,EAAGwsB,eAAenhB,GAAQ,IACpF,EAEAf,IAAK,SAASe,GACV,QAAKrL,QAIoBuN,IAArBvN,EAAGwsB,kBAICntB,OAAO+nB,uBAAuBpnB,EAAGwsB,iBAAkBntB,OAAO+nB,uBAAuBpnB,EAAGwsB,eAAenhB,GAC/G,EAEAtF,OAAQ,SAASsF,GACTrL,GAAMgF,KAAKsF,IAAIe,WACRhM,OAAO+nB,uBAAuBpnB,EAAGwsB,eAAenhB,EAE/D,EAER,EAEAohB,WAAY,SAASzsB,EAAI0sB,GACrB,IAAI9c,EAEJ,OAAe,IAAX8c,GACA9c,EAAQlO,WAAW1B,EAAG2sB,aACtB/c,GAASlO,WAAWJ,EAAOwJ,IAAI9K,EAAI,gBAAkB0B,WAAWJ,EAAOwJ,IAAI9K,EAAI,iBAExE0B,WAAWkO,IAElBA,EAAQlO,WAAW1B,EAAG2sB,YAI9B,EAEAnoB,OAAQ,SAASxE,GACb,IAAI4sB,EAAMC,EAEV,GAAM7sB,EASN,OAAMA,EAAG8sB,iBAAiB3pB,QAK1BypB,EAAO5sB,EAAG+sB,wBACVF,EAAM7sB,EAAGslB,cAAc0H,YAEhB,CACHld,IAAK8c,EAAK9c,IAAM+c,EAAII,YACpB9I,KAAMyI,EAAKzI,KAAO0I,EAAIK,YACtB9I,MAAO/kB,OAAO8tB,YAAcntB,EAAGykB,WAAazkB,EAAG2sB,eAVxC,CAAE7c,IAAK,EAAGqU,KAAM,EAY/B,EAEA1R,OAAQ,SAASzS,GACb,OAAOsB,EAAOwJ,IAAI9K,EAAI,SAC1B,EAEAotB,YAAa,SAASptB,EAAIqtB,GACtB,IACIC,EADA7a,EAASzS,EAAGutB,aAGhB,YAA0B,IAAfF,IAA6C,IAAfA,GACrCC,EAAQE,iBAAiBxtB,GACzByS,GAAU3Q,SAASwrB,EAAMG,WAAa3rB,SAASwrB,EAAMI,eAI9Cjb,CAEf,EAEAjR,QAAS,SAASxB,GACd,QAA4B,IAAnBA,EAAG2sB,aAAyC,IAApB3sB,EAAGutB,aACxC,EAEAI,qBAAsB,SAAU3tB,EAAI0D,EAAWc,EAAS,GACpD,MAAMopB,EAAS5tB,EAAG+jB,UACZ8J,EAAYD,EAAS5tB,EAAGgkB,aAAexf,EACvCspB,EAAepqB,EAAU8Y,UACzBuR,EAAkBD,EAAepqB,EAAUsgB,aAGjD,OACK4J,GAAUE,GAAgBD,GAAaE,CAEhD,EAEAC,uBAAwB,SAAUhuB,EAAI0D,GAClC,OAAO1D,EAAG+jB,UAAYrgB,EAAUqgB,SACpC,EAEA5T,KAAM,SAASnQ,EAAIqL,EAAM5J,GACrB,GAAU8L,MAANvN,EAIJ,YAAcuN,IAAV9L,EAGOzB,EAAGE,aAAamL,QAFvBrL,EAAGU,aAAa2K,EAAM5J,EAI9B,EAEAwsB,QAAS,SAASjuB,EAAIqL,GAClB,GAAUkC,MAANvN,EAIJ,QAAOA,EAAGE,aAAamL,EAC3B,EAEA6iB,WAAY,SAASluB,EAAIqL,GACXkC,MAANvN,GAIJA,EAAGsJ,gBAAgB+B,EACvB,EAEA8iB,QAAS,SAASC,EAAMC,EAAIxsB,EAAUqM,EAAQogB,EAAQC,GAKlD,IAAIC,EAAU,CAGdA,OAAiB,SAASC,EAAG1c,EAAGyZ,EAAGkD,GAC/B,OAAOlD,EAAIiD,EAAIC,EAAI3c,CACvB,GAKA,GAHAuc,EAASE,EAAQG,OAGG,iBAATP,GACO,iBAAPC,GACa,iBAAbxsB,GACW,mBAAXqM,EAHX,CAQoB,mBAATqgB,IACPA,EAAO,WAAY,GAIvB,IAAIK,EAAMvvB,OAAOwmB,uBAAyB,SAAS1U,GAC/C9R,OAAO2Y,WAAW7G,EAAU,GAChC,EAII0d,EAASR,EAAKD,EAgBlBlgB,EAAOkgB,GAGP,IAAIhsB,EAAQ/C,OAAOyvB,aAAezvB,OAAOyvB,YAAYC,IAAM1vB,OAAOyvB,YAAYC,OAAS,IAAI5iB,KAE3FyiB,GAnBA,SAASI,EAAKC,GACV,IAAIC,GAAQD,IAAc,IAAI9iB,MAAU/J,EAEpC8sB,GAAQ,GACRhhB,EAAOogB,EAAOY,EAAMd,EAAMS,EAAQhtB,IAElCqtB,GAAQ,GAAKA,GAAQrtB,GACrBqM,EAAOmgB,GACPE,KAEAK,EAAII,EAEZ,GA5BA,CAoCJ,EAEAG,UAAW,SAASnvB,EAAIovB,EAAMC,GAC1B,IAOQ5tB,EAPJqJ,EAAM,GAEV,GAAI9K,aAAcsvB,aAAgB,EAIlC,OAAKtvB,EAAGE,aAAa,aAAekvB,KAAmB,IAAVC,EAsBlC3tB,WAAW1B,EAAGE,aAAa,aAAekvB,KAjBjDtkB,EAAM9K,EAAGstB,MAAMiC,QACfvvB,EAAGstB,MAAMiC,QAAU,0DAEP,SAARH,EACA3tB,EAAQzB,EAAG2sB,YACI,UAARyC,IACP3tB,EAAQzB,EAAGutB,cAGfvtB,EAAGstB,MAAMiC,QAAUzkB,EAGnB9K,EAAGU,aAAa,aAAe0uB,EAAM3tB,GAE9BC,WAAWD,GAK1B,EAEA+tB,aAAc,SAASxvB,EAAIqvB,GACvB,OAAO/tB,EAAO6tB,UAAUnvB,EAAI,SAAUqvB,EAC1C,EAEAI,YAAa,SAASzvB,EAAIqvB,GACtB,OAAO/tB,EAAO6tB,UAAUnvB,EAAI,QAASqvB,EACzC,EAEAK,UAAW,SAASruB,EAASsuB,GAGzB,OADAA,EAAS,SAAWA,EACZtuB,GAAWhC,QAAUgC,GAAWnC,SACpC0wB,KAAgB,aAAVD,EAAyB,cAAgB,gBAC9CE,yBAA2B3wB,SAASykB,gBAAgBgM,IACrDzwB,SAAS2F,KAAK8qB,GACdtuB,EAAQsuB,EAChB,EAEA7kB,IAAK,SAAS9K,EAAI8vB,EAAWruB,EAAOsuB,GAChC,GAAK/vB,EAIL,QAAcuN,IAAV9L,GACmB,IAAdsuB,EACD/vB,EAAGstB,MAAM0C,YAAYF,EAAWruB,EAAO,aAEvCzB,EAAGstB,MAAMwC,GAAaruB,MAEvB,CACH,IAAIurB,GAAehtB,EAAGslB,eAAiBpmB,UAAU8tB,YAGjD,GAAIA,GAAeA,EAAYQ,iBAK3B,OAFAsC,EAAYA,EAAUnuB,QAAQ,WAAY,OAAOkB,cAE1CmqB,EAAYQ,iBAAiBxtB,EAAI,MAAMiwB,iBAAiBH,GAC5D,GAAI9vB,EAAGkwB,aASV,OAPAJ,EAAYA,EAAUnuB,QAAQ,WAAW,SAASwuB,EAAKC,GACnD,OAAOA,EAAOrtB,aAClB,IAEAtB,EAAQzB,EAAGkwB,aAAaJ,GAGpB,sBAAsBntB,KAAKlB,GACpB,SAAUA,GACb,IAAI4uB,EAAUrwB,EAAGstB,MAAMnJ,KAAMmM,EAAYtwB,EAAGuwB,aAAapM,KAQzD,OANAnkB,EAAGuwB,aAAapM,KAAOnkB,EAAGkwB,aAAa/L,KACvCnkB,EAAGstB,MAAMnJ,KAAO1iB,GAAS,EACzBA,EAAQzB,EAAGstB,MAAMkD,UAAY,KAC7BxwB,EAAGstB,MAAMnJ,KAAOkM,EAChBrwB,EAAGuwB,aAAapM,KAAOmM,EAEhB7uB,CACV,CAVM,CAUJA,GAGAA,CAEf,CACJ,EAEAgvB,MAAO,SAASzwB,EAAI6I,EAAKvE,EAAO6M,EAAUuf,GACtC,MAAK1wB,GAAc,MAAP6I,IAAsC,IAAvBvH,EAAOE,QAAQxB,IAA0B,QAAP6I,IAAwC,IAAvBvH,EAAOE,QAAQxB,IAA7F,CAIAsE,EAASA,GAAgB,IACzB,IAAIqsB,EAAarvB,EAAOkuB,aAAaxvB,GACjC4wB,GAAiB,EACjBC,GAAoB,EAEpBvvB,EAAOwJ,IAAI9K,EAAI,iBAA+D,IAA7CsB,EAAO8I,KAAKpK,GAAIsK,IAAI,sBACrDhJ,EAAO8I,KAAKpK,GAAIqK,IAAI,oBAAqB/I,EAAOwJ,IAAI9K,EAAI,gBAGxDsB,EAAOwJ,IAAI9K,EAAI,oBAAqE,IAAhDsB,EAAO8I,KAAKpK,GAAIsK,IAAI,yBACxDhJ,EAAO8I,KAAKpK,GAAIqK,IAAI,uBAAwB/I,EAAOwJ,IAAI9K,EAAI,mBAG3DsB,EAAO8I,KAAKpK,GAAIsK,IAAI,uBACpBsmB,EAAiB9uB,SAASR,EAAO8I,KAAKpK,GAAIuK,IAAI,uBAG9CjJ,EAAO8I,KAAKpK,GAAIsK,IAAI,0BACpBumB,EAAoB/uB,SAASR,EAAO8I,KAAKpK,GAAIuK,IAAI,0BAG1C,MAAP1B,GACA7I,EAAGstB,MAAMiC,QAAU,oCAEfqB,GACAtvB,EAAO6sB,QAAQ,EAAGyC,EAAgBtsB,GAAO,SAAS7C,GAC9CzB,EAAGstB,MAAMwD,WAAcF,EAAiBnvB,EAAS,IACrD,GAAG,UAGHovB,GACAvvB,EAAO6sB,QAAQ,EAAG0C,EAAmBvsB,GAAO,SAAS7C,GACjDzB,EAAGstB,MAAMyD,cAAiBF,EAAoBpvB,EAAS,IAC3D,GAAG,UAGPH,EAAO6sB,QAAQ,EAAGwC,EAAYrsB,GAAO,SAAS7C,GAC1CzB,EAAGstB,MAAM7a,OAAUke,EAAalvB,EAAS,IAC7C,GAAG,UAAU,WACTzB,EAAGstB,MAAM7a,OAAS,GAClBzS,EAAGstB,MAAM5lB,QAAU,OAEK,mBAAbyJ,GACPA,GAER,KAGc,QAAPtI,IACP7I,EAAGstB,MAAMiC,QAAU,oCAEfqB,GACAtvB,EAAO6sB,QAAQ,EAAGyC,EAAgBtsB,GAAO,SAAS7C,GAC9CzB,EAAGstB,MAAMwD,WAAarvB,EAAQ,IAClC,GAAG,UAAU,WACTzB,EAAGstB,MAAMwD,WAAa,EAC1B,IAGAD,GACAvvB,EAAO6sB,QAAQ,EAAG0C,EAAmBvsB,GAAO,SAAS7C,GACjDzB,EAAGstB,MAAMyD,cAAgBtvB,EAAQ,IACrC,GAAG,UAAU,WACTzB,EAAGstB,MAAMyD,cAAgB,EAC7B,IAGJzvB,EAAO6sB,QAAQ,EAAGwC,EAAYrsB,GAAO,SAAS7C,GAC1CzB,EAAGstB,MAAM7a,OAAShR,EAAQ,IAC9B,GAAG,UAAU,WACTzB,EAAGstB,MAAM7a,OAAS,GAClBzS,EAAGstB,MAAM5lB,QAAU,GACnB1H,EAAGstB,MAAM1jB,SAAW,GAEI,mBAAbuH,GACPA,GAER,IA/EJ,CAiFJ,EAEA6F,QAAS,SAAShX,EAAIsE,EAAO6M,GACzB7P,EAAOmvB,MAAMzwB,EAAI,KAAMsE,EAAO6M,EAClC,EAEA4F,UAAW,SAAS/W,EAAIsE,EAAO6M,GAC3B7P,EAAOmvB,MAAMzwB,EAAI,OAAQsE,EAAO6M,EACpC,EAEA9K,KAAM,SAASrG,EAAI0H,QACG,IAAP1H,IACPA,EAAGstB,MAAM5lB,QAAWA,GAAoB,QAEhD,EAEAjH,KAAM,SAAST,QACO,IAAPA,IACPA,EAAGstB,MAAM5lB,QAAU,OAE3B,EAEA0F,SAAU,SAASpN,EAAI0G,EAAM4E,EAASC,GAC9B,MAAOvL,GACPA,EAAGZ,iBAAiBsH,EAAM4E,EAElC,EAEA2X,YAAa,SAASjjB,EAAI0G,EAAM4E,GACjB,OAAPtL,GACAA,EAAGe,oBAAoB2F,EAAM4E,EAErC,EAEA1G,GAAI,SAASvD,EAASoH,EAAUiD,EAAOJ,GACnC,GAAiB,OAAZjK,EAAL,CAIA,IAAI2vB,EAAU1vB,EAAOwN,YAAY,SAmBjC,OAjBAzP,OAAOioB,6BAA6B0J,GAAW,SAASxwB,GAIpD,IAHA,IAAI+F,EAAUlF,EAAQF,iBAAiBsH,GACnChC,EAASjG,EAAEiG,OAEPA,GAAUA,IAAWpF,GAAU,CACnC,IAAM,IAAIkN,EAAI,EAAG0iB,EAAI1qB,EAAQpD,OAAQoL,EAAI0iB,EAAG1iB,IACnC9H,IAAWF,EAAQgI,IACpBjD,EAAQpK,KAAKuF,EAAQjG,GAI7BiG,EAASA,EAAOoO,UACpB,CACJ,EAEAvT,EAAO8L,SAAS/L,EAASqK,EAAOrM,OAAOioB,6BAA6B0J,IAE7DA,CArBP,CAsBJ,EAEAxlB,IAAK,SAASnK,EAASqK,EAAOslB,GACrB3vB,GAAYhC,OAAOioB,6BAA6B0J,KAIrD1vB,EAAO2hB,YAAY5hB,EAASqK,EAAOrM,OAAOioB,6BAA6B0J,WAEhE3xB,OAAOioB,6BAA6B0J,GAC/C,EAEAzlB,IAAK,SAAiBvL,EAAI0G,EAAMyK,GAC5BnR,EAAGZ,iBAAiBsH,GAAM,SAASwqB,EAAO1wB,GAYtC,OAVIA,EAAEiG,QAAUjG,EAAEiG,OAAO1F,qBACrBP,EAAEiG,OAAO1F,oBAAoBP,EAAEkG,KAAMwqB,GAIrClxB,GAAMA,EAAGe,qBACrBP,EAAEmrB,cAAc5qB,oBAAoBP,EAAEkG,KAAMwqB,GAI7B/f,EAAS3Q,EACpB,GACJ,EAEA2wB,KAAM,SAAShB,GACX,IACI5hB,EADA4iB,EAAO,EAGX,GAAmB,IAAfhB,EAAIhtB,OAAc,OAAOguB,EAC7B,IAAK5iB,EAAI,EAAGA,EAAI4hB,EAAIhtB,OAAQoL,IAExB4iB,GAASA,GAAQ,GAAKA,EADhBhB,EAAIiB,WAAW7iB,GAErB4iB,GAAQ,EAGZ,OAAOA,CACX,EAEAjP,aAAc,SAASliB,EAAIqxB,EAAelgB,GACtC,IAAIyP,EACA0Q,EAAa,CACb1Q,UAAW,eACX2Q,WAAY,gBACZC,aAAc,kBACdC,gBAAiB,qBACjBC,YAAa,kBAGjB,IAAK,IAAIjD,KAAK6C,OACU/jB,IAAhBvN,EAAGstB,MAAMmB,KACT7N,EAAY0Q,EAAW7C,IAI/BntB,EAAO0C,SAAShE,EAAIqxB,GAEpB/vB,EAAOiK,IAAIvL,EAAI4gB,GAAW,WACtBtf,EAAOoO,YAAY1P,EAAIqxB,EAC3B,IAEIlgB,GACA7P,EAAOiK,IAAIvL,EAAI4gB,EAAWzP,EAElC,EAEAwgB,cAAe,SAAS3xB,EAAImR,GACxB,IAAIygB,EACAC,EAAc,CACdD,WAAY,gBACZE,YAAa,iBACbC,cAAe,mBACfC,iBAAkB,sBAClBC,aAAc,mBAGlB,IAAK,IAAIxD,KAAKoD,OACUtkB,IAAhBvN,EAAGstB,MAAMmB,KACTmD,EAAaC,EAAYpD,IAIjCntB,EAAOiK,IAAIvL,EAAI4xB,EAAYzgB,EAC/B,EAEA+gB,aAAc,SAASlyB,EAAImR,GACvB,IAAIyP,EACA0Q,EAAa,CACb1Q,UAAW,eACX2Q,WAAY,gBACZC,aAAc,kBACdC,gBAAiB,qBACjBC,YAAa,kBAGjB,IAAK,IAAIjD,KAAK6C,OACU/jB,IAAhBvN,EAAGstB,MAAMmB,KACT7N,EAAY0Q,EAAW7C,IAI/BntB,EAAOiK,IAAIvL,EAAI4gB,EAAWzP,EAC9B,EAEAghB,aAAc,SAASnyB,EAAIyB,GAEvB,IADA,IAAIkkB,EAAU,CAAC,UAAW,OAAQ,MAAO,KAAM,IACtCpX,EAAI,EAAGA,EAAIoX,EAAQxiB,OAAQoL,IAChCjN,EAAOwJ,IAAI9K,EAAI2lB,EAAQpX,GAAK,kBAAmB9M,EAEvD,EAEA2wB,gBAAiB,SAASpyB,EAAIyB,GAE1B,IADA,IAAIkkB,EAAU,CAAC,UAAW,OAAQ,MAAO,KAAM,IACtCpX,EAAI,EAAGA,EAAIoX,EAAQxiB,OAAQoL,IAChCjN,EAAOwJ,IAAI9K,EAAI2lB,EAAQpX,GAAK,qBAAsB9M,EAE1D,EAEAwc,SAAU,SAASxX,EAAQjC,EAAQ3C,GAC3BA,EAAWA,GAAsB,IAArC,IAGIusB,EAAMC,EAFNgE,EAAY5rB,EAASnF,EAAOkD,OAAOiC,GAAQqJ,IAAM,EAIjDtL,IACA6tB,GAAwB7tB,GAG5B4pB,EAPgB/uB,OAAO4tB,aAAe/tB,SAASykB,gBAAgBnH,WAAatd,SAAS2F,KAAK2X,WAAa,EAQvG6R,EAAKgE,EAEL/wB,EAAO6sB,QAAQC,EAAMC,EAAIxsB,GAAU,SAASJ,GACxCvC,SAASykB,gBAAgBnH,UAAY/a,EACrCvC,SAAS2F,KAAKgQ,WAAW2H,UAAY/a,EACrCvC,SAAS2F,KAAK2X,UAAY/a,CAC9B,GACJ,EAEA+a,UAAW,SAAShY,EAAQ3C,GACxBP,EAAO2c,SAAS,KAAMzZ,EAAQ3C,EAClC,EAEAywB,QAAS,SAASlJ,GACd,OAAOA,GAAOpjB,MAAMssB,QAAQlJ,EAChC,EAEAmJ,QAAS,SAASnJ,GACd,IAAK,IAAIgG,KAAQhG,EACb,GAAIA,EAAI5c,eAAe4iB,GACnB,OAAO,EAIf,OAAO,CACX,EAEAoD,aAAc,SAASC,GAMnB,IAJA,IAAI7M,GADJ6M,GAAQ,IACKhc,MAAM,KACfic,EAAK9M,EAAE,GACP+M,EAAK/M,EAAEziB,OAAS,EAAI,IAAMyiB,EAAE,GAAK,GACjCgN,EAAM,eACHA,EAAIjwB,KAAK+vB,IACZA,EAAKA,EAAG/wB,QAAQixB,EAAK,SAEzB,OAAOF,EAAKC,CAChB,EAEAziB,MAAO,WACH,MAAqE,QAA7DhR,SAASiH,cAAc,QAAQjG,aAAa,YACxD,EAEAkQ,aAAc,SAASiV,GACnB,OAAOA,EAAE1jB,QAAQ,WAAW,SAASkxB,GAAG,OAAOA,EAAE,GAAG9vB,aAAc,GACtE,EAEA+vB,cAAe,SAASxvB,GAE7B,OAAY,IAARA,GAAwB,SAARA,IAIR,IAARA,GAAyB,UAARA,GAILA,CACX,EAEA8O,QAAS,SAASpS,EAAI+yB,GAClB/yB,EAAG+H,UAAYgrB,CACnB,EAEAC,QAAS,SAAShzB,GACd,GAAIA,EACA,OAAOA,EAAG+H,SAElB,EAEAkrB,kBAAmB,WACf,IAAIpuB,EAAO3F,SAAS2F,KAChBkuB,EAAO7zB,SAASykB,gBAEpB,OAAOuC,KAAKvZ,IAAK9H,EAAK+e,aAAc/e,EAAK0oB,aAAcwF,EAAK/O,aAAc+O,EAAKnP,aAAcmP,EAAKxF,aACtG,EAEAvP,aAAc,WACV,OAAS9e,SAASg0B,kBAAoBh0B,SAASykB,iBAAiBnH,SACpE,EAEA2W,aAAc,SAASC,EAAOC,GAC1B,MAAMC,EAAW,SAASF,EAAOC,GAC7B,IAAIE,EAAKzxB,SAASsxB,EAAM,IAAMC,EAC1B7H,EAAK+H,EAAK,IAAO,IAAM,EAE3B,OADA/H,EAAKA,EAAEvB,SAAS,IAAI9mB,OAAS,EAAMqoB,EAAEvB,SAAS,IAAM,IAAIuB,EAAEvB,SAAS,MAC5DuB,CACX,EAKA,OAHA4H,EAASA,EAAMzhB,QAAQ,MAAM,EAAKyhB,EAAMlwB,UAAU,EAAEkwB,EAAMjwB,QAAUiwB,EACpEC,EAASvxB,SAAU,IAAIuxB,EAAQ,KAEhB,IAAIC,EAASF,EAAMlwB,UAAU,EAAE,GAAImwB,KAAUC,EAASF,EAAMlwB,UAAU,EAAE,GAAImwB,KAAUC,EAASF,EAAMlwB,UAAU,EAAE,GAAImwB,IACxI,EAEAG,YAAa,SAASJ,EAAOC,GACzB,MAAMI,EAAgB,SAASL,EAAOC,GAClC,IAAIE,EAAKzxB,SAASsxB,EAAM,IAAMC,EAC1B7H,EAAK+H,EAAK,EAAK,EAAI,EAGvB,OAFA/H,EAAKA,EAAEvB,SAAS,IAAI9mB,OAAS,EAAMqoB,EAAEvB,SAAS,IAAM,IAAIuB,EAAEvB,SAAS,MAE5DuB,CACX,EAKA,OAHA4H,EAASA,EAAMzhB,QAAQ,MAAM,EAAKyhB,EAAMlwB,UAAU,EAAEkwB,EAAMjwB,QAAUiwB,EACpEC,EAASvxB,SAAU,IAAIuxB,EAAQ,KAEhB,IAAII,EAAcL,EAAMlwB,UAAU,EAAE,GAAImwB,KAAUI,EAAcL,EAAMlwB,UAAU,EAAE,GAAImwB,KAAUI,EAAcL,EAAMlwB,UAAU,EAAE,GAAImwB,IACvJ,EAGAriB,SAAW,SAAUC,EAAOyiB,EAAMvzB,GAE7B8Q,IAKJA,EAAU+G,YAAW,WACpB0b,IAIAziB,OAAU1D,CACX,GAAGpN,GACJ,EAGAwzB,SAAU,SAAU1iB,EAAOyiB,EAAMvzB,GAEhCyX,aAAa3G,GAGbA,EAAU+G,WAAW0b,EAAMvzB,EAC5B,EAEAyzB,UAAW,SAASnyB,GAChB,GAAqB,iBAAVA,EAAoB,CAG3B,IAAIuB,GAFJvB,EAAQA,EAAME,QAAQ,KAAM,MAERA,QAAQ,mBAAmB,SAASsB,GACpD,MAAO,IAAMA,EAAQC,UAAU,EAAGD,EAAQE,OAAS,GAAK,IAC5D,IAEA,IACI1B,EAAQ2B,KAAKC,MAAML,EACV,CAAX,MAAMxC,GAAK,CACjB,CAEA,OAAOiB,CACX,EAEAkD,mBAAoB,SAASlD,EAAOoyB,GAChC,IAAIjkB,EAAQ5K,KAAKyY,cAAc7N,MAC3B/J,EAAS,KAIb,GAAqB,iBAFrBpE,EAAQH,EAAOsyB,UAAUnyB,IAEM,CAC3B,IAAIqyB,EAEA9T,EADA+T,GAAoB,EAGxB,IAAK,IAAI/J,KAAOvoB,GAERue,EADQ,YAARgK,EACa,EAEAhlB,KAAKib,cAAc+J,GAAOhlB,KAAKib,cAAc+J,GAAOloB,SAASkoB,KAG5Dpa,GAASoQ,EAAa+T,IACpCD,EAAY9J,EACZ+J,EAAmB/T,GAKvBna,EADAiuB,EACSryB,EAAMqyB,GAENryB,CAEjB,MACIoE,EAASpE,EAGb,OAAOoE,CACX,EAEAW,KAAM,SAASwtB,EAAO7iB,GAClB,MAAO,GAAGlQ,MAAMC,KAAK8yB,GAAO5yB,IAAI+P,EACpC,EAEA8iB,sBAAuB,SAASxyB,GAC5B,IAAIoE,EAAS,KAGb,GAAsB,iBAFtBpE,EAAQH,EAAOsyB,UAAUnyB,KAIrB,QAAwB8L,IAAnB9L,EAAa,MAAkB,CAChC,IAAIgH,EAAWjF,OAAO6lB,KAAK5nB,EAAa,OAAG,GAC3CA,EAAQ+B,OAAO0wB,OAAOzyB,EAAa,OAAG,GAEI,OAArCvC,SAASiH,cAAcsC,KACxB5C,EAASpE,EAEjB,OAEAoE,EAASpE,EAGb,OAAOoE,CACX,EAEAsuB,oBAAqB,SAAS1yB,GACtBA,EAAQH,EAAOsyB,UAAUnyB,GAA7B,IACIoE,EAASvE,EAAOqD,mBAAmBlD,GAUvC,OARgB,OAAXoE,QAAuC0H,IAApB1H,EAAc,QAClCA,EAASvE,EAAO2yB,sBAAsBpuB,IAG1B,OAAXA,GAA6B,OAAVpE,QAAuC8L,IAArB9L,EAAe,UACrDoE,EAASpE,EAAe,SAGrBoE,CACX,EAEAojB,oBAAqB,SAASmL,GAC1B,IAAIC,EAAM7G,iBAAiBtuB,SAASykB,iBAAiBsM,iBAAiBmE,GAKtE,OAJKC,GAAOA,EAAIlxB,OAAS,IACrBkxB,EAAMA,EAAInL,QAGPmL,CACX,EAEA9yB,aAAc,SAASF,GACnB,IAAIurB,EAAOvrB,EAAQ0rB,wBAEnB,OACIH,EAAK9c,KAAO,GACZ8c,EAAKzI,MAAQ,GACbyI,EAAK7c,SAAW1Q,OAAOwkB,aAAe3kB,SAASykB,gBAAgBK,eAC/D4I,EAAKxI,QAAU/kB,OAAO8tB,YAAcjuB,SAASykB,gBAAgB2Q,YAErE,EAEAC,sBAAuB,SAASlzB,GAC5B,IAAIukB,EAAIvkB,EAAQ0rB,wBAAwB5I,KACpCqQ,EAAInzB,EAAQ0rB,wBAAwBjd,IACpC2kB,EAAKvO,KAAKvZ,IAAIzN,SAASykB,gBAAgB2Q,YAAaj1B,OAAO8tB,YAAc,GACzEuH,EAAKxO,KAAKvZ,IAAIzN,SAASykB,gBAAgBK,aAAc3kB,OAAOwkB,aAAe,GAC3E8Q,EAAItzB,EAAQizB,YACZM,EAAIvzB,EAAQ2iB,aAEhB,OACKwQ,EAAIE,GACLF,EAAII,EAAI,GACPhP,EAAI6O,GACL7O,EAAI+O,EAAI,CAEhB,EAEAE,mBAAoB,SAAS1jB,GAC3BjS,SAASE,iBAAiB,aAAc+R,GACxCjS,SAASE,iBAAiB,eAAgB+R,EAC5C,EAEA2jB,SAAU,WACN,IACI,OAAOz1B,OAAOuwB,OAASvwB,OAAOyQ,GAGlC,CAFE,MAAOtP,GACL,OAAO,CACX,CACJ,EAEAu0B,WAAWC,GACA,kBAAkBryB,KAAKqyB,UAMqB,IAAnBz1B,EAAOC,UAC/CD,EAAOC,QAAU8B,4BC1jDrB,IAEQD,EAEA4zB,EACAhW,EACArM,EACAuM,EAEA+V,EACAC,EACAC,EAEAC,EACAC,EACAC,EACAC,EAEAC,EAGAC,EAsDAtV,EA3EJuV,GAqBID,EAAW,SAASxV,GACNlI,YAAW,WACrB,IAAI4d,EAASt0B,OAAOsoB,aAAa,EAAG,GAGpCqL,EAAY5yB,UAAUC,IAAI,UAEX,IAAXszB,GAEA3W,EAAe5c,UAAUC,IAAI,UAE7B6c,EAAa9c,UAAU0D,OAAO,YAG9BkZ,EAAe5c,UAAU0D,OAAO,UAEhCoZ,EAAa9c,UAAUC,IAAI,WAI/B4d,EAAOC,UACX,GAAG,KACP,EAgCIC,EAAQ,SAASF,GAEjB+U,EAAY5yB,UAAU0D,OAAO,UAE7BkZ,EAAe5c,UAAUC,IAAI,UAE7B6c,EAAa9c,UAAUC,IAAI,SAC/B,EAoCI,CACNhE,KAAM,YAEI+C,EAAUnC,SAASiH,cAAc,wBAMjCyM,EAAiBvR,EAAQ8E,cAAc,sCACzB9E,EAAQ8E,cAAc,mCACpC8uB,EAAc5zB,EAAQ8E,cAAc,mCACpC8Y,EAAiB5d,EAAQ8E,cAAc,sCACvCgZ,EAAe9d,EAAQ8E,cAAc,oCAErC+uB,EAAqB7zB,EAAQ8E,cAAc,0CAC3CgvB,EAAyB9zB,EAAQ8E,cAAc,+CAC/CivB,EAA4B/zB,EAAQ8E,cAAc,kDAElDkvB,EAA6Bh0B,EAAQ8E,cAAc,oDACnDmvB,EAAiCj0B,EAAQ8E,cAAc,yDACvDovB,EAAmCl0B,EAAQ8E,cAAc,2DACzDqvB,EAAmCn0B,EAAQ8E,cAAc,4DAGzDsvB,EAAe,IAAItX,SAAS9c,IAGfuD,GAAG,oBAAqB8wB,GAMrCD,EAAa7wB,GAAG,kBAAmBwb,GAlEvC+U,EAAuB/1B,iBAAiB,SAAS,WAC7CwT,EAAevQ,UAAUC,IAAI,UAC7B4yB,EAAmB7yB,UAAU0D,OAAO,SACxC,IAGAqvB,EAA0Bh2B,iBAAiB,SAAS,WAChDwT,EAAevQ,UAAU0D,OAAO,UAChCmvB,EAAmB7yB,UAAUC,IAAI,SACrC,IAKAgzB,EAA+Bl2B,iBAAiB,SAAS,WACrDwT,EAAevQ,UAAUC,IAAI,UAC7B+yB,EAA2BhzB,UAAU0D,OAAO,SAChD,IAGAwvB,EAAiCn2B,iBAAiB,SAAS,WACvDwT,EAAevQ,UAAU0D,OAAO,UAChCsvB,EAA2BhzB,UAAUC,IAAI,SAC7C,IAGAkzB,EAAiCp2B,iBAAiB,SAAS,WAE3D,IA2CN,IAKFkC,OAAOuzB,oBAAmB,WACtBc,EAAer3B,MACnB,6BCpKA,IAEKu3B,EACAC,EACApxB,EAJDqxB,EAsDI,CACNz3B,KAAM,WAjDY,IACd03B,EA8BAC,EAoBHvxB,EAASxF,SAASiH,cAAc,0BAChC0vB,EAAU32B,SAASiH,cAAc,iCACjC2vB,EAAU52B,SAASiH,cAAc,mBAE5BzB,GApDa,QAFfsxB,EAAYn3B,SAAS8M,YAAYjH,MAOrCsxB,EAAUpxB,GAAG,oBAAoB,WAEhCkxB,EAAQzzB,UAAUC,IAAI,aAGtB0V,YAAW,WAEV8d,EAAQzzB,UAAU0D,OAAO,YAC1B,GAAG,IACJ,IAGAiwB,EAAUpxB,GAAG,qBAAqB,WAIjC,IAAIsxB,EAAO,IAAI/pB,KAAKA,KAAK4iB,MAAQ,QAEjCnjB,SAASvB,IAAI,yBAA0B2rB,EAAU7Q,YAAc,KAAO,MAAO,CAACjZ,QAASgqB,GACxF,KAgCML,IA5BFI,EAAiBJ,EAAQ1vB,cAAc,wBAMmB,IAAzD7E,OAAOqsB,qBAAqBsI,EAAgBJ,IAIjDA,EAAQ9Y,OAAO,CACdjN,IAAKxO,OAAO0sB,uBAAuBiI,EAAgBJ,GACnD7Y,SAAU,UAmBX,GAKF1b,OAAOuzB,oBAAmB,WACzBkB,EAAaz3B,MACd,4BC3EA,IAAI63B,EAgBO,CACH73B,KAAM,WAbN83B,YAAYxxB,GAAG,uBAAuB,WAClC,IAAIyxB,EAAWD,YAAYE,cACvBzR,EAAOuR,YAAYG,UACvBvkB,QAAQC,IAAI,4BAA8BokB,GAC1CrkB,QAAQC,IAAI,cAAgB4S,EAKhC,GAMA,GAKRvjB,OAAOuzB,oBAAmB,WACtBsB,EAAgB73B,MACpB,SAG+D,IAAnBiB,EAAOC,UAC/CD,EAAOC,QAAU22B,0BC9BrB,IAAIC,EAAc,WACjB,IAAIrc,EAEAvQ,EAAMxE,KAEHuxB,EAAU,WAGhB,OAAKr3B,SAASykB,gBAAgBvjB,aAAa,iBAC1BlB,SAASykB,gBAAgBzjB,aAAa,iBACK,OAA1Coc,aAAaO,QAAQ,iBAC/BP,aAAaO,QAAQ,iBACC,WAAlByZ,IACJE,IAGK,OACX,EAEIC,EAAU,SAAS5R,EAAMwR,GAC/B,IAAIK,EAAcH,IAGA,WAAbF,EACCG,MAAqB3R,IACzBA,EAAO2R,KAEE3R,IAASwR,IACnBA,EAAWxR,GAIZ,IAAI8R,EAAiB5c,EAAOA,EAAK5T,cAAc,2CAA6CkwB,EAAW,MAAQ,KAG/Gn3B,SAASykB,gBAAgBjjB,aAAa,+BAAgC,QAGtExB,SAASykB,gBAAgBjjB,aAAa,gBAAiBmkB,GAGvD7M,YAAW,WACV9Y,SAASykB,gBAAgBra,gBAAgB,+BAC1C,GAAG,KAGGgT,aAAaC,QAAQ,gBAAiBsI,GAGvC8R,IACJra,aAAaC,QAAQ,qBAAsB8Z,GAC3CO,EAAkBD,IAGf9R,IAAS6R,GACZjsB,eAAeC,QAAQxL,SAASykB,gBAAiB,sBAAuBna,EAEvE,EAEC8sB,EAAc,WACjB,IAAKvc,EACJ,OAAO,KAGR,IAAI8c,EAAW9c,EAAOA,EAAK5T,cAAc,mCAAqC,KAE9E,OAAK0wB,GAAYA,EAAS32B,aAAa,iBACtB22B,EAAS32B,aAAa,iBACrBhB,SAASykB,gBAAgBvjB,aAAa,sBAChDlB,SAASykB,gBAAgBzjB,aAAa,sBACa,OAA/Coc,aAAaO,QAAQ,sBACzBP,aAAaO,QAAQ,sBAEO,oBAArBia,iBAAmCA,iBAAmB,OAEtE,EAEIN,EAAgB,WACb,OAAOn3B,OAAO03B,WAAW,gCAAgClrB,QAAU,OAAS,OAChF,EAWC+qB,EAAoB,SAASlmB,GAChC,IAAI2lB,EAAW3lB,EAAKxQ,aAAa,iBAE7B82B,EAAajd,EAAK5T,cAAc,mCAE/B6wB,GACJA,EAAW30B,UAAU0D,OAAO,UAG7B2K,EAAKrO,UAAUC,IAAI,UACnBga,aAAaC,QAAQ,qBAAsB8Z,EAC5C,EAqBG,MAAO,CACH/3B,KAAM,WACXyb,EAAO7a,SAASiH,cAAc,uCA1C/BswB,EAAQF,IAAWD,KACnB7rB,eAAeC,QAAQxL,SAASykB,gBAAiB,oBAAqBna,GA6CjEuQ,GAxBO,GAAG9Y,MAAMC,KAAK6Y,EAAK5Y,iBAAiB,6BAEpCC,KAAI,SAAUsP,GAChBA,EAAKtR,iBAAiB,SAAS,SAASoB,GAChDA,EAAEsE,iBAEF,IAAIuxB,EAAW3lB,EAAKxQ,aAAa,iBAC7B2kB,EAAOwR,EAEO,WAAbA,IACJxR,EAAO2R,KAGRC,EAAQ5R,EAAMwR,EACf,GACK,GAYA,EAEAE,QAAS,WACL,OAAOA,GACX,EAEND,YAAa,WACZ,OAAOA,GACR,EAEAE,cAAe,WACL,OAAOA,GACX,EAEAC,QAAS,SAAS5R,GACd,OAAO4R,EAAQ5R,EACnB,EAENjgB,GAAI,SAASyG,EAAMC,GAClB,OAAOb,eAAe7F,GAAG1F,SAASykB,gBAAiBtY,EAAMC,EAC1D,EAEAE,IAAK,SAASH,EAAMI,GACnB,OAAOhB,eAAee,IAAItM,SAASykB,gBAAiBtY,EAAMI,EAC3D,EAEF,CA7JkB,GAgKlBnK,OAAOuzB,oBAAmB,WACtBuB,EAAY93B,MAChB,SAG+D,IAAnBiB,EAAOC,UAC/CD,EAAOC,QAAU42B,KCxKjBa,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB5pB,IAAjB6pB,EACH,OAAOA,EAAa53B,QAGrB,IAAID,EAAS03B,EAAyBE,GAAY,CAGjD33B,QAAS,CAAC,GAOX,OAHA63B,EAAoBF,GAAU53B,EAAQA,EAAOC,QAAS03B,GAG/C33B,EAAOC,OACf,CCpBAH,OAAOhB,aAAe,EAAQ,OAC9BgB,OAAOiC,OAAS,EAAQ,OACxBjC,OAAOd,MAAQ,EAAQ,OACvBc,OAAOoL,eAAiB,EAAQ,OAChCpL,OAAOkK,UAAY,EAAQ,OAC3BlK,OAAOuM,SAAW,EAAQ,OAC1BvM,OAAON,SAAW,EAAQ,OAC1BM,OAAOb,SAAW,EAAQ,OAC1Ba,OAAOi4B,WAAa,EAAQ,OAC5Bj4B,OAAOL,aAAe,EAAQ,OAC9BK,OAAOZ,OAAS,EAAQ,OACxBY,OAAOJ,gBAAkB,EAAQ,OACjCI,OAAOX,SAAW,EAAQ,MAC1BW,OAAOP,YAAc,EAAQ,OAC7BO,OAAO8e,SAAW,EAAQ,OAC1B9e,OAAOqhB,UAAY,EAAQ,OAC3BrhB,OAAOV,SAAW,EAAQ,OAC1BU,OAAOT,UAAY,EAAQ,OAC3BS,OAAOR,SAAW,EAAQ,OAG1BQ,OAAOs2B,eAAiB,EAAQ,OAChCt2B,OAAO+2B,YAAc,EAAQ,MAC7B/2B,OAAO82B,gBAAkB,EAAQ,OACjC92B,OAAO02B,aAAe,EAAQ","sources":["webpack://metronic/../demo38/src/js/components/_init.js","webpack://metronic/../demo38/src/js/components/app.js","webpack://metronic/../demo38/src/js/components/blockui.js","webpack://metronic/../demo38/src/js/components/cookie.js","webpack://metronic/../demo38/src/js/components/dialer.js","webpack://metronic/../demo38/src/js/components/drawer.js","webpack://metronic/../demo38/src/js/components/event-handler.js","webpack://metronic/../demo38/src/js/components/feedback.js","webpack://metronic/../demo38/src/js/components/image-input.js","webpack://metronic/../demo38/src/js/components/menu.js","webpack://metronic/../demo38/src/js/components/password-meter.js","webpack://metronic/../demo38/src/js/components/scroll.js","webpack://metronic/../demo38/src/js/components/scrolltop.js","webpack://metronic/../demo38/src/js/components/search.js","webpack://metronic/../demo38/src/js/components/stepper.js","webpack://metronic/../demo38/src/js/components/sticky.js","webpack://metronic/../demo38/src/js/components/swapper.js","webpack://metronic/../demo38/src/js/components/toggle.js","webpack://metronic/../demo38/src/js/components/util.js","webpack://metronic/../demo38/src/js/layout/search.js","webpack://metronic/../demo38/src/js/layout/sidebar.js","webpack://metronic/../demo38/src/js/layout/theme-mode-user.js","webpack://metronic/../demo38/src/js/layout/theme-mode.js","webpack://metronic/webpack/bootstrap","webpack://metronic/./webpack/scripts.demo38.js"],"sourcesContent":["//\r\n// Global init of core components\r\n//\r\n\r\n// Init components\r\nvar KTComponents = function () {\r\n // Public methods\r\n return {\r\n init: function () {\r\n KTApp.init();\r\n KTDrawer.init();\r\n KTMenu.init();\r\n KTScroll.init();\r\n KTSticky.init();\r\n KTSwapper.init();\r\n KTToggle.init();\r\n KTScrolltop.init();\r\n KTDialer.init();\r\n KTImageInput.init();\r\n KTPasswordMeter.init();\r\n }\r\n }\t\r\n}();\r\n\r\n// On document ready\r\nif (document.readyState === \"loading\") {\r\n\t/*document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tKTComponents.init();\r\n\t});*/\r\n document.addEventListener(\"turbo:load\", function() {\r\n KTComponents.init();\r\n });\r\n document.addEventListener(\"ux-live:load\", function() {\r\n KTComponents.init();\r\n });\r\n } else {\r\n\tKTComponents.init();\r\n }\r\n\r\n // Init page loader\r\nwindow.addEventListener(\"load\", function() {\r\n KTApp.hidePageLoading();\r\n});\r\n\r\n// Declare KTApp for Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n\twindow.KTComponents = module.exports = KTComponents;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTApp = function () {\r\n var initialized = false;\r\n var select2FocusFixInitialized = false;\r\n var countUpInitialized = false;\r\n\r\n var createBootstrapTooltip = function (el, options) {\r\n if (el.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n var delay = {};\r\n\r\n // Handle delay options\r\n if (el.hasAttribute('data-bs-delay-hide')) {\r\n delay['hide'] = el.getAttribute('data-bs-delay-hide');\r\n }\r\n\r\n if (el.hasAttribute('data-bs-delay-show')) {\r\n delay['show'] = el.getAttribute('data-bs-delay-show');\r\n }\r\n\r\n if (delay) {\r\n options['delay'] = delay;\r\n }\r\n\r\n // Check dismiss options\r\n if (el.hasAttribute('data-bs-dismiss') && el.getAttribute('data-bs-dismiss') == 'click') {\r\n options['dismiss'] = 'click';\r\n }\r\n\r\n // Initialize popover\r\n var tp = new bootstrap.Tooltip(el, options); \r\n\r\n // Handle dismiss\r\n if (options['dismiss'] && options['dismiss'] === 'click') {\r\n // Hide popover on element click\r\n el.addEventListener(\"click\", function (e) {\r\n tp.hide();\r\n });\r\n }\r\n\r\n el.setAttribute(\"data-kt-initialized\", \"1\");\r\n\r\n return tp;\r\n }\r\n\r\n var createBootstrapTooltips = function () {\r\n var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"tooltip\"]'));\r\n\r\n var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {\r\n createBootstrapTooltip(tooltipTriggerEl, {});\r\n });\r\n }\r\n\r\n var createBootstrapPopover = function (el, options) {\r\n if (el.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n var delay = {};\r\n\r\n // Handle delay options\r\n if (el.hasAttribute('data-bs-delay-hide')) {\r\n delay['hide'] = el.getAttribute('data-bs-delay-hide');\r\n }\r\n\r\n if (el.hasAttribute('data-bs-delay-show')) {\r\n delay['show'] = el.getAttribute('data-bs-delay-show');\r\n }\r\n\r\n if (delay) {\r\n options['delay'] = delay;\r\n }\r\n\r\n // Handle dismiss option\r\n if (el.getAttribute('data-bs-dismiss') == 'true') {\r\n options['dismiss'] = true;\r\n }\r\n\r\n if (options['dismiss'] === true) {\r\n options['template'] = '

'\r\n }\r\n\r\n // Initialize popover\r\n var popover = new bootstrap.Popover(el, options);\r\n\r\n // Handle dismiss click\r\n if (options['dismiss'] === true) {\r\n var dismissHandler = function (e) {\r\n popover.hide();\r\n }\r\n\r\n el.addEventListener('shown.bs.popover', function () {\r\n var dismissEl = document.getElementById(el.getAttribute('aria-describedby'));\r\n dismissEl.addEventListener('click', dismissHandler);\r\n });\r\n\r\n el.addEventListener('hide.bs.popover', function () {\r\n var dismissEl = document.getElementById(el.getAttribute('aria-describedby'));\r\n dismissEl.removeEventListener('click', dismissHandler);\r\n });\r\n }\r\n\r\n el.setAttribute(\"data-kt-initialized\", \"1\");\r\n\r\n return popover;\r\n }\r\n\r\n var createBootstrapPopovers = function () {\r\n var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"popover\"]'));\r\n\r\n var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {\r\n createBootstrapPopover(popoverTriggerEl, {});\r\n });\r\n }\r\n\r\n var createBootstrapToasts = function () {\r\n var toastElList = [].slice.call(document.querySelectorAll('.toast'));\r\n var toastList = toastElList.map(function (toastEl) {\r\n if (toastEl.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n toastEl.setAttribute(\"data-kt-initialized\", \"1\");\r\n\r\n return new bootstrap.Toast(toastEl, {})\r\n });\r\n }\r\n\r\n var createButtons = function () {\r\n var buttonsGroup = [].slice.call(document.querySelectorAll('[data-kt-buttons=\"true\"]'));\r\n\r\n buttonsGroup.map(function (group) {\r\n if (group.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n var selector = group.hasAttribute('data-kt-buttons-target') ? group.getAttribute('data-kt-buttons-target') : '.btn';\r\n var activeButtons = [].slice.call(group.querySelectorAll(selector));\r\n\r\n // Toggle Handler\r\n KTUtil.on(group, selector, 'click', function (e) {\r\n activeButtons.map(function (button) {\r\n button.classList.remove('active');\r\n });\r\n\r\n this.classList.add('active');\r\n }); \r\n\r\n group.setAttribute(\"data-kt-initialized\", \"1\");\r\n });\r\n }\r\n\r\n var createDateRangePickers = function() {\r\n // Check if jQuery included\r\n if (typeof jQuery == 'undefined') {\r\n return;\r\n }\r\n\r\n // Check if daterangepicker included\r\n if (typeof $.fn.daterangepicker === 'undefined') {\r\n return;\r\n }\r\n\r\n var elements = [].slice.call(document.querySelectorAll('[data-kt-daterangepicker=\"true\"]'));\r\n var start = moment().subtract(29, 'days');\r\n var end = moment();\r\n \r\n elements.map(function (element) {\r\n if (element.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n var display = element.querySelector('div');\r\n var attrOpens = element.hasAttribute('data-kt-daterangepicker-opens') ? element.getAttribute('data-kt-daterangepicker-opens') : 'left';\r\n var range = element.getAttribute('data-kt-daterangepicker-range');\r\n\r\n var cb = function(start, end) {\r\n var current = moment();\r\n\r\n if (display) {\r\n if ( current.isSame(start, \"day\") && current.isSame(end, \"day\") ) {\r\n display.innerHTML = start.format('D MMM YYYY');\r\n } else {\r\n display.innerHTML = start.format('D MMM YYYY') + ' - ' + end.format('D MMM YYYY');\r\n } \r\n }\r\n }\r\n\r\n if ( range === \"today\" ) {\r\n start = moment();\r\n end = moment();\r\n }\r\n\r\n $(element).daterangepicker({\r\n startDate: start,\r\n endDate: end,\r\n opens: attrOpens,\r\n ranges: {\r\n 'Today': [moment(), moment()],\r\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\r\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\r\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\r\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\r\n 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]\r\n }\r\n }, cb);\r\n\r\n cb(start, end);\r\n\r\n element.setAttribute(\"data-kt-initialized\", \"1\");\r\n });\r\n }\r\n\r\n var createSelect2 = function () {\r\n // Check if jQuery included\r\n if (typeof jQuery == 'undefined') {\r\n return;\r\n }\r\n\r\n // Check if select2 included\r\n if (typeof $.fn.select2 === 'undefined') {\r\n return;\r\n }\r\n\r\n var elements = [].slice.call(document.querySelectorAll('[data-control=\"select2\"], [data-kt-select2=\"true\"]'));\r\n\r\n elements.map(function (element) {\r\n if (element.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n var options = {\r\n dir: document.body.getAttribute('direction')\r\n };\r\n\r\n if (element.getAttribute('data-hide-search') == 'true') {\r\n options.minimumResultsForSearch = Infinity;\r\n }\r\n\r\n $(element).select2(options);\r\n\r\n element.setAttribute(\"data-kt-initialized\", \"1\");\r\n });\r\n\r\n /*\r\n * Hacky fix for a bug in select2 with jQuery 3.6.0's new nested-focus \"protection\"\r\n * see: https://github.com/select2/select2/issues/5993\r\n * see: https://github.com/jquery/jquery/issues/4382\r\n *\r\n * TODO: Recheck with the select2 GH issue and remove once this is fixed on their side\r\n */\r\n\r\n if (select2FocusFixInitialized === false) {\r\n select2FocusFixInitialized = true;\r\n \r\n $(document).on('select2:open', function(e) {\r\n var elements = document.querySelectorAll('.select2-container--open .select2-search__field');\r\n if (elements.length > 0) {\r\n elements[elements.length - 1].focus();\r\n } \r\n });\r\n } \r\n }\r\n\r\n var createAutosize = function () {\r\n if (typeof autosize === 'undefined') {\r\n return;\r\n }\r\n\r\n var inputs = [].slice.call(document.querySelectorAll('[data-kt-autosize=\"true\"]'));\r\n\r\n inputs.map(function (input) {\r\n if (input.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n autosize(input);\r\n\r\n input.setAttribute(\"data-kt-initialized\", \"1\");\r\n });\r\n }\r\n\r\n var createCountUp = function () {\r\n if (typeof countUp === 'undefined') {\r\n return;\r\n }\r\n\r\n var elements = [].slice.call(document.querySelectorAll('[data-kt-countup=\"true\"]:not(.counted)'));\r\n\r\n elements.map(function (element) {\r\n if (KTUtil.isInViewport(element) && KTUtil.visible(element)) {\r\n if (element.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n var options = {};\r\n\r\n var value = element.getAttribute('data-kt-countup-value');\r\n value = parseFloat(value.replace(/,/g, \"\"));\r\n\r\n if (element.hasAttribute('data-kt-countup-start-val')) {\r\n options.startVal = parseFloat(element.getAttribute('data-kt-countup-start-val'));\r\n }\r\n\r\n if (element.hasAttribute('data-kt-countup-duration')) {\r\n options.duration = parseInt(element.getAttribute('data-kt-countup-duration'));\r\n }\r\n\r\n if (element.hasAttribute('data-kt-countup-decimal-places')) {\r\n options.decimalPlaces = parseInt(element.getAttribute('data-kt-countup-decimal-places'));\r\n }\r\n\r\n if (element.hasAttribute('data-kt-countup-prefix')) {\r\n options.prefix = element.getAttribute('data-kt-countup-prefix');\r\n }\r\n\r\n if (element.hasAttribute('data-kt-countup-separator')) {\r\n options.separator = element.getAttribute('data-kt-countup-separator');\r\n }\r\n\r\n if (element.hasAttribute('data-kt-countup-suffix')) {\r\n options.suffix = element.getAttribute('data-kt-countup-suffix');\r\n }\r\n\r\n var count = new countUp.CountUp(element, value, options);\r\n\r\n count.start();\r\n\r\n element.classList.add('counted');\r\n\r\n element.setAttribute(\"data-kt-initialized\", \"1\");\r\n }\r\n });\r\n }\r\n\r\n var createCountUpTabs = function () {\r\n if (typeof countUp === 'undefined') {\r\n return;\r\n }\r\n\r\n if (countUpInitialized === false) {\r\n // Initial call\r\n createCountUp();\r\n\r\n // Window scroll event handler\r\n window.addEventListener('scroll', createCountUp);\r\n } \r\n\r\n // Tabs shown event handler\r\n var tabs = [].slice.call(document.querySelectorAll('[data-kt-countup-tabs=\"true\"][data-bs-toggle=\"tab\"]'));\r\n tabs.map(function (tab) {\r\n if (tab.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n tab.addEventListener('shown.bs.tab', createCountUp);\r\n\r\n tab.setAttribute(\"data-kt-initialized\", \"1\");\r\n });\r\n\r\n countUpInitialized = true;\r\n }\r\n\r\n var createTinySliders = function () {\r\n if (typeof tns === 'undefined') {\r\n return;\r\n }\r\n\r\n // Sliders\r\n const elements = Array.prototype.slice.call(document.querySelectorAll('[data-tns=\"true\"]'), 0);\r\n\r\n if (!elements && elements.length === 0) {\r\n return;\r\n }\r\n\r\n elements.forEach(function (el) {\r\n if (el.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n\r\n initTinySlider(el);\r\n\r\n el.setAttribute(\"data-kt-initialized\", \"1\");\r\n });\r\n }\r\n\r\n var initTinySlider = function (el) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n const tnsOptions = {};\r\n\r\n // Convert string boolean\r\n const checkBool = function (val) {\r\n if (val === 'true') {\r\n return true;\r\n }\r\n if (val === 'false') {\r\n return false;\r\n }\r\n return val;\r\n };\r\n\r\n // get extra options via data attributes\r\n el.getAttributeNames().forEach(function (attrName) {\r\n // more options; https://github.com/ganlanyuan/tiny-slider#options\r\n if ((/^data-tns-.*/g).test(attrName)) {\r\n let optionName = attrName.replace('data-tns-', '').toLowerCase().replace(/(?:[\\s-])\\w/g, function (match) {\r\n return match.replace('-', '').toUpperCase();\r\n });\r\n\r\n if (attrName === 'data-tns-responsive') {\r\n // fix string with a valid json\r\n const jsonStr = el.getAttribute(attrName).replace(/(\\w+:)|(\\w+ :)/g, function (matched) {\r\n return '\"' + matched.substring(0, matched.length - 1) + '\":';\r\n });\r\n try {\r\n // convert json string to object\r\n tnsOptions[optionName] = JSON.parse(jsonStr);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n else {\r\n tnsOptions[optionName] = checkBool(el.getAttribute(attrName));\r\n }\r\n }\r\n });\r\n\r\n const opt = Object.assign({}, {\r\n container: el,\r\n slideBy: 'page',\r\n autoplay: true,\r\n center: true,\r\n autoplayButtonOutput: false,\r\n }, tnsOptions);\r\n\r\n if (el.closest('.tns')) {\r\n KTUtil.addClass(el.closest('.tns'), 'tns-initiazlied');\r\n }\r\n\r\n return tns(opt);\r\n }\r\n\r\n var initSmoothScroll = function () {\r\n if (initialized === true) {\r\n return;\r\n }\r\n\r\n if (typeof SmoothScroll === 'undefined') {\r\n return;\r\n }\r\n\r\n new SmoothScroll('a[data-kt-scroll-toggle][href*=\"#\"]', {\r\n speed: 1000,\r\n speedAsDuration: true,\r\n offset: function (anchor, toggle) {\r\n // Integer or Function returning an integer. How far to offset the scrolling anchor location in pixels\r\n // This example is a function, but you could do something as simple as `offset: 25`\r\n\r\n // An example returning different values based on whether the clicked link was in the header nav or not\r\n if (anchor.hasAttribute('data-kt-scroll-offset')) {\r\n var val = KTUtil.getResponsiveValue(anchor.getAttribute('data-kt-scroll-offset'));\r\n \r\n return val;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n });\r\n }\r\n\r\n var initCard = function() {\r\n // Toggle Handler\r\n KTUtil.on(document.body, '[data-kt-card-action=\"remove\"]', 'click', function (e) {\r\n e.preventDefault();\r\n \r\n const card = this.closest('.card');\r\n\r\n if (!card) {\r\n return;\r\n }\r\n\r\n const confirmMessage = this.getAttribute(\"data-kt-card-confirm-message\");\r\n const confirm = this.getAttribute(\"data-kt-card-confirm\") === \"true\";\r\n\r\n if (confirm) {\r\n // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/\r\n Swal.fire({\r\n text: confirmMessage ? confirmMessage : \"Are you sure to remove ?\",\r\n icon: \"warning\",\r\n buttonsStyling: false,\r\n confirmButtonText: \"Confirm\",\r\n denyButtonText: \"Cancel\",\r\n customClass: {\r\n confirmButton: \"btn btn-primary\",\r\n denyButton: \"btn btn-danger\"\r\n }\r\n }).then(function (result) {\r\n if (result.isConfirmed) { \r\n card.remove();\r\n }\r\n });\r\n } else {\r\n card.remove();\r\n } \r\n }); \r\n }\r\n\r\n var initModal = function() {\r\n var elements = Array.prototype.slice.call(document.querySelectorAll(\"[data-bs-stacked-modal]\"));\r\n\r\n if (elements && elements.length > 0) {\r\n elements.forEach((element) => {\r\n if (element.getAttribute(\"data-kt-initialized\") === \"1\") {\r\n return;\r\n }\r\n \r\n element.setAttribute(\"data-kt-initialized\", \"1\");\r\n \r\n element.addEventListener(\"click\", function(e) {\r\n e.preventDefault();\r\n \r\n const modalEl = document.querySelector(this.getAttribute(\"data-bs-stacked-modal\"));\r\n \r\n if (modalEl) {\r\n const modal = new bootstrap.Modal(modalEl);\r\n modal.show();\r\n } \r\n }); \r\n });\r\n } \r\n }\r\n\r\n var initCheck = function () {\r\n if (initialized === true) {\r\n return;\r\n }\r\n\r\n // Toggle Handler\r\n KTUtil.on(document.body, '[data-kt-check=\"true\"]', 'change', function (e) {\r\n var check = this;\r\n var targets = document.querySelectorAll(check.getAttribute('data-kt-check-target'));\r\n\r\n KTUtil.each(targets, function (target) {\r\n if (target.type == 'checkbox') {\r\n target.checked = check.checked;\r\n } else {\r\n target.classList.toggle('active');\r\n }\r\n });\r\n });\r\n }\r\n\r\n var initBootstrapCollapse = function() {\r\n if (initialized === true) {\r\n return;\r\n }\r\n\r\n KTUtil.on(document.body, '.collapsible[data-bs-toggle=\"collapse\"]', 'click', function(e) {\r\n if (this.classList.contains('collapsed')) {\r\n this.classList.remove('active');\r\n this.blur();\r\n } else {\r\n this.classList.add('active');\r\n }\r\n\r\n if (this.hasAttribute('data-kt-toggle-text')) {\r\n var text = this.getAttribute('data-kt-toggle-text');\r\n var target = this.querySelector('[data-kt-toggle-text-target=\"true\"]');\r\n var target = target ? target : this;\r\n\r\n this.setAttribute('data-kt-toggle-text', target.innerText);\r\n target.innerText = text;\r\n }\r\n });\r\n }\r\n\r\n var initBootstrapRotate = function() {\r\n if (initialized === true) {\r\n return;\r\n }\r\n \r\n KTUtil.on(document.body, '[data-kt-rotate=\"true\"]', 'click', function(e) {\r\n if (this.classList.contains('active')) {\r\n this.classList.remove('active');\r\n this.blur();\r\n } else {\r\n this.classList.add('active');\r\n }\r\n });\r\n }\r\n\r\n var initLozad = function() {\r\n // Check if lozad included\r\n if (typeof lozad === 'undefined') {\r\n return;\r\n }\r\n\r\n\t\tconst observer = lozad(); // lazy loads elements with default selector as '.lozad'\r\n observer.observe();\r\n\t}\r\n\r\n var showPageLoading = function() {\r\n document.body.classList.add('page-loading');\r\n document.body.setAttribute('data-kt-app-page-loading', \"on\");\r\n }\r\n\r\n var hidePageLoading = function() {\r\n // CSS3 Transitions only after page load(.page-loading or .app-page-loading class added to body tag and remove with JS on page load)\r\n document.body.classList.remove('page-loading');\r\n document.body.removeAttribute('data-kt-app-page-loading');\r\n }\r\n\r\n return {\r\n init: function () {\r\n initLozad();\r\n\r\n initSmoothScroll();\r\n\r\n initCard();\r\n\r\n initModal();\r\n\r\n initCheck();\r\n\r\n initBootstrapCollapse();\r\n\r\n initBootstrapRotate(); \r\n\r\n createBootstrapTooltips();\r\n\r\n createBootstrapPopovers();\r\n\r\n createBootstrapToasts();\r\n\r\n createDateRangePickers();\r\n\r\n createButtons();\r\n\r\n createSelect2();\r\n\r\n createCountUp();\r\n\r\n createCountUpTabs();\r\n\r\n createAutosize();\r\n\r\n createTinySliders();\r\n\r\n initialized = true;\r\n },\r\n\r\n initTinySlider: function(el) {\r\n initTinySlider(el);\r\n },\r\n\r\n showPageLoading: function () {\r\n showPageLoading();\r\n },\r\n\r\n hidePageLoading: function () {\r\n hidePageLoading();\r\n },\r\n\r\n createBootstrapPopover: function(el, options) {\r\n return createBootstrapPopover(el, options);\r\n },\r\n\r\n createBootstrapTooltip: function(el, options) {\r\n return createBootstrapTooltip(el, options);\r\n }\r\n };\r\n}();\r\n\r\n// Declare KTApp for Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTApp;\r\n}","\"use strict\";\r\n\r\n// Class definition\r\nvar KTBlockUI = function(element, options) {\r\n //////////////////////////////\r\n // ** Private variables ** //\r\n //////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n zIndex: false,\r\n overlayClass: '',\r\n overflow: 'hidden',\r\n message: ''\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('blockui') ) {\r\n the = KTUtil.data(element).get('blockui');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.element = element;\r\n the.overlayElement = null;\r\n the.blocked = false;\r\n the.positionChanged = false;\r\n the.overflowChanged = false;\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('blockui', the);\r\n }\r\n\r\n var _block = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.blockui.block', the) === false ) {\r\n return;\r\n }\r\n\r\n var isPage = (the.element.tagName === 'BODY');\r\n \r\n var position = KTUtil.css(the.element, 'position');\r\n var overflow = KTUtil.css(the.element, 'overflow');\r\n var zIndex = isPage ? 10000 : 1;\r\n\r\n if (the.options.zIndex > 0) {\r\n zIndex = the.options.zIndex;\r\n } else {\r\n if (KTUtil.css(the.element, 'z-index') != 'auto') {\r\n zIndex = KTUtil.css(the.element, 'z-index');\r\n }\r\n }\r\n\r\n the.element.classList.add('blockui');\r\n\r\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\r\n KTUtil.css(the.element, 'position', 'relative');\r\n the.positionChanged = true;\r\n }\r\n\r\n if (the.options.overflow === 'hidden' && overflow === 'visible') { \r\n KTUtil.css(the.element, 'overflow', 'hidden');\r\n the.overflowChanged = true;\r\n }\r\n\r\n the.overlayElement = document.createElement('DIV'); \r\n the.overlayElement.setAttribute('class', 'blockui-overlay ' + the.options.overlayClass);\r\n \r\n the.overlayElement.innerHTML = the.options.message;\r\n\r\n KTUtil.css(the.overlayElement, 'z-index', zIndex);\r\n\r\n the.element.append(the.overlayElement);\r\n the.blocked = true;\r\n\r\n KTEventHandler.trigger(the.element, 'kt.blockui.after.blocked', the)\r\n }\r\n\r\n var _release = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.blockui.release', the) === false ) {\r\n return;\r\n }\r\n\r\n the.element.classList.add('blockui');\r\n \r\n if (the.positionChanged) {\r\n KTUtil.css(the.element, 'position', '');\r\n }\r\n\r\n if (the.overflowChanged) {\r\n KTUtil.css(the.element, 'overflow', '');\r\n }\r\n\r\n if (the.overlayElement) {\r\n KTUtil.remove(the.overlayElement);\r\n } \r\n\r\n the.blocked = false;\r\n\r\n KTEventHandler.trigger(the.element, 'kt.blockui.released', the);\r\n }\r\n\r\n var _isBlocked = function() {\r\n return the.blocked;\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('blockui');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.block = function() {\r\n _block();\r\n }\r\n\r\n the.release = function() {\r\n _release();\r\n }\r\n\r\n the.isBlocked = function() {\r\n return _isBlocked();\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTBlockUI.getInstance = function(element) {\r\n if (element !== null && KTUtil.data(element).has('blockui')) {\r\n return KTUtil.data(element).get('blockui');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTBlockUI;\r\n}","\"use strict\";\r\n// DOCS: https://javascript.info/cookie\r\n\r\n// Class definition\r\nvar KTCookie = function() {\r\n return {\r\n // returns the cookie with the given name,\r\n // or undefined if not found\r\n get: function(name) {\r\n var matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n\r\n return matches ? decodeURIComponent(matches[1]) : null;\r\n },\r\n\r\n // Please note that a cookie value is encoded,\r\n // so getCookie uses a built-in decodeURIComponent function to decode it.\r\n set: function(name, value, options) {\r\n if ( typeof options === \"undefined\" || options === null ) {\r\n options = {};\r\n }\r\n\r\n options = Object.assign({}, {\r\n path: '/'\r\n }, options);\r\n\r\n if ( options.expires instanceof Date ) {\r\n options.expires = options.expires.toUTCString();\r\n }\r\n\r\n var updatedCookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value);\r\n\r\n for ( var optionKey in options ) {\r\n if ( options.hasOwnProperty(optionKey) === false ) {\r\n continue;\r\n }\r\n\r\n updatedCookie += \"; \" + optionKey;\r\n var optionValue = options[optionKey];\r\n\r\n if ( optionValue !== true ) {\r\n updatedCookie += \"=\" + optionValue;\r\n }\r\n }\r\n\r\n document.cookie = updatedCookie;\r\n },\r\n\r\n // To remove a cookie, we can call it with a negative expiration date:\r\n remove: function(name) {\r\n this.set(name, \"\", {\r\n 'max-age': -1\r\n });\r\n }\r\n }\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTCookie;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTDialer = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n min: null,\r\n max: null,\r\n step: 1,\r\n decimals: 0,\r\n prefix: \"\",\r\n suffix: \"\"\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n // Constructor\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('dialer') === true ) {\r\n the = KTUtil.data(element).get('dialer');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n // Initialize\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // Elements\r\n the.element = element;\r\n the.incElement = the.element.querySelector('[data-kt-dialer-control=\"increase\"]');\r\n the.decElement = the.element.querySelector('[data-kt-dialer-control=\"decrease\"]');\r\n the.inputElement = the.element.querySelector('input[type]'); \r\n \r\n // Set Values\r\n if (_getOption('decimals')) {\r\n the.options.decimals = parseInt(_getOption('decimals'));\r\n }\r\n \r\n if (_getOption('prefix')) {\r\n the.options.prefix = _getOption('prefix');\r\n }\r\n \r\n if (_getOption('suffix')) {\r\n the.options.suffix = _getOption('suffix');\r\n }\r\n \r\n if (_getOption('step')) {\r\n the.options.step = parseFloat(_getOption('step'));\r\n }\r\n\r\n if (_getOption('min')) {\r\n the.options.min = parseFloat(_getOption('min'));\r\n }\r\n\r\n if (_getOption('max')) {\r\n the.options.max = parseFloat(_getOption('max'));\r\n }\r\n\r\n the.value = parseFloat(the.inputElement.value.replace(/[^\\d.]/g, '')); \r\n\r\n _setValue();\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('dialer', the);\r\n }\r\n\r\n // Handlers\r\n var _handlers = function() {\r\n KTUtil.addEvent(the.incElement, 'click', function(e) {\r\n e.preventDefault();\r\n \r\n _increase();\r\n });\r\n\r\n KTUtil.addEvent(the.decElement, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n _decrease();\r\n });\r\n\r\n KTUtil.addEvent(the.inputElement, 'input', function(e) {\r\n e.preventDefault();\r\n\r\n _setValue();\r\n });\r\n }\r\n\r\n // Event handlers\r\n var _increase = function() {\r\n // Trigger \"after.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.increase', the);\r\n\r\n the.inputElement.value = the.value + the.options.step;\r\n _setValue();\r\n\r\n // Trigger \"before.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.increased', the);\r\n\r\n return the;\r\n }\r\n\r\n var _decrease = function() {\r\n // Trigger \"after.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.decrease', the);\r\n\r\n the.inputElement.value = the.value - the.options.step; \r\n\r\n _setValue();\r\n\r\n // Trigger \"before.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.decreased', the);\r\n\r\n return the;\r\n }\r\n\r\n // Set Input Value\r\n var _setValue = function(value) {\r\n // Trigger \"after.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.change', the);\r\n\r\n if (value !== undefined) {\r\n the.value = value;\r\n } else {\r\n the.value = _parse(the.inputElement.value); \r\n } \r\n \r\n if (the.options.min !== null && the.value < the.options.min) {\r\n the.value = the.options.min;\r\n }\r\n\r\n if (the.options.max !== null && the.value > the.options.max) {\r\n the.value = the.options.max;\r\n }\r\n\r\n the.inputElement.value = _format(the.value);\r\n\r\n // Trigger input change event\r\n the.inputElement.dispatchEvent(new Event('change'));\r\n\r\n // Trigger \"after.dialer\" event\r\n KTEventHandler.trigger(the.element, 'kt.dialer.changed', the);\r\n }\r\n\r\n var _parse = function(val) {\r\n val = val\r\n .replace(/[^0-9.-]/g, '') // remove chars except number, hyphen, point. \r\n .replace(/(\\..*)\\./g, '$1') // remove multiple points.\r\n .replace(/(?!^)-/g, '') // remove middle hyphen.\r\n .replace(/^0+(\\d)/gm, '$1'); // remove multiple leading zeros. <-- I added this.\r\n\r\n val = parseFloat(val);\r\n\r\n if (isNaN(val)) {\r\n val = 0;\r\n } \r\n\r\n return val;\r\n }\r\n\r\n // Format\r\n var _format = function(val){\r\n return the.options.prefix + parseFloat(val).toFixed(the.options.decimals) + the.options.suffix; \r\n }\r\n\r\n // Get option\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-dialer-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-dialer-' + name);\r\n var value = attr; \r\n\r\n return value;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('dialer');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.setMinValue = function(value) {\r\n the.options.min = value;\r\n }\r\n\r\n the.setMaxValue = function(value) {\r\n the.options.max = value;\r\n }\r\n\r\n the.setValue = function(value) {\r\n _setValue(value);\r\n }\r\n\r\n the.getValue = function() {\r\n return the.inputElement.value;\r\n } \r\n\r\n the.update = function() {\r\n _setValue();\r\n }\r\n\r\n the.increase = function() {\r\n return _increase();\r\n }\r\n\r\n the.decrease = function() {\r\n return _decrease();\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTDialer.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('dialer') ) {\r\n return KTUtil.data(element).get('dialer');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTDialer.createInstances = function(selector = '[data-kt-dialer=\"true\"]') {\r\n // Get instances\r\n var elements = document.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTDialer(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTDialer.init = function() {\r\n KTDialer.createInstances();\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTDialer;\r\n}","\"use strict\";\r\n\r\nvar KTDrawerHandlersInitialized = false; \r\n\r\n// Class definition\r\nvar KTDrawer = function(element, options) {\r\n //////////////////////////////\r\n // ** Private variables ** //\r\n //////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n overlay: true,\r\n direction: 'end',\r\n baseClass: 'drawer',\r\n overlayClass: 'drawer-overlay'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('drawer') ) {\r\n the = KTUtil.data(element).get('drawer');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('drawer');\r\n the.element = element;\r\n the.overlayElement = null;\r\n the.name = the.element.getAttribute('data-kt-drawer-name');\r\n the.shown = false;\r\n the.lastWidth;\r\n the.toggleElement = null;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-drawer', 'true');\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Update Instance\r\n _update();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('drawer', the);\r\n }\r\n\r\n var _handlers = function() {\r\n var togglers = _getOption('toggle');\r\n var closers = _getOption('close');\r\n\r\n if ( togglers !== null && togglers.length > 0 ) {\r\n KTUtil.on(document.body, togglers, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n the.toggleElement = this;\r\n _toggle();\r\n });\r\n }\r\n\r\n if ( closers !== null && closers.length > 0 ) {\r\n KTUtil.on(document.body, closers, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n the.closeElement = this;\r\n _hide();\r\n });\r\n }\r\n }\r\n\r\n var _toggle = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.drawer.toggle', the) === false ) {\r\n return;\r\n }\r\n\r\n if ( the.shown === true ) {\r\n _hide();\r\n } else {\r\n _show();\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.drawer.toggled', the);\r\n }\r\n\r\n var _hide = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.drawer.hide', the) === false ) {\r\n return;\r\n }\r\n\r\n the.shown = false;\r\n\r\n _deleteOverlay();\r\n\r\n document.body.removeAttribute('data-kt-drawer-' + the.name, 'on');\r\n document.body.removeAttribute('data-kt-drawer');\r\n\r\n KTUtil.removeClass(the.element, the.options.baseClass + '-on');\r\n\r\n if ( the.toggleElement !== null ) {\r\n KTUtil.removeClass(the.toggleElement, 'active');\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.drawer.after.hidden', the) === false\r\n }\r\n\r\n var _show = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.drawer.show', the) === false ) {\r\n return;\r\n }\r\n\r\n the.shown = true;\r\n\r\n _createOverlay();\r\n document.body.setAttribute('data-kt-drawer-' + the.name, 'on');\r\n document.body.setAttribute('data-kt-drawer', 'on');\r\n\r\n KTUtil.addClass(the.element, the.options.baseClass + '-on');\r\n\r\n if ( the.toggleElement !== null ) {\r\n KTUtil.addClass(the.toggleElement, 'active');\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.drawer.shown', the);\r\n }\r\n\r\n var _update = function() {\r\n var width = _getWidth();\r\n var direction = _getOption('direction');\r\n\r\n var top = _getOption('top');\r\n var bottom = _getOption('bottom');\r\n var start = _getOption('start');\r\n var end = _getOption('end');\r\n\r\n // Reset state\r\n if ( KTUtil.hasClass(the.element, the.options.baseClass + '-on') === true && String(document.body.getAttribute('data-kt-drawer-' + the.name + '-')) === 'on' ) {\r\n the.shown = true;\r\n } else {\r\n the.shown = false;\r\n } \r\n\r\n // Activate/deactivate\r\n if ( _getOption('activate') === true ) {\r\n KTUtil.addClass(the.element, the.options.baseClass);\r\n KTUtil.addClass(the.element, the.options.baseClass + '-' + direction);\r\n \r\n KTUtil.css(the.element, 'width', width, true);\r\n the.lastWidth = width;\r\n\r\n if (top) {\r\n KTUtil.css(the.element, 'top', top);\r\n }\r\n\r\n if (bottom) {\r\n KTUtil.css(the.element, 'bottom', bottom);\r\n }\r\n\r\n if (start) {\r\n if (KTUtil.isRTL()) {\r\n KTUtil.css(the.element, 'right', start);\r\n } else {\r\n KTUtil.css(the.element, 'left', start);\r\n }\r\n }\r\n\r\n if (end) {\r\n if (KTUtil.isRTL()) {\r\n KTUtil.css(the.element, 'left', end);\r\n } else {\r\n KTUtil.css(the.element, 'right', end);\r\n }\r\n }\r\n } else {\r\n KTUtil.removeClass(the.element, the.options.baseClass);\r\n KTUtil.removeClass(the.element, the.options.baseClass + '-' + direction);\r\n\r\n KTUtil.css(the.element, 'width', '');\r\n\r\n if (top) {\r\n KTUtil.css(the.element, 'top', '');\r\n }\r\n\r\n if (bottom) {\r\n KTUtil.css(the.element, 'bottom', '');\r\n }\r\n\r\n if (start) {\r\n if (KTUtil.isRTL()) {\r\n KTUtil.css(the.element, 'right', '');\r\n } else {\r\n KTUtil.css(the.element, 'left', '');\r\n }\r\n }\r\n\r\n if (end) {\r\n if (KTUtil.isRTL()) {\r\n KTUtil.css(the.element, 'left', '');\r\n } else {\r\n KTUtil.css(the.element, 'right', '');\r\n }\r\n }\r\n\r\n _hide();\r\n }\r\n }\r\n\r\n var _createOverlay = function() {\r\n if ( _getOption('overlay') === true ) {\r\n the.overlayElement = document.createElement('DIV');\r\n\r\n KTUtil.css(the.overlayElement, 'z-index', KTUtil.css(the.element, 'z-index') - 1); // update\r\n\r\n document.body.append(the.overlayElement);\r\n\r\n KTUtil.addClass(the.overlayElement, _getOption('overlay-class'));\r\n\r\n KTUtil.addEvent(the.overlayElement, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n if ( _getOption('permanent') !== true ) {\r\n _hide();\r\n }\r\n });\r\n }\r\n }\r\n\r\n var _deleteOverlay = function() {\r\n if ( the.overlayElement !== null ) {\r\n KTUtil.remove(the.overlayElement);\r\n }\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-drawer-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-drawer-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _getWidth = function() {\r\n var width = _getOption('width');\r\n\r\n if ( width === 'auto') {\r\n width = KTUtil.css(the.element, 'width');\r\n }\r\n\r\n return width;\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('drawer');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.toggle = function() {\r\n return _toggle();\r\n }\r\n\r\n the.show = function() {\r\n return _show();\r\n }\r\n\r\n the.hide = function() {\r\n return _hide();\r\n }\r\n\r\n the.isShown = function() {\r\n return the.shown;\r\n }\r\n\r\n the.update = function() {\r\n _update();\r\n }\r\n\r\n the.goElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTDrawer.getInstance = function(element) {\r\n if (element !== null && KTUtil.data(element).has('drawer')) {\r\n return KTUtil.data(element).get('drawer');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Hide all drawers and skip one if provided\r\nKTDrawer.hideAll = function(skip = null, selector = '[data-kt-drawer=\"true\"]') {\r\n var items = document.querySelectorAll(selector);\r\n\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n var drawer = KTDrawer.getInstance(item);\r\n\r\n if (!drawer) {\r\n continue;\r\n }\r\n\r\n if ( skip ) {\r\n if ( item !== skip ) {\r\n drawer.hide();\r\n }\r\n } else {\r\n drawer.hide();\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Update all drawers\r\nKTDrawer.updateAll = function(selector = '[data-kt-drawer=\"true\"]') {\r\n var items = document.querySelectorAll(selector);\r\n\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var drawer = KTDrawer.getInstance(items[i]);\r\n\r\n if (drawer) {\r\n drawer.update();\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Create instances\r\nKTDrawer.createInstances = function(selector = '[data-kt-drawer=\"true\"]') {\r\n // Initialize Menus\r\n var elements = document.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTDrawer(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Toggle instances\r\nKTDrawer.handleShow = function() {\r\n // External drawer toggle handler\r\n KTUtil.on(document.body, '[data-kt-drawer-show=\"true\"][data-kt-drawer-target]', 'click', function(e) {\r\n e.preventDefault();\r\n \r\n var element = document.querySelector(this.getAttribute('data-kt-drawer-target'));\r\n\r\n if (element) {\r\n KTDrawer.getInstance(element).show();\r\n } \r\n });\r\n}\r\n\r\n// Dismiss instances\r\nKTDrawer.handleDismiss = function() {\r\n // External drawer toggle handler\r\n KTUtil.on(document.body, '[data-kt-drawer-dismiss=\"true\"]', 'click', function(e) {\r\n var element = this.closest('[data-kt-drawer=\"true\"]');\r\n\r\n if (element) {\r\n var drawer = KTDrawer.getInstance(element);\r\n if (drawer.isShown()) {\r\n drawer.hide();\r\n }\r\n } \r\n });\r\n}\r\n\r\n// Handle resize\r\nKTDrawer.handleResize = function() {\r\n // Window resize Handling\r\n window.addEventListener('resize', function() {\r\n var timer;\r\n\r\n KTUtil.throttle(timer, function() {\r\n // Locate and update drawer instances on window resize\r\n var elements = document.querySelectorAll('[data-kt-drawer=\"true\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var drawer = KTDrawer.getInstance(elements[i]);\r\n if (drawer) {\r\n drawer.update();\r\n }\r\n }\r\n }\r\n }, 200);\r\n });\r\n}\r\n\r\n// Global initialization\r\nKTDrawer.init = function() {\r\n KTDrawer.createInstances();\r\n\r\n if (KTDrawerHandlersInitialized === false) {\r\n KTDrawer.handleResize();\r\n KTDrawer.handleShow();\r\n KTDrawer.handleDismiss();\r\n\r\n KTDrawerHandlersInitialized = true;\r\n }\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTDrawer;\r\n}","\"use strict\";\r\n\r\n// Class definition\r\nvar KTEventHandler = function() {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var _handlers = {};\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n var _triggerEvent = function(element, name, target) {\r\n var returnValue = true;\r\n var eventValue;\r\n\r\n if ( KTUtil.data(element).has(name) === true ) {\r\n var handlerIds = KTUtil.data(element).get(name);\r\n var handlerId;\r\n\r\n for (var i = 0; i < handlerIds.length; i++) {\r\n handlerId = handlerIds[i];\r\n \r\n if ( _handlers[name] && _handlers[name][handlerId] ) {\r\n var handler = _handlers[name][handlerId];\r\n var value;\r\n \r\n if ( handler.name === name ) {\r\n if ( handler.one == true ) {\r\n if ( handler.fired == false ) {\r\n _handlers[name][handlerId].fired = true;\r\n \r\n eventValue = handler.callback.call(this, target);\r\n }\r\n } else {\r\n eventValue = handler.callback.call(this, target);\r\n }\r\n\r\n if ( eventValue === false ) {\r\n returnValue = false;\r\n }\r\n }\r\n }\r\n } \r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n var _addEvent = function(element, name, callback, one) {\r\n var handlerId = KTUtil.getUniqueId('event');\r\n var handlerIds = KTUtil.data(element).get(name);\r\n\r\n if ( !handlerIds ) {\r\n handlerIds = [];\r\n } \r\n\r\n handlerIds.push(handlerId);\r\n\r\n KTUtil.data(element).set(name, handlerIds);\r\n\r\n if ( !_handlers[name] ) {\r\n _handlers[name] = {};\r\n }\r\n\r\n _handlers[name][handlerId] = {\r\n name: name,\r\n callback: callback,\r\n one: one,\r\n fired: false\r\n };\r\n\r\n return handlerId;\r\n }\r\n\r\n var _removeEvent = function(element, name, handlerId) {\r\n var handlerIds = KTUtil.data(element).get(name);\r\n var index = handlerIds && handlerIds.indexOf(handlerId);\r\n \r\n if (index !== -1) {\r\n handlerIds.splice(index, 1);\r\n KTUtil.data(element).set(name, handlerIds);\r\n }\r\n\r\n if (_handlers[name] && _handlers[name][handlerId]) {\r\n delete _handlers[name][handlerId];\r\n }\r\n }\r\n\r\n ////////////////////////////\r\n // ** Public Methods ** //\r\n ////////////////////////////\r\n return {\r\n trigger: function(element, name, target) {\r\n return _triggerEvent(element, name, target);\r\n },\r\n\r\n on: function(element, name, handler) {\r\n return _addEvent(element, name, handler);\r\n },\r\n\r\n one: function(element, name, handler) {\r\n return _addEvent(element, name, handler, true);\r\n },\r\n\r\n off: function(element, name, handlerId) {\r\n return _removeEvent(element, name, handlerId);\r\n },\r\n\r\n debug: function() {\r\n for (var b in _handlers) {\r\n if ( _handlers.hasOwnProperty(b) ) console.log(b);\r\n }\r\n }\r\n }\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTEventHandler;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTFeedback = function(options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n // Default options\r\n var defaultOptions = {\r\n 'width' : 100,\r\n 'placement' : 'top-center',\r\n 'content' : '',\r\n 'type': 'popup'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n _init();\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('feedback');\r\n the.element;\r\n the.shown = false;\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('feedback', the);\r\n }\r\n\r\n var _handlers = function() {\r\n KTUtil.addEvent(the.element, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n _go();\r\n });\r\n }\r\n\r\n var _show = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.feedback.show', the) === false ) {\r\n return;\r\n }\r\n\r\n if ( the.options.type === 'popup') {\r\n _showPopup();\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.feedback.shown', the);\r\n\r\n return the;\r\n }\r\n\r\n var _hide = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.feedback.hide', the) === false ) {\r\n return;\r\n }\r\n\r\n if ( the.options.type === 'popup') {\r\n _hidePopup();\r\n }\r\n\r\n the.shown = false;\r\n\r\n KTEventHandler.trigger(the.element, 'kt.feedback.hidden', the);\r\n\r\n return the;\r\n }\r\n\r\n var _showPopup = function() {\r\n the.element = document.createElement(\"DIV\");\r\n\r\n KTUtil.addClass(the.element, 'feedback feedback-popup');\r\n KTUtil.setHTML(the.element, the.options.content);\r\n\r\n if (the.options.placement == 'top-center') {\r\n _setPopupTopCenterPosition();\r\n }\r\n\r\n document.body.appendChild(the.element);\r\n\r\n KTUtil.addClass(the.element, 'feedback-shown');\r\n\r\n the.shown = true;\r\n }\r\n\r\n var _setPopupTopCenterPosition = function() {\r\n var width = KTUtil.getResponsiveValue(the.options.width);\r\n var height = KTUtil.css(the.element, 'height');\r\n\r\n KTUtil.addClass(the.element, 'feedback-top-center');\r\n\r\n KTUtil.css(the.element, 'width', width);\r\n KTUtil.css(the.element, 'left', '50%');\r\n KTUtil.css(the.element, 'top', '-' + height);\r\n }\r\n\r\n var _hidePopup = function() {\r\n the.element.remove();\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('feedback');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.show = function() {\r\n return _show();\r\n }\r\n\r\n the.hide = function() {\r\n return _hide();\r\n }\r\n\r\n the.isShown = function() {\r\n return the.shown;\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTFeedback;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTImageInput = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n \r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('image-input') === true ) {\r\n the = KTUtil.data(element).get('image-input');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('image-input');\r\n\r\n // Elements\r\n the.element = element;\r\n the.inputElement = KTUtil.find(element, 'input[type=\"file\"]');\r\n the.wrapperElement = KTUtil.find(element, '.image-input-wrapper');\r\n the.cancelElement = KTUtil.find(element, '[data-kt-image-input-action=\"cancel\"]');\r\n the.removeElement = KTUtil.find(element, '[data-kt-image-input-action=\"remove\"]');\r\n the.hiddenElement = KTUtil.find(element, 'input[type=\"hidden\"]');\r\n the.src = KTUtil.css(the.wrapperElement, 'backgroundImage');\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-image-input', 'true');\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('image-input', the);\r\n }\r\n\r\n // Init Event Handlers\r\n var _handlers = function() {\r\n KTUtil.addEvent(the.inputElement, 'change', _change);\r\n KTUtil.addEvent(the.cancelElement, 'click', _cancel);\r\n KTUtil.addEvent(the.removeElement, 'click', _remove);\r\n }\r\n\r\n // Event Handlers\r\n var _change = function(e) {\r\n e.preventDefault();\r\n\r\n if ( the.inputElement !== null && the.inputElement.files && the.inputElement.files[0] ) {\r\n // Fire change event\r\n if ( KTEventHandler.trigger(the.element, 'kt.imageinput.change', the) === false ) {\r\n return;\r\n }\r\n\r\n var reader = new FileReader();\r\n\r\n reader.onload = function(e) {\r\n KTUtil.css(the.wrapperElement, 'background-image', 'url('+ e.target.result +')');\r\n }\r\n\r\n reader.readAsDataURL(the.inputElement.files[0]);\r\n\r\n the.element.classList.add('image-input-changed');\r\n the.element.classList.remove('image-input-empty');\r\n\r\n // Fire removed event\r\n KTEventHandler.trigger(the.element, 'kt.imageinput.changed', the);\r\n }\r\n }\r\n\r\n var _cancel = function(e) {\r\n e.preventDefault();\r\n\r\n // Fire cancel event\r\n if ( KTEventHandler.trigger(the.element, 'kt.imageinput.cancel', the) === false ) {\r\n return;\r\n }\r\n\r\n the.element.classList.remove('image-input-changed');\r\n the.element.classList.remove('image-input-empty');\r\n\r\n if (the.src === 'none') { \r\n KTUtil.css(the.wrapperElement, 'background-image', '');\r\n the.element.classList.add('image-input-empty');\r\n } else {\r\n KTUtil.css(the.wrapperElement, 'background-image', the.src);\r\n }\r\n \r\n the.inputElement.value = \"\";\r\n\r\n if ( the.hiddenElement !== null ) {\r\n the.hiddenElement.value = \"0\";\r\n }\r\n\r\n // Fire canceled event\r\n KTEventHandler.trigger(the.element, 'kt.imageinput.canceled', the);\r\n }\r\n\r\n var _remove = function(e) {\r\n e.preventDefault();\r\n\r\n // Fire remove event\r\n if ( KTEventHandler.trigger(the.element, 'kt.imageinput.remove', the) === false ) {\r\n return;\r\n }\r\n\r\n the.element.classList.remove('image-input-changed');\r\n the.element.classList.add('image-input-empty');\r\n\r\n KTUtil.css(the.wrapperElement, 'background-image', \"none\");\r\n the.inputElement.value = \"\";\r\n\r\n if ( the.hiddenElement !== null ) {\r\n the.hiddenElement.value = \"1\";\r\n }\r\n\r\n // Fire removed event\r\n KTEventHandler.trigger(the.element, 'kt.imageinput.removed', the);\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('image-input');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.getInputElement = function() {\r\n return the.inputElement;\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n \r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTImageInput.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('image-input') ) {\r\n return KTUtil.data(element).get('image-input');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTImageInput.createInstances = function(selector = '[data-kt-image-input]') {\r\n // Initialize Menus\r\n var elements = document.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTImageInput(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTImageInput.init = function() {\r\n KTImageInput.createInstances();\r\n};\r\n\r\n// Webpack Support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTImageInput;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTMenuHandlersInitialized = false;\r\n\r\n// Class definition\r\nvar KTMenu = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n dropdown: {\r\n hoverTimeout: 200,\r\n zindex: 107\r\n },\r\n\r\n accordion: {\r\n slideSpeed: 250,\r\n expand: false\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('menu') === true ) {\r\n the = KTUtil.data(element).get('menu');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('menu');\r\n the.element = element;\r\n the.triggerElement;\r\n the.disabled = false;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-menu', 'true');\r\n\r\n _setTriggerElement();\r\n _update();\r\n\r\n KTUtil.data(the.element).set('menu', the);\r\n }\r\n\r\n var _destroy = function() { // todo\r\n\r\n }\r\n\r\n // Event Handlers\r\n // Toggle handler\r\n var _click = function(element, e) {\r\n e.preventDefault();\r\n\r\n if (the.disabled === true) {\r\n return;\r\n }\r\n\r\n var item = _getItemElement(element);\r\n\r\n if ( _getOptionFromElementAttribute(item, 'trigger') !== 'click' ) {\r\n return;\r\n }\r\n\r\n if ( _getOptionFromElementAttribute(item, 'toggle') === false ) {\r\n _show(item);\r\n } else {\r\n _toggle(item);\r\n }\r\n }\r\n\r\n // Link handler\r\n var _link = function(element, e) {\r\n if (the.disabled === true) {\r\n return;\r\n }\r\n \r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.link.click', element) === false ) {\r\n return;\r\n }\r\n\r\n // Dismiss all shown dropdowns\r\n KTMenu.hideDropdowns();\r\n\r\n KTEventHandler.trigger(the.element, 'kt.menu.link.clicked', element);\r\n }\r\n\r\n // Dismiss handler\r\n var _dismiss = function(element, e) {\r\n var item = _getItemElement(element);\r\n var items = _getItemChildElements(item);\r\n\r\n if ( item !== null && _getItemSubType(item) === 'dropdown') {\r\n _hide(item); // hide items dropdown\r\n // Hide all child elements as well\r\n \r\n if ( items.length > 0 ) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n if ( items[i] !== null && _getItemSubType(items[i]) === 'dropdown') {\r\n _hide(tems[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Mouseover handle\r\n var _mouseover = function(element, e) {\r\n var item = _getItemElement(element);\r\n\r\n if (the.disabled === true) {\r\n return;\r\n }\r\n\r\n if ( item === null ) {\r\n return;\r\n }\r\n\r\n if ( _getOptionFromElementAttribute(item, 'trigger') !== 'hover' ) {\r\n return;\r\n }\r\n\r\n if ( KTUtil.data(item).get('hover') === '1' ) {\r\n clearTimeout(KTUtil.data(item).get('timeout'));\r\n KTUtil.data(item).remove('hover');\r\n KTUtil.data(item).remove('timeout');\r\n }\r\n\r\n _show(item);\r\n }\r\n\r\n // Mouseout handle\r\n var _mouseout = function(element, e) {\r\n var item = _getItemElement(element);\r\n\r\n if (the.disabled === true) {\r\n return;\r\n }\r\n\r\n if ( item === null ) {\r\n return;\r\n }\r\n\r\n if ( _getOptionFromElementAttribute(item, 'trigger') !== 'hover' ) {\r\n return;\r\n }\r\n\r\n var timeout = setTimeout(function() {\r\n if ( KTUtil.data(item).get('hover') === '1' ) {\r\n _hide(item);\r\n }\r\n }, the.options.dropdown.hoverTimeout);\r\n\r\n KTUtil.data(item).set('hover', '1');\r\n KTUtil.data(item).set('timeout', timeout);\r\n }\r\n\r\n // Toggle item sub\r\n var _toggle = function(item) {\r\n if ( !item ) {\r\n item = the.triggerElement;\r\n }\r\n\r\n if ( _isItemSubShown(item) === true ) {\r\n _hide(item);\r\n } else {\r\n _show(item);\r\n }\r\n }\r\n\r\n // Show item sub\r\n var _show = function(item) {\r\n if ( !item ) {\r\n item = the.triggerElement;\r\n }\r\n\r\n if ( _isItemSubShown(item) === true ) {\r\n return;\r\n }\r\n\r\n if ( _getItemSubType(item) === 'dropdown' ) {\r\n _showDropdown(item); // // show current dropdown\r\n } else if ( _getItemSubType(item) === 'accordion' ) {\r\n _showAccordion(item);\r\n }\r\n\r\n // Remember last submenu type\r\n KTUtil.data(item).set('type', _getItemSubType(item)); // updated\r\n }\r\n\r\n // Hide item sub\r\n var _hide = function(item) {\r\n if ( !item ) {\r\n item = the.triggerElement;\r\n }\r\n\r\n if ( _isItemSubShown(item) === false ) {\r\n return;\r\n }\r\n \r\n if ( _getItemSubType(item) === 'dropdown' ) {\r\n _hideDropdown(item);\r\n } else if ( _getItemSubType(item) === 'accordion' ) {\r\n _hideAccordion(item);\r\n }\r\n }\r\n\r\n // Reset item state classes if item sub type changed\r\n var _reset = function(item) { \r\n if ( _hasItemSub(item) === false ) {\r\n return;\r\n }\r\n\r\n var sub = _getItemSubElement(item);\r\n\r\n // Reset sub state if sub type is changed during the window resize\r\n if ( KTUtil.data(item).has('type') && KTUtil.data(item).get('type') !== _getItemSubType(item) ) { // updated\r\n KTUtil.removeClass(item, 'hover'); \r\n KTUtil.removeClass(item, 'show'); \r\n KTUtil.removeClass(sub, 'show'); \r\n } // updated\r\n }\r\n\r\n // Update all item state classes if item sub type changed\r\n var _update = function() {\r\n var items = the.element.querySelectorAll('.menu-item[data-kt-menu-trigger]');\r\n\r\n if ( items && items.length > 0 ) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n _reset(items[i]);\r\n }\r\n }\r\n }\r\n\r\n // Set external trigger element\r\n var _setTriggerElement = function() {\r\n var target = document.querySelector('[data-kt-menu-target=\"#' + the.element.getAttribute('id') + '\"]');\r\n\r\n if ( target !== null ) {\r\n the.triggerElement = target;\r\n } else if ( the.element.closest('[data-kt-menu-trigger]') ) {\r\n the.triggerElement = the.element.closest('[data-kt-menu-trigger]');\r\n } else if ( the.element.parentNode && KTUtil.child(the.element.parentNode, '[data-kt-menu-trigger]')) {\r\n the.triggerElement = KTUtil.child(the.element.parentNode, '[data-kt-menu-trigger]');\r\n }\r\n\r\n if ( the.triggerElement ) {\r\n KTUtil.data(the.triggerElement).set('menu', the);\r\n }\r\n }\r\n\r\n // Test if menu has external trigger element\r\n var _isTriggerElement = function(item) {\r\n return ( the.triggerElement === item ) ? true : false;\r\n }\r\n\r\n // Test if item's sub is shown\r\n var _isItemSubShown = function(item) {\r\n var sub = _getItemSubElement(item);\r\n\r\n if ( sub !== null ) {\r\n if ( _getItemSubType(item) === 'dropdown' ) {\r\n if ( KTUtil.hasClass(sub, 'show') === true && sub.hasAttribute('data-popper-placement') === true ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return KTUtil.hasClass(item, 'show');\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // Test if item dropdown is permanent\r\n var _isItemDropdownPermanent = function(item) {\r\n return _getOptionFromElementAttribute(item, 'permanent') === true ? true : false;\r\n }\r\n\r\n // Test if item's parent is shown\r\n var _isItemParentShown = function(item) {\r\n return KTUtil.parents(item, '.menu-item.show').length > 0;\r\n }\r\n\r\n // Test of it is item sub element\r\n var _isItemSubElement = function(item) {\r\n return KTUtil.hasClass(item, 'menu-sub');\r\n }\r\n\r\n // Test if item has sub\r\n var _hasItemSub = function(item) {\r\n return (KTUtil.hasClass(item, 'menu-item') && item.hasAttribute('data-kt-menu-trigger'));\r\n }\r\n\r\n // Get link element\r\n var _getItemLinkElement = function(item) {\r\n return KTUtil.child(item, '.menu-link');\r\n }\r\n\r\n // Get toggle element\r\n var _getItemToggleElement = function(item) {\r\n if ( the.triggerElement ) {\r\n return the.triggerElement;\r\n } else {\r\n return _getItemLinkElement(item);\r\n }\r\n }\r\n\r\n // Get item sub element\r\n var _getItemSubElement = function(item) {\r\n if ( _isTriggerElement(item) === true ) {\r\n return the.element;\r\n } if ( item.classList.contains('menu-sub') === true ) {\r\n return item;\r\n } else if ( KTUtil.data(item).has('sub') ) {\r\n return KTUtil.data(item).get('sub');\r\n } else {\r\n return KTUtil.child(item, '.menu-sub');\r\n }\r\n }\r\n\r\n // Get item sub type\r\n var _getItemSubType = function(element) {\r\n var sub = _getItemSubElement(element);\r\n\r\n if ( sub && parseInt(KTUtil.css(sub, 'z-index')) > 0 ) {\r\n return \"dropdown\";\r\n } else {\r\n return \"accordion\";\r\n }\r\n }\r\n\r\n // Get item element\r\n var _getItemElement = function(element) {\r\n var item, sub;\r\n\r\n // Element is the external trigger element\r\n if (_isTriggerElement(element) ) {\r\n return element;\r\n } \r\n\r\n // Element has item toggler attribute\r\n if ( element.hasAttribute('data-kt-menu-trigger') ) {\r\n return element;\r\n }\r\n\r\n // Element has item DOM reference in it's data storage\r\n if ( KTUtil.data(element).has('item') ) {\r\n return KTUtil.data(element).get('item');\r\n }\r\n\r\n // Item is parent of element\r\n if ( (item = element.closest('.menu-item[data-kt-menu-trigger]')) ) {\r\n return item;\r\n }\r\n\r\n // Element's parent has item DOM reference in it's data storage\r\n if ( (sub = element.closest('.menu-sub')) ) {\r\n if ( KTUtil.data(sub).has('item') === true ) {\r\n return KTUtil.data(sub).get('item')\r\n } \r\n }\r\n }\r\n\r\n // Get item parent element\r\n var _getItemParentElement = function(item) { \r\n var sub = item.closest('.menu-sub');\r\n var parentItem;\r\n\r\n if ( sub && KTUtil.data(sub).has('item') ) {\r\n return KTUtil.data(sub).get('item');\r\n }\r\n\r\n if ( sub && (parentItem = sub.closest('.menu-item[data-kt-menu-trigger]')) ) {\r\n return parentItem;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // Get item parent elements\r\n var _getItemParentElements = function(item) {\r\n var parents = [];\r\n var parent;\r\n var i = 0;\r\n\r\n do {\r\n parent = _getItemParentElement(item);\r\n \r\n if ( parent ) {\r\n parents.push(parent);\r\n item = parent;\r\n } \r\n\r\n i++;\r\n } while (parent !== null && i < 20);\r\n\r\n if ( the.triggerElement ) {\r\n parents.unshift(the.triggerElement);\r\n }\r\n\r\n return parents;\r\n }\r\n\r\n // Get item child element\r\n var _getItemChildElement = function(item) {\r\n var selector = item;\r\n var element;\r\n\r\n if ( KTUtil.data(item).get('sub') ) {\r\n selector = KTUtil.data(item).get('sub');\r\n }\r\n\r\n if ( selector !== null ) {\r\n //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]');\r\n element = selector.querySelector('.menu-item[data-kt-menu-trigger]');\r\n\r\n if ( element ) {\r\n return element;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n } \r\n \r\n // Get item child elements\r\n var _getItemChildElements = function(item) {\r\n var children = [];\r\n var child;\r\n var i = 0;\r\n\r\n do {\r\n child = _getItemChildElement(item);\r\n \r\n if ( child ) {\r\n children.push(child);\r\n item = child;\r\n } \r\n\r\n i++;\r\n } while (child !== null && i < 20);\r\n\r\n return children;\r\n }\r\n\r\n // Show item dropdown\r\n var _showDropdown = function(item) {\r\n // Handle dropdown show event\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.dropdown.show', item) === false ) {\r\n return;\r\n }\r\n\r\n // Hide all currently shown dropdowns except current one\r\n KTMenu.hideDropdowns(item); \r\n\r\n var toggle = _isTriggerElement(item) ? item : _getItemLinkElement(item);\r\n var sub = _getItemSubElement(item);\r\n\r\n var width = _getOptionFromElementAttribute(item, 'width');\r\n var height = _getOptionFromElementAttribute(item, 'height');\r\n\r\n var zindex = the.options.dropdown.zindex; // update\r\n var parentZindex = KTUtil.getHighestZindex(item); // update\r\n\r\n // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update\r\n if ( parentZindex !== null && parentZindex >= zindex ) {\r\n zindex = parentZindex + 1;\r\n }\r\n\r\n if ( zindex > 0 ) {\r\n KTUtil.css(sub, 'z-index', zindex);\r\n }\r\n\r\n if ( width !== null ) {\r\n KTUtil.css(sub, 'width', width);\r\n }\r\n\r\n if ( height !== null ) {\r\n KTUtil.css(sub, 'height', height);\r\n }\r\n\r\n KTUtil.css(sub, 'display', '');\r\n KTUtil.css(sub, 'overflow', '');\r\n\r\n // Init popper(new)\r\n _initDropdownPopper(item, sub); \r\n\r\n KTUtil.addClass(item, 'show');\r\n KTUtil.addClass(item, 'menu-dropdown');\r\n KTUtil.addClass(sub, 'show');\r\n\r\n // Append the sub the the root of the menu\r\n if ( _getOptionFromElementAttribute(item, 'overflow') === true ) {\r\n document.body.appendChild(sub);\r\n KTUtil.data(item).set('sub', sub);\r\n KTUtil.data(sub).set('item', item);\r\n KTUtil.data(sub).set('menu', the);\r\n } else {\r\n KTUtil.data(sub).set('item', item);\r\n }\r\n\r\n // Handle dropdown shown event\r\n KTEventHandler.trigger(the.element, 'kt.menu.dropdown.shown', item);\r\n }\r\n\r\n // Hide item dropdown\r\n var _hideDropdown = function(item) {\r\n // Handle dropdown hide event\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.dropdown.hide', item) === false ) {\r\n return;\r\n }\r\n\r\n var sub = _getItemSubElement(item);\r\n\r\n KTUtil.css(sub, 'z-index', '');\r\n KTUtil.css(sub, 'width', '');\r\n KTUtil.css(sub, 'height', '');\r\n\r\n KTUtil.removeClass(item, 'show');\r\n KTUtil.removeClass(item, 'menu-dropdown');\r\n KTUtil.removeClass(sub, 'show');\r\n\r\n // Append the sub back to it's parent\r\n if ( _getOptionFromElementAttribute(item, 'overflow') === true ) {\r\n if (item.classList.contains('menu-item')) {\r\n item.appendChild(sub);\r\n } else {\r\n KTUtil.insertAfter(the.element, item);\r\n }\r\n \r\n KTUtil.data(item).remove('sub');\r\n KTUtil.data(sub).remove('item');\r\n KTUtil.data(sub).remove('menu');\r\n } \r\n\r\n // Destroy popper(new)\r\n _destroyDropdownPopper(item);\r\n \r\n // Handle dropdown hidden event \r\n KTEventHandler.trigger(the.element, 'kt.menu.dropdown.hidden', item);\r\n }\r\n\r\n // Init dropdown popper(new)\r\n var _initDropdownPopper = function(item, sub) {\r\n // Setup popper instance\r\n var reference;\r\n var attach = _getOptionFromElementAttribute(item, 'attach');\r\n\r\n if ( attach ) {\r\n if ( attach === 'parent') {\r\n reference = item.parentNode;\r\n } else {\r\n reference = document.querySelector(attach);\r\n }\r\n } else {\r\n reference = item;\r\n }\r\n\r\n var popper = Popper.createPopper(reference, sub, _getDropdownPopperConfig(item)); \r\n KTUtil.data(item).set('popper', popper);\r\n }\r\n\r\n // Destroy dropdown popper(new)\r\n var _destroyDropdownPopper = function(item) {\r\n if ( KTUtil.data(item).has('popper') === true ) {\r\n KTUtil.data(item).get('popper').destroy();\r\n KTUtil.data(item).remove('popper');\r\n }\r\n }\r\n\r\n // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/)\r\n var _getDropdownPopperConfig = function(item) {\r\n // Placement\r\n var placement = _getOptionFromElementAttribute(item, 'placement');\r\n if (!placement) {\r\n placement = 'right';\r\n }\r\n\r\n // Offset\r\n var offsetValue = _getOptionFromElementAttribute(item, 'offset');\r\n var offset = offsetValue ? offsetValue.split(\",\") : [];\r\n \r\n if (offset.length === 2) {\r\n offset[0] = parseInt(offset[0]);\r\n offset[1] = parseInt(offset[1]);\r\n }\r\n\r\n // Strategy\r\n var strategy = _getOptionFromElementAttribute(item, 'overflow') === true ? 'absolute' : 'fixed';\r\n\r\n var altAxis = _getOptionFromElementAttribute(item, 'flip') !== false ? true : false;\r\n\r\n var popperConfig = {\r\n placement: placement,\r\n strategy: strategy,\r\n modifiers: [{\r\n name: 'offset',\r\n options: {\r\n offset: offset\r\n }\r\n }, {\r\n name: 'preventOverflow',\r\n options: {\r\n altAxis: altAxis\r\n }\r\n }, {\r\n name: 'flip', \r\n options: {\r\n flipVariations: false\r\n }\r\n }]\r\n };\r\n\r\n return popperConfig;\r\n }\r\n\r\n // Show item accordion\r\n var _showAccordion = function(item) {\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.accordion.show', item) === false ) {\r\n return;\r\n }\r\n\r\n var sub = _getItemSubElement(item);\r\n var expand = the.options.accordion.expand;\r\n \r\n if (_getOptionFromElementAttribute(item, 'expand') === true) {\r\n expand = true;\r\n } else if (_getOptionFromElementAttribute(item, 'expand') === false) {\r\n expand = false;\r\n } else if (_getOptionFromElementAttribute(the.element, 'expand') === true) {\r\n expand = true;\r\n }\r\n\r\n if ( expand === false ) {\r\n _hideAccordions(item);\r\n }\r\n\r\n if ( KTUtil.data(item).has('popper') === true ) {\r\n _hideDropdown(item);\r\n }\r\n\r\n KTUtil.addClass(item, 'hover');\r\n\r\n KTUtil.addClass(item, 'showing');\r\n\r\n KTUtil.slideDown(sub, the.options.accordion.slideSpeed, function() {\r\n KTUtil.removeClass(item, 'showing');\r\n KTUtil.addClass(item, 'show');\r\n KTUtil.addClass(sub, 'show');\r\n\r\n KTEventHandler.trigger(the.element, 'kt.menu.accordion.shown', item);\r\n }); \r\n }\r\n\r\n // Hide item accordion\r\n var _hideAccordion = function(item) {\r\n if ( KTEventHandler.trigger(the.element, 'kt.menu.accordion.hide', item) === false ) {\r\n return;\r\n }\r\n \r\n var sub = _getItemSubElement(item);\r\n\r\n KTUtil.addClass(item, 'hiding');\r\n\r\n KTUtil.slideUp(sub, the.options.accordion.slideSpeed, function() {\r\n KTUtil.removeClass(item, 'hiding');\r\n KTUtil.removeClass(item, 'show');\r\n KTUtil.removeClass(sub, 'show');\r\n\r\n KTUtil.removeClass(item, 'hover'); // update\r\n\r\n KTEventHandler.trigger(the.element, 'kt.menu.accordion.hidden', item);\r\n });\r\n }\r\n\r\n var _setActiveLink = function(link) {\r\n var item = _getItemElement(link);\r\n var parentItems = _getItemParentElements(item);\r\n var parentTabPane = link.closest('.tab-pane');\r\n\r\n var activeLinks = [].slice.call(the.element.querySelectorAll('.menu-link.active'));\r\n var activeParentItems = [].slice.call(the.element.querySelectorAll('.menu-item.here, .menu-item.show'));\r\n \r\n if (_getItemSubType(item) === \"accordion\") {\r\n _showAccordion(item);\r\n } else {\r\n item.classList.add(\"here\");\r\n }\r\n\r\n if ( parentItems && parentItems.length > 0 ) {\r\n for (var i = 0, len = parentItems.length; i < len; i++) {\r\n var parentItem = parentItems[i];\r\n\r\n if (_getItemSubType(parentItem) === \"accordion\") {\r\n _showAccordion(parentItem);\r\n } else {\r\n parentItem.classList.add(\"here\");\r\n }\r\n }\r\n } \r\n \r\n activeLinks.map(function (activeLink) {\r\n activeLink.classList.remove(\"active\");\r\n });\r\n\r\n activeParentItems.map(function (activeParentItem) {\r\n if (activeParentItem.contains(item) === false) {\r\n activeParentItem.classList.remove(\"here\");\r\n activeParentItem.classList.remove(\"show\");\r\n }\r\n });\r\n\r\n // Handle tab\r\n if (parentTabPane && bootstrap.Tab) {\r\n var tabEl = the.element.querySelector('[data-bs-target=\"#' + parentTabPane.getAttribute(\"id\") + '\"]');\r\n var tab = new bootstrap.Tab(tabEl);\r\n\r\n if (tab) {\r\n tab.show();\r\n }\r\n }\r\n\r\n link.classList.add(\"active\");\r\n }\r\n\r\n var _getLinkByAttribute = function(value, name = \"href\") {\r\n var link = the.element.querySelector('a[' + name + '=\"' + value + '\"]');\r\n\r\n if (link) {\r\n return link;\r\n } else {\r\n null;\r\n }\r\n }\r\n\r\n // Hide all shown accordions of item\r\n var _hideAccordions = function(item) {\r\n var itemsToHide = KTUtil.findAll(the.element, '.show[data-kt-menu-trigger]');\r\n var itemToHide;\r\n\r\n if (itemsToHide && itemsToHide.length > 0) {\r\n for (var i = 0, len = itemsToHide.length; i < len; i++) {\r\n itemToHide = itemsToHide[i];\r\n\r\n if ( _getItemSubType(itemToHide) === 'accordion' && itemToHide !== item && item.contains(itemToHide) === false && itemToHide.contains(item) === false ) {\r\n _hideAccordion(itemToHide);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Get item option(through html attributes)\r\n var _getOptionFromElementAttribute = function(item, name) {\r\n var attr;\r\n var value = null;\r\n\r\n if ( item && item.hasAttribute('data-kt-menu-' + name) ) {\r\n attr = item.getAttribute('data-kt-menu-' + name);\r\n value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('menu');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Event Handlers\r\n the.click = function(element, e) {\r\n return _click(element, e);\r\n }\r\n\r\n the.link = function(element, e) {\r\n return _link(element, e);\r\n }\r\n\r\n the.dismiss = function(element, e) {\r\n return _dismiss(element, e);\r\n }\r\n\r\n the.mouseover = function(element, e) {\r\n return _mouseover(element, e);\r\n }\r\n\r\n the.mouseout = function(element, e) {\r\n return _mouseout(element, e);\r\n }\r\n\r\n // General Methods\r\n the.getItemTriggerType = function(item) {\r\n return _getOptionFromElementAttribute(item, 'trigger');\r\n }\r\n\r\n the.getItemSubType = function(element) {\r\n return _getItemSubType(element);\r\n }\r\n\r\n the.show = function(item) {\r\n return _show(item);\r\n }\r\n\r\n the.hide = function(item) {\r\n return _hide(item);\r\n }\r\n\r\n the.toggle = function(item) {\r\n return _toggle(item);\r\n }\r\n\r\n the.reset = function(item) {\r\n return _reset(item);\r\n }\r\n\r\n the.update = function() {\r\n return _update();\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.setActiveLink = function(link) {\r\n return _setActiveLink(link);\r\n } \r\n\r\n the.getLinkByAttribute = function(value, name = \"href\") {\r\n return _getLinkByAttribute(value, name);\r\n }\r\n\r\n the.getItemLinkElement = function(item) {\r\n return _getItemLinkElement(item);\r\n }\r\n\r\n the.getItemToggleElement = function(item) {\r\n return _getItemToggleElement(item);\r\n }\r\n\r\n the.getItemSubElement = function(item) {\r\n return _getItemSubElement(item);\r\n }\r\n\r\n the.getItemParentElements = function(item) {\r\n return _getItemParentElements(item);\r\n }\r\n\r\n the.isItemSubShown = function(item) {\r\n return _isItemSubShown(item);\r\n }\r\n\r\n the.isItemParentShown = function(item) {\r\n return _isItemParentShown(item);\r\n }\r\n\r\n the.getTriggerElement = function() {\r\n return the.triggerElement;\r\n }\r\n\r\n the.isItemDropdownPermanent = function(item) {\r\n return _isItemDropdownPermanent(item);\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n the.disable = function() {\r\n the.disabled = true;\r\n }\r\n\r\n the.enable = function() {\r\n the.disabled = false;\r\n }\r\n\r\n // Accordion Mode Methods\r\n the.hideAccordions = function(item) {\r\n return _hideAccordions(item);\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n};\r\n\r\n// Get KTMenu instance by element\r\nKTMenu.getInstance = function(element) {\r\n var menu;\r\n var item;\r\n\r\n if (!element) {\r\n return null;\r\n }\r\n\r\n // Element has menu DOM reference in it's DATA storage\r\n if ( KTUtil.data(element).has('menu') ) {\r\n return KTUtil.data(element).get('menu');\r\n }\r\n\r\n // Element has .menu parent \r\n if ( menu = element.closest('.menu') ) {\r\n if ( KTUtil.data(menu).has('menu') ) {\r\n return KTUtil.data(menu).get('menu');\r\n }\r\n }\r\n \r\n // Element has a parent with DOM reference to .menu in it's DATA storage\r\n if ( KTUtil.hasClass(element, 'menu-link') ) {\r\n var sub = element.closest('.menu-sub');\r\n\r\n if ( KTUtil.data(sub).has('menu') ) {\r\n return KTUtil.data(sub).get('menu');\r\n }\r\n } \r\n\r\n return null;\r\n}\r\n\r\n// Hide all dropdowns and skip one if provided\r\nKTMenu.hideDropdowns = function(skip) {\r\n var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]');\r\n\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n var menu = KTMenu.getInstance(item);\r\n\r\n if ( menu && menu.getItemSubType(item) === 'dropdown' ) {\r\n if ( skip ) {\r\n if ( menu.getItemSubElement(item).contains(skip) === false && item.contains(skip) === false && item !== skip ) {\r\n menu.hide(item);\r\n }\r\n } else {\r\n menu.hide(item);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Update all dropdowns popover instances\r\nKTMenu.updateDropdowns = function() {\r\n var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]');\r\n\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n\r\n if ( KTUtil.data(item).has('popper') ) {\r\n KTUtil.data(item).get('popper').forceUpdate();\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Global handlers\r\nKTMenu.initHandlers = function() {\r\n // Dropdown handler\r\n document.addEventListener(\"click\", function(e) {\r\n var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]:not([data-kt-menu-static=\"true\"])');\r\n var menu;\r\n var item;\r\n var sub;\r\n var menuObj;\r\n\r\n if ( items && items.length > 0 ) {\r\n for ( var i = 0, len = items.length; i < len; i++ ) {\r\n item = items[i];\r\n menuObj = KTMenu.getInstance(item);\r\n\r\n if (menuObj && menuObj.getItemSubType(item) === 'dropdown') {\r\n menu = menuObj.getElement();\r\n sub = menuObj.getItemSubElement(item);\r\n\r\n if ( item === e.target || item.contains(e.target) ) {\r\n continue;\r\n }\r\n \r\n if ( sub === e.target || sub.contains(e.target) ) {\r\n continue;\r\n }\r\n \r\n menuObj.hide(item);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Sub toggle handler(updated)\r\n KTUtil.on(document.body, '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger=\"auto\"])', 'click', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null ) {\r\n return menu.click(this, e);\r\n }\r\n });\r\n\r\n // Link handler\r\n KTUtil.on(document.body, '.menu-item:not([data-kt-menu-trigger]) > .menu-link', 'click', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null ) {\r\n return menu.link(this, e);\r\n }\r\n });\r\n\r\n // Dismiss handler\r\n KTUtil.on(document.body, '[data-kt-menu-dismiss=\"true\"]', 'click', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null ) {\r\n return menu.dismiss(this, e);\r\n }\r\n });\r\n\r\n // Mouseover handler\r\n KTUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseover', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null && menu.getItemSubType(this) === 'dropdown' ) {\r\n return menu.mouseover(this, e);\r\n }\r\n });\r\n\r\n // Mouseout handler\r\n KTUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseout', function(e) {\r\n var menu = KTMenu.getInstance(this);\r\n\r\n if ( menu !== null && menu.getItemSubType(this) === 'dropdown' ) {\r\n return menu.mouseout(this, e);\r\n }\r\n });\r\n\r\n // Resize handler\r\n window.addEventListener('resize', function() {\r\n var menu;\r\n var timer;\r\n\r\n KTUtil.throttle(timer, function() {\r\n // Locate and update Offcanvas instances on window resize\r\n var elements = document.querySelectorAll('[data-kt-menu=\"true\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n menu = KTMenu.getInstance(elements[i]);\r\n if (menu) {\r\n menu.update();\r\n }\r\n }\r\n }\r\n }, 200);\r\n });\r\n}\r\n\r\n// Render menus by url\r\nKTMenu.updateByLinkAttribute = function(value, name = \"href\") {\r\n // Set menu link active state by attribute value\r\n var elements = document.querySelectorAll('[data-kt-menu=\"true\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var menu = KTMenu.getInstance(elements[i]);\r\n\r\n if (menu) {\r\n var link = menu.getLinkByAttribute(value, name);\r\n if (link) {\r\n menu.setActiveLink(link);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Global instances\r\nKTMenu.createInstances = function(selector = '[data-kt-menu=\"true\"]') {\r\n // Initialize menus\r\n var elements = document.querySelectorAll(selector);\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTMenu(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTMenu.init = function() {\r\n KTMenu.createInstances();\r\n KTMenu.initHandlers();\r\n\r\n /*if (KTMenuHandlersInitialized === false) {\r\n KTMenu.initHandlers();\r\n\r\n KTMenuHandlersInitialized = true;\r\n }*/\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTMenu;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTPasswordMeter = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n minLength: 8,\r\n checkUppercase: true, \r\n checkLowercase: true,\r\n checkDigit: true,\r\n checkChar: true,\r\n scoreHighlightClass: 'active'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n // Constructor\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('password-meter') === true ) {\r\n the = KTUtil.data(element).get('password-meter');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n // Initialize\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.score = 0;\r\n the.checkSteps = 5;\r\n\r\n // Elements\r\n the.element = element;\r\n the.inputElement = the.element.querySelector('input[type]');\r\n the.visibilityElement = the.element.querySelector('[data-kt-password-meter-control=\"visibility\"]');\r\n the.highlightElement = the.element.querySelector('[data-kt-password-meter-control=\"highlight\"]'); \r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-password-meter', 'true');\r\n \r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('password-meter', the);\r\n }\r\n\r\n // Handlers\r\n var _handlers = function() {\r\n if (the.highlightElement) {\r\n the.inputElement.addEventListener('input', function() {\r\n _check();\r\n });\r\n }\r\n\r\n if (the.visibilityElement) {\r\n the.visibilityElement.addEventListener('click', function() {\r\n _visibility();\r\n });\r\n }\r\n } \r\n\r\n // Event handlers\r\n var _check = function() {\r\n var score = 0;\r\n var checkScore = _getCheckScore();\r\n \r\n if (_checkLength() === true) {\r\n score = score + checkScore;\r\n }\r\n\r\n if (the.options.checkUppercase === true && _checkLowercase() === true) {\r\n score = score + checkScore;\r\n }\r\n\r\n if (the.options.checkLowercase === true && _checkUppercase() === true ) {\r\n score = score + checkScore;\r\n }\r\n\r\n if (the.options.checkDigit === true && _checkDigit() === true ) {\r\n score = score + checkScore;\r\n }\r\n\r\n if (the.options.checkChar === true && _checkChar() === true ) {\r\n score = score + checkScore;\r\n }\r\n\r\n the.score = score;\r\n\r\n _highlight();\r\n }\r\n\r\n var _checkLength = function() {\r\n return the.inputElement.value.length >= the.options.minLength; // 20 score\r\n }\r\n\r\n var _checkLowercase = function() {\r\n return /[a-z]/.test(the.inputElement.value); // 20 score\r\n }\r\n\r\n var _checkUppercase = function() {\r\n return /[A-Z]/.test(the.inputElement.value); // 20 score\r\n }\r\n\r\n var _checkDigit = function() {\r\n return /[0-9]/.test(the.inputElement.value); // 20 score\r\n }\r\n\r\n var _checkChar = function() {\r\n return /[~`!#@$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g.test(the.inputElement.value); // 20 score\r\n } \r\n\r\n var _getCheckScore = function() {\r\n var count = 1;\r\n \r\n if (the.options.checkUppercase === true) {\r\n count++;\r\n }\r\n\r\n if (the.options.checkLowercase === true) {\r\n count++;\r\n }\r\n\r\n if (the.options.checkDigit === true) {\r\n count++;\r\n }\r\n\r\n if (the.options.checkChar === true) {\r\n count++;\r\n }\r\n\r\n the.checkSteps = count;\r\n\r\n return 100 / the.checkSteps;\r\n }\r\n \r\n var _highlight = function() {\r\n var items = [].slice.call(the.highlightElement.querySelectorAll('div'));\r\n var total = items.length;\r\n var index = 0;\r\n var checkScore = _getCheckScore();\r\n var score = _getScore();\r\n\r\n items.map(function (item) {\r\n index++;\r\n\r\n if ( (checkScore * index * (the.checkSteps / total)) <= score ) {\r\n item.classList.add('active');\r\n } else {\r\n item.classList.remove('active');\r\n } \r\n });\r\n }\r\n\r\n var _visibility = function() {\r\n var visibleIcon = the.visibilityElement.querySelector(':scope > i:not(.d-none)');\r\n var hiddenIcon = the.visibilityElement.querySelector(':scope > i.d-none');\r\n \r\n if (the.inputElement.getAttribute('type').toLowerCase() === 'password' ) {\r\n the.inputElement.setAttribute('type', 'text');\r\n } else {\r\n the.inputElement.setAttribute('type', 'password');\r\n } \r\n\r\n visibleIcon.classList.add('d-none');\r\n hiddenIcon.classList.remove('d-none');\r\n\r\n the.inputElement.focus();\r\n }\r\n\r\n var _reset = function() {\r\n the.score = 0;\r\n\r\n _highlight();\r\n }\r\n\r\n // Gets current password score\r\n var _getScore = function() {\r\n return the.score;\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('password-meter');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.check = function() {\r\n return _check();\r\n }\r\n\r\n the.getScore = function() {\r\n return _getScore();\r\n }\r\n\r\n the.reset = function() {\r\n return _reset();\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n};\r\n\r\n// Static methods\r\nKTPasswordMeter.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('password-meter') ) {\r\n return KTUtil.data(element).get('password-meter');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTPasswordMeter.createInstances = function(selector = '[data-kt-password-meter]') {\r\n // Get instances\r\n var elements = document.body.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n // Initialize instances\r\n new KTPasswordMeter(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTPasswordMeter.init = function() {\r\n KTPasswordMeter.createInstances();\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTPasswordMeter;\r\n}","\"use strict\";\r\n\r\nvar KTScrollHandlersInitialized = false;\r\n\r\n// Class definition\r\nvar KTScroll = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n saveState: true\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('scroll') ) {\r\n the = KTUtil.data(element).get('scroll');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // Elements\r\n the.element = element; \r\n the.id = the.element.getAttribute('id');\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-scroll', 'true');\r\n\r\n // Update\r\n _update();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('scroll', the);\r\n }\r\n\r\n var _setupHeight = function() {\r\n var heightType = _getHeightType();\r\n var height = _getHeight();\r\n\r\n // Set height\r\n if ( height !== null && height.length > 0 ) {\r\n KTUtil.css(the.element, heightType, height);\r\n } else {\r\n KTUtil.css(the.element, heightType, '');\r\n }\r\n }\r\n\r\n var _setupState = function () {\r\n var namespace = _getStorageNamespace();\r\n\r\n if ( _getOption('save-state') === true && the.id ) {\r\n if ( localStorage.getItem(namespace + the.id + 'st') ) {\r\n var pos = parseInt(localStorage.getItem(namespace + the.id + 'st'));\r\n\r\n if ( pos > 0 ) {\r\n the.element.scroll({\r\n top: pos,\r\n behavior: 'instant'\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _getStorageNamespace = function(postfix) {\r\n return document.body.hasAttribute(\"data-kt-name\") ? document.body.getAttribute(\"data-kt-name\") + \"_\" : \"\";\r\n }\r\n\r\n var _setupScrollHandler = function() {\r\n if ( _getOption('save-state') === true && the.id ) {\r\n the.element.addEventListener('scroll', _scrollHandler);\r\n } else {\r\n the.element.removeEventListener('scroll', _scrollHandler);\r\n }\r\n }\r\n\r\n var _destroyScrollHandler = function() {\r\n the.element.removeEventListener('scroll', _scrollHandler);\r\n }\r\n\r\n var _resetHeight = function() {\r\n KTUtil.css(the.element, _getHeightType(), '');\r\n }\r\n\r\n var _scrollHandler = function () {\r\n var namespace = _getStorageNamespace();\r\n localStorage.setItem(namespace + the.id + 'st', the.element.scrollTop);\r\n }\r\n\r\n var _update = function() {\r\n // Activate/deactivate\r\n if ( _getOption('activate') === true || the.element.hasAttribute('data-kt-scroll-activate') === false ) {\r\n _setupHeight();\r\n _setupStretchHeight();\r\n _setupScrollHandler();\r\n _setupState();\r\n } else {\r\n _resetHeight()\r\n _destroyScrollHandler();\r\n } \r\n }\r\n\r\n var _setupStretchHeight = function() {\r\n var stretch = _getOption('stretch');\r\n\r\n // Stretch\r\n if ( stretch !== null ) {\r\n var elements = document.querySelectorAll(stretch);\r\n\r\n if ( elements && elements.length == 2 ) {\r\n var element1 = elements[0];\r\n var element2 = elements[1];\r\n var diff = _getElementHeight(element2) - _getElementHeight(element1);\r\n\r\n if (diff > 0) {\r\n var height = parseInt(KTUtil.css(the.element, _getHeightType())) + diff;\r\n\r\n KTUtil.css(the.element, _getHeightType(), String(height) + 'px');\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _getHeight = function() {\r\n var height = _getOption(_getHeightType());\r\n\r\n if ( height instanceof Function ) {\r\n return height.call();\r\n } else if ( height !== null && typeof height === 'string' && height.toLowerCase() === 'auto' ) {\r\n return _getAutoHeight();\r\n } else {\r\n return height;\r\n }\r\n }\r\n\r\n var _getAutoHeight = function() {\r\n var height = KTUtil.getViewPort().height;\r\n var dependencies = _getOption('dependencies');\r\n var wrappers = _getOption('wrappers');\r\n var offset = _getOption('offset');\r\n\r\n // Spacings\r\n height = height - _getElementSpacing(the.element); \r\n\r\n // Height dependencies\r\n //console.log('Q:' + JSON.stringify(dependencies));\r\n\r\n if ( dependencies !== null ) {\r\n var elements = document.querySelectorAll(dependencies);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for ( var i = 0, len = elements.length; i < len; i++ ) {\r\n if ( KTUtil.visible(elements[i]) === false ) {\r\n continue;\r\n }\r\n\r\n height = height - _getElementHeight(elements[i]);\r\n }\r\n }\r\n }\r\n\r\n // Wrappers\r\n if ( wrappers !== null ) {\r\n var elements = document.querySelectorAll(wrappers);\r\n if ( elements && elements.length > 0 ) {\r\n for ( var i = 0, len = elements.length; i < len; i++ ) {\r\n if ( KTUtil.visible(elements[i]) === false ) {\r\n continue;\r\n }\r\n\r\n height = height - _getElementSpacing(elements[i]);\r\n }\r\n }\r\n }\r\n\r\n // Custom offset\r\n if ( offset !== null && typeof offset !== 'object') {\r\n height = height - parseInt(offset);\r\n }\r\n\r\n return String(height) + 'px';\r\n }\r\n\r\n var _getElementHeight = function(element) {\r\n var height = 0;\r\n\r\n if (element !== null) {\r\n height = height + parseInt(KTUtil.css(element, 'height'));\r\n height = height + parseInt(KTUtil.css(element, 'margin-top'));\r\n height = height + parseInt(KTUtil.css(element, 'margin-bottom'));\r\n\r\n if (KTUtil.css(element, 'border-top')) {\r\n height = height + parseInt(KTUtil.css(element, 'border-top'));\r\n }\r\n\r\n if (KTUtil.css(element, 'border-bottom')) {\r\n height = height + parseInt(KTUtil.css(element, 'border-bottom'));\r\n }\r\n } \r\n\r\n return height;\r\n }\r\n\r\n var _getElementSpacing = function(element) {\r\n var spacing = 0;\r\n\r\n if (element !== null) {\r\n spacing = spacing + parseInt(KTUtil.css(element, 'margin-top'));\r\n spacing = spacing + parseInt(KTUtil.css(element, 'margin-bottom'));\r\n spacing = spacing + parseInt(KTUtil.css(element, 'padding-top'));\r\n spacing = spacing + parseInt(KTUtil.css(element, 'padding-bottom'));\r\n\r\n if (KTUtil.css(element, 'border-top')) {\r\n spacing = spacing + parseInt(KTUtil.css(element, 'border-top'));\r\n }\r\n\r\n if (KTUtil.css(element, 'border-bottom')) {\r\n spacing = spacing + parseInt(KTUtil.css(element, 'border-bottom'));\r\n }\r\n } \r\n\r\n return spacing;\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-scroll-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-scroll-' + name);\r\n\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _getHeightType = function() {\r\n if (_getOption('height')) {\r\n return 'height';\r\n } if (_getOption('min-height')) {\r\n return 'min-height';\r\n } if (_getOption('max-height')) {\r\n return 'max-height';\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('scroll');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n the.update = function() {\r\n return _update();\r\n }\r\n\r\n the.getHeight = function() {\r\n return _getHeight();\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n};\r\n\r\n// Static methods\r\nKTScroll.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('scroll') ) {\r\n return KTUtil.data(element).get('scroll');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTScroll.createInstances = function(selector = '[data-kt-scroll=\"true\"]') {\r\n // Initialize Menus\r\n var elements = document.body.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTScroll(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Window resize handling\r\nKTScroll.handleResize = function() {\r\n window.addEventListener('resize', function() {\r\n var timer;\r\n \r\n KTUtil.throttle(timer, function() {\r\n // Locate and update Offcanvas instances on window resize\r\n var elements = document.body.querySelectorAll('[data-kt-scroll=\"true\"]');\r\n \r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var scroll = KTScroll.getInstance(elements[i]);\r\n if (scroll) {\r\n scroll.update();\r\n }\r\n }\r\n }\r\n }, 200);\r\n });\r\n}\r\n\r\n// Global initialization\r\nKTScroll.init = function() {\r\n KTScroll.createInstances();\r\n\r\n if (KTScrollHandlersInitialized === false) {\r\n KTScroll.handleResize();\r\n\r\n KTScrollHandlersInitialized = true;\r\n } \r\n};\r\n\r\n// Webpack Support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTScroll;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTScrolltop = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n offset: 300,\r\n speed: 600\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if (KTUtil.data(element).has('scrolltop')) {\r\n the = KTUtil.data(element).get('scrolltop');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('scrolltop');\r\n the.element = element;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-scrolltop', 'true');\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('scrolltop', the);\r\n }\r\n\r\n var _handlers = function() {\r\n var timer;\r\n\r\n window.addEventListener('scroll', function() {\r\n KTUtil.throttle(timer, function() {\r\n _scroll();\r\n }, 200);\r\n });\r\n\r\n KTUtil.addEvent(the.element, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n _go();\r\n });\r\n }\r\n\r\n var _scroll = function() {\r\n var offset = parseInt(_getOption('offset'));\r\n\r\n var pos = KTUtil.getScrollTop(); // current vertical position\r\n\r\n if ( pos > offset ) {\r\n if ( document.body.hasAttribute('data-kt-scrolltop') === false ) {\r\n document.body.setAttribute('data-kt-scrolltop', 'on');\r\n }\r\n } else {\r\n if ( document.body.hasAttribute('data-kt-scrolltop') === true ) {\r\n document.body.removeAttribute('data-kt-scrolltop');\r\n }\r\n }\r\n }\r\n\r\n var _go = function() {\r\n var speed = parseInt(_getOption('speed'));\r\n\r\n window.scrollTo({top: 0, behavior: 'smooth'});\r\n //KTUtil.scrollTop(0, speed);\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-scrolltop-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-scrolltop-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('scrolltop');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.go = function() {\r\n return _go();\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n};\r\n\r\n// Static methods\r\nKTScrolltop.getInstance = function(element) {\r\n if (element && KTUtil.data(element).has('scrolltop')) {\r\n return KTUtil.data(element).get('scrolltop');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTScrolltop.createInstances = function(selector = '[data-kt-scrolltop=\"true\"]') {\r\n // Initialize Menus\r\n var elements = document.body.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n new KTScrolltop(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTScrolltop.init = function() {\r\n KTScrolltop.createInstances();\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTScrolltop;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTSearch = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n minLength: 2, // Miniam text lenght to query search\r\n keypress: true, // Enable search on keypress \r\n enter: true, // Enable search on enter key press\r\n layout: 'menu', // Use 'menu' or 'inline' layout options to display search results\r\n responsive: null, // Pass integer value or bootstrap compatible breakpoint key(sm,md,lg,xl,xxl) to enable reponsive form mode for device width below the breakpoint value\r\n showOnFocus: true // Always show menu on input focus\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n // Construct\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('search') === true ) {\r\n the = KTUtil.data(element).get('search');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n // Init\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.processing = false;\r\n\r\n // Elements\r\n the.element = element; \r\n the.contentElement = _getElement('content'); \r\n the.formElement = _getElement('form'); \r\n the.inputElement = _getElement('input');\r\n the.spinnerElement = _getElement('spinner');\r\n the.clearElement = _getElement('clear');\r\n the.toggleElement = _getElement('toggle'); \r\n the.submitElement = _getElement('submit');\r\n the.toolbarElement = _getElement('toolbar'); \r\n\r\n the.resultsElement = _getElement('results');\r\n the.suggestionElement = _getElement('suggestion'); \r\n the.emptyElement = _getElement('empty'); \r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-search', 'true');\r\n \r\n // Layout\r\n the.layout = _getOption('layout');\r\n \r\n // Menu\r\n if ( the.layout === 'menu' ) {\r\n the.menuObject = new KTMenu(the.contentElement);\r\n } else {\r\n the.menuObject = null;\r\n }\r\n\r\n // Update\r\n _update();\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('search', the);\r\n }\r\n\r\n // Handlera\r\n var _handlers = function() {\r\n // Focus\r\n the.inputElement.addEventListener('focus', _focus);\r\n\r\n // Blur\r\n the.inputElement.addEventListener('blur', _blur);\r\n\r\n // Keypress\r\n if ( _getOption('keypress') === true ) {\r\n the.inputElement.addEventListener('input', _input);\r\n }\r\n\r\n // Submit\r\n if ( the.submitElement ) {\r\n the.submitElement.addEventListener('click', _search);\r\n }\r\n\r\n // Enter\r\n if ( _getOption('enter') === true ) {\r\n the.inputElement.addEventListener('keypress', _enter);\r\n }\r\n\r\n // Clear \r\n if ( the.clearElement ) {\r\n the.clearElement.addEventListener('click', _clear);\r\n }\r\n\r\n // Menu\r\n if ( the.menuObject ) {\r\n // Toggle menu\r\n if ( the.toggleElement ) {\r\n the.toggleElement.addEventListener('click', _show);\r\n\r\n the.menuObject.on('kt.menu.dropdown.show', function(item) {\r\n if (KTUtil.visible(the.toggleElement)) {\r\n the.toggleElement.classList.add('active');\r\n the.toggleElement.classList.add('show');\r\n } \r\n });\r\n \r\n the.menuObject.on('kt.menu.dropdown.hide', function(item) {\r\n if (KTUtil.visible(the.toggleElement)) {\r\n the.toggleElement.classList.remove('active');\r\n the.toggleElement.classList.remove('show');\r\n }\r\n });\r\n } \r\n\r\n the.menuObject.on('kt.menu.dropdown.shown', function() {\r\n the.inputElement.focus();\r\n });\r\n } \r\n\r\n // Window resize handling\r\n window.addEventListener('resize', function() {\r\n var timer;\r\n\r\n KTUtil.throttle(timer, function() {\r\n _update();\r\n }, 200);\r\n });\r\n }\r\n\r\n // Focus\r\n var _focus = function() {\r\n the.element.classList.add('focus');\r\n\r\n if ( _getOption('show-on-focus') === true || the.inputElement.value.length >= minLength ) {\r\n _show();\r\n } \r\n }\r\n\r\n // Blur\r\n var _blur = function() { \r\n the.element.classList.remove('focus');\r\n }\r\n\r\n // Enter \r\n var _enter = function(e) {\r\n var key = e.charCode || e.keyCode || 0;\r\n\r\n if (key == 13) {\r\n e.preventDefault();\r\n\r\n _search();\r\n }\r\n }\r\n\r\n // Input\r\n var _input = function() {\r\n if ( _getOption('min-length') ) {\r\n var minLength = parseInt(_getOption('min-length'));\r\n\r\n if ( the.inputElement.value.length >= minLength ) {\r\n _search();\r\n } else if ( the.inputElement.value.length === 0 ) {\r\n _clear();\r\n }\r\n }\r\n }\r\n\r\n // Search\r\n var _search = function() {\r\n if (the.processing === false) {\r\n // Show search spinner\r\n if (the.spinnerElement) {\r\n the.spinnerElement.classList.remove(\"d-none\");\r\n }\r\n \r\n // Hide search clear button\r\n if (the.clearElement) {\r\n the.clearElement.classList.add(\"d-none\");\r\n }\r\n\r\n // Hide search toolbar\r\n if (the.toolbarElement && the.formElement.contains(the.toolbarElement)) {\r\n the.toolbarElement.classList.add(\"d-none\");\r\n }\r\n\r\n // Focus input\r\n the.inputElement.focus();\r\n\r\n the.processing = true;\r\n KTEventHandler.trigger(the.element, 'kt.search.process', the);\r\n }\r\n }\r\n\r\n // Complete\r\n var _complete = function() {\r\n if (the.spinnerElement) {\r\n the.spinnerElement.classList.add(\"d-none\");\r\n }\r\n\r\n // Show search toolbar\r\n if (the.clearElement) {\r\n the.clearElement.classList.remove(\"d-none\");\r\n }\r\n\r\n if ( the.inputElement.value.length === 0 ) {\r\n _clear();\r\n }\r\n\r\n // Focus input\r\n the.inputElement.focus();\r\n\r\n _show();\r\n\r\n the.processing = false;\r\n }\r\n\r\n // Clear\r\n var _clear = function() {\r\n if ( KTEventHandler.trigger(the.element, 'kt.search.clear', the) === false ) {\r\n return;\r\n }\r\n\r\n // Clear and focus input\r\n the.inputElement.value = \"\";\r\n the.inputElement.focus();\r\n\r\n // Hide clear icon\r\n if (the.clearElement) {\r\n the.clearElement.classList.add(\"d-none\");\r\n }\r\n\r\n // Show search toolbar\r\n if (the.toolbarElement && the.formElement.contains(the.toolbarElement)) {\r\n the.toolbarElement.classList.remove(\"d-none\");\r\n }\r\n\r\n // Hide menu\r\n if ( _getOption('show-on-focus') === false ) {\r\n _hide();\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.search.cleared', the);\r\n }\r\n\r\n // Update\r\n var _update = function() {\r\n // Handle responsive form\r\n if (the.layout === 'menu') {\r\n var responsiveFormMode = _getResponsiveFormMode();\r\n\r\n if ( responsiveFormMode === 'on' && the.contentElement.contains(the.formElement) === false ) {\r\n the.contentElement.prepend(the.formElement);\r\n the.formElement.classList.remove('d-none'); \r\n } else if ( responsiveFormMode === 'off' && the.contentElement.contains(the.formElement) === true ) {\r\n the.element.prepend(the.formElement);\r\n the.formElement.classList.add('d-none');\r\n }\r\n }\r\n }\r\n\r\n // Show menu\r\n var _show = function() {\r\n if ( the.menuObject ) {\r\n _update();\r\n\r\n the.menuObject.show(the.element);\r\n }\r\n }\r\n\r\n // Hide menu\r\n var _hide = function() {\r\n if ( the.menuObject ) {\r\n _update();\r\n\r\n the.menuObject.hide(the.element);\r\n }\r\n }\r\n\r\n // Get option\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-search-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-search-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n // Get element\r\n var _getElement = function(name) {\r\n return the.element.querySelector('[data-kt-search-element=\"' + name + '\"]');\r\n }\r\n\r\n // Check if responsive form mode is enabled\r\n var _getResponsiveFormMode = function() {\r\n var responsive = _getOption('responsive');\r\n var width = KTUtil.getViewPort().width;\r\n\r\n if (!responsive) {\r\n return null;\r\n }\r\n\r\n var breakpoint = KTUtil.getBreakpoint(responsive);\r\n\r\n if (!breakpoint ) {\r\n breakpoint = parseInt(responsive);\r\n }\r\n\r\n if (width < breakpoint) {\r\n return \"on\";\r\n } else {\r\n return \"off\";\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('search');\r\n } \r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.show = function() {\r\n return _show();\r\n }\r\n\r\n the.hide = function() {\r\n return _hide();\r\n }\r\n\r\n the.update = function() {\r\n return _update();\r\n }\r\n\r\n the.search = function() {\r\n return _search();\r\n }\r\n\r\n the.complete = function() {\r\n return _complete();\r\n }\r\n\r\n the.clear = function() {\r\n return _clear();\r\n }\r\n\r\n the.isProcessing = function() {\r\n return the.processing;\r\n }\r\n\r\n the.getQuery = function() {\r\n return the.inputElement.value;\r\n } \r\n\r\n the.getMenu = function() {\r\n return the.menuObject;\r\n }\r\n\r\n the.getFormElement = function() {\r\n return the.formElement;\r\n }\r\n\r\n the.getInputElement = function() {\r\n return the.inputElement;\r\n }\r\n\r\n the.getContentElement = function() {\r\n return the.contentElement;\r\n }\r\n\r\n the.getElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTSearch.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('search') ) {\r\n return KTUtil.data(element).get('search');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTSearch;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTStepper = function(element, options) {\r\n //////////////////////////////\r\n // ** Private variables ** //\r\n //////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n startIndex: 1,\r\n animation: false,\r\n animationSpeed: '0.3s',\r\n animationNextClass: 'animate__animated animate__slideInRight animate__fast',\r\n animationPreviousClass: 'animate__animated animate__slideInLeft animate__fast'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('stepper') === true ) {\r\n the = KTUtil.data(element).get('stepper');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('stepper');\r\n\r\n the.element = element;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-stepper', 'true');\r\n\r\n // Elements\r\n the.steps = KTUtil.findAll(the.element, '[data-kt-stepper-element=\"nav\"]');\r\n the.btnNext = KTUtil.find(the.element, '[data-kt-stepper-action=\"next\"]');\r\n the.btnPrevious = KTUtil.find(the.element, '[data-kt-stepper-action=\"previous\"]');\r\n the.btnSubmit = KTUtil.find(the.element, '[data-kt-stepper-action=\"submit\"]');\r\n\r\n // Variables\r\n the.totalStepsNumber = the.steps.length;\r\n the.passedStepIndex = 0;\r\n the.currentStepIndex = 1;\r\n the.clickedStepIndex = 0;\r\n\r\n // Set Current Step\r\n if ( the.options.startIndex > 1 ) {\r\n _goTo(the.options.startIndex);\r\n }\r\n\r\n // Event listeners\r\n the.nextListener = function(e) {\r\n e.preventDefault();\r\n\r\n KTEventHandler.trigger(the.element, 'kt.stepper.next', the);\r\n };\r\n\r\n the.previousListener = function(e) {\r\n e.preventDefault();\r\n\r\n KTEventHandler.trigger(the.element, 'kt.stepper.previous', the);\r\n };\r\n\r\n the.stepListener = function(e) {\r\n e.preventDefault();\r\n\r\n if ( the.steps && the.steps.length > 0 ) {\r\n for (var i = 0, len = the.steps.length; i < len; i++) {\r\n if ( the.steps[i] === this ) {\r\n the.clickedStepIndex = i + 1;\r\n\r\n KTEventHandler.trigger(the.element, 'kt.stepper.click', the);\r\n\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Event Handlers\r\n KTUtil.addEvent(the.btnNext, 'click', the.nextListener);\r\n\r\n KTUtil.addEvent(the.btnPrevious, 'click', the.previousListener);\r\n\r\n the.stepListenerId = KTUtil.on(the.element, '[data-kt-stepper-action=\"step\"]', 'click', the.stepListener);\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('stepper', the);\r\n }\r\n\r\n var _goTo = function(index) {\r\n // Trigger \"change\" event\r\n KTEventHandler.trigger(the.element, 'kt.stepper.change', the);\r\n\r\n // Skip if this step is already shown\r\n if ( index === the.currentStepIndex || index > the.totalStepsNumber || index < 0 ) {\r\n return;\r\n }\r\n\r\n // Validate step number\r\n index = parseInt(index);\r\n\r\n // Set current step\r\n the.passedStepIndex = the.currentStepIndex;\r\n the.currentStepIndex = index;\r\n\r\n // Refresh elements\r\n _refreshUI();\r\n\r\n // Trigger \"changed\" event\r\n KTEventHandler.trigger(the.element, 'kt.stepper.changed', the);\r\n\r\n return the;\r\n }\r\n\r\n var _goNext = function() {\r\n return _goTo( _getNextStepIndex() );\r\n }\r\n\r\n var _goPrevious = function() {\r\n return _goTo( _getPreviousStepIndex() );\r\n }\r\n\r\n var _goLast = function() {\r\n return _goTo( _getLastStepIndex() );\r\n }\r\n\r\n var _goFirst = function() {\r\n return _goTo( _getFirstStepIndex() );\r\n }\r\n\r\n var _refreshUI = function() {\r\n var state = '';\r\n\r\n if ( _isLastStep() ) {\r\n state = 'last';\r\n } else if ( _isFirstStep() ) {\r\n state = 'first';\r\n } else {\r\n state = 'between';\r\n }\r\n\r\n // Set state class\r\n KTUtil.removeClass(the.element, 'last');\r\n KTUtil.removeClass(the.element, 'first');\r\n KTUtil.removeClass(the.element, 'between');\r\n\r\n KTUtil.addClass(the.element, state);\r\n\r\n // Step Items\r\n var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element=\"nav\"], [data-kt-stepper-element=\"content\"], [data-kt-stepper-element=\"info\"]');\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var element = elements[i];\r\n var index = KTUtil.index(element) + 1;\r\n\r\n KTUtil.removeClass(element, 'current');\r\n KTUtil.removeClass(element, 'completed');\r\n KTUtil.removeClass(element, 'pending');\r\n\r\n if ( index == the.currentStepIndex ) {\r\n KTUtil.addClass(element, 'current');\r\n\r\n if ( the.options.animation !== false && element.getAttribute('data-kt-stepper-element') == 'content' ) {\r\n KTUtil.css(element, 'animationDuration', the.options.animationSpeed);\r\n\r\n var animation = _getStepDirection(the.passedStepIndex) === 'previous' ? the.options.animationPreviousClass : the.options.animationNextClass;\r\n KTUtil.animateClass(element, animation);\r\n }\r\n } else {\r\n if ( index < the.currentStepIndex ) {\r\n KTUtil.addClass(element, 'completed');\r\n } else {\r\n KTUtil.addClass(element, 'pending');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _isLastStep = function() {\r\n return the.currentStepIndex === the.totalStepsNumber;\r\n }\r\n\r\n var _isFirstStep = function() {\r\n return the.currentStepIndex === 1;\r\n }\r\n\r\n var _isBetweenStep = function() {\r\n return _isLastStep() === false && _isFirstStep() === false;\r\n }\r\n\r\n var _getNextStepIndex = function() {\r\n if ( the.totalStepsNumber >= ( the.currentStepIndex + 1 ) ) {\r\n return the.currentStepIndex + 1;\r\n } else {\r\n return the.totalStepsNumber;\r\n }\r\n }\r\n\r\n var _getPreviousStepIndex = function() {\r\n if ( ( the.currentStepIndex - 1 ) > 1 ) {\r\n return the.currentStepIndex - 1;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n\r\n var _getFirstStepIndex = function(){\r\n return 1;\r\n }\r\n\r\n var _getLastStepIndex = function() {\r\n return the.totalStepsNumber;\r\n }\r\n\r\n var _getTotalStepsNumber = function() {\r\n return the.totalStepsNumber;\r\n }\r\n\r\n var _getStepDirection = function(index) {\r\n if ( index > the.currentStepIndex ) {\r\n return 'next';\r\n } else {\r\n return 'previous';\r\n }\r\n }\r\n\r\n var _getStepContent = function(index) {\r\n var content = KTUtil.findAll(the.element, '[data-kt-stepper-element=\"content\"]');\r\n\r\n if ( content[index-1] ) {\r\n return content[index-1];\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n // Event Handlers\r\n KTUtil.removeEvent(the.btnNext, 'click', the.nextListener);\r\n\r\n KTUtil.removeEvent(the.btnPrevious, 'click', the.previousListener);\r\n\r\n KTUtil.off(the.element, 'click', the.stepListenerId);\r\n\r\n KTUtil.data(the.element).remove('stepper');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.getElement = function(index) {\r\n return the.element;\r\n }\r\n\r\n the.goTo = function(index) {\r\n return _goTo(index);\r\n }\r\n\r\n the.goPrevious = function() {\r\n return _goPrevious();\r\n }\r\n\r\n the.goNext = function() {\r\n return _goNext();\r\n }\r\n\r\n the.goFirst = function() {\r\n return _goFirst();\r\n }\r\n\r\n the.goLast = function() {\r\n return _goLast();\r\n }\r\n\r\n the.getCurrentStepIndex = function() {\r\n return the.currentStepIndex;\r\n }\r\n\r\n the.getNextStepIndex = function() {\r\n return _getNextStepIndex();\r\n }\r\n\r\n the.getPassedStepIndex = function() {\r\n return the.passedStepIndex;\r\n }\r\n\r\n the.getClickedStepIndex = function() {\r\n return the.clickedStepIndex;\r\n }\r\n\r\n the.getPreviousStepIndex = function() {\r\n return _getPreviousStepIndex();\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTStepper.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('stepper') ) {\r\n return KTUtil.data(element).get('stepper');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTStepper;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTStickyHandlersInitialized = false;\r\n\r\n// Class definition\r\nvar KTSticky = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n offset: 200,\r\n reverse: false,\r\n release: null,\r\n animation: true,\r\n animationSpeed: '0.3s',\r\n animationClass: 'animation-slide-in-down'\r\n };\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('sticky') === true ) {\r\n the = KTUtil.data(element).get('sticky');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n the.element = element;\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('sticky');\r\n the.name = the.element.getAttribute('data-kt-sticky-name');\r\n the.attributeName = 'data-kt-sticky-' + the.name;\r\n the.attributeName2 = 'data-kt-' + the.name;\r\n the.eventTriggerState = true;\r\n the.lastScrollTop = 0;\r\n the.scrollHandler;\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-sticky', 'true');\r\n\r\n // Event Handlers\r\n window.addEventListener('scroll', _scroll);\r\n\r\n // Initial Launch\r\n _scroll();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('sticky', the);\r\n }\r\n\r\n var _scroll = function(e) {\r\n var offset = _getOption('offset');\r\n var release = _getOption('release');\r\n var reverse = _getOption('reverse');\r\n var st;\r\n var attrName;\r\n var diff;\r\n\r\n // Exit if false\r\n if ( offset === false ) {\r\n return;\r\n }\r\n\r\n offset = parseInt(offset);\r\n release = release ? document.querySelector(release) : null;\r\n\r\n st = KTUtil.getScrollTop();\r\n diff = document.documentElement.scrollHeight - window.innerHeight - KTUtil.getScrollTop();\r\n \r\n var proceed = (!release || (release.offsetTop - release.clientHeight) > st);\r\n\r\n if ( reverse === true ) { // Release on reverse scroll mode\r\n if ( st > offset && proceed ) {\r\n if ( document.body.hasAttribute(the.attributeName) === false) {\r\n \r\n if (_enable() === false) {\r\n return;\r\n }\r\n\r\n document.body.setAttribute(the.attributeName, 'on');\r\n document.body.setAttribute(the.attributeName2, 'on');\r\n the.element.setAttribute(\"data-kt-sticky-enabled\", \"true\");\r\n }\r\n\r\n if ( the.eventTriggerState === true ) {\r\n KTEventHandler.trigger(the.element, 'kt.sticky.on', the);\r\n KTEventHandler.trigger(the.element, 'kt.sticky.change', the);\r\n\r\n the.eventTriggerState = false;\r\n }\r\n } else { // Back scroll mode\r\n if ( document.body.hasAttribute(the.attributeName) === true) {\r\n _disable();\r\n document.body.removeAttribute(the.attributeName);\r\n document.body.removeAttribute(the.attributeName2);\r\n the.element.removeAttribute(\"data-kt-sticky-enabled\");\r\n }\r\n\r\n if ( the.eventTriggerState === false ) {\r\n KTEventHandler.trigger(the.element, 'kt.sticky.off', the);\r\n KTEventHandler.trigger(the.element, 'kt.sticky.change', the);\r\n the.eventTriggerState = true;\r\n }\r\n }\r\n\r\n the.lastScrollTop = st;\r\n } else { // Classic scroll mode\r\n if ( st > offset && proceed ) {\r\n if ( document.body.hasAttribute(the.attributeName) === false) {\r\n \r\n if (_enable() === false) {\r\n return;\r\n } \r\n \r\n document.body.setAttribute(the.attributeName, 'on');\r\n document.body.setAttribute(the.attributeName2, 'on');\r\n the.element.setAttribute(\"data-kt-sticky-enabled\", \"true\");\r\n }\r\n\r\n if ( the.eventTriggerState === true ) {\r\n KTEventHandler.trigger(the.element, 'kt.sticky.on', the);\r\n KTEventHandler.trigger(the.element, 'kt.sticky.change', the);\r\n the.eventTriggerState = false;\r\n }\r\n } else { // back scroll mode\r\n if ( document.body.hasAttribute(the.attributeName) === true ) {\r\n _disable();\r\n document.body.removeAttribute(the.attributeName);\r\n document.body.removeAttribute(the.attributeName2);\r\n the.element.removeAttribute(\"data-kt-sticky-enabled\");\r\n }\r\n\r\n if ( the.eventTriggerState === false ) {\r\n KTEventHandler.trigger(the.element, 'kt.sticky.off', the);\r\n KTEventHandler.trigger(the.element, 'kt.sticky.change', the);\r\n the.eventTriggerState = true;\r\n }\r\n }\r\n } \r\n\r\n if (release) {\r\n if ( release.offsetTop - release.clientHeight > st ) {\r\n the.element.setAttribute('data-kt-sticky-released', 'true');\r\n } else {\r\n the.element.removeAttribute('data-kt-sticky-released');\r\n }\r\n } \r\n }\r\n\r\n var _enable = function(update) {\r\n var top = _getOption('top');\r\n top = top ? parseInt(top) : 0;\r\n\r\n var left = _getOption('left');\r\n var right = _getOption('right');\r\n var width = _getOption('width');\r\n var zindex = _getOption('zindex');\r\n var dependencies = _getOption('dependencies');\r\n var classes = _getOption('class');\r\n\r\n var height = _calculateHeight();\r\n var heightOffset = _getOption('height-offset');\r\n heightOffset = heightOffset ? parseInt(heightOffset) : 0;\r\n\r\n if (height + heightOffset + top > KTUtil.getViewPort().height) {\r\n return false;\r\n }\r\n \r\n if ( update !== true && _getOption('animation') === true ) {\r\n KTUtil.css(the.element, 'animationDuration', _getOption('animationSpeed'));\r\n KTUtil.animateClass(the.element, 'animation ' + _getOption('animationClass'));\r\n }\r\n\r\n if ( classes !== null ) {\r\n KTUtil.addClass(the.element, classes);\r\n }\r\n\r\n if ( zindex !== null ) {\r\n KTUtil.css(the.element, 'z-index', zindex);\r\n KTUtil.css(the.element, 'position', 'fixed');\r\n }\r\n\r\n if ( top >= 0 ) {\r\n KTUtil.css(the.element, 'top', String(top) + 'px');\r\n }\r\n\r\n if ( width !== null ) {\r\n if (width['target']) {\r\n var targetElement = document.querySelector(width['target']);\r\n if (targetElement) {\r\n width = KTUtil.css(targetElement, 'width');\r\n }\r\n }\r\n\r\n KTUtil.css(the.element, 'width', width);\r\n }\r\n\r\n if ( left !== null ) {\r\n if ( String(left).toLowerCase() === 'auto' ) {\r\n var offsetLeft = KTUtil.offset(the.element).left;\r\n\r\n if ( offsetLeft >= 0 ) {\r\n KTUtil.css(the.element, 'left', String(offsetLeft) + 'px');\r\n }\r\n } else {\r\n KTUtil.css(the.element, 'left', left);\r\n }\r\n }\r\n\r\n if ( right !== null ) {\r\n KTUtil.css(the.element, 'right', right);\r\n } \r\n\r\n // Height dependencies\r\n if ( dependencies !== null ) {\r\n var dependencyElements = document.querySelectorAll(dependencies);\r\n \r\n if ( dependencyElements && dependencyElements.length > 0 ) {\r\n for ( var i = 0, len = dependencyElements.length; i < len; i++ ) {\r\n KTUtil.css(dependencyElements[i], 'padding-top', String(height) + 'px');\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _disable = function() {\r\n KTUtil.css(the.element, 'top', '');\r\n KTUtil.css(the.element, 'width', '');\r\n KTUtil.css(the.element, 'left', '');\r\n KTUtil.css(the.element, 'right', '');\r\n KTUtil.css(the.element, 'z-index', '');\r\n KTUtil.css(the.element, 'position', '');\r\n\r\n var dependencies = _getOption('dependencies');\r\n var classes = _getOption('class');\r\n\r\n if ( classes !== null ) {\r\n KTUtil.removeClass(the.element, classes);\r\n }\r\n\r\n // Height dependencies\r\n if ( dependencies !== null ) {\r\n var dependencyElements = document.querySelectorAll(dependencies);\r\n\r\n if ( dependencyElements && dependencyElements.length > 0 ) {\r\n for ( var i = 0, len = dependencyElements.length; i < len; i++ ) {\r\n KTUtil.css(dependencyElements[i], 'padding-top', '');\r\n }\r\n }\r\n }\r\n }\r\n\r\n var _check = function() {\r\n\r\n }\r\n\r\n var _calculateHeight = function() {\r\n var height = parseFloat(KTUtil.css(the.element, 'height'));\r\n\r\n height = height + parseFloat(KTUtil.css(the.element, 'margin-top'));\r\n height = height + parseFloat(KTUtil.css(the.element, 'margin-bottom'));\r\n \r\n if (KTUtil.css(element, 'border-top')) {\r\n height = height + parseFloat(KTUtil.css(the.element, 'border-top'));\r\n }\r\n\r\n if (KTUtil.css(element, 'border-bottom')) {\r\n height = height + parseFloat(KTUtil.css(the.element, 'border-bottom'));\r\n }\r\n\r\n return height;\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-sticky-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-sticky-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n window.removeEventListener('scroll', _scroll);\r\n KTUtil.data(the.element).remove('sticky');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Methods\r\n the.update = function() {\r\n if ( document.body.hasAttribute(the.attributeName) === true ) {\r\n _disable();\r\n document.body.removeAttribute(the.attributeName);\r\n document.body.removeAttribute(the.attributeName2);\r\n _enable(true);\r\n document.body.setAttribute(the.attributeName, 'on');\r\n document.body.setAttribute(the.attributeName2, 'on');\r\n }\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTSticky.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('sticky') ) {\r\n return KTUtil.data(element).get('sticky');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTSticky.createInstances = function(selector = '[data-kt-sticky=\"true\"]') {\r\n // Initialize Menus\r\n var elements = document.body.querySelectorAll(selector);\r\n var sticky;\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n sticky = new KTSticky(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Window resize handler\r\nKTSticky.handleResize = function() {\r\n window.addEventListener('resize', function() {\r\n var timer;\r\n \r\n KTUtil.throttle(timer, function() {\r\n // Locate and update Offcanvas instances on window resize\r\n var elements = document.body.querySelectorAll('[data-kt-sticky=\"true\"]');\r\n \r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var sticky = KTSticky.getInstance(elements[i]);\r\n if (sticky) {\r\n sticky.update();\r\n }\r\n }\r\n }\r\n }, 200);\r\n });\r\n}\r\n\r\n// Global initialization\r\nKTSticky.init = function() {\r\n KTSticky.createInstances();\r\n\r\n if (KTStickyHandlersInitialized === false) {\r\n KTSticky.handleResize();\r\n KTStickyHandlersInitialized = true;\r\n } \r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTSticky;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTSwapperHandlersInitialized = false;\r\n\r\n// Class definition\r\nvar KTSwapper = function(element, options) {\r\n ////////////////////////////\r\n // ** Private Variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if ( typeof element === \"undefined\" || element === null ) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n mode: 'append'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('swapper') === true ) {\r\n the = KTUtil.data(element).get('swapper');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n the.element = element;\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // Set initialized\r\n the.element.setAttribute('data-kt-swapper', 'true');\r\n\r\n // Initial update\r\n _update();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('swapper', the);\r\n }\r\n\r\n var _update = function(e) {\r\n var parentSelector = _getOption('parent');\r\n\r\n var mode = _getOption('mode');\r\n var parentElement = parentSelector ? document.querySelector(parentSelector) : null;\r\n \r\n\r\n if (parentElement && element.parentNode !== parentElement) {\r\n if (mode === 'prepend') {\r\n parentElement.prepend(element);\r\n } else if (mode === 'append') {\r\n parentElement.append(element);\r\n }\r\n }\r\n }\r\n\r\n var _getOption = function(name) {\r\n if ( the.element.hasAttribute('data-kt-swapper-' + name) === true ) {\r\n var attr = the.element.getAttribute('data-kt-swapper-' + name);\r\n var value = KTUtil.getResponsiveValue(attr);\r\n\r\n if ( value !== null && String(value) === 'true' ) {\r\n value = true;\r\n } else if ( value !== null && String(value) === 'false' ) {\r\n value = false;\r\n }\r\n\r\n return value;\r\n } else {\r\n var optionName = KTUtil.snakeToCamel(name);\r\n\r\n if ( the.options[optionName] ) {\r\n return KTUtil.getResponsiveValue(the.options[optionName]);\r\n } else {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('swapper');\r\n }\r\n\r\n // Construct Class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Methods\r\n the.update = function() {\r\n _update();\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTSwapper.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('swapper') ) {\r\n return KTUtil.data(element).get('swapper');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTSwapper.createInstances = function(selector = '[data-kt-swapper=\"true\"]') {\r\n // Initialize Menus\r\n var elements = document.querySelectorAll(selector);\r\n var swapper;\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n swapper = new KTSwapper(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Window resize handler\r\nKTSwapper.handleResize = function() {\r\n window.addEventListener('resize', function() {\r\n var timer;\r\n \r\n KTUtil.throttle(timer, function() {\r\n // Locate and update Offcanvas instances on window resize\r\n var elements = document.querySelectorAll('[data-kt-swapper=\"true\"]');\r\n \r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var swapper = KTSwapper.getInstance(elements[i]);\r\n if (swapper) {\r\n swapper.update();\r\n } \r\n }\r\n }\r\n }, 200);\r\n });\r\n};\r\n\r\n// Global initialization\r\nKTSwapper.init = function() {\r\n KTSwapper.createInstances();\r\n\r\n if (KTSwapperHandlersInitialized === false) {\r\n KTSwapper.handleResize();\r\n KTSwapperHandlersInitialized = true;\r\n }\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTSwapper;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTToggle = function(element, options) {\r\n ////////////////////////////\r\n // ** Private variables ** //\r\n ////////////////////////////\r\n var the = this;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default Options\r\n var defaultOptions = {\r\n saveState: true\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private methods ** //\r\n ////////////////////////////\r\n\r\n var _construct = function() {\r\n if ( KTUtil.data(element).has('toggle') === true ) {\r\n the = KTUtil.data(element).get('toggle');\r\n } else {\r\n _init();\r\n }\r\n }\r\n\r\n var _init = function() {\r\n // Variables\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.uid = KTUtil.getUniqueId('toggle');\r\n\r\n // Elements\r\n the.element = element;\r\n\r\n the.target = document.querySelector(the.element.getAttribute('data-kt-toggle-target')) ? document.querySelector(the.element.getAttribute('data-kt-toggle-target')) : the.element;\r\n the.state = the.element.hasAttribute('data-kt-toggle-state') ? the.element.getAttribute('data-kt-toggle-state') : '';\r\n the.mode = the.element.hasAttribute('data-kt-toggle-mode') ? the.element.getAttribute('data-kt-toggle-mode') : '';\r\n the.attribute = 'data-kt-' + the.element.getAttribute('data-kt-toggle-name');\r\n\r\n // Event Handlers\r\n _handlers();\r\n\r\n // Bind Instance\r\n KTUtil.data(the.element).set('toggle', the);\r\n }\r\n\r\n var _handlers = function() {\r\n KTUtil.addEvent(the.element, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n if ( the.mode !== '' ) {\r\n if ( the.mode === 'off' && _isEnabled() === false ) {\r\n _toggle();\r\n } else if ( the.mode === 'on' && _isEnabled() === true ) {\r\n _toggle();\r\n }\r\n } else {\r\n _toggle();\r\n }\r\n });\r\n }\r\n\r\n // Event handlers\r\n var _toggle = function() {\r\n // Trigger \"after.toggle\" event\r\n KTEventHandler.trigger(the.element, 'kt.toggle.change', the);\r\n\r\n if ( _isEnabled() ) {\r\n _disable();\r\n } else {\r\n _enable();\r\n } \r\n\r\n // Trigger \"before.toggle\" event\r\n KTEventHandler.trigger(the.element, 'kt.toggle.changed', the);\r\n\r\n return the;\r\n }\r\n\r\n var _enable = function() {\r\n if ( _isEnabled() === true ) {\r\n return;\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.toggle.enable', the);\r\n\r\n the.target.setAttribute(the.attribute, 'on');\r\n\r\n if (the.state.length > 0) {\r\n the.element.classList.add(the.state);\r\n } \r\n\r\n if ( typeof KTCookie !== 'undefined' && the.options.saveState === true ) {\r\n KTCookie.set(the.attribute, 'on');\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.toggle.enabled', the);\r\n\r\n return the;\r\n }\r\n\r\n var _disable = function() {\r\n if ( _isEnabled() === false ) {\r\n return;\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.toggle.disable', the);\r\n\r\n the.target.removeAttribute(the.attribute);\r\n\r\n if (the.state.length > 0) {\r\n the.element.classList.remove(the.state);\r\n } \r\n\r\n if ( typeof KTCookie !== 'undefined' && the.options.saveState === true ) {\r\n KTCookie.remove(the.attribute);\r\n }\r\n\r\n KTEventHandler.trigger(the.element, 'kt.toggle.disabled', the);\r\n\r\n return the;\r\n }\r\n\r\n var _isEnabled = function() {\r\n return (String(the.target.getAttribute(the.attribute)).toLowerCase() === 'on');\r\n }\r\n\r\n var _destroy = function() {\r\n KTUtil.data(the.element).remove('toggle');\r\n }\r\n\r\n // Construct class\r\n _construct();\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n the.toggle = function() {\r\n return _toggle();\r\n }\r\n\r\n the.enable = function() {\r\n return _enable();\r\n }\r\n\r\n the.disable = function() {\r\n return _disable();\r\n }\r\n\r\n the.isEnabled = function() {\r\n return _isEnabled();\r\n }\r\n\r\n the.goElement = function() {\r\n return the.element;\r\n }\r\n\r\n the.destroy = function() {\r\n return _destroy();\r\n }\r\n\r\n // Event API\r\n the.on = function(name, handler) {\r\n return KTEventHandler.on(the.element, name, handler);\r\n }\r\n\r\n the.one = function(name, handler) {\r\n return KTEventHandler.one(the.element, name, handler);\r\n }\r\n\r\n the.off = function(name, handlerId) {\r\n return KTEventHandler.off(the.element, name, handlerId);\r\n }\r\n\r\n the.trigger = function(name, event) {\r\n return KTEventHandler.trigger(the.element, name, event, the, event);\r\n }\r\n};\r\n\r\n// Static methods\r\nKTToggle.getInstance = function(element) {\r\n if ( element !== null && KTUtil.data(element).has('toggle') ) {\r\n return KTUtil.data(element).get('toggle');\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// Create instances\r\nKTToggle.createInstances = function(selector = '[data-kt-toggle]') {\r\n // Get instances\r\n var elements = document.body.querySelectorAll(selector);\r\n\r\n if ( elements && elements.length > 0 ) {\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n // Initialize instances\r\n new KTToggle(elements[i]);\r\n }\r\n }\r\n}\r\n\r\n// Global initialization\r\nKTToggle.init = function() {\r\n KTToggle.createInstances();\r\n};\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTToggle;\r\n}","\"use strict\";\r\n\r\n/**\r\n * @class KTUtil base utilize class that privides helper functions\r\n */\r\n\r\n// Polyfills\r\n\r\n// Element.matches() polyfill\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== this) {}\r\n return i > -1;\r\n };\r\n}\r\n\r\n/**\r\n * Element.closest() polyfill\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\r\n */\r\nif (!Element.prototype.closest) {\r\n\tElement.prototype.closest = function (s) {\r\n\t\tvar el = this;\r\n\t\tvar ancestor = this;\r\n\t\tif (!document.documentElement.contains(el)) return null;\r\n\t\tdo {\r\n\t\t\tif (ancestor.matches(s)) return ancestor;\r\n\t\t\tancestor = ancestor.parentElement;\r\n\t\t} while (ancestor !== null);\r\n\t\treturn null;\r\n\t};\r\n}\r\n\r\n/**\r\n * ChildNode.remove() polyfill\r\n * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/\r\n * @author Chris Ferdinandi\r\n * @license MIT\r\n */\r\n(function (elem) {\r\n\tfor (var i = 0; i < elem.length; i++) {\r\n\t\tif (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue;\r\n\t\twindow[elem[i]].prototype.remove = function () {\r\n\t\t\tthis.parentNode.removeChild(this);\r\n\t\t};\r\n\t}\r\n})(['Element', 'CharacterData', 'DocumentType']);\r\n\r\n\r\n//\r\n// requestAnimationFrame polyfill by Erik Möller.\r\n// With fixes from Paul Irish and Tino Zijdel\r\n//\r\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\r\n//\r\n// MIT license\r\n//\r\n(function() {\r\n var lastTime = 0;\r\n var vendors = ['webkit', 'moz'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame =\r\n window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function(callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = window.setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n\r\n if (!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\n// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md\r\n(function(arr) {\r\n arr.forEach(function(item) {\r\n if (item.hasOwnProperty('prepend')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'prepend', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function prepend() {\r\n var argArr = Array.prototype.slice.call(arguments),\r\n docFrag = document.createDocumentFragment();\r\n\r\n argArr.forEach(function(argItem) {\r\n var isNode = argItem instanceof Node;\r\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\r\n });\r\n\r\n this.insertBefore(docFrag, this.firstChild);\r\n }\r\n });\r\n });\r\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\r\n\r\n// getAttributeNames\r\nif (Element.prototype.getAttributeNames == undefined) {\r\n Element.prototype.getAttributeNames = function () {\r\n var attributes = this.attributes;\r\n var length = attributes.length;\r\n var result = new Array(length);\r\n for (var i = 0; i < length; i++) {\r\n result[i] = attributes[i].name;\r\n }\r\n return result;\r\n };\r\n}\r\n\r\n// Global variables\r\nwindow.KTUtilElementDataStore = {};\r\nwindow.KTUtilElementDataStoreID = 0;\r\nwindow.KTUtilDelegatedEventHandlers = {};\r\n\r\nvar KTUtil = function() {\r\n var resizeHandlers = [];\r\n\r\n /**\r\n * Handle window resize event with some\r\n * delay to attach event handlers upon resize complete\r\n */\r\n var _windowResizeHandler = function() {\r\n var _runResizeHandlers = function() {\r\n // reinitialize other subscribed elements\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n var each = resizeHandlers[i];\r\n each.call();\r\n }\r\n };\r\n\r\n var timer;\r\n\r\n window.addEventListener('resize', function() {\r\n KTUtil.throttle(timer, function() {\r\n _runResizeHandlers();\r\n }, 200);\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Class main initializer.\r\n * @param {object} settings.\r\n * @returns null\r\n */\r\n //main function to initiate the theme\r\n init: function(settings) {\r\n _windowResizeHandler();\r\n },\r\n\r\n /**\r\n * Adds window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n addResizeHandler: function(callback) {\r\n resizeHandlers.push(callback);\r\n },\r\n\r\n /**\r\n * Removes window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n removeResizeHandler: function(callback) {\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n if (callback === resizeHandlers[i]) {\r\n delete resizeHandlers[i];\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Trigger window resize handlers.\r\n */\r\n runResizeHandlers: function() {\r\n _runResizeHandlers();\r\n },\r\n\r\n resize: function() {\r\n if (typeof(Event) === 'function') {\r\n // modern browsers\r\n window.dispatchEvent(new Event('resize'));\r\n } else {\r\n // for IE and other old browsers\r\n // causes deprecation warning on modern browsers\r\n var evt = window.document.createEvent('UIEvents');\r\n evt.initUIEvent('resize', true, false, window, 0);\r\n window.dispatchEvent(evt);\r\n }\r\n },\r\n\r\n /**\r\n * Get GET parameter value from URL.\r\n * @param {string} paramName Parameter name.\r\n * @returns {string}\r\n */\r\n getURLParam: function(paramName) {\r\n var searchString = window.location.search.substring(1),\r\n i, val, params = searchString.split(\"&\");\r\n\r\n for (i = 0; i < params.length; i++) {\r\n val = params[i].split(\"=\");\r\n if (val[0] == paramName) {\r\n return unescape(val[1]);\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Checks whether current device is mobile touch.\r\n * @returns {boolean}\r\n */\r\n isMobileDevice: function() {\r\n var test = (this.getViewPort().width < this.getBreakpoint('lg') ? true : false);\r\n\r\n if (test === false) {\r\n // For use within normal web clients\r\n test = navigator.userAgent.match(/iPad/i) != null;\r\n }\r\n\r\n return test;\r\n },\r\n\r\n /**\r\n * Checks whether current device is desktop.\r\n * @returns {boolean}\r\n */\r\n isDesktopDevice: function() {\r\n return KTUtil.isMobileDevice() ? false : true;\r\n },\r\n\r\n /**\r\n * Gets browser window viewport size. Ref:\r\n * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/\r\n * @returns {object}\r\n */\r\n getViewPort: function() {\r\n var e = window,\r\n a = 'inner';\r\n if (!('innerWidth' in window)) {\r\n a = 'client';\r\n e = document.documentElement || document.body;\r\n }\r\n\r\n return {\r\n width: e[a + 'Width'],\r\n height: e[a + 'Height']\r\n };\r\n },\r\n\r\n\t\t/**\r\n * Checks whether given device mode is currently activated.\r\n * @param {string} mode Responsive mode name(e.g: desktop,\r\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\r\n * @returns {boolean}\r\n */\r\n isBreakpointUp: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width >= breakpoint);\r\n },\r\n\r\n\t\tisBreakpointDown: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width < breakpoint);\r\n },\r\n\r\n getViewportWidth: function() {\r\n return this.getViewPort().width;\r\n },\r\n\r\n /**\r\n * Generates unique ID for give prefix.\r\n * @param {string} prefix Prefix for generated ID\r\n * @returns {boolean}\r\n */\r\n getUniqueId: function(prefix) {\r\n return prefix + Math.floor(Math.random() * (new Date()).getTime());\r\n },\r\n\r\n /**\r\n * Gets window width for give breakpoint mode.\r\n * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm)\r\n * @returns {number}\r\n */\r\n getBreakpoint: function(breakpoint) {\r\n var value = this.getCssVariableValue('--bs-' + breakpoint);\r\n\r\n if ( value ) {\r\n value = parseInt(value.trim());\r\n } \r\n\r\n return value;\r\n },\r\n\r\n /**\r\n * Checks whether object has property matchs given key path.\r\n * @param {object} obj Object contains values paired with given key path\r\n * @param {string} keys Keys path seperated with dots\r\n * @returns {object}\r\n */\r\n isset: function(obj, keys) {\r\n var stone;\r\n\r\n keys = keys || '';\r\n\r\n if (keys.indexOf('[') !== -1) {\r\n throw new Error('Unsupported object path notation.');\r\n }\r\n\r\n keys = keys.split('.');\r\n\r\n do {\r\n if (obj === undefined) {\r\n return false;\r\n }\r\n\r\n stone = keys.shift();\r\n\r\n if (!obj.hasOwnProperty(stone)) {\r\n return false;\r\n }\r\n\r\n obj = obj[stone];\r\n\r\n } while (keys.length);\r\n\r\n return true;\r\n },\r\n\r\n /**\r\n * Gets highest z-index of the given element parents\r\n * @param {object} el jQuery element object\r\n * @returns {number}\r\n */\r\n getHighestZindex: function(el) {\r\n var position, value;\r\n\r\n while (el && el !== document) {\r\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\r\n // This makes behavior of this function consistent across browsers\r\n // WebKit always returns auto if the element is positioned\r\n position = KTUtil.css(el, 'position');\r\n\r\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\r\n // IE returns 0 when zIndex is not specified\r\n // other browsers return a string\r\n // we ignore the case of nested elements with an explicit value of 0\r\n //
\r\n value = parseInt(KTUtil.css(el, 'z-index'));\r\n\r\n if (!isNaN(value) && value !== 0) {\r\n return value;\r\n }\r\n }\r\n\r\n el = el.parentNode;\r\n }\r\n\r\n return 1;\r\n },\r\n\r\n /**\r\n * Checks whether the element has any parent with fixed positionfreg\r\n * @param {object} el jQuery element object\r\n * @returns {boolean}\r\n */\r\n hasFixedPositionedParent: function(el) {\r\n var position;\r\n\r\n while (el && el !== document) {\r\n position = KTUtil.css(el, 'position');\r\n\r\n if (position === \"fixed\") {\r\n return true;\r\n }\r\n\r\n el = el.parentNode;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /**\r\n * Simulates delay\r\n */\r\n sleep: function(milliseconds) {\r\n var start = new Date().getTime();\r\n for (var i = 0; i < 1e7; i++) {\r\n if ((new Date().getTime() - start) > milliseconds) {\r\n break;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Gets randomly generated integer value within given min and max range\r\n * @param {number} min Range start value\r\n * @param {number} max Range end value\r\n * @returns {number}\r\n */\r\n getRandomInt: function(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n },\r\n\r\n /**\r\n * Checks whether Angular library is included\r\n * @returns {boolean}\r\n */\r\n isAngularVersion: function() {\r\n return window.Zone !== undefined ? true : false;\r\n },\r\n\r\n // Deep extend: $.extend(true, {}, objA, objB);\r\n deepExtend: function(out) {\r\n out = out || {};\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n var obj = arguments[i];\r\n if (!obj) continue;\r\n\r\n for (var key in obj) {\r\n if (!obj.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n\r\n // based on https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/\r\n if ( Object.prototype.toString.call(obj[key]) === '[object Object]' ) {\r\n out[key] = KTUtil.deepExtend(out[key], obj[key]);\r\n continue;\r\n }\r\n\r\n out[key] = obj[key];\r\n }\r\n }\r\n\r\n return out;\r\n },\r\n\r\n // extend: $.extend({}, objA, objB);\r\n extend: function(out) {\r\n out = out || {};\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n if (!arguments[i])\r\n continue;\r\n\r\n for (var key in arguments[i]) {\r\n if (arguments[i].hasOwnProperty(key))\r\n out[key] = arguments[i][key];\r\n }\r\n }\r\n\r\n return out;\r\n },\r\n\r\n getBody: function() {\r\n return document.getElementsByTagName('body')[0];\r\n },\r\n\r\n /**\r\n * Checks whether the element has given classes\r\n * @param {object} el jQuery element object\r\n * @param {string} Classes string\r\n * @returns {boolean}\r\n */\r\n hasClasses: function(el, classes) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n var classesArr = classes.split(\" \");\r\n\r\n for (var i = 0; i < classesArr.length; i++) {\r\n if (KTUtil.hasClass(el, KTUtil.trim(classesArr[i])) == false) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n hasClass: function(el, className) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n return el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className);\r\n },\r\n\r\n addClass: function(el, className) {\r\n if (!el || typeof className === 'undefined') {\r\n return;\r\n }\r\n\r\n var classNames = className.split(' ');\r\n\r\n if (el.classList) {\r\n for (var i = 0; i < classNames.length; i++) {\r\n if (classNames[i] && classNames[i].length > 0) {\r\n el.classList.add(KTUtil.trim(classNames[i]));\r\n }\r\n }\r\n } else if (!KTUtil.hasClass(el, className)) {\r\n for (var x = 0; x < classNames.length; x++) {\r\n el.className += ' ' + KTUtil.trim(classNames[x]);\r\n }\r\n }\r\n },\r\n\r\n removeClass: function(el, className) {\r\n if (!el || typeof className === 'undefined') {\r\n return;\r\n }\r\n\r\n var classNames = className.split(' ');\r\n\r\n if (el.classList) {\r\n for (var i = 0; i < classNames.length; i++) {\r\n el.classList.remove(KTUtil.trim(classNames[i]));\r\n }\r\n } else if (KTUtil.hasClass(el, className)) {\r\n for (var x = 0; x < classNames.length; x++) {\r\n el.className = el.className.replace(new RegExp('\\\\b' + KTUtil.trim(classNames[x]) + '\\\\b', 'g'), '');\r\n }\r\n }\r\n },\r\n\r\n triggerCustomEvent: function(el, eventName, data) {\r\n var event;\r\n if (window.CustomEvent) {\r\n event = new CustomEvent(eventName, {\r\n detail: data\r\n });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, true, true, data);\r\n }\r\n\r\n el.dispatchEvent(event);\r\n },\r\n\r\n triggerEvent: function(node, eventName) {\r\n // Make sure we use the ownerDocument from the provided node to avoid cross-window problems\r\n var doc;\r\n\r\n if (node.ownerDocument) {\r\n doc = node.ownerDocument;\r\n } else if (node.nodeType == 9) {\r\n // the node may be the document itself, nodeType 9 = DOCUMENT_NODE\r\n doc = node;\r\n } else {\r\n throw new Error(\"Invalid node passed to fireEvent: \" + node.id);\r\n }\r\n\r\n if (node.dispatchEvent) {\r\n // Gecko-style approach (now the standard) takes more work\r\n var eventClass = \"\";\r\n\r\n // Different events have different event classes.\r\n // If this switch statement can't map an eventName to an eventClass,\r\n // the event firing is going to fail.\r\n switch (eventName) {\r\n case \"click\": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.\r\n case \"mouseenter\":\r\n case \"mouseleave\":\r\n case \"mousedown\":\r\n case \"mouseup\":\r\n eventClass = \"MouseEvents\";\r\n break;\r\n\r\n case \"focus\":\r\n case \"change\":\r\n case \"blur\":\r\n case \"select\":\r\n eventClass = \"HTMLEvents\";\r\n break;\r\n\r\n default:\r\n throw \"fireEvent: Couldn't find an event class for event '\" + eventName + \"'.\";\r\n break;\r\n }\r\n var event = doc.createEvent(eventClass);\r\n\r\n var bubbles = eventName == \"change\" ? false : true;\r\n event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable.\r\n\r\n event.synthetic = true; // allow detection of synthetic events\r\n // The second parameter says go ahead with the default action\r\n node.dispatchEvent(event, true);\r\n } else if (node.fireEvent) {\r\n // IE-old school style\r\n var event = doc.createEventObject();\r\n event.synthetic = true; // allow detection of synthetic events\r\n node.fireEvent(\"on\" + eventName, event);\r\n }\r\n },\r\n\r\n index: function( el ){\r\n var c = el.parentNode.children, i = 0;\r\n for(; i < c.length; i++ )\r\n if( c[i] == el ) return i;\r\n },\r\n\r\n trim: function(string) {\r\n return string.trim();\r\n },\r\n\r\n eventTriggered: function(e) {\r\n if (e.currentTarget.dataset.triggered) {\r\n return true;\r\n } else {\r\n e.currentTarget.dataset.triggered = true;\r\n\r\n return false;\r\n }\r\n },\r\n\r\n remove: function(el) {\r\n if (el && el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n },\r\n\r\n find: function(parent, query) {\r\n if ( parent !== null) {\r\n return parent.querySelector(query);\r\n } else {\r\n return null;\r\n }\r\n },\r\n\r\n findAll: function(parent, query) {\r\n if ( parent !== null ) {\r\n return parent.querySelectorAll(query);\r\n } else {\r\n return null;\r\n }\r\n },\r\n\r\n insertAfter: function(el, referenceNode) {\r\n return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\r\n },\r\n\r\n parents: function(elem, selector) {\r\n // Set up a parent array\r\n var parents = [];\r\n\r\n // Push each parent element to the array\r\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\r\n if (selector) {\r\n if (elem.matches(selector)) {\r\n parents.push(elem);\r\n }\r\n continue;\r\n }\r\n parents.push(elem);\r\n }\r\n\r\n // Return our parent array\r\n return parents;\r\n },\r\n\r\n children: function(el, selector, log) {\r\n if (!el || !el.childNodes) {\r\n return null;\r\n }\r\n\r\n var result = [],\r\n i = 0,\r\n l = el.childNodes.length;\r\n\r\n for (var i; i < l; ++i) {\r\n if (el.childNodes[i].nodeType == 1 && KTUtil.matches(el.childNodes[i], selector, log)) {\r\n result.push(el.childNodes[i]);\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n\r\n child: function(el, selector, log) {\r\n var children = KTUtil.children(el, selector, log);\r\n\r\n return children ? children[0] : null;\r\n },\r\n\r\n matches: function(el, selector, log) {\r\n var p = Element.prototype;\r\n var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) {\r\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\r\n };\r\n\r\n if (el && el.tagName) {\r\n return f.call(el, selector);\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n data: function(el) {\r\n return {\r\n set: function(name, data) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n window.KTUtilElementDataStoreID++;\r\n el.customDataTag = window.KTUtilElementDataStoreID;\r\n }\r\n\r\n if (window.KTUtilElementDataStore[el.customDataTag] === undefined) {\r\n window.KTUtilElementDataStore[el.customDataTag] = {};\r\n }\r\n\r\n window.KTUtilElementDataStore[el.customDataTag][name] = data;\r\n },\r\n\r\n get: function(name) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n return null;\r\n }\r\n\r\n return this.has(name) ? window.KTUtilElementDataStore[el.customDataTag][name] : null;\r\n },\r\n\r\n has: function(name) {\r\n if (!el) {\r\n return false;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n return false;\r\n }\r\n\r\n return (window.KTUtilElementDataStore[el.customDataTag] && window.KTUtilElementDataStore[el.customDataTag][name]) ? true : false;\r\n },\r\n\r\n remove: function(name) {\r\n if (el && this.has(name)) {\r\n delete window.KTUtilElementDataStore[el.customDataTag][name];\r\n }\r\n }\r\n };\r\n },\r\n\r\n outerWidth: function(el, margin) {\r\n var width;\r\n\r\n if (margin === true) {\r\n width = parseFloat(el.offsetWidth);\r\n width += parseFloat(KTUtil.css(el, 'margin-left')) + parseFloat(KTUtil.css(el, 'margin-right'));\r\n\r\n return parseFloat(width);\r\n } else {\r\n width = parseFloat(el.offsetWidth);\r\n\r\n return width;\r\n }\r\n },\r\n\r\n offset: function(el) {\r\n var rect, win;\r\n\r\n if ( !el ) {\r\n return;\r\n }\r\n\r\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\r\n // Support: IE <=11 only\r\n // Running getBoundingClientRect on a\r\n // disconnected node in IE throws an error\r\n\r\n if ( !el.getClientRects().length ) {\r\n return { top: 0, left: 0 };\r\n }\r\n\r\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\r\n rect = el.getBoundingClientRect();\r\n win = el.ownerDocument.defaultView;\r\n\r\n return {\r\n top: rect.top + win.pageYOffset,\r\n left: rect.left + win.pageXOffset,\r\n right: window.innerWidth - (el.offsetLeft + el.offsetWidth)\r\n };\r\n },\r\n\r\n height: function(el) {\r\n return KTUtil.css(el, 'height');\r\n },\r\n\r\n outerHeight: function(el, withMargin) {\r\n var height = el.offsetHeight;\r\n var style;\r\n\r\n if (typeof withMargin !== 'undefined' && withMargin === true) {\r\n style = getComputedStyle(el);\r\n height += parseInt(style.marginTop) + parseInt(style.marginBottom);\r\n\r\n return height;\r\n } else {\r\n return height;\r\n }\r\n },\r\n\r\n visible: function(el) {\r\n return !(el.offsetWidth === 0 && el.offsetHeight === 0);\r\n },\r\n\r\n isVisibleInContainer: function (el, container, offset = 0) {\r\n const eleTop = el.offsetTop;\r\n const eleBottom = eleTop + el.clientHeight + offset;\r\n const containerTop = container.scrollTop;\r\n const containerBottom = containerTop + container.clientHeight;\r\n \r\n // The element is fully visible in the container\r\n return (\r\n (eleTop >= containerTop && eleBottom <= containerBottom)\r\n );\r\n },\r\n\r\n getRelativeTopPosition: function (el, container) {\r\n return el.offsetTop - container.offsetTop;\r\n },\r\n\r\n attr: function(el, name, value) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n if (value !== undefined) {\r\n el.setAttribute(name, value);\r\n } else {\r\n return el.getAttribute(name);\r\n }\r\n },\r\n\r\n hasAttr: function(el, name) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n return el.getAttribute(name) ? true : false;\r\n },\r\n\r\n removeAttr: function(el, name) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n el.removeAttribute(name);\r\n },\r\n\r\n animate: function(from, to, duration, update, easing, done) {\r\n /**\r\n * TinyAnimate.easings\r\n * Adapted from jQuery Easing\r\n */\r\n var easings = {};\r\n var easing;\r\n\r\n easings.linear = function(t, b, c, d) {\r\n return c * t / d + b;\r\n };\r\n\r\n easing = easings.linear;\r\n\r\n // Early bail out if called incorrectly\r\n if (typeof from !== 'number' ||\r\n typeof to !== 'number' ||\r\n typeof duration !== 'number' ||\r\n typeof update !== 'function') {\r\n return;\r\n }\r\n\r\n // Create mock done() function if necessary\r\n if (typeof done !== 'function') {\r\n done = function() {};\r\n }\r\n\r\n // Pick implementation (requestAnimationFrame | setTimeout)\r\n var rAF = window.requestAnimationFrame || function(callback) {\r\n window.setTimeout(callback, 1000 / 50);\r\n };\r\n\r\n // Animation loop\r\n var canceled = false;\r\n var change = to - from;\r\n\r\n function loop(timestamp) {\r\n var time = (timestamp || +new Date()) - start;\r\n\r\n if (time >= 0) {\r\n update(easing(time, from, change, duration));\r\n }\r\n if (time >= 0 && time >= duration) {\r\n update(to);\r\n done();\r\n } else {\r\n rAF(loop);\r\n }\r\n }\r\n\r\n update(from);\r\n\r\n // Start animation loop\r\n var start = window.performance && window.performance.now ? window.performance.now() : +new Date();\r\n\r\n rAF(loop);\r\n },\r\n\r\n actualCss: function(el, prop, cache) {\r\n var css = '';\r\n\r\n if (el instanceof HTMLElement === false) {\r\n return;\r\n }\r\n\r\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\r\n var value;\r\n\r\n // the element is hidden so:\r\n // making the el block so we can meassure its height but still be hidden\r\n css = el.style.cssText;\r\n el.style.cssText = 'position: absolute; visibility: hidden; display: block;';\r\n\r\n if (prop == 'width') {\r\n value = el.offsetWidth;\r\n } else if (prop == 'height') {\r\n value = el.offsetHeight;\r\n }\r\n\r\n el.style.cssText = css;\r\n\r\n // store it in cache\r\n el.setAttribute('kt-hidden-' + prop, value);\r\n\r\n return parseFloat(value);\r\n } else {\r\n // store it in cache\r\n return parseFloat(el.getAttribute('kt-hidden-' + prop));\r\n }\r\n },\r\n\r\n actualHeight: function(el, cache) {\r\n return KTUtil.actualCss(el, 'height', cache);\r\n },\r\n\r\n actualWidth: function(el, cache) {\r\n return KTUtil.actualCss(el, 'width', cache);\r\n },\r\n\r\n getScroll: function(element, method) {\r\n // The passed in `method` value should be 'Top' or 'Left'\r\n method = 'scroll' + method;\r\n return (element == window || element == document) ? (\r\n self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||\r\n (browserSupportsBoxModel && document.documentElement[method]) ||\r\n document.body[method]\r\n ) : element[method];\r\n },\r\n\r\n css: function(el, styleProp, value, important) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (value !== undefined) {\r\n if ( important === true ) {\r\n el.style.setProperty(styleProp, value, 'important');\r\n } else {\r\n el.style[styleProp] = value;\r\n }\r\n } else {\r\n var defaultView = (el.ownerDocument || document).defaultView;\r\n\r\n // W3C standard way:\r\n if (defaultView && defaultView.getComputedStyle) {\r\n // sanitize property name to css notation\r\n // (hyphen separated words eg. font-Size)\r\n styleProp = styleProp.replace(/([A-Z])/g, \"-$1\").toLowerCase();\r\n\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);\r\n } else if (el.currentStyle) { // IE\r\n // sanitize property name to camelCase\r\n styleProp = styleProp.replace(/\\-(\\w)/g, function(str, letter) {\r\n return letter.toUpperCase();\r\n });\r\n\r\n value = el.currentStyle[styleProp];\r\n\r\n // convert other units to pixels on IE\r\n if (/^\\d+(em|pt|%|ex)?$/i.test(value)) {\r\n return (function(value) {\r\n var oldLeft = el.style.left, oldRsLeft = el.runtimeStyle.left;\r\n\r\n el.runtimeStyle.left = el.currentStyle.left;\r\n el.style.left = value || 0;\r\n value = el.style.pixelLeft + \"px\";\r\n el.style.left = oldLeft;\r\n el.runtimeStyle.left = oldRsLeft;\r\n\r\n return value;\r\n })(value);\r\n }\r\n\r\n return value;\r\n }\r\n }\r\n },\r\n\r\n slide: function(el, dir, speed, callback, recalcMaxHeight) {\r\n if (!el || (dir == 'up' && KTUtil.visible(el) === false) || (dir == 'down' && KTUtil.visible(el) === true)) {\r\n return;\r\n }\r\n\r\n speed = (speed ? speed : 600);\r\n var calcHeight = KTUtil.actualHeight(el);\r\n var calcPaddingTop = false;\r\n var calcPaddingBottom = false;\r\n\r\n if (KTUtil.css(el, 'padding-top') && KTUtil.data(el).has('slide-padding-top') !== true) {\r\n KTUtil.data(el).set('slide-padding-top', KTUtil.css(el, 'padding-top'));\r\n }\r\n\r\n if (KTUtil.css(el, 'padding-bottom') && KTUtil.data(el).has('slide-padding-bottom') !== true) {\r\n KTUtil.data(el).set('slide-padding-bottom', KTUtil.css(el, 'padding-bottom'));\r\n }\r\n\r\n if (KTUtil.data(el).has('slide-padding-top')) {\r\n calcPaddingTop = parseInt(KTUtil.data(el).get('slide-padding-top'));\r\n }\r\n\r\n if (KTUtil.data(el).has('slide-padding-bottom')) {\r\n calcPaddingBottom = parseInt(KTUtil.data(el).get('slide-padding-bottom'));\r\n }\r\n\r\n if (dir == 'up') { // up\r\n el.style.cssText = 'display: block; overflow: hidden;';\r\n\r\n if (calcPaddingTop) {\r\n KTUtil.animate(0, calcPaddingTop, speed, function(value) {\r\n el.style.paddingTop = (calcPaddingTop - value) + 'px';\r\n }, 'linear');\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n KTUtil.animate(0, calcPaddingBottom, speed, function(value) {\r\n el.style.paddingBottom = (calcPaddingBottom - value) + 'px';\r\n }, 'linear');\r\n }\r\n\r\n KTUtil.animate(0, calcHeight, speed, function(value) {\r\n el.style.height = (calcHeight - value) + 'px';\r\n }, 'linear', function() {\r\n el.style.height = '';\r\n el.style.display = 'none';\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n\r\n\r\n } else if (dir == 'down') { // down\r\n el.style.cssText = 'display: block; overflow: hidden;';\r\n\r\n if (calcPaddingTop) {\r\n KTUtil.animate(0, calcPaddingTop, speed, function(value) {//\r\n el.style.paddingTop = value + 'px';\r\n }, 'linear', function() {\r\n el.style.paddingTop = '';\r\n });\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n KTUtil.animate(0, calcPaddingBottom, speed, function(value) {\r\n el.style.paddingBottom = value + 'px';\r\n }, 'linear', function() {\r\n el.style.paddingBottom = '';\r\n });\r\n }\r\n\r\n KTUtil.animate(0, calcHeight, speed, function(value) {\r\n el.style.height = value + 'px';\r\n }, 'linear', function() {\r\n el.style.height = '';\r\n el.style.display = '';\r\n el.style.overflow = '';\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n }\r\n },\r\n\r\n slideUp: function(el, speed, callback) {\r\n KTUtil.slide(el, 'up', speed, callback);\r\n },\r\n\r\n slideDown: function(el, speed, callback) {\r\n KTUtil.slide(el, 'down', speed, callback);\r\n },\r\n\r\n show: function(el, display) {\r\n if (typeof el !== 'undefined') {\r\n el.style.display = (display ? display : 'block');\r\n }\r\n },\r\n\r\n hide: function(el) {\r\n if (typeof el !== 'undefined') {\r\n el.style.display = 'none';\r\n }\r\n },\r\n\r\n addEvent: function(el, type, handler, one) {\r\n if (typeof el !== 'undefined' && el !== null) {\r\n el.addEventListener(type, handler);\r\n }\r\n },\r\n\r\n removeEvent: function(el, type, handler) {\r\n if (el !== null) {\r\n el.removeEventListener(type, handler);\r\n }\r\n },\r\n\r\n on: function(element, selector, event, handler) {\r\n if ( element === null ) {\r\n return;\r\n }\r\n\r\n var eventId = KTUtil.getUniqueId('event');\r\n\r\n window.KTUtilDelegatedEventHandlers[eventId] = function(e) {\r\n var targets = element.querySelectorAll(selector);\r\n var target = e.target;\r\n\r\n while ( target && target !== element ) {\r\n for ( var i = 0, j = targets.length; i < j; i++ ) {\r\n if ( target === targets[i] ) {\r\n handler.call(target, e);\r\n }\r\n }\r\n\r\n target = target.parentNode;\r\n }\r\n }\r\n\r\n KTUtil.addEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);\r\n\r\n return eventId;\r\n },\r\n\r\n off: function(element, event, eventId) {\r\n if (!element || !window.KTUtilDelegatedEventHandlers[eventId]) {\r\n return;\r\n }\r\n\r\n KTUtil.removeEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);\r\n\r\n delete window.KTUtilDelegatedEventHandlers[eventId];\r\n },\r\n\r\n one: function onetime(el, type, callback) {\r\n el.addEventListener(type, function callee(e) {\r\n // remove event\r\n if (e.target && e.target.removeEventListener) {\r\n e.target.removeEventListener(e.type, callee);\r\n }\r\n\r\n // need to verify from https://themeforest.net/author_dashboard#comment_23615588\r\n if (el && el.removeEventListener) {\r\n\t\t\t\t e.currentTarget.removeEventListener(e.type, callee);\r\n\t\t\t }\r\n\r\n // call handler\r\n return callback(e);\r\n });\r\n },\r\n\r\n hash: function(str) {\r\n var hash = 0,\r\n i, chr;\r\n\r\n if (str.length === 0) return hash;\r\n for (i = 0; i < str.length; i++) {\r\n chr = str.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + chr;\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n\r\n return hash;\r\n },\r\n\r\n animateClass: function(el, animationName, callback) {\r\n var animation;\r\n var animations = {\r\n animation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n MozAnimation: 'mozAnimationEnd',\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n msAnimation: 'msAnimationEnd',\r\n };\r\n\r\n for (var t in animations) {\r\n if (el.style[t] !== undefined) {\r\n animation = animations[t];\r\n }\r\n }\r\n \r\n KTUtil.addClass(el, animationName);\r\n\r\n KTUtil.one(el, animation, function() {\r\n KTUtil.removeClass(el, animationName);\r\n });\r\n\r\n if (callback) {\r\n KTUtil.one(el, animation, callback);\r\n }\r\n },\r\n\r\n transitionEnd: function(el, callback) {\r\n var transition;\r\n var transitions = {\r\n transition: 'transitionend',\r\n OTransition: 'oTransitionEnd',\r\n MozTransition: 'mozTransitionEnd',\r\n WebkitTransition: 'webkitTransitionEnd',\r\n msTransition: 'msTransitionEnd'\r\n };\r\n\r\n for (var t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n transition = transitions[t];\r\n }\r\n }\r\n\r\n KTUtil.one(el, transition, callback);\r\n },\r\n\r\n animationEnd: function(el, callback) {\r\n var animation;\r\n var animations = {\r\n animation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n MozAnimation: 'mozAnimationEnd',\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n msAnimation: 'msAnimationEnd'\r\n };\r\n\r\n for (var t in animations) {\r\n if (el.style[t] !== undefined) {\r\n animation = animations[t];\r\n }\r\n }\r\n\r\n KTUtil.one(el, animation, callback);\r\n },\r\n\r\n animateDelay: function(el, value) {\r\n var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];\r\n for (var i = 0; i < vendors.length; i++) {\r\n KTUtil.css(el, vendors[i] + 'animation-delay', value);\r\n }\r\n },\r\n\r\n animateDuration: function(el, value) {\r\n var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];\r\n for (var i = 0; i < vendors.length; i++) {\r\n KTUtil.css(el, vendors[i] + 'animation-duration', value);\r\n }\r\n },\r\n\r\n scrollTo: function(target, offset, duration) {\r\n var duration = duration ? duration : 500;\r\n var targetPos = target ? KTUtil.offset(target).top : 0;\r\n var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n var from, to;\r\n\r\n if (offset) {\r\n targetPos = targetPos - offset;\r\n }\r\n\r\n from = scrollPos;\r\n to = targetPos;\r\n\r\n KTUtil.animate(from, to, duration, function(value) {\r\n document.documentElement.scrollTop = value;\r\n document.body.parentNode.scrollTop = value;\r\n document.body.scrollTop = value;\r\n }); //, easing, done\r\n },\r\n\r\n scrollTop: function(offset, duration) {\r\n KTUtil.scrollTo(null, offset, duration);\r\n },\r\n\r\n isArray: function(obj) {\r\n return obj && Array.isArray(obj);\r\n },\r\n\r\n isEmpty: function(obj) {\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n numberString: function(nStr) {\r\n nStr += '';\r\n var x = nStr.split('.');\r\n var x1 = x[0];\r\n var x2 = x.length > 1 ? '.' + x[1] : '';\r\n var rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n },\r\n\r\n isRTL: function() {\r\n return (document.querySelector('html').getAttribute(\"direction\") === 'rtl');\r\n },\r\n\r\n snakeToCamel: function(s){\r\n return s.replace(/(\\-\\w)/g, function(m){return m[1].toUpperCase();});\r\n },\r\n\r\n filterBoolean: function(val) {\r\n // Convert string boolean\r\n\t\t\tif (val === true || val === 'true') {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (val === false || val === 'false') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n return val;\r\n },\r\n\r\n setHTML: function(el, html) {\r\n el.innerHTML = html;\r\n },\r\n\r\n getHTML: function(el) {\r\n if (el) {\r\n return el.innerHTML;\r\n }\r\n },\r\n\r\n getDocumentHeight: function() {\r\n var body = document.body;\r\n var html = document.documentElement;\r\n\r\n return Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );\r\n },\r\n\r\n getScrollTop: function() {\r\n return (document.scrollingElement || document.documentElement).scrollTop;\r\n },\r\n\r\n colorLighten: function(color, amount) {\r\n const addLight = function(color, amount){\r\n let cc = parseInt(color,16) + amount;\r\n let c = (cc > 255) ? 255 : (cc);\r\n c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`;\r\n return c;\r\n }\r\n\r\n color = (color.indexOf(\"#\")>=0) ? color.substring(1,color.length) : color;\r\n amount = parseInt((255*amount)/100);\r\n \r\n return color = `#${addLight(color.substring(0,2), amount)}${addLight(color.substring(2,4), amount)}${addLight(color.substring(4,6), amount)}`;\r\n },\r\n\r\n colorDarken: function(color, amount) {\r\n const subtractLight = function(color, amount){\r\n let cc = parseInt(color,16) - amount;\r\n let c = (cc < 0) ? 0 : (cc);\r\n c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`;\r\n\r\n return c;\r\n }\r\n \r\n color = (color.indexOf(\"#\")>=0) ? color.substring(1,color.length) : color;\r\n amount = parseInt((255*amount)/100);\r\n\r\n return color = `#${subtractLight(color.substring(0,2), amount)}${subtractLight(color.substring(2,4), amount)}${subtractLight(color.substring(4,6), amount)}`;\r\n },\r\n\r\n // Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds\r\n throttle: function (timer, func, delay) {\r\n \t// If setTimeout is already scheduled, no need to do anything\r\n \tif (timer) {\r\n \t\treturn;\r\n \t}\r\n\r\n \t// Schedule a setTimeout after delay seconds\r\n \ttimer = setTimeout(function () {\r\n \t\tfunc();\r\n\r\n \t\t// Once setTimeout function execution is finished, timerId = undefined so that in
\r\n \t\t// the next scroll event function execution can be scheduled by the setTimeout\r\n \t\ttimer = undefined;\r\n \t}, delay);\r\n },\r\n\r\n // Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds\r\n debounce: function (timer, func, delay) {\r\n \t// Cancels the setTimeout method execution\r\n \tclearTimeout(timer)\r\n\r\n \t// Executes the func after delay time.\r\n \ttimer = setTimeout(func, delay);\r\n },\r\n\r\n parseJson: function(value) {\r\n if (typeof value === 'string') {\r\n value = value.replace(/'/g, \"\\\"\");\r\n\r\n var jsonStr = value.replace(/(\\w+:)|(\\w+ :)/g, function(matched) {\r\n return '\"' + matched.substring(0, matched.length - 1) + '\":';\r\n });\r\n\r\n try {\r\n value = JSON.parse(jsonStr);\r\n } catch(e) { }\r\n }\r\n\r\n return value;\r\n },\r\n\r\n getResponsiveValue: function(value, defaultValue) {\r\n var width = this.getViewPort().width;\r\n var result = null;\r\n\r\n value = KTUtil.parseJson(value);\r\n\r\n if (typeof value === 'object') {\r\n var resultKey;\r\n var resultBreakpoint = -1;\r\n var breakpoint;\r\n\r\n for (var key in value) {\r\n if (key === 'default') {\r\n breakpoint = 0;\r\n } else {\r\n breakpoint = this.getBreakpoint(key) ? this.getBreakpoint(key) : parseInt(key);\r\n }\r\n\r\n if (breakpoint <= width && breakpoint > resultBreakpoint) {\r\n resultKey = key;\r\n resultBreakpoint = breakpoint;\r\n }\r\n }\r\n\r\n if (resultKey) {\r\n result = value[resultKey];\r\n } else {\r\n result = value;\r\n }\r\n } else {\r\n result = value;\r\n }\r\n\r\n return result;\r\n },\r\n\r\n each: function(array, callback) {\r\n return [].slice.call(array).map(callback);\r\n },\r\n\r\n getSelectorMatchValue: function(value) {\r\n var result = null;\r\n value = KTUtil.parseJson(value);\r\n\r\n if ( typeof value === 'object' ) {\r\n // Match condition\r\n if ( value['match'] !== undefined ) {\r\n var selector = Object.keys(value['match'])[0];\r\n value = Object.values(value['match'])[0];\r\n\r\n if ( document.querySelector(selector) !== null ) {\r\n result = value;\r\n }\r\n }\r\n } else {\r\n result = value;\r\n }\r\n\r\n return result;\r\n },\r\n\r\n getConditionalValue: function(value) {\r\n var value = KTUtil.parseJson(value);\r\n var result = KTUtil.getResponsiveValue(value);\r\n\r\n if ( result !== null && result['match'] !== undefined ) {\r\n result = KTUtil.getSelectorMatchValue(result);\r\n }\r\n\r\n if ( result === null && value !== null && value['default'] !== undefined ) {\r\n result = value['default'];\r\n }\r\n\r\n return result;\r\n },\r\n\r\n getCssVariableValue: function(variableName) {\r\n var hex = getComputedStyle(document.documentElement).getPropertyValue(variableName);\r\n if ( hex && hex.length > 0 ) {\r\n hex = hex.trim();\r\n }\r\n\r\n return hex;\r\n },\r\n\r\n isInViewport: function(element) { \r\n var rect = element.getBoundingClientRect();\r\n\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n );\r\n },\r\n\r\n isPartiallyInViewport: function(element) { \r\n let x = element.getBoundingClientRect().left;\r\n let y = element.getBoundingClientRect().top;\r\n let ww = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\r\n let hw = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n let w = element.clientWidth;\r\n let h = element.clientHeight;\r\n\r\n return (\r\n (y < hw &&\r\n y + h > 0) &&\r\n (x < ww &&\r\n x + w > 0)\r\n );\r\n },\r\n\r\n onDOMContentLoaded: function(callback) {\r\n document.addEventListener('turbo:load', callback);\r\n document.addEventListener('ux-live:load', callback);\r\n },\r\n\r\n inIframe: function() {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n return true;\r\n }\r\n },\r\n\r\n isHexColor(code) {\r\n return /^#[0-9A-F]{6}$/i.test(code);\r\n }\r\n }\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTUtil;\r\n}\r\n","\"use strict\";\r\n\r\n// Class definition\r\nvar KTLayoutSearch = function() {\r\n // Private variables\r\n var element;\r\n var formElement;\r\n var mainElement;\r\n var resultsElement;\r\n var wrapperElement;\r\n var emptyElement;\r\n\r\n var preferencesElement;\r\n var preferencesShowElement;\r\n var preferencesDismissElement;\r\n \r\n var advancedOptionsFormElement;\r\n var advancedOptionsFormShowElement;\r\n var advancedOptionsFormCancelElement;\r\n var advancedOptionsFormSearchElement;\r\n \r\n var searchObject;\r\n\r\n // Private functions\r\n var processs = function(search) {\r\n var timeout = setTimeout(function() {\r\n var number = KTUtil.getRandomInt(1, 3);\r\n\r\n // Hide recently viewed\r\n mainElement.classList.add('d-none');\r\n\r\n if (number === 3) {\r\n // Hide results\r\n resultsElement.classList.add('d-none');\r\n // Show empty message \r\n emptyElement.classList.remove('d-none');\r\n } else {\r\n // Show results\r\n resultsElement.classList.remove('d-none');\r\n // Hide empty message \r\n emptyElement.classList.add('d-none');\r\n } \r\n\r\n // Complete search\r\n search.complete();\r\n }, 1500);\r\n }\r\n\r\n var processsAjax = function(search) {\r\n // Hide recently viewed\r\n mainElement.classList.add('d-none');\r\n\r\n // Learn more: https://axios-http.com/docs/intro\r\n axios.post('/search.php', {\r\n query: searchObject.getQuery()\r\n })\r\n .then(function (response) {\r\n // Populate results\r\n resultsElement.innerHTML = response;\r\n // Show results\r\n resultsElement.classList.remove('d-none');\r\n // Hide empty message \r\n emptyElement.classList.add('d-none');\r\n\r\n // Complete search\r\n search.complete();\r\n })\r\n .catch(function (error) {\r\n // Hide results\r\n resultsElement.classList.add('d-none');\r\n // Show empty message \r\n emptyElement.classList.remove('d-none');\r\n\r\n // Complete search\r\n search.complete();\r\n });\r\n }\r\n\r\n var clear = function(search) {\r\n // Show recently viewed\r\n mainElement.classList.remove('d-none');\r\n // Hide results\r\n resultsElement.classList.add('d-none');\r\n // Hide empty message \r\n emptyElement.classList.add('d-none');\r\n } \r\n\r\n var handlePreferences = function() {\r\n // Preference show handler\r\n preferencesShowElement.addEventListener('click', function() {\r\n wrapperElement.classList.add('d-none');\r\n preferencesElement.classList.remove('d-none');\r\n });\r\n\r\n // Preference dismiss handler\r\n preferencesDismissElement.addEventListener('click', function() {\r\n wrapperElement.classList.remove('d-none');\r\n preferencesElement.classList.add('d-none');\r\n });\r\n }\r\n\r\n var handleAdvancedOptionsForm = function() {\r\n // Show\r\n advancedOptionsFormShowElement.addEventListener('click', function() {\r\n wrapperElement.classList.add('d-none');\r\n advancedOptionsFormElement.classList.remove('d-none');\r\n });\r\n\r\n // Cancel\r\n advancedOptionsFormCancelElement.addEventListener('click', function() {\r\n wrapperElement.classList.remove('d-none');\r\n advancedOptionsFormElement.classList.add('d-none');\r\n });\r\n\r\n // Search\r\n advancedOptionsFormSearchElement.addEventListener('click', function() {\r\n \r\n });\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function() {\r\n // Elements\r\n element = document.querySelector('#kt_header_search');\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n wrapperElement = element.querySelector('[data-kt-search-element=\"wrapper\"]');\r\n formElement = element.querySelector('[data-kt-search-element=\"form\"]');\r\n mainElement = element.querySelector('[data-kt-search-element=\"main\"]');\r\n resultsElement = element.querySelector('[data-kt-search-element=\"results\"]');\r\n emptyElement = element.querySelector('[data-kt-search-element=\"empty\"]');\r\n\r\n preferencesElement = element.querySelector('[data-kt-search-element=\"preferences\"]');\r\n preferencesShowElement = element.querySelector('[data-kt-search-element=\"preferences-show\"]');\r\n preferencesDismissElement = element.querySelector('[data-kt-search-element=\"preferences-dismiss\"]');\r\n\r\n advancedOptionsFormElement = element.querySelector('[data-kt-search-element=\"advanced-options-form\"]');\r\n advancedOptionsFormShowElement = element.querySelector('[data-kt-search-element=\"advanced-options-form-show\"]');\r\n advancedOptionsFormCancelElement = element.querySelector('[data-kt-search-element=\"advanced-options-form-cancel\"]');\r\n advancedOptionsFormSearchElement = element.querySelector('[data-kt-search-element=\"advanced-options-form-search\"]');\r\n \r\n // Initialize search handler\r\n searchObject = new KTSearch(element);\r\n\r\n // Demo search handler\r\n searchObject.on('kt.search.process', processs);\r\n\r\n // Ajax search handler\r\n //searchObject.on('kt.search.process', processsAjax);\r\n\r\n // Clear handler\r\n searchObject.on('kt.search.clear', clear);\r\n\r\n // Custom handlers\r\n handlePreferences();\r\n handleAdvancedOptionsForm(); \r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// On document ready\r\nKTUtil.onDOMContentLoaded(function() {\r\n KTLayoutSearch.init();\r\n});","\"use strict\";\r\n\r\n// Class definition\r\nvar KTAppSidebar = function () {\r\n\t// Private variables\r\n\tvar wrapper;\r\n\tvar sidebar;\r\n\tvar toggle;\r\n\r\n\tvar handleToggle = function () {\r\n\t\tvar toggleObj = KTToggle.getInstance(toggle);\r\n\r\n\t\tif ( toggleObj === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Add a class to prevent sidebar hover effect after toggle click\r\n\t\ttoggleObj.on('kt.toggle.change', function() {\r\n\t\t\t// Set animation state\r\n\t\t\tsidebar.classList.add('animating');\r\n\t\t\t\r\n\t\t\t// Wait till animation finishes\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\t// Remove animation state\r\n\t\t\t\tsidebar.classList.remove('animating');\r\n\t\t\t}, 300);\r\n\t\t});\r\n\r\n\t\t// Store sidebar minimize state in cookie\r\n\t\ttoggleObj.on('kt.toggle.changed', function() {\r\n\t\t\t// In server side check sidebar_minimize_state cookie \r\n\t\t\t// value and add data-kt-app-sidebar-minimize=\"on\" \r\n\t\t\t// attribute to Body tag and \"active\" class to the toggle button\r\n\t\t\tvar date = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000); // 30 days from now\r\n\r\n\t\t\tKTCookie.set(\"sidebar_minimize_state\", toggleObj.isEnabled() ? \"on\" : \"off\", {expires: date}); \r\n\t\t});\r\n\t}\r\n\r\n\tvar handleMenuScroll = function() {\r\n\t\tvar menuActiveItem = wrapper.querySelector(\".menu-link.active\");\r\n\r\n\t\tif ( !menuActiveItem ) {\r\n\t\t\treturn;\r\n\t\t} \r\n\r\n\t\tif ( KTUtil.isVisibleInContainer(menuActiveItem, wrapper) === true) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twrapper.scroll({\r\n\t\t\ttop: KTUtil.getRelativeTopPosition(menuActiveItem, wrapper),\r\n\t\t\tbehavior: 'smooth'\r\n\t\t});\r\n\t}\r\n\r\n\t// Public methods\r\n\treturn {\r\n\t\tinit: function () {\r\n\t\t\t// Elements\r\n\t\t\ttoggle = document.querySelector('#kt_app_sidebar_toggle');\r\n\t\t\twrapper = document.querySelector('#kt_app_sidebar_navs_wrappers');\r\n\t\t\tsidebar = document.querySelector('#kt_app_sidebar');\r\n\r\n\t\t\tif ( toggle ) {\r\n\t\t\t\thandleToggle();\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif ( wrapper ) {\r\n\t\t\t\thandleMenuScroll();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// On document ready\r\nKTUtil.onDOMContentLoaded(function () {\r\n\tKTAppSidebar.init();\r\n});","\"use strict\";\r\n\r\n// Class definition\r\nvar KTThemeModeUser = function () {\r\n \r\n var handleSubmit = function() {\r\n\t\t// Update chart on theme mode change\r\n KTThemeMode.on(\"kt.thememode.change\", function() { \r\n var menuMode = KTThemeMode.getMenuMode();\r\n var mode = KTThemeMode.getMode();\r\n console.log(\"user selected theme mode:\" + menuMode);\r\n console.log(\"theme mode:\" + mode);\r\n\r\n // Submit selected theme mode menu option via ajax and \r\n // store it in user profile and set the user opted theme mode via HTML attribute\r\n // .... \r\n });\r\n }\r\n\r\n return {\r\n init: function () {\r\n\t\t\thandleSubmit();\r\n }\r\n };\r\n}();\r\n\r\n// Initialize app on document ready\r\nKTUtil.onDOMContentLoaded(function () {\r\n KTThemeModeUser.init();\r\n});\r\n\r\n// Declare KTThemeModeUser for Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTThemeModeUser;\r\n}","\"use strict\";\r\n\r\n// Class definition\r\nvar KTThemeMode = function () {\r\n\tvar menu;\r\n\tvar callbacks = [];\r\n\tvar the = this;\r\n\r\n var getMode = function() {\r\n\t\tvar mode;\r\n\r\n\t\tif ( document.documentElement.hasAttribute(\"data-bs-theme\") ) {\r\n return document.documentElement.getAttribute(\"data-bs-theme\");\r\n } else if ( localStorage.getItem(\"data-bs-theme\") !== null ) {\r\n\t\t\treturn localStorage.getItem(\"data-bs-theme\");\r\n\t\t} else if ( getMenuMode() === \"system\" ) {\r\n\t\t\treturn getSystemMode();\r\n\t\t}\r\n\r\n return \"light\";\r\n }\r\n\r\n var setMode = function(mode, menuMode) {\t\t\r\n\t\tvar currentMode = getMode();\r\n\r\n\t\t// Reset mode if system mode was changed\r\n\t\tif ( menuMode === 'system') {\r\n\t\t\tif ( getSystemMode() !== mode ) {\r\n\t\t\t\tmode = getSystemMode();\r\n\t\t\t}\r\n\t\t} else if (mode !== menuMode) {\r\n\t\t\tmenuMode = mode;\r\n\t\t}\r\n\r\n\t\t// Read active menu mode value\r\n\t\tvar activeMenuItem = menu ? menu.querySelector('[data-kt-element=\"mode\"][data-kt-value=\"' + menuMode + '\"]') : null;\r\n\r\n\t\t// Enable switching state\r\n\t\tdocument.documentElement.setAttribute(\"data-kt-theme-mode-switching\", \"true\");\r\n\t\t\r\n\t\t// Set mode to the target document.documentElement\r\n\t\tdocument.documentElement.setAttribute(\"data-bs-theme\", mode);\r\n\r\n\t\t// Disable switching state\r\n\t\tsetTimeout(function() {\r\n\t\t\tdocument.documentElement.removeAttribute(\"data-kt-theme-mode-switching\");\r\n\t\t}, 300);\r\n\t\t\r\n\t\t// Store mode value in storage\r\n localStorage.setItem(\"data-bs-theme\", mode);\t\t\t\r\n\t\t\r\n\t\t// Set active menu item\r\n\t\tif ( activeMenuItem ) {\r\n\t\t\tlocalStorage.setItem(\"data-bs-theme-mode\", menuMode);\r\n\t\t\tsetActiveMenuItem(activeMenuItem);\r\n\t\t}\t\t\t\r\n\r\n\t\tif (mode !== currentMode) {\r\n\t\t\tKTEventHandler.trigger(document.documentElement, 'kt.thememode.change', the);\r\n\t\t}\t\t\r\n }\r\n\r\n\tvar getMenuMode = function() {\r\n\t\tif (!menu) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar menuItem = menu ? menu.querySelector('.active[data-kt-element=\"mode\"]') : null;\r\n\r\n\t\tif ( menuItem && menuItem.getAttribute('data-kt-value') ) {\r\n return menuItem.getAttribute('data-kt-value');\r\n } else if ( document.documentElement.hasAttribute(\"data-bs-theme-mode\") ) {\r\n\t\t\treturn document.documentElement.getAttribute(\"data-bs-theme-mode\")\r\n\t\t} else if ( localStorage.getItem(\"data-bs-theme-mode\") !== null ) {\r\n\t\t\treturn localStorage.getItem(\"data-bs-theme-mode\");\r\n\t\t} else {\r\n\t\t\treturn typeof defaultThemeMode !== \"undefined\" ? defaultThemeMode : \"light\";\r\n\t\t}\r\n\t}\r\n\r\n\tvar getSystemMode = function() {\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? \"dark\" : \"light\";\r\n }\r\n\r\n\tvar initMode = function() {\r\n\t\tsetMode(getMode(), getMenuMode());\r\n\t\tKTEventHandler.trigger(document.documentElement, 'kt.thememode.init', the);\r\n\t}\r\n\r\n\tvar getActiveMenuItem = function() {\r\n\t\treturn menu.querySelector('[data-kt-element=\"mode\"][data-kt-value=\"' + getMenuMode() + '\"]');\r\n\t}\r\n\r\n\tvar setActiveMenuItem = function(item) {\r\n\t\tvar menuMode = item.getAttribute(\"data-kt-value\");\r\n\t\t\r\n\t\tvar activeItem = menu.querySelector('.active[data-kt-element=\"mode\"]');\r\n\r\n\t\tif ( activeItem ) {\r\n\t\t\tactiveItem.classList.remove(\"active\");\r\n\t\t}\r\n\r\n\t\titem.classList.add(\"active\");\r\n\t\tlocalStorage.setItem(\"data-bs-theme-mode\", menuMode);\r\n\t}\r\n\r\n\tvar handleMenu = function() {\r\n\t\tvar items = [].slice.call(menu.querySelectorAll('[data-kt-element=\"mode\"]'));\r\n\r\n items.map(function (item) {\r\n item.addEventListener(\"click\", function(e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tvar menuMode = item.getAttribute(\"data-kt-value\");\r\n\t\t\t\tvar mode = menuMode;\r\n\r\n\t\t\t\tif ( menuMode === \"system\") {\r\n\t\t\t\t\tmode = getSystemMode();\r\n\t\t\t\t} \t\t\r\n\r\n\t\t\t\tsetMode(mode, menuMode);\r\n\t\t\t});\t\t\t \r\n });\r\n\t}\r\n\r\n return {\r\n init: function () {\r\n\t\t\tmenu = document.querySelector('[data-kt-element=\"theme-mode-menu\"]');\r\n\r\n initMode();\r\n\r\n\t\t\tif (menu) {\r\n\t\t\t\thandleMenu();\r\n\t\t\t}\t\t\t\r\n },\r\n\r\n getMode: function () {\r\n return getMode();\r\n },\r\n\r\n\t\tgetMenuMode: function() {\r\n\t\t\treturn getMenuMode();\r\n\t\t},\r\n\r\n\t\tgetSystemMode: function () {\r\n return getSystemMode();\r\n },\r\n\r\n setMode: function(mode) {\r\n return setMode(mode)\r\n },\r\n\r\n\t\ton: function(name, handler) {\r\n\t\t\treturn KTEventHandler.on(document.documentElement, name, handler);\r\n\t\t},\r\n\r\n\t\toff: function(name, handlerId) {\r\n\t\t\treturn KTEventHandler.off(document.documentElement, name, handlerId);\r\n\t\t}\r\n };\r\n}();\r\n\r\n// Initialize app on document ready\r\nKTUtil.onDOMContentLoaded(function () {\r\n KTThemeMode.init();\r\n});\r\n\r\n// Declare KTThemeMode for Webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTThemeMode;\r\n}","// 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](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","\r\n// Keenthemes' plugins\r\nwindow.KTComponents = require('@/src/js/components/_init.js');\r\nwindow.KTUtil = require('@/src/js/components/util.js');\r\nwindow.KTApp = require('@/src/js/components/app.js');\r\nwindow.KTEventHandler = require('@/src/js/components/event-handler.js');\r\nwindow.KTBlockUI = require('@/src/js/components/blockui.js');\r\nwindow.KTCookie = require('@/src/js/components/cookie.js');\r\nwindow.KTDialer = require('@/src/js/components/dialer.js');\r\nwindow.KTDrawer = require('@/src/js/components/drawer.js');\r\nwindow.KTFeedback = require('@/src/js/components/feedback.js');\r\nwindow.KTImageInput = require('@/src/js/components/image-input.js');\r\nwindow.KTMenu = require('@/src/js/components/menu.js');\r\nwindow.KTPasswordMeter = require('@/src/js/components/password-meter.js');\r\nwindow.KTScroll = require('@/src/js/components/scroll.js');\r\nwindow.KTScrolltop = require('@/src/js/components/scrolltop.js');\r\nwindow.KTSearch = require('@/src/js/components/search.js');\r\nwindow.KTStepper = require('@/src/js/components/stepper.js');\r\nwindow.KTSticky = require('@/src/js/components/sticky.js');\r\nwindow.KTSwapper = require('@/src/js/components/swapper.js');\r\nwindow.KTToggle = require('@/src/js/components/toggle.js');\r\n\r\n// Layout base js\r\nwindow.KTLayoutSearch = require('@/src/js/layout/search.js');\r\nwindow.KTThemeMode = require('@/src/js/layout/theme-mode.js');\r\nwindow.KTThemeModeUser = require('@/src/js/layout/theme-mode-user.js');\r\nwindow.KTAppSidebar = require('@/src/js/layout/sidebar.js');"],"names":["KTComponents","init","KTApp","KTDrawer","KTMenu","KTScroll","KTSticky","KTSwapper","KTToggle","KTScrolltop","KTDialer","KTImageInput","KTPasswordMeter","document","readyState","addEventListener","window","hidePageLoading","module","exports","initialized","select2FocusFixInitialized","countUpInitialized","createBootstrapTooltip","createBootstrapPopover","createCountUp","initTinySlider","el","options","getAttribute","delay","hasAttribute","tp","bootstrap","Tooltip","e","hide","setAttribute","popover","Popover","dismissHandler","getElementById","removeEventListener","countUp","slice","call","querySelectorAll","map","element","KTUtil","isInViewport","visible","value","parseFloat","replace","startVal","duration","parseInt","decimalPlaces","prefix","separator","suffix","CountUp","start","classList","add","tnsOptions","getAttributeNames","forEach","attrName","test","optionName","toLowerCase","match","toUpperCase","jsonStr","matched","substring","length","JSON","parse","val","opt","Object","assign","container","slideBy","autoplay","center","autoplayButtonOutput","closest","addClass","tns","elements","lozad","observe","SmoothScroll","speed","speedAsDuration","offset","anchor","toggle","getResponsiveValue","on","body","preventDefault","card","this","confirmMessage","Swal","fire","text","icon","buttonsStyling","confirmButtonText","denyButtonText","customClass","confirmButton","denyButton","then","result","isConfirmed","remove","Array","prototype","modalEl","querySelector","Modal","show","check","targets","each","target","type","checked","contains","blur","innerText","tooltipTriggerEl","popoverTriggerEl","toastEl","Toast","jQuery","$","fn","daterangepicker","moment","subtract","end","display","attrOpens","cb","current","isSame","innerHTML","format","startDate","endDate","opens","ranges","startOf","endOf","createDateRangePickers","group","selector","activeButtons","button","select2","dir","minimumResultsForSearch","Infinity","focus","tab","autosize","input","createTinySliders","showPageLoading","removeAttribute","KTBlockUI","the","defaultOptions","zIndex","overlayClass","overflow","message","_init","deepExtend","overlayElement","blocked","positionChanged","overflowChanged","data","set","has","get","block","KTEventHandler","trigger","isPage","tagName","position","css","createElement","append","_block","release","isBlocked","destroy","name","handler","one","off","handlerId","event","getInstance","KTCookie","matches","cookie","RegExp","decodeURIComponent","path","expires","Date","toUTCString","updatedCookie","encodeURIComponent","optionKey","hasOwnProperty","optionValue","min","max","step","decimals","incElement","decElement","inputElement","_getOption","_setValue","_handlers","addEvent","_increase","_decrease","undefined","_parse","_format","dispatchEvent","Event","isNaN","toFixed","setMinValue","setMaxValue","setValue","getValue","update","increase","decrease","getElement","createInstances","i","len","KTDrawerHandlersInitialized","overlay","direction","baseClass","uid","getUniqueId","shown","lastWidth","toggleElement","_update","togglers","closers","_toggle","closeElement","_hide","_show","_deleteOverlay","removeClass","_createOverlay","width","_getWidth","top","bottom","hasClass","String","isRTL","attr","snakeToCamel","isShown","goElement","hideAll","skip","items","item","drawer","updateAll","handleShow","handleDismiss","handleResize","throttle","timer","_addEvent","callback","handlerIds","push","fired","eventValue","returnValue","_triggerEvent","index","indexOf","splice","_removeEvent","debug","b","console","log","_go","_showPopup","setHTML","content","placement","_setPopupTopCenterPosition","appendChild","height","_hidePopup","find","wrapperElement","cancelElement","removeElement","hiddenElement","src","_change","_cancel","_remove","files","reader","FileReader","onload","readAsDataURL","getInputElement","dropdown","hoverTimeout","zindex","accordion","slideSpeed","expand","triggerElement","disabled","_setTriggerElement","_isItemSubShown","_getItemSubType","_showDropdown","_showAccordion","_hideDropdown","_hideAccordion","_reset","_hasItemSub","sub","_getItemSubElement","parentNode","child","_isTriggerElement","_getItemLinkElement","_getItemElement","_getItemParentElement","parentItem","_getItemParentElements","parent","parents","unshift","_getItemChildElement","_getItemChildElements","children","hideDropdowns","_getOptionFromElementAttribute","parentZindex","getHighestZindex","_initDropdownPopper","insertAfter","_destroyDropdownPopper","reference","attach","popper","Popper","createPopper","_getDropdownPopperConfig","offsetValue","split","strategy","modifiers","altAxis","flipVariations","_hideAccordions","slideDown","slideUp","itemToHide","itemsToHide","findAll","click","_click","link","_link","dismiss","tems","_dismiss","mouseover","clearTimeout","_mouseover","mouseout","timeout","setTimeout","_mouseout","getItemTriggerType","getItemSubType","reset","setActiveLink","parentItems","parentTabPane","activeLinks","activeParentItems","activeLink","activeParentItem","Tab","tabEl","_setActiveLink","getLinkByAttribute","_getLinkByAttribute","getItemLinkElement","getItemToggleElement","_getItemToggleElement","getItemSubElement","getItemParentElements","isItemSubShown","isItemParentShown","_isItemParentShown","getTriggerElement","isItemDropdownPermanent","_isItemDropdownPermanent","disable","enable","hideAccordions","menu","updateDropdowns","forceUpdate","initHandlers","menuObj","updateByLinkAttribute","minLength","checkUppercase","checkLowercase","checkDigit","checkChar","scoreHighlightClass","score","checkSteps","visibilityElement","highlightElement","_check","_visibility","checkScore","_getCheckScore","_checkLength","_checkLowercase","_checkUppercase","_checkDigit","_checkChar","_highlight","count","total","_getScore","visibleIcon","hiddenIcon","getScore","KTScrollHandlersInitialized","saveState","id","_getStorageNamespace","postfix","_scrollHandler","namespace","localStorage","setItem","scrollTop","heightType","_getHeightType","_getHeight","_setupStretchHeight","getItem","pos","scroll","behavior","_setupState","stretch","element1","element2","diff","_getElementHeight","Function","_getAutoHeight","getViewPort","dependencies","wrappers","_getElementSpacing","spacing","getHeight","_scroll","getScrollTop","scrollTo","go","KTSearch","keypress","enter","layout","responsive","showOnFocus","processing","contentElement","_getElement","formElement","spinnerElement","clearElement","submitElement","toolbarElement","resultsElement","suggestionElement","emptyElement","menuObject","_focus","_blur","_input","_search","_enter","_clear","charCode","keyCode","responsiveFormMode","_getResponsiveFormMode","prepend","breakpoint","getBreakpoint","search","complete","clear","isProcessing","getQuery","getMenu","getFormElement","getContentElement","KTStepper","startIndex","animation","animationSpeed","animationNextClass","animationPreviousClass","steps","btnNext","btnPrevious","btnSubmit","totalStepsNumber","passedStepIndex","currentStepIndex","clickedStepIndex","_goTo","nextListener","previousListener","stepListener","stepListenerId","_refreshUI","state","_isLastStep","_isFirstStep","_getStepDirection","animateClass","_getNextStepIndex","_getPreviousStepIndex","_getFirstStepIndex","_getLastStepIndex","goTo","goPrevious","goNext","goFirst","goLast","getCurrentStepIndex","getNextStepIndex","getPassedStepIndex","getClickedStepIndex","getPreviousStepIndex","removeEvent","KTStickyHandlersInitialized","reverse","animationClass","attributeName","attributeName2","eventTriggerState","lastScrollTop","scrollHandler","st","documentElement","scrollHeight","innerHeight","proceed","offsetTop","clientHeight","_enable","_disable","left","right","classes","_calculateHeight","heightOffset","targetElement","offsetLeft","dependencyElements","sticky","KTSwapperHandlersInitialized","mode","parentSelector","parentElement","swapper","attribute","_isEnabled","isEnabled","Element","s","ownerDocument","ancestor","elem","removeChild","lastTime","vendors","x","requestAnimationFrame","cancelAnimationFrame","currTime","getTime","timeToCall","Math","Document","DocumentFragment","defineProperty","configurable","enumerable","writable","argArr","arguments","docFrag","createDocumentFragment","argItem","isNode","Node","createTextNode","insertBefore","firstChild","attributes","KTUtilElementDataStore","KTUtilElementDataStoreID","KTUtilDelegatedEventHandlers","resizeHandlers","_windowResizeHandler","_runResizeHandlers","settings","addResizeHandler","removeResizeHandler","runResizeHandlers","resize","evt","createEvent","initUIEvent","getURLParam","paramName","params","location","unescape","isMobileDevice","navigator","userAgent","isDesktopDevice","a","isBreakpointUp","isBreakpointDown","getViewportWidth","floor","random","getCssVariableValue","trim","isset","obj","keys","stone","Error","shift","hasFixedPositionedParent","sleep","milliseconds","getRandomInt","isAngularVersion","Zone","out","key","toString","extend","getBody","getElementsByTagName","hasClasses","classesArr","className","classNames","triggerCustomEvent","eventName","CustomEvent","detail","initCustomEvent","triggerEvent","node","doc","nodeType","eventClass","bubbles","initEvent","synthetic","fireEvent","createEventObject","c","string","eventTriggered","currentTarget","dataset","triggered","query","referenceNode","nextSibling","childNodes","l","p","f","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","customDataTag","outerWidth","margin","offsetWidth","rect","win","getClientRects","getBoundingClientRect","defaultView","pageYOffset","pageXOffset","innerWidth","outerHeight","withMargin","style","offsetHeight","getComputedStyle","marginTop","marginBottom","isVisibleInContainer","eleTop","eleBottom","containerTop","containerBottom","getRelativeTopPosition","hasAttr","removeAttr","animate","from","to","easing","done","easings","t","d","linear","rAF","change","performance","now","loop","timestamp","time","actualCss","prop","cache","HTMLElement","cssText","actualHeight","actualWidth","getScroll","method","self","browserSupportsBoxModel","styleProp","important","setProperty","getPropertyValue","currentStyle","str","letter","oldLeft","oldRsLeft","runtimeStyle","pixelLeft","slide","recalcMaxHeight","calcHeight","calcPaddingTop","calcPaddingBottom","paddingTop","paddingBottom","eventId","j","callee","hash","charCodeAt","animationName","animations","OAnimation","MozAnimation","WebkitAnimation","msAnimation","transitionEnd","transition","transitions","OTransition","MozTransition","WebkitTransition","msTransition","animationEnd","animateDelay","animateDuration","targetPos","isArray","isEmpty","numberString","nStr","x1","x2","rgx","m","filterBoolean","html","getHTML","getDocumentHeight","scrollingElement","colorLighten","color","amount","addLight","cc","colorDarken","subtractLight","func","debounce","parseJson","defaultValue","resultKey","resultBreakpoint","array","getSelectorMatchValue","values","getConditionalValue","variableName","hex","clientWidth","isPartiallyInViewport","y","ww","hw","w","h","onDOMContentLoaded","inIframe","isHexColor","code","mainElement","preferencesElement","preferencesShowElement","preferencesDismissElement","advancedOptionsFormElement","advancedOptionsFormShowElement","advancedOptionsFormCancelElement","advancedOptionsFormSearchElement","searchObject","processs","KTLayoutSearch","number","wrapper","sidebar","KTAppSidebar","toggleObj","menuActiveItem","date","KTThemeModeUser","KTThemeMode","menuMode","getMenuMode","getMode","getSystemMode","setMode","currentMode","activeMenuItem","setActiveMenuItem","menuItem","defaultThemeMode","matchMedia","activeItem","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","KTFeedback"],"sourceRoot":""}