{"version":3,"file":"materialize.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,EACvE,CACA,CATD,CASGC,MAAM,WACT,O,0HCVA,eACA,SACA,QAoEA,IAAIC,EAAiC,CACnCC,KAAM,GACNC,eAAgB,KAChBC,gBAAiB,CAEfC,WAAW,EACXC,cAAc,EACdC,cAAc,GAEhBC,UAAW,EACXC,eAAe,EACfC,SAAU,CAACC,EAAcC,KACvB,MAAMC,EAAaF,EAAKG,oBACxBF,EAAaG,aACXH,EAAaI,QAAQd,KAAKe,QAAQC,I,MAChC,OAAAA,EAAOC,GAAGC,WAAWN,oBAAoBO,SAASR,KAClC,QAAX,EAAAK,EAAOP,YAAI,eAAEG,oBAAoBO,SAASR,GAAW,IAE7D,EAEHS,kBAAmB,QACnBC,iBAAiB,GAInB,MAAaC,UAAqB,EAAAC,UAmBhC,WAAAC,CAAYC,EAAsBX,GAChCY,MAAMD,EAAIX,EAASQ,GAmJrB,KAAAK,iBAAmB,KACZ7B,KAAK8B,aACR9B,KAAK+B,QACL/B,KAAKgC,qBACP,EAGF,KAAAC,0BAA6BC,IACZ,UAAXA,EAAEC,OAAkBX,EAAaY,UAAW,GAChDpC,KAAKqC,MAAQ,EACb,MAAMC,EAActC,KAAK2B,GAAGY,MAAMzB,oBAE9B,EAAA0B,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,MAAQ,EAAAH,MAAMC,KAAKG,SAASvB,SAASa,EAAES,MAAQ,EAAAH,MAAMC,KAAKI,WAAWxB,SAASa,EAAES,OAG5G3C,KAAK8C,SAAWR,IAAgB,EAAAE,MAAMO,YAAyB,UAAXb,EAAEC,MACxDnC,KAAKgD,OAGHhD,KAAK8C,SAAWR,IAClBtC,KAAKiD,oBACLjD,KAAKgB,QAAQN,SAASV,KAAK2B,GAAGY,MAAOvC,OAGlCA,KAAKgB,QAAQP,eAA0C,IAAzBT,KAAK2B,GAAGY,MAAMW,SAC/ClD,KAAKmD,eAAiB,GACtBnD,KAAKoD,mBAEPpD,KAAK8C,OAASR,EAAW,EAG3B,KAAAe,oBAAuBnB,I,QACrBV,EAAaY,UAAW,EAExB,MAAMkB,EAAWtD,KAAKuD,UAAUC,iBAAiB,MAAMN,OAEvD,GAAI,EAAAV,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,MAAQ3C,KAAKyD,aAAe,EAA5D,CACE,MAAMC,EAAY1D,KAAKuD,UAAUC,iBAAiB,MAAMxD,KAAKyD,aACzDC,IACF1D,KAAK2D,aAAaD,EAAUE,aAAa,YACzC1B,EAAE2B,iBAGN,MAEI,EAAArB,MAAMC,KAAKG,SAASvB,SAASa,EAAES,MAAQ,EAAAH,MAAMC,KAAKI,WAAWxB,SAASa,EAAES,QAC1ET,EAAE2B,iBACE,EAAArB,MAAMC,KAAKG,SAASvB,SAASa,EAAES,MAAQ3C,KAAKyD,YAAc,GAAGzD,KAAKyD,cAClE,EAAAjB,MAAMC,KAAKI,WAAWxB,SAASa,EAAES,MAAQ3C,KAAKyD,YAAcH,EAAW,GAAGtD,KAAKyD,cACvE,QAAZ,EAAAzD,KAAK8D,eAAO,SAAEC,UAAUC,OAAO,UAC3BhE,KAAKyD,aAAe,IACtBzD,KAAK8D,QAAU9D,KAAKuD,UAAUC,iBAAiB,MAAMxD,KAAKyD,aAC9C,QAAZ,EAAAzD,KAAK8D,eAAO,SAAEC,UAAUE,IAAI,UAE5BjE,KAAKuD,UAAUW,SAASlE,KAAKyD,aAAaU,eAAe,CACvDC,SAAU,SACVC,MAAO,UACPC,OAAQ,aAGd,EAGF,KAAAC,kBAAoB,KAClBvE,KAAKgD,MAAM,EAGb,KAAAwB,uCAAyC,KACvCxE,KAAK8B,YAAa,CAAI,EAGxB,KAAA2C,mCAAqC,KACnCzE,KAAK8B,YAAa,CAAK,EA+IzB,KAAAkB,KAAO,KACL,MAAM0B,EAAY1E,KAAK2B,GAAGY,MAAMzB,oBAChCd,KAAKgC,qBACD0C,EAAUxB,QAAUlD,KAAKgB,QAAQR,YACnCR,KAAK2E,QAAS,EACd3E,KAAK4E,mBAGF5E,KAAK6E,SAASF,OAKd3E,KAAK6E,SAASC,wBAJjBC,YAAW,KACT/E,KAAK6E,SAAS7B,MAAM,GACnB,IAEqC,EAM5C,KAAAjB,MAAQ,KACN/B,KAAK6E,SAAS9C,OAAO,EA7XpB/B,KAAK2B,GAAWqD,eAAiBhF,KAElCA,KAAKgB,QAAU,OAAH,wBACPQ,EAAayD,UACbjE,GAGLhB,KAAK2E,QAAS,EACd3E,KAAKqC,MAAQ,EACbrC,KAAKyD,aAAe,EACpBzD,KAAK8C,OAAS,GACd9C,KAAKmD,eAAiB,GACtBnD,KAAKkF,UAAY,GACjBlF,KAAK8D,QAAU,KACf9D,KAAK8B,YAAa,EAClB9B,KAAKmF,iBACLnF,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAAmEtE,EAAwC,CAAC,GACtH,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASQ,EAClC,CAEA,kBAAO+D,CAAY5D,GACjB,OAAQA,EAAWqD,cACrB,CAEA,OAAAQ,GACExF,KAAKyF,uBACLzF,KAAK0F,kBACJ1F,KAAK2B,GAAWqD,oBAAiBW,CACpC,CAEA,mBAAAP,GACEpF,KAAK2B,GAAGiE,iBAAiB,OAAQ5F,KAAK6B,kBACtC7B,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKiC,2BACvCjC,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKiC,2BACvCjC,KAAK2B,GAAGiE,iBAAiB,UAAW5F,KAAKqD,qBACzCrD,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKuE,mBACvCvE,KAAKuD,UAAUqC,iBACb,YACA5F,KAAKwE,wCAEPxE,KAAKuD,UAAUqC,iBAAiB,UAAW5F,KAAKyE,yCACb,IAAxBoB,OAAOC,eAChB9F,KAAKuD,UAAUqC,iBACb,aACA5F,KAAKwE,wCAEPxE,KAAKuD,UAAUqC,iBAAiB,WAAY5F,KAAKyE,oCAErD,CAEA,oBAAAgB,GACEzF,KAAK2B,GAAGoE,oBAAoB,OAAQ/F,KAAK6B,kBACzC7B,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKiC,2BAC1CjC,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKiC,2BAC1CjC,KAAK2B,GAAGoE,oBAAoB,UAAW/F,KAAKqD,qBAC5CrD,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKuE,mBAC1CvE,KAAKuD,UAAUwC,oBACb,YACA/F,KAAKwE,wCAEPxE,KAAKuD,UAAUwC,oBAAoB,UAAW/F,KAAKyE,yCAEhB,IAAxBoB,OAAOC,eAChB9F,KAAKuD,UAAUwC,oBACb,aACA/F,KAAKwE,wCAEPxE,KAAKuD,UAAUwC,oBACb,WACA/F,KAAKyE,oCAGX,CAEA,cAAAU,GACEnF,KAAKuD,UAAYyC,SAASC,cAAc,MACxCjG,KAAKuD,UAAU2C,MAAMC,UAAYnG,KAAKgB,QAAQM,kBAC9CtB,KAAKuD,UAAUpC,GAAK,wBAAwB,EAAAqB,MAAM4D,SAClDpG,KAAKuD,UAAUQ,UAAUE,IAAI,uBAAwB,oBACrDjE,KAAK2B,GAAG0E,aAAa,cAAerG,KAAKuD,UAAUpC,IAGnDnB,KAAK2B,GAAG2E,cAAcC,YAAYvG,KAAKuD,WAGvC,IAAInD,EAAkB,OAAH,wBACdoB,EAAayD,SAAS7E,iBACtBJ,KAAKgB,QAAQZ,iBAEdoG,EAAkBpG,EAAgBqG,YAEtCrG,EAAgBqG,YAAeC,IAC7B,IAAKA,EAAI,OACT,MAAMC,EAAUD,EAAG9C,aAAa,WAChC5D,KAAK2D,aAAagD,GAEdH,GAA8C,mBAApBA,GAC5BA,EAAgBI,KAAK5G,KAAK6E,SAAU7E,KAAK2B,GAAG,EAEhD3B,KAAK6E,SAAW,EAAAgC,SAASxB,KAAKrF,KAAK2B,GAAIvB,GAIvC,MAAM0G,EAAQ9G,KAAK2B,GAAG2E,cAAcS,cAAc,SAC9CD,GAAO9G,KAAK2B,GAAGqF,MAAMF,GAGzB9G,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAK6E,SAASoC,cAE/CjH,KAAK2B,GAAGY,OAAOvC,KAAK2D,aAAa3D,KAAK2B,GAAGY,OAE7C,MAAM2E,EAAMlB,SAASC,cAAc,OACnCiB,EAAInD,UAAUE,IAAI,eAClBiD,EAAIb,aAAa,QAAS,qCAC1BrG,KAAK2B,GAAG2E,cAAcC,YAAYW,GAClClH,KAAKmH,qBACP,CAEA,eAAAzB,GACE1F,KAAKuD,UAAU6D,WAAWC,YAAYrH,KAAKuD,UAC7C,CA6EA,4BAAA+D,G,MACEtH,KAAKyD,aAAe,EACR,QAAZ,EAAAzD,KAAK8D,eAAO,SAAEC,UAAUC,OAAO,SACjC,CAEA,kBAAAhC,GACEhC,KAAKuD,UAAUgE,kBACfvH,KAAKsH,+BACLtH,KAAK8C,OAAS,KACd9C,KAAK2E,QAAS,EACd3E,KAAK8B,YAAa,CACpB,CAEA,qBAAA0F,CAAsBC,EAAeX,GACnC,MAAMY,EAAQZ,EAAMhG,oBAAoB6G,QAAQ,GAAKF,EAAM3G,qBACrD8G,EAAMF,EAAQD,EAAMvE,OAAS,EAEnC,OAAc,GAAVwE,IAAuB,GAARE,EACV,CAACd,EAAO,GAAI,IAEd,CAACA,EAAMe,MAAM,EAAGH,GAAQZ,EAAMe,MAAMH,EAAOE,EAAM,GAAId,EAAMe,MAAMD,EAAM,GAChF,CAEA,mBAAAE,CAAoBC,GAClB,MAAMC,EAAOhC,SAASC,cAAc,MAgBpC,GAfA+B,EAAK3B,aAAa,UAAmB0B,EAAM5G,IAC3C6G,EAAK3B,aACH,QACA,iFAGErG,KAAKgB,QAAQP,gBACfuH,EAAKC,UAAY,oGAGbjI,KAAKmD,eAAe+E,MAAMC,GAAQA,EAAIhH,KAAO4G,EAAM5G,KAAM,qBAAuB,6DAKlF4G,EAAMK,MAAO,CACf,MAAMC,EAAMrC,SAASC,cAAc,OACnCoC,EAAItE,UAAUE,IAAI,UAClBoE,EAAIC,IAAMP,EAAMK,MAChBJ,EAAKzB,YAAY8B,EACnB,CAGA,MAAM3D,EAAY1E,KAAK2B,GAAGY,MAAMzB,oBAC1ByH,EAAQvI,KAAKwH,sBAAsB9C,GAAYqD,EAAMpH,MAAQoH,EAAM5G,IAAIC,YACvE8F,EAAMlB,SAASC,cAAc,OAEnC,GADAiB,EAAIb,aAAa,QAAS,oCACtBrG,KAAKgB,QAAQO,gBACf2F,EAAIe,UAAYM,EAAM,GAAK,2BAA6BA,EAAM,GAAK,UAAYA,EAAM,QAGrF,GADArB,EAAIX,YAAYP,SAASwC,eAAeD,EAAM,KAC1CA,EAAM,GAAI,CACZ,MAAME,EAAYzC,SAASC,cAAc,QACzCwC,EAAUC,YAAcH,EAAM,GAC9BE,EAAU1E,UAAUE,IAAI,aACxBiD,EAAIX,YAAYkC,GAChBvB,EAAIX,YAAYP,SAASwC,eAAeD,EAAM,IAChD,CAGF,MAAMI,EAAW3C,SAASC,cAAc,OAMxC,GALA0C,EAAS5E,UAAUE,IAAI,aACvB0E,EAAStC,aAAa,QAAS,gCAC/B2B,EAAKzB,YAAYoC,GACjBX,EAAKjB,cAAc,cAAcR,YAAYW,GAEZ,iBAAtBa,EAAMa,aAA0D,iBAAtBb,EAAMa,cAA6BC,MAAMd,EAAMa,aAAe,CACjH,MAAMA,EAAc5C,SAASC,cAAc,SAC3C2C,EAAYvC,aACV,QACA,iHAEFuC,EAAYE,UAAYf,EAAMa,YAC9BZ,EAAKjB,cAAc,cAAcR,YAAYqC,EAC/C,CAWA,OADAZ,EAAK9B,MAAM6C,oBARW,KAChB/I,KAAKgB,QAAQP,cACXsH,EAAMK,MAAc,wBACjB,YAELL,EAAMK,MAAc,mBACjB,OAEwBY,GAC1BhB,CACT,CAEA,eAAApD,GACE5E,KAAKgC,qBAEyB,IAA1BhC,KAAKkF,UAAUhC,SACjBlD,KAAKkF,UAAYlF,KAAKmD,gBAExB,IAAK,IAAIpD,EAAI,EAAGA,EAAIC,KAAKkF,UAAUhC,OAAQnD,IAAK,CAC9C,MAAMiI,EAAOhI,KAAK8H,oBAAoB9H,KAAKkF,UAAUnF,IACrDC,KAAKuD,UAAU0F,OAAOjB,EACxB,CACF,CAEA,iBAAA/E,GACEjD,KAAK2B,GAAG2E,cAAcS,cACpB,gBACAkB,UAAY,gvBAKhB,CAEA,mBAAAd,GACE,MAAM+B,EAAgBlJ,KAAK2B,GAAG2E,cAAcS,cAAc,gBACtDmC,IACElJ,KAAKgB,QAAQP,cAAeyI,EAAcjB,UAAYjI,KAAKmD,eAAeD,OAAO9B,WAChF8H,EAAcjB,UAAY,GAEnC,CAEA,iBAAAkB,GACE,GAAmC,IAA/BnJ,KAAKmD,eAAeD,OAAc,CACpC,MAAM6E,EAAQ/H,KAAKmD,eAAe,GAClCnD,KAAK2B,GAAGY,MAAQwF,EAAMpH,MAAgBoH,EAAM5G,EAC9C,CACF,CAEA,eAAAiC,GACEpD,KAAK2B,GAAGyH,cAAc,IAAIC,MAAM,WAEW,mBAAhCrJ,KAAKgB,QAAQb,gBACtBH,KAAKgB,QAAQb,eAAeyG,KAAK5G,KAAMA,KAAKmD,eAChD,CAgCA,YAAApC,CAAamE,GACXlF,KAAKkF,UAAYA,EACjBlF,KAAKgD,OACLhD,KAAKmH,qBACP,CAMA,SAAAmC,CAAUC,GACRvJ,KAAKmD,eAAiBoG,EACtBvJ,KAAKmH,sBACAnH,KAAKgB,QAAQP,eAChBT,KAAKmJ,oBAEPnJ,KAAKoD,iBACP,CAMA,YAAAO,CAAaxC,GACX,MAAM4G,EAAQ/H,KAAKkF,UAAUsE,MAAMxB,GAASA,EAAK7G,IAAMA,IACvD,IAAK4G,EAAO,OAEZ,MAAMrB,EAAK1G,KAAKuD,UAAUwD,cAAc,eAAe5F,EAAG,MAC1D,GAAKuF,EAAL,CACA,GAAI1G,KAAKgB,QAAQP,cAAe,CAC9B,MAAMgJ,EAAkC/C,EAAGK,cAAc,0BACzD0C,EAASC,SAAWD,EAASC,QACzBD,EAASC,QAAS1J,KAAKmD,eAAewG,KAAK5B,GAE7C/H,KAAKmD,eAAiBnD,KAAKmD,eAAelC,QACvC2I,GAAkBA,EAAczI,KAAO4G,EAAM5G,KAElDnB,KAAK2B,GAAGkI,OACV,MAEE7J,KAAKmD,eAAiB,CAAC4E,GACvB/H,KAAKmJ,oBACLnJ,KAAKgC,qBACLhC,KAAK+B,QAEP/B,KAAKmH,sBACLnH,KAAKoD,iBAlBU,CAmBjB,EAxcF,gB,qGC/FA,cAoBA,IAAInD,EAAyC,CAC3C6J,UAAW,MACXC,cAAc,EACdC,gBAAgB,GAGlB,MAAaC,UAA6B,EAAAxI,UAiBxC,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASiJ,GAgFrB,KAAAC,gBAAkB,KACZlK,KAAK2E,OACP3E,KAAK+B,QAEL/B,KAAKgD,MACP,EAGF,KAAAmH,qBAAwBjI,IACTA,EAAEkI,SACFpK,KAAKqK,OAAOrK,KAAK+B,KAAK,EAMrC,KAAAiB,KAAO,KACDhD,KAAK2E,SACL3E,KAAKgB,QAAQgJ,eACfhK,KAAKsK,oBAELtK,KAAKuK,gBACPvK,KAAK2E,QAAS,EAAI,EAMpB,KAAA5C,MAAQ,KACD/B,KAAK2E,SACN3E,KAAKgB,QAAQgJ,gBACfnE,OAAOE,oBAAoB,SAAU/F,KAAK+B,OAAO,GACjDiE,SAASwE,KAAKzE,oBAAoB,QAAS/F,KAAKmK,sBAAsB,IAGtEnK,KAAKyK,iBAEPzK,KAAK2E,QAAS,EAAK,EApHlB3E,KAAK2B,GAAW+I,uBAAyB1K,KAE1CA,KAAKgB,QAAU,OAAH,wBACPiJ,EAAqBhF,UACrBjE,GAGLhB,KAAK2E,QAAS,EACd3E,KAAK2K,QAAU3K,KAAK2B,GAAGoF,cAAc,KACrC/G,KAAKqK,MAAQrK,KAAK2B,GAAGoF,cAAc,MACnC/G,KAAK4K,cAAgBC,MAAMC,KAAK9K,KAAK2B,GAAG6B,iBAAiB,qBACzDxD,KAAK+K,qBAAuB/K,KAAK4K,cAAcI,UAC/ChL,KAAKiL,QAAU,EACfjL,KAAKkL,QAAU,EAEflL,KAAK2B,GAAGoC,UAAUE,IAAI,aAAajE,KAAKgB,QAAQ8I,aACjB,QAA3B9J,KAAKgB,QAAQ8I,UACf9J,KAAKiL,QAAU,GACmB,UAA3BjL,KAAKgB,QAAQ8I,UACpB9J,KAAKkL,SAAW,GACkB,WAA3BlL,KAAKgB,QAAQ8I,UACpB9J,KAAKiL,SAAW,GAEhBjL,KAAKkL,QAAU,GACjBlL,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAgD,CAAC,GACtG,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASiJ,EAClC,CAEA,kBAAO1E,CAAY5D,GACjB,OAAQA,EAAW+I,sBACrB,CAEA,OAAAlF,GACExF,KAAKyF,uBACJzF,KAAK2B,GAAW+I,4BAAyB/E,CAC5C,CAEA,mBAAAP,GACMpF,KAAKgB,QAAQ+I,eAAiB/J,KAAKgB,QAAQgJ,gBAC7ChK,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAKgD,MAC5ChD,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAK+B,QAE5C/B,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKkK,gBAE3C,CAEA,oBAAAzE,GACMzF,KAAKgB,QAAQ+I,eAAiB/J,KAAKgB,QAAQgJ,gBAC7ChK,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAKgD,MAC/ChD,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAK+B,QAE/C/B,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKkK,gBAE9C,CA0CA,aAAAK,GACEvK,KAAK2B,GAAGoC,UAAUE,IAAI,UAItBjE,KAAK+K,qBAAqBI,SAAQ,CAACxJ,EAAIyJ,KACrC,MAAMC,EAJe,GAIUD,EAC/BzJ,EAAGuE,MAAMoF,WAAa,OACtB3J,EAAGuE,MAAMqF,QAAU,IACnB5J,EAAGuE,MAAMsF,UAAY,aAAaxL,KAAKkL,cAAclL,KAAKiL,wBAC1DlG,YAAW,KAETpD,EAAGuE,MAAMqF,QAAU,MAEnBxG,YAAW,KAETpD,EAAGuE,MAAMoF,WAAa,2CACtB3J,EAAGuE,MAAMqF,QAAU,IACnB5J,EAAGuE,MAAMsF,UAAY,0BAA0B,GAC9C,EAAE,GACJH,EAAM,GAEb,CAEA,cAAAZ,GAEE1F,YAAW,IAAM/E,KAAK2B,GAAGoC,UAAUC,OAAO,WADzB,KAEjBhE,KAAK+K,qBAAqBI,SAASxJ,IACjCA,EAAGuE,MAAMoF,WAAa,2CAEtB3J,EAAGuE,MAAMqF,QAAU,IACnB5J,EAAGuE,MAAMsF,UAAY,aAAaxL,KAAKkL,cAAclL,KAAKiL,uBAAuB,GAErF,CAEA,iBAAAX,GACE,IAAImB,EACAC,EAAc7F,OAAO8F,WACrBC,EAAe/F,OAAOgG,YACtBC,EAAU9L,KAAK2B,GAAGoK,wBAEtB,MAAMC,EAAYhG,SAASC,cAAc,OACzC+F,EAASjI,UAAUE,IAAI,gBAEvB,MAAMgI,EAAWC,iBAAiBlM,KAAK2K,SAASwB,gBAEhDnM,KAAK2K,QAAQ1B,OAAO+C,GAEpBhM,KAAKkL,QAAUY,EAAQM,KAAOV,EAAc,EAAII,EAAQO,MAAQ,EAChErM,KAAKiL,QAAUW,EAAeE,EAAQQ,OACtCb,EAAcC,EAAcM,EAAS,GAAGO,YACxCvM,KAAKwM,UAAYV,EAAQQ,OACzBtM,KAAKyM,QAAUX,EAAQM,KACvBpM,KAAK0M,SAAWZ,EAAQO,MAGxBrM,KAAK2B,GAAGoC,UAAUE,IAAI,UACtBjE,KAAK2B,GAAGuE,MAAMyG,UAAY,SAC1B3M,KAAK2B,GAAGuE,MAAMmG,MAAQ,OACtBrM,KAAK2B,GAAGuE,MAAMoG,OAAS,IACvBtM,KAAK2B,GAAGuE,MAAMkG,KAAO,IACrBpM,KAAK2B,GAAGuE,MAAMsF,UAAY,cAAgBxL,KAAKkL,QAAU,MACzDlL,KAAK2B,GAAGuE,MAAMoF,WAAa,OAE3BtL,KAAK2K,QAAQzE,MAAMsF,UAAY,cAAcxL,KAAKiL,YAClDjL,KAAK2K,QAAQzE,MAAMoF,WAAa,OAEhCU,EAAS9F,MAAMiG,gBAAkBF,EAEjClH,YAAW,KACT/E,KAAK2B,GAAGuE,MAAMsF,UAAY,GAC1BxL,KAAK2B,GAAGuE,MAAMoF,WAAc,yFAE5BtL,KAAK2K,QAAQzE,MAAM0G,SAAW,UAC9B5M,KAAK2K,QAAQzE,MAAMsF,UAAY,GAC/BxL,KAAK2K,QAAQzE,MAAMoF,WAAa,gBAEhCvG,YAAW,KACT/E,KAAK2B,GAAGuE,MAAM0G,SAAW,SACzB5M,KAAK2B,GAAGuE,MAAMiG,gBAAkBF,EAEhCD,EAAS9F,MAAMsF,UAAY,SAAWC,EAAc,IACpDO,EAAS9F,MAAMoF,WAAa,yDAE5BtL,KAAKqK,MAAM7G,iBAAiB,UAAU2H,SAASrL,GAAyBA,EAAEoG,MAAMqF,QAAU,MAG1F1F,OAAOD,iBAAiB,SAAU5F,KAAK+B,OAAO,GAC9CiE,SAASwE,KAAK5E,iBAAiB,QAAS5F,KAAKmK,sBAAsB,EAAK,GACvE,IAAI,GACN,EACL,EArOF,wB,oFC1BA,cAEE,WAAO0C,GAEL7G,SAASJ,iBAAiB,oBAAoB,KAC5CI,SAASwE,KAAK5E,iBAAiB,SAAS1D,IACtC,MAAM4K,EAAuB5K,EAAEkI,OAEzB2C,EAAoBD,EAAQE,QAAQ,SAC1C,IAAKD,EAAM,OAEX,MAAME,EAA+BpC,MAAMC,KAAKiC,EAAK7I,UAAUsF,MAAK0D,GAAQA,EAAKnJ,UAAUoJ,SAAS,iBACpG,IAAKF,EAAY,OACjB,MAAMG,EAAkBlB,iBAAiBa,GAAMH,SAGzCS,EAAYJ,EAAWlG,cAAc,4BAC3C,GAAI+F,IAAYO,GAAaA,EAAUF,SAASL,GAAU,CACxD,MAAMQ,EAAW,IACjBL,EAAW/G,MAAMoF,WAAa,aAAagC,WAC3CL,EAAW/G,MAAMsF,UAAY,gBAC7BzG,YAAW,KACTkI,EAAW/G,MAAMqH,QAAU,OAC3BR,EAAK7G,MAAM0G,SAAWQ,CAAe,GACpCE,EACL,CAGmBP,EAAKvJ,iBAAiB,cAC9B2H,SAAQqC,KACbV,IAAYU,GAAaA,EAAUL,SAASL,MAC9CC,EAAK7G,MAAM0G,SAAW,SACtBK,EAAW/G,MAAMqH,QAAU,QAC3BxI,YAAW,KAETkI,EAAW/G,MAAMoF,WAAa,uBAC9B2B,EAAW/G,MAAMsF,UAAY,mBAAmB,GAC/C,GACL,GACA,GAEF,GAGN,E,yFC5CF,eACA,QAkDA,IAAIvL,EAA6B,CAC/BqN,SAAU,IACVG,MAAO,IACPC,MAAO,EACPC,QAAS,EACTC,WAAY,EACZC,WAAW,EACXC,YAAY,EACZC,QAAQ,EACRC,UAAW,MAGb,MAAaC,UAAiB,EAAAxM,UA+B5B,WAAAC,CAAYC,EAAiBX,G,MAC3BY,MAAMD,EAAIX,EAASiN,GANrB,KAAAC,OAAiB,EAqJjB,KAAAC,uBAAqC,EAAA3L,MAAM4L,UAAS,WAAYpO,KAAKqO,eAAiB,GAAG,IAAK,MAAMC,KAAKtO,MAEzG,KAAAuO,mBAAsBrM,IAEL,cAAXA,EAAEC,MAA4D,QAAtBD,EAAEkI,OAAQoE,SACpDtM,EAAE2B,iBAEJ7D,KAAKyO,SAAU,EACfzO,KAAK0O,SAAU,EACf1O,KAAK2O,iBAAkB,EACvB3O,KAAK4O,UAAY5O,KAAK6O,MAAM3M,GAC5BlC,KAAK8O,WAAa9O,KAAK+O,MAAM7M,GAE7BlC,KAAKgP,SAAWhP,KAAKiP,UAAY,EACjCjP,KAAKkP,MAAQlP,KAAKmP,OAClBnP,KAAKoP,UAAYC,KAAKC,MACtBC,cAAcvP,KAAKwP,QACnBxP,KAAKwP,OAASC,YAAYzP,KAAK0P,OAAQ,IAAI,EAG7C,KAAAC,oBAAuBzN,IACrB,IAAI0N,EAAWC,EAAWC,EAAeC,EACzC,GAAI/P,KAAKyO,QAKP,GAJAmB,EAAI5P,KAAK6O,MAAM3M,GACf2N,EAAI7P,KAAK+O,MAAM7M,GACf4N,EAAQ9P,KAAK4O,UAAYgB,EACzBG,EAASC,KAAKC,IAAIjQ,KAAK8O,WAAae,GAChCE,EAAS,KAAO/P,KAAK2O,iBAEnBmB,EAAQ,GAAKA,GAAS,KACxB9P,KAAK0O,SAAU,EACf1O,KAAK4O,UAAYgB,EACjB5P,KAAKkQ,QAAQlQ,KAAKmP,OAASW,QAExB,IAAI9P,KAAK0O,QAId,OAFAxM,EAAE2B,iBACF3B,EAAEiO,mBACK,EAGPnQ,KAAK2O,iBAAkB,CACzB,CAEF,GAAI3O,KAAK0O,QAIP,OAFAxM,EAAE2B,iBACF3B,EAAEiO,mBACK,CACT,EAGF,KAAAC,uBAA0BlO,IACxB,GAAIlC,KAAKyO,QA2BT,OA1BEzO,KAAKyO,SAAU,EAIjBc,cAAcvP,KAAKwP,QACnBxP,KAAKoK,OAASpK,KAAKmP,QACfnP,KAAKgP,SAAW,IAAMhP,KAAKgP,UAAY,MACzChP,KAAKiP,UAAY,GAAMjP,KAAKgP,SAC5BhP,KAAKoK,OAASpK,KAAKmP,OAASnP,KAAKiP,WAEnCjP,KAAKoK,OAAS4F,KAAKK,MAAMrQ,KAAKoK,OAASpK,KAAKsQ,KAAOtQ,KAAKsQ,IAEpDtQ,KAAK+N,SACH/N,KAAKoK,QAAUpK,KAAKsQ,KAAOtQ,KAAKqC,MAAQ,GAC1CrC,KAAKoK,OAASpK,KAAKsQ,KAAOtQ,KAAKqC,MAAQ,GAC9BrC,KAAKoK,OAAS,IACvBpK,KAAKoK,OAAS,IAGlBpK,KAAKiP,UAAYjP,KAAKoK,OAASpK,KAAKmP,OACpCnP,KAAKoP,UAAYC,KAAKC,MACtBiB,sBAAsBvQ,KAAKwQ,aACvBxQ,KAAK0O,UACPxM,EAAE2B,iBACF3B,EAAEiO,oBAEG,CAAK,EAGd,KAAAM,qBAAwBvO,IAEtB,GAAIlC,KAAK0O,QAGP,OAFAxM,EAAE2B,iBACF3B,EAAEiO,mBACK,EAEJ,IAAKnQ,KAAKgB,QAAQ6M,UAAW,CAChC,MAAM6C,EAA4BxO,EAAEkI,OAAQ4C,QAAQ,kBACpD,IAAK0D,EAAa,OAClB,MAAMC,EAAe,IAAID,EAAYtJ,WAAWlD,UAAUyD,QAAQ+I,GAGrD,GAFA1Q,KAAK4Q,MAAM5Q,KAAKkO,QAAUyC,IAGrCzO,EAAE2B,iBACF3B,EAAEiO,mBAGAQ,EAAe,EAEZzO,EAAiB2O,QAAW3O,EAAEkI,OAAuB2B,wBAAwBK,KAAOpM,KAAK2B,GAAG4K,YAAc,EAC7GvM,KAAK8Q,OAEL9Q,KAAK+Q,OAGP/Q,KAAKgR,SAASL,EAElB,GAGF,KAAAM,sBAAyB/O,IACvBA,EAAEiO,kBACF,MAAMe,EAA0BhP,EAAEkI,OAAQ4C,QAAQ,mBAClD,GAAIkE,EAAW,CACb,MAAM9F,EAAQ,IAAI8F,EAAU9J,WAAWlD,UAAUyD,QAAQuJ,GACzDlR,KAAKgR,SAAS5F,EAChB,GAGF,KAAAiD,cAAgB,KACVrO,KAAKgB,QAAQ6M,WACf7N,KAAKmR,UAAYnR,KAAK2B,GAAGoF,cAAc,kBAAkBwF,YACzDvM,KAAKoR,YAAcpR,KAAK2B,GAAGoF,cAAc,yBAAyBsK,aAClErR,KAAKsQ,IAAuB,EAAjBtQ,KAAKmR,UAAgBnR,KAAKgB,QAAQ2M,QAC7C3N,KAAKmP,OAAuB,EAAdnP,KAAKkO,OAAalO,KAAKmR,UACrCnR,KAAKoK,OAASpK,KAAKmP,OACnBnP,KAAKsR,oBAAmB,IAGxBtR,KAAKkQ,SACP,EA8DF,KAAAR,OAAS,KACP,IAAIJ,EAAaiC,EAAiBzB,EAAe0B,EACjDlC,EAAMD,KAAKC,MACXiC,EAAUjC,EAAMtP,KAAKoP,UACrBpP,KAAKoP,UAAYE,EACjBQ,EAAQ9P,KAAKmP,OAASnP,KAAKkP,MAC3BlP,KAAKkP,MAAQlP,KAAKmP,OAClBqC,EAAK,IAAO1B,GAAU,EAAIyB,GAC1BvR,KAAKgP,SAAW,GAAMwC,EAAI,GAAMxR,KAAKgP,QAAQ,EAG/C,KAAAwB,YAAc,KACZ,IAAIe,EAAiBzB,EACjB9P,KAAKiP,YACPsC,EAAUlC,KAAKC,MAAQtP,KAAKoP,UAC5BU,EAAQ9P,KAAKiP,UAAYe,KAAKyB,KAAKF,EAAUvR,KAAKgB,QAAQsM,UACtDwC,EAAQ,GAAKA,GAAS,GACxB9P,KAAKkQ,QAAQlQ,KAAKoK,OAAS0F,GAC3BS,sBAAsBvQ,KAAKwQ,cAE3BxQ,KAAKkQ,QAAQlQ,KAAKoK,QAEtB,EAxWCpK,KAAK2B,GAAW+P,WAAa1R,KAE9BA,KAAKgB,QAAU,OAAH,wBACPiN,EAAShJ,UACTjE,GAILhB,KAAK2R,kBAAoB3R,KAAK2B,GAAG6B,iBAAiB,kBAAkBN,OAAS,EAC7ElD,KAAK4R,eAAiB5R,KAAKgB,QAAQ8M,YAAc9N,KAAK2R,kBACtD3R,KAAK+N,OAAS/N,KAAKgB,QAAQ+M,SAAW/N,KAAK2R,kBAC3C3R,KAAKyO,SAAU,EACfzO,KAAK0O,SAAU,EACf1O,KAAKmP,OAASnP,KAAKoK,OAAS,EAC5BpK,KAAK6R,OAAS,GACd7R,KAAKmR,UAAYnR,KAAK2B,GAAGoF,cAAc,kBAAkBwF,YACzDvM,KAAK8R,WAAa9R,KAAK2B,GAAGoF,cAAc,kBAAkBsK,aAC1DrR,KAAKsQ,IAAuB,EAAjBtQ,KAAKmR,UAAgBnR,KAAKgB,QAAQ2M,SAAW,EAGpD3N,KAAKgB,QAAQ6M,YACf7N,KAAKgB,QAAQyM,KAAO,EACpBzN,KAAKsR,qBAGDtR,KAAK4R,iBACsC,QAA7C,EAAA5R,KAAK2B,GAAGoF,cAAc,+BAAuB,SAAEhD,UAAUE,IAAI,qBAKjEjE,KAAK+R,YAAc/L,SAASC,cAAc,MAC1CjG,KAAK+R,YAAYhO,UAAUE,IAAI,cAE/BjE,KAAK2B,GAAG6B,iBAAiB,kBAAkB2H,SAAQ,CAACnD,EAAmBjI,KAErE,GADAC,KAAK6R,OAAOlI,KAAK3B,GACbhI,KAAK4R,eAAgB,CACvB,MAAMV,EAAYlL,SAASC,cAAc,MACzCiL,EAAUnN,UAAUE,IAAI,kBACd,IAANlE,GACFmR,EAAUnN,UAAUE,IAAI,UAE1BjE,KAAK+R,YAAYxL,YAAY2K,EAC/B,KAGElR,KAAK4R,gBACP5R,KAAK2B,GAAG4E,YAAYvG,KAAK+R,aAE3B/R,KAAKqC,MAAQrC,KAAK6R,OAAO3O,OAGzBlD,KAAKgB,QAAQ4M,WAAaoC,KAAKgC,IAAIhS,KAAKqC,MAAOrC,KAAKgB,QAAQ4M,YAG5D5N,KAAKiS,MAAQ,YACb,CAAC,SAAU,MAAO,IAAK,MAAMC,OAAOC,IAClC,IAAIjQ,EAAIiQ,EAAS,YACjB,YAAsC,IAA3BnM,SAASwE,KAAKtE,MAAMhE,KAC7BlC,KAAKiS,MAAQ/P,GACN,EAEE,IAGblC,KAAKoF,sBACLpF,KAAKkQ,QAAQlQ,KAAKmP,OACpB,CAEA,mBAAWlK,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAoC,CAAC,GAC1F,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASiN,EAClC,CAEA,kBAAO1I,CAAY5D,GACjB,OAAQA,EAAW+P,UACrB,CAEA,OAAAlM,GACExF,KAAKyF,uBACJzF,KAAK2B,GAAW+P,gBAAa/L,CAChC,CAEA,mBAAAP,QACqC,IAAxBS,OAAOC,eAChB9F,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAKuO,oBAC5CvO,KAAK2B,GAAGiE,iBAAiB,YAAa5F,KAAK2P,qBAC3C3P,KAAK2B,GAAGiE,iBAAiB,WAAY5F,KAAKoQ,yBAE5CpQ,KAAK2B,GAAGiE,iBAAiB,YAAa5F,KAAKuO,oBAC3CvO,KAAK2B,GAAGiE,iBAAiB,YAAa5F,KAAK2P,qBAC3C3P,KAAK2B,GAAGiE,iBAAiB,UAAW5F,KAAKoQ,wBACzCpQ,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAKoQ,wBAC5CpQ,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKyQ,sBACnCzQ,KAAK4R,gBAAkB5R,KAAK+R,aAC9B/R,KAAK+R,YAAYvO,iBAAiB,mBAAmB2H,SAASxJ,IAC5DA,EAAGiE,iBAAiB,QAAS5F,KAAKiR,sBAAsB,IAI5DpL,OAAOD,iBAAiB,SAAU5F,KAAKmO,uBACzC,CAEA,oBAAA1I,QACqC,IAAxBI,OAAOC,eAChB9F,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAKuO,oBAC/CvO,KAAK2B,GAAGoE,oBAAoB,YAAa/F,KAAK2P,qBAC9C3P,KAAK2B,GAAGoE,oBAAoB,WAAY/F,KAAKoQ,yBAE/CpQ,KAAK2B,GAAGoE,oBAAoB,YAAa/F,KAAKuO,oBAC9CvO,KAAK2B,GAAGoE,oBAAoB,YAAa/F,KAAK2P,qBAC9C3P,KAAK2B,GAAGoE,oBAAoB,UAAW/F,KAAKoQ,wBAC5CpQ,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAKoQ,wBAC/CpQ,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKyQ,sBACtCzQ,KAAK4R,gBAAkB5R,KAAK+R,aAC9B/R,KAAK+R,YAAYvO,iBAAiB,mBAAmB2H,SAASxJ,IAC5DA,EAAGoE,oBAAoB,QAAS/F,KAAKiR,sBAAsB,IAG/DpL,OAAOE,oBAAoB,SAAU/F,KAAKmO,uBAC5C,CA2IA,kBAAAmD,CAAmBc,GAAqB,GACtC,MAAMC,EAAarS,KAAK2B,GAAGoF,cAAc,yBACrC/G,KAAK2B,GAAGoF,cAAc,yBACtB/G,KAAK2B,GAAGoF,cAAc,kBAEpBuL,EAAaD,EAAWtL,cAAc,OAC5C,GAAIuL,EACF,GAAIA,EAAWC,SAAU,CAEvB,MAAMnB,EAAckB,EAAWjB,aAC/B,GAAID,EAAc,EAChBpR,KAAK2B,GAAGuE,MAAMsM,OAASpB,EAAY,SAEhC,CAEH,MAAMqB,EAAeH,EAAWG,aAC1BC,EAAgBJ,EAAWI,cAC3BC,EAAkB3S,KAAK2B,GAAG4K,YAAckG,EAAgBC,EAC9D1S,KAAK2B,GAAGuE,MAAMsM,OAASG,EAAe,IACxC,CACF,MAEEL,EAAW1M,iBAAiB,QAAQ,KAClC5F,KAAK2B,GAAGuE,MAAMsM,OAASF,EAAWM,aAAa,IAAI,SAIpD,IAAKR,EAAW,CACnB,MAAMS,EAAcR,EAAWhB,aAC/BrR,KAAK2B,GAAGuE,MAAMsM,OAASK,EAAY,IACrC,CACF,CAEA,KAAAhE,CAAM3M,GAEJ,OAAIA,EAAEC,KAAK2Q,WAAW,UAAa5Q,EAAiB6Q,cAAc7P,QAAU,EAClEhB,EAAiB6Q,cAAc,GAAGlC,QAGpC3O,EAAiB2O,OAC3B,CAEA,KAAA9B,CAAM7M,GAEJ,OAAIA,EAAEC,KAAK2Q,WAAW,UAAa5Q,EAAiB6Q,cAAc7P,QAAU,EAClEhB,EAAiB6Q,cAAc,GAAGC,QAGpC9Q,EAAiB8Q,OAC3B,CAEA,KAAApC,CAAMhB,GACJ,OAAOA,GAAK5P,KAAKqC,MACbuN,EAAI5P,KAAKqC,MACTuN,EAAI,EACJ5P,KAAK4Q,MAAM5Q,KAAKqC,MAASuN,EAAI5P,KAAKqC,OAClCuN,CACN,CA2BA,OAAAM,CAAQN,EAAY,GAalB,IAAI7P,EACFkT,EACAnD,EACAoD,EACAC,EACAxR,EACAyR,EACAC,EACAC,EACAC,EApBGvT,KAAK2B,GAAGoC,UAAUoJ,SAAS,cAC9BnN,KAAK2B,GAAGoC,UAAUE,IAAI,aAEK,MAAzBjE,KAAKwT,kBACP3N,OAAO4N,aAAazT,KAAKwT,kBAE3BxT,KAAKwT,iBAAmB3N,OAAOd,YAAW,KACxC/E,KAAK2B,GAAGoC,UAAUC,OAAO,YAAY,GACpChE,KAAKgB,QAAQsM,UAahB,IAAIoG,EAAa1T,KAAKkO,OAClByF,EAAmB,EAAI3T,KAAKgB,QAAQ4M,WAqBxC,GAnBA5N,KAAKmP,OAAsB,iBAANS,EAAiBA,EAAI5P,KAAKmP,OAC/CnP,KAAKkO,OAAS8B,KAAK4D,OAAO5T,KAAKmP,OAASnP,KAAKsQ,IAAM,GAAKtQ,KAAKsQ,KAE7DR,EAAQ9P,KAAKmP,OAASnP,KAAKkO,OAASlO,KAAKsQ,IACzC4C,EAAMpD,EAAQ,EAAI,GAAK,EACvBqD,GAAUD,EAAMpD,EAAQ,EAAK9P,KAAKsQ,IAClC2C,EAAOjT,KAAKqC,OAAS,EAEjBrC,KAAKgB,QAAQ6M,WACfuF,EAAY,gBACZG,EAAuB,IAGvBH,EAAY,eAAiBpT,KAAK2B,GAAG4K,YAAcvM,KAAKmR,WAAa,EAAI,OACzEiC,GAAa,eAAiBpT,KAAK2B,GAAG0P,aAAerR,KAAK8R,YAAc,EAAI,MAC5EyB,EAAuB,EAAII,EAAmBR,GAI5CnT,KAAK4R,eAAgB,CACvB,MAAMiC,EAAO7T,KAAKkO,OAASlO,KAAKqC,MAC1ByR,EAAkB9T,KAAK+R,YAAYhL,cAAc,0BAEvD,GAD6B,IAAI+M,EAAgB1M,WAAWlD,UAAUyD,QAAQmM,KACjDD,EAAM,CACjCC,EAAgB/P,UAAUC,OAAO,UACjC,MAAM+P,EAAMF,EAAO,EAAI7T,KAAKqC,MAAQwR,EAAOA,EAC3C7T,KAAK+R,YAAYvO,iBAAiB,mBAAmBuQ,GAAKhQ,UAAUE,IAAI,SAC1E,CACF,CAIA,IAAKjE,KAAK+N,QAAW/N,KAAKkO,QAAU,GAAKlO,KAAKkO,OAASlO,KAAKqC,MAAQ,CAClEV,EAAK3B,KAAK6R,OAAO7R,KAAK4Q,MAAM5Q,KAAKkO,SAG5BvM,EAAGoC,UAAUoJ,SAAS,YACzBnN,KAAK2B,GAAGoF,cAAc,kBAAkBhD,UAAUC,OAAO,UACzDrC,EAAGoC,UAAUE,IAAI,WAGnB,IAAI+P,EAAkB,GAAGZ,iBAAyBtD,EAAQ,mBAAmBoD,EAC3ElT,KAAKgB,QAAQ0M,MACbyF,EACApT,mBAAmBC,KAAKgB,QAAQyM,KAAO0F,OACzCnT,KAAKiU,iBAAiBtS,EAAI4R,EAAsB,EAAGS,EACrD,CAEA,IAAKjU,EAAI,EAAGA,GAAKkT,IAAQlT,EAAG,CAU1B,GARIC,KAAKgB,QAAQ6M,WACfwF,EAAerT,KAAKgB,QAAQyM,KAC5B6F,EAAiBvT,IAAMkT,GAAQnD,EAAQ,EAAI,EAAIqD,EAAQ,IAEvDE,EAAerT,KAAKgB,QAAQyM,MAAY,EAAJ1N,EAAQoT,EAAQD,GACpDI,EAAiB,EAAIK,GAAwB,EAAJ5T,EAAQoT,EAAQD,KAGtDlT,KAAK+N,QAAU/N,KAAKkO,OAASnO,EAAIC,KAAKqC,MAAO,CAChDV,EAAK3B,KAAK6R,OAAO7R,KAAK4Q,MAAM5Q,KAAKkO,OAASnO,IAC1C,IAAIiU,EAAkB,GAAGZ,gBAAwBpT,KAAKgB,QAAQ0M,OAC3D1N,KAAKsQ,IAAMvQ,EAAI+P,GAAS,mBAAmBuD,OAC9CrT,KAAKiU,iBAAiBtS,EAAI2R,GAAiBvT,EAAGiU,EAChD,CAUA,GARIhU,KAAKgB,QAAQ6M,WACfwF,EAAerT,KAAKgB,QAAQyM,KAC5B6F,EAAiBvT,IAAMkT,GAAQnD,EAAQ,EAAI,EAAIqD,EAAQ,IAEvDE,EAAerT,KAAKgB,QAAQyM,MAAY,EAAJ1N,EAAQoT,EAAQD,GACpDI,EAAiB,EAAIK,GAAwB,EAAJ5T,EAAQoT,EAAQD,KAGtDlT,KAAK+N,QAAU/N,KAAKkO,OAASnO,GAAK,EAAG,CACxC4B,EAAK3B,KAAK6R,OAAO7R,KAAK4Q,MAAM5Q,KAAKkO,OAASnO,IAC1C,IAAIiU,EAAkB,GAAGZ,iBAAyBpT,KAAKgB,QAAQ0M,QAC3D1N,KAAKsQ,IAAMvQ,EAAI+P,GAAS,mBAAmBuD,OAC/CrT,KAAKiU,iBAAiBtS,EAAI2R,GAAiBvT,EAAGiU,EAChD,CACF,CAGA,IAAKhU,KAAK+N,QAAW/N,KAAKkO,QAAU,GAAKlO,KAAKkO,OAASlO,KAAKqC,MAAQ,CAClEV,EAAK3B,KAAK6R,OAAO7R,KAAK4Q,MAAM5Q,KAAKkO,SACjC,IAAI8F,EAAkB,GAAGZ,iBAAyBtD,EAAQ,mBAAmBoD,EAC3ElT,KAAKgB,QAAQ0M,MACbyF,mBAAuBnT,KAAKgB,QAAQyM,KAAO0F,OAC7CnT,KAAKiU,iBAAiBtS,EAAI4R,EAAsB,EAAGS,EACrD,CAEA,MAAME,EAAYlU,KAAK2B,GAAG6B,iBAAiB,kBAAkBxD,KAAK4Q,MAAM5Q,KAAKkO,SAEzEwF,IAAe1T,KAAKkO,QAA4C,mBAA3BlO,KAAKgB,QAAQgN,WACpDhO,KAAKgB,QAAQgN,UAAUpH,KAAK5G,KAAMkU,EAAWlU,KAAK0O,SAGhB,mBAAzB1O,KAAKmU,kBACdnU,KAAKmU,gBAAgBvN,KAAK5G,KAAMkU,EAAWlU,KAAK0O,SAChD1O,KAAKmU,gBAAkB,KAE3B,CAEA,gBAAAF,CAAiBtS,EAAiB4J,EAAiB6I,EAAgB5I,GACjE7J,EAAGuE,MAAMlG,KAAKiS,OAASzG,EACvB7J,EAAGuE,MAAMkO,OAASA,EAAOhT,WACzBO,EAAGuE,MAAMqF,QAAUA,EAAQnK,WAC3BO,EAAGuE,MAAMmO,WAAa,SACxB,CAEA,QAAArD,CAASsD,EAAWC,EAAyC,MAC3D,IAAIV,EAAQ7T,KAAKkO,OAASlO,KAAKqC,MAASiS,EAEnCtU,KAAK+N,SACJ8F,EAAO,EACL7D,KAAKC,IAAI4D,EAAO7T,KAAKqC,OAAS2N,KAAKC,IAAI4D,KACzCA,GAAQ7T,KAAKqC,OAENwR,EAAO,GACZ7D,KAAKC,IAAI4D,EAAO7T,KAAKqC,OAASwR,IAChCA,GAAQ7T,KAAKqC,QAInBrC,KAAKoK,OAASpK,KAAKsQ,IAAMN,KAAKK,MAAMrQ,KAAKmP,OAASnP,KAAKsQ,KAEnDuD,EAAO,EACT7T,KAAKoK,QAAUpK,KAAKsQ,IAAMN,KAAKC,IAAI4D,GAE5BA,EAAO,IACd7T,KAAKoK,QAAUpK,KAAKsQ,IAAMuD,GAGJ,mBAAbU,IACTvU,KAAKmU,gBAAkBI,GAGrBvU,KAAKmP,SAAWnP,KAAKoK,SACvBpK,KAAKiP,UAAYjP,KAAKoK,OAASpK,KAAKmP,OACpCnP,KAAKoP,UAAYC,KAAKC,MACtBiB,sBAAsBvQ,KAAKwQ,aAE/B,CAMA,IAAAM,CAAKwD,EAAY,SACL3O,IAAN2O,GAAmBzL,MAAMyL,MAC3BA,EAAI,GAEN,IAAIlJ,EAAQpL,KAAKkO,OAASoG,EAC1B,GAAIlJ,GAASpL,KAAKqC,OAAS+I,EAAQ,EAAG,CACpC,GAAIpL,KAAK+N,OAAQ,OACjB3C,EAAQpL,KAAK4Q,MAAMxF,EACrB,CACApL,KAAKgR,SAAS5F,EAChB,CAMA,IAAA2F,CAAKuD,EAAY,SACL3O,IAAN2O,GAAmBzL,MAAMyL,MAC3BA,EAAI,GAEN,IAAIlJ,EAAQpL,KAAKkO,OAASoG,EAC1B,GAAIlJ,GAASpL,KAAKqC,OAAS+I,EAAQ,EAAG,CACpC,GAAIpL,KAAK+N,OAAQ,OACjB3C,EAAQpL,KAAK4Q,MAAMxF,EACrB,CACApL,KAAKgR,SAAS5F,EAChB,CAOA,GAAAoJ,CAAIF,EAAWC,GAIb,SAHU5O,IAAN2O,GAAmBzL,MAAMyL,MAC3BA,EAAI,GAEFA,EAAItU,KAAKqC,OAASiS,EAAI,EAAG,CAC3B,GAAItU,KAAK+N,OAAQ,OACjBuG,EAAItU,KAAK4Q,MAAM0D,EACjB,CACAtU,KAAKgR,SAASsD,EAAGC,EACnB,EAnmBF,Y,iGC/DA,cAIMtU,EAAYwU,OAAOC,OAAO,CAAC,GAIjC,MAAaC,UAAyB,EAAAlT,UAUpC,WAAAC,CAAYC,EAA4CX,GACtDY,MAAMD,EAAI,CAAC,EAAGgT,GAyEhB,KAAAC,cAAgB,KACd,IAAIC,EAAYC,SAAS9U,KAAK2B,GAAGiC,aAAa,cAC5CmR,EAAgB/U,KAAK2B,GAAwBY,MAAMW,OAErDlD,KAAKgV,cAAgBD,GAAgBF,EACrC,IAAII,EAAgBF,EAAa3T,WAC7ByT,IACFI,GAAiB,IAAMJ,EACvB7U,KAAKkV,kBAEPlV,KAAKmV,UAAUlN,UAAYgN,CAAa,EAlFvCjV,KAAK2B,GAAWyT,mBAAqBpV,KAEtCA,KAAKgB,QAAU,OAAH,wBACP2T,EAAiB1P,UACjBjE,GAGLhB,KAAKqV,WAAY,EACjBrV,KAAKgV,eAAgB,EAErBhV,KAAKsV,gBACLtV,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2DtE,EAA4C,CAAC,GAClH,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS2T,EAClC,CAEA,kBAAOpP,CAAY5D,GACjB,OAAQA,EAAWyT,kBACrB,CAEA,OAAA5P,GACExF,KAAKyF,uBACJzF,KAAK2B,GAAWgT,sBAAmBhP,EACpC3F,KAAKuV,gBACP,CAEA,mBAAAnQ,GACEpF,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAK4U,eAAe,GACtD5U,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAK4U,eAAe,EACxD,CAEA,oBAAAnP,GACEzF,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAK4U,eAAe,GACzD5U,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAK4U,eAAe,EAC3D,CAEA,aAAAU,GACEtV,KAAKmV,UAAYnP,SAASC,cAAc,QACxCjG,KAAKmV,UAAUpR,UAAUE,IAAI,qBAC7BjE,KAAKmV,UAAUjP,MAAMsP,MAAQ,QAC7BxV,KAAKmV,UAAUjP,MAAMuP,SAAW,OAChCzV,KAAKmV,UAAUjP,MAAMsM,OAAS,IAC9BxS,KAAK2B,GAAG2E,cAAcC,YAAYvG,KAAKmV,UACzC,CAEA,cAAAI,GACEvV,KAAKmV,UAAUnR,QACjB,CAeA,cAAAkR,GACMlV,KAAKgV,eAAiBhV,KAAKqV,WAC7BrV,KAAKqV,WAAY,EACjBrV,KAAK2B,GAAGoC,UAAUC,OAAO,YAEjBhE,KAAKgV,eAAkBhV,KAAKqV,YACpCrV,KAAKqV,WAAY,EACjBrV,KAAK2B,GAAGoC,UAAUC,OAAO,SACzBhE,KAAK2B,GAAGoC,UAAUE,IAAI,WAE1B,EA3GF,oB,sFCRA,eACA,SACA,QAsEA,IAAIhE,EAA0B,CAC5BC,KAAM,GACNwV,YAAa,GACbC,qBAAsB,GACtBC,eAAgB,iBAChBC,oBAAqB,CAAC,EACtBC,kBAAkB,EAClBC,MAAOC,IACPC,UAAW,KACXC,aAAc,KACdC,aAAc,MAGhB,SAASC,EAAUzU,GACjB,MAAO,IAAIA,EAAGyF,WAAWlD,UAAUyD,QAAQhG,EAC7C,CAEA,MAAa0U,UAAc,EAAA5U,UAazB,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASqV,GA0FrB,KAAAC,iBAAoBpU,IAClB,MAAMqU,EAAsBrU,EAAEkI,OAAQ4C,QAAQ,SACxCwJ,EAA6BtU,EAAEkI,OAAQrG,UAAUoJ,SAAS,SAChE,GAAIoJ,EAAO,CACT,MAAMnL,EAAQ,IAAImL,EAAMnP,WAAWlD,UAAUyD,QAAQ4O,GACjDC,GACFxW,KAAKyW,WAAWrL,GAChBpL,KAAK0W,OAAO7M,SAGZ7J,KAAK2W,WAAWvL,EAGpB,MAEEpL,KAAK0W,OAAO7M,OACd,EA2DF,KAAA+M,kBAAoB,KAClB5W,KAAK2B,GAAGoC,UAAUE,IAAI,QAAQ,EAGhC,KAAApC,iBAAmB,KACjB7B,KAAK2B,GAAGoC,UAAUC,OAAO,QAAQ,EAGnC,KAAAX,oBAAuBnB,IAErB,GADAmU,EAAMjU,UAAW,EACb,EAAAI,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,KAAM,CAEpC,GAAI3C,KAAK6W,iBAAmB7W,KAAKY,cAAgBZ,KAAKY,aAAa+D,OACjE,OAEFzC,EAAE2B,mBACG7D,KAAK6W,iBAAoB7W,KAAK6W,kBAAoB7W,KAAKgB,QAAQ8U,mBAClE9V,KAAK8W,QAAQ,CAAC3V,GAAInB,KAAK0W,OAAOnU,QAEhCvC,KAAK0W,OAAOnU,MAAQ,EACtB,MAEG,EAAAC,MAAMC,KAAKsU,UAAU1V,SAASa,EAAES,MAAQ,EAAAH,MAAMC,KAAKuU,WAAW3V,SAASa,EAAES,OACpD,KAAtB3C,KAAK0W,OAAOnU,OACZvC,KAAKiX,UAAU/T,SAEfhB,EAAE2B,iBACF7D,KAAK2W,WAAW3W,KAAKiX,UAAU/T,OAAS,GAC1C,EAhMClD,KAAK2B,GAAWuV,QAAUlX,KAE3BA,KAAKgB,QAAU,OAAH,wBACPqV,EAAMpR,UACNjE,GAGLhB,KAAK2B,GAAGoC,UAAUE,IAAI,QAAS,eAC/BjE,KAAKiX,UAAY,GACjBjX,KAAKmX,OAAS,GACdnX,KAAKoX,cACLpX,KAAK6W,gBAAkBpC,OAAOhS,KAAKzC,KAAKgB,QAAQ6U,qBAAqB3S,OAAS,EAGzElD,KAAK0W,OAAO9S,aAAa,OAC5B5D,KAAK0W,OAAOrQ,aAAa,KAAM,EAAA7D,MAAM4D,QAGnCpG,KAAKgB,QAAQd,KAAKgD,SACpBlD,KAAKiX,UAAYjX,KAAKgB,QAAQd,KAC9BF,KAAKqX,gBAGHrX,KAAK6W,iBAAiB7W,KAAKsX,qBAC/BtX,KAAKuX,kBACLvX,KAAKwX,cACLxX,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAiC,CAAC,GACvF,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASqV,EAClC,CAEA,kBAAO9Q,CAAY5D,GACjB,OAAQA,EAAWuV,OACrB,CAEA,OAAAO,GACE,OAAOzX,KAAKiX,SACd,CAEA,OAAAzR,GACExF,KAAKyF,uBACLzF,KAAKmX,OAAOhM,SAAQuM,GAAKA,EAAE1T,WAC3BhE,KAAKmX,OAAS,GACbnX,KAAK2B,GAAWuV,aAAUvR,CAC7B,CAEA,mBAAAP,GACEpF,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKsW,kBACvCtQ,SAASJ,iBAAiB,UAAWyQ,EAAMsB,qBAC3C3R,SAASJ,iBAAiB,QAASyQ,EAAMuB,mBACzC5X,KAAK2B,GAAGiE,iBAAiB,OAAQyQ,EAAMwB,kBAAkB,GACzD7X,KAAK0W,OAAO9Q,iBAAiB,QAAS5F,KAAK4W,mBAC3C5W,KAAK0W,OAAO9Q,iBAAiB,OAAQ5F,KAAK6B,kBAC1C7B,KAAK0W,OAAO9Q,iBAAiB,UAAW5F,KAAKqD,oBAC/C,CAEA,oBAAAoC,GACEzF,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKsW,kBAC1CtQ,SAASD,oBAAoB,UAAWsQ,EAAMsB,qBAC9C3R,SAASD,oBAAoB,QAASsQ,EAAMuB,mBAC5C5X,KAAK2B,GAAGoE,oBAAoB,OAAQsQ,EAAMwB,kBAAkB,GAC5D7X,KAAK0W,OAAO3Q,oBAAoB,QAAS/F,KAAK4W,mBAC9C5W,KAAK0W,OAAO3Q,oBAAoB,OAAQ/F,KAAK6B,kBAC7C7B,KAAK0W,OAAO3Q,oBAAoB,UAAW/F,KAAKqD,oBAClD,CAqBA,0BAAOsU,CAAoBzV,GACzBmU,EAAMjU,UAAW,EACjB,MAAM0V,EAAsB5V,EAAEkI,OAAQ4C,QAAQ,UACxC+K,EAAe7V,EAAEkI,QAAU0N,EAG3BE,EAAoB9V,EAAEkI,OAAQoE,QACpC,GAAY,UAARwJ,GAA2B,aAARA,IAAuBD,EAAc,OAE5D,MAAME,EAAoBH,EAAcZ,QAExC,GAAI,EAAA1U,MAAMC,KAAKsU,UAAU1V,SAASa,EAAES,MAAQ,EAAAH,MAAMC,KAAKyV,OAAO7W,SAASa,EAAES,KAAM,CAC7ET,EAAE2B,iBACF,IAAIsU,EAAcF,EAAUhB,UAAU/T,OACtC,GAAI+U,EAAUG,cAAe,CAC3B,MAAMhN,EAAQgL,EAAU6B,EAAUG,eAClCH,EAAUxB,WAAWrL,GACrB6M,EAAUG,cAAgB,KAE1BD,EAAcnI,KAAKqI,IAAIjN,EAAQ,EAAG,EACpC,CACI6M,EAAUhB,UAAU/T,OACtB+U,EAAUtB,WAAWwB,GAErBF,EAAUvB,OAAO7M,OACrB,MACK,GAAI,EAAArH,MAAMC,KAAKuU,WAAW3V,SAASa,EAAES,MACxC,GAAIsV,EAAUG,cAAe,CAC3B,MAAMD,EAAc/B,EAAU6B,EAAUG,eAAiB,EACzD,GAAID,EAAc,EAAG,OACrBF,EAAUtB,WAAWwB,EACvB,OAEG,GAAI,EAAA3V,MAAMC,KAAK6V,YAAYjX,SAASa,EAAES,MACrCsV,EAAUG,cAAe,CAC3B,MAAMD,EAAc/B,EAAU6B,EAAUG,eAAiB,EACrDD,GAAeF,EAAUhB,UAAU/T,OACrC+U,EAAUvB,OAAO7M,QAEjBoO,EAAUtB,WAAWwB,EACzB,CAEJ,CAEA,wBAAOP,CAAkB1V,GACvBmU,EAAMjU,UAAW,CACnB,CAEA,uBAAOyV,CAAiB3V,IACjBmU,EAAMjU,UAAY4D,SAASuS,SACFrW,EAAEkI,OAAQ4C,QAAQ,UACNkK,QAC9BkB,cAAgB,KAE9B,CAiCA,WAAAI,CAAYC,GACV,IAAKA,EAAKtX,GAAI,OACd,MAAMuX,EAAe1S,SAASC,cAAc,OAC5CyS,EAAa3U,UAAUE,IAAI,QAC3ByU,EAAa5P,UAAY2P,EAAK9X,MAAgB8X,EAAKtX,GACnDuX,EAAarS,aAAa,WAAY,KACtC,MAAMsS,EAAY3S,SAASC,cAAc,KAIzC,GAHA0S,EAAU5U,UAAUE,IAAIjE,KAAKgB,QAAQ4U,eAAgB,SACrD+C,EAAU7P,UAAY,QAElB2P,EAAKrQ,MAAO,CACd,MAAMC,EAAMrC,SAASC,cAAc,OACnCoC,EAAIhC,aAAa,MAAOoS,EAAKrQ,OAC7BsQ,EAAaE,aAAavQ,EAAKqQ,EAAaG,WAC9C,CAEA,OADAH,EAAanS,YAAYoS,GAClBD,CACT,CAEA,YAAArB,GACErX,KAAKmX,OAAS,GACd,IAAK,IAAIpX,EAAI,EAAGA,EAAIC,KAAKiX,UAAU/T,OAAQnD,IAAK,CAC9C,MAAM+Y,EAAW9Y,KAAKwY,YAAYxY,KAAKiX,UAAUlX,IACjDC,KAAK2B,GAAG4E,YAAYuS,GACpB9Y,KAAKmX,OAAOxN,KAAKmP,EACnB,CAEA9Y,KAAK2B,GAAGsH,OAAOjJ,KAAK0W,OACtB,CAEA,kBAAAY,GACEtX,KAAKgB,QAAQ6U,oBAAoB1V,eAAkB4Y,IAC7CA,EAAM7V,OAAS,GAAGlD,KAAK8W,QAAQ,CACjC3V,GAAI4X,EAAM,GAAG5X,GACbR,KAAMoY,EAAM,GAAGpY,KACfyH,MAAO2Q,EAAM,GAAG3Q,QAElBpI,KAAK0W,OAAOnU,MAAQ,GACpBvC,KAAK0W,OAAO7M,OAAO,EAErB7J,KAAKY,aAAe,EAAAY,aAAa6D,KAAKrF,KAAK0W,OAAQ1W,KAAKgB,QAAQ6U,oBAClE,CAEA,WAAAuB,GACEpX,KAAK0W,OAAS1W,KAAK2B,GAAGoF,cAAc,SAC/B/G,KAAK0W,SACR1W,KAAK0W,OAAS1Q,SAASC,cAAc,SACrCjG,KAAK2B,GAAGsH,OAAOjJ,KAAK0W,SAEtB1W,KAAK0W,OAAO3S,UAAUE,IAAI,QAC5B,CAEA,WAAAuT,GACExX,KAAKgZ,OAAShZ,KAAK2B,GAAGoF,cAAc,SAChC/G,KAAKgZ,QAAQhZ,KAAKgZ,OAAO3S,aAAa,MAAOrG,KAAK0W,OAAO9S,aAAa,MAC5E,CAEA,eAAA2T,QACyB5R,IAAnB3F,KAAKiX,YAA4BjX,KAAKiX,UAAU/T,QAAUlD,KAAKgB,QAAQ0U,YACzE1V,KAAK0W,OAAOhB,YAAc1V,KAAKgB,QAAQ0U,kBAGnB/P,IAAnB3F,KAAKiX,WAA6BjX,KAAKiX,UAAU/T,SAClDlD,KAAKgB,QAAQ2U,uBAEb3V,KAAK0W,OAAOhB,YAAc1V,KAAKgB,QAAQ2U,qBAE3C,CAEA,mBAAAsD,CAAoBR,GAClB,MAAMS,IAAYT,EAAKtX,GACjBgY,GAAgBnZ,KAAKiX,UAAU/O,MAAKF,GAAQA,EAAK7G,IAAMsX,EAAKtX,KAClE,OAAO+X,GAAWC,CACpB,CAMA,OAAArC,CAAQ2B,GACN,IAAKzY,KAAKiZ,oBAAoBR,IAASzY,KAAKiX,UAAU/T,QAAUlD,KAAKgB,QAAQ+U,MAAO,OACpF,MAAM2C,EAAe1Y,KAAKwY,YAAYC,GACtCzY,KAAKmX,OAAOxN,KAAK+O,GACjB1Y,KAAKiX,UAAUtN,KAAK8O,GAEpBzY,KAAK0W,OAAO0C,OAAOV,GACnB1Y,KAAKuX,kBAEiC,mBAA3BvX,KAAKgB,QAAQiV,WACtBjW,KAAKgB,QAAQiV,UAAUjW,KAAK2B,GAAI+W,EAEpC,CAMA,UAAAjC,CAAW4C,GACT,MAAMZ,EAAOzY,KAAKmX,OAAOkC,GACzBrZ,KAAKmX,OAAOkC,GAAWrV,SACvBhE,KAAKmX,OAAOmC,OAAOD,EAAW,GAC9BrZ,KAAKiX,UAAUqC,OAAOD,EAAW,GACjCrZ,KAAKuX,kBAEoC,mBAA9BvX,KAAKgB,QAAQmV,cACtBnW,KAAKgB,QAAQmV,aAAanW,KAAK2B,GAAI8W,EAEvC,CAMA,UAAA9B,CAAW0C,GACT,MAAMZ,EAAOzY,KAAKmX,OAAOkC,GACzBrZ,KAAKoY,cAAgBK,EACrBA,EAAK5O,QAEoC,mBAA9B7J,KAAKgB,QAAQkV,cACtBlW,KAAKgB,QAAQkV,aAAalW,KAAK2B,GAAI8W,EAEvC,CAEA,WAAO5L,GACL7G,SAASJ,iBAAiB,oBAAoB,KAE5CI,SAASwE,KAAK5E,iBAAiB,SAAS1D,IACtC,GAAkBA,EAAEkI,OAAQ4C,QAAQ,gBAAiB,CACnD,MAAM8K,EAAsB5V,EAAEkI,OAAQ4C,QAAQ,UAC9C,GAAI8K,GAAmCnS,MAAzBmS,EAAcZ,QAAsB,OACpChV,EAAEkI,OAAQ4C,QAAQ,SAAShJ,QAC3C,IACA,GAEN,EAxVF,UA2VIqS,EAAMjU,UAAW,C,4FCpbrB,eACA,QAwCMnC,EAAgC,CACpCsZ,WAAW,EACXC,YAAa,KACbC,UAAW,KACXC,aAAc,KACdC,WAAY,KACZC,WAAY,IACZC,YAAa,KAGf,MAAaC,UAAoB,EAAArY,UAG/B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAAS8Y,GAsErB,KAAAC,wBAA2B7X,IACzB,MAAM8X,EAAU9X,EAAEkI,OAAuB4C,QAAQ,uBACjD,GAAI9K,EAAEkI,QAAU4P,EAAQ,CAEtB,GADoBA,EAAOhN,QAAQ,kBACfhN,KAAK2B,GAAI,OAE7B,MAAM+E,EAAKsT,EAAOhN,QAAQ,MACpBiN,EAAWvT,EAAG3C,UAAUoJ,SAAS,UACjC/B,EAAQ,IAAI1E,EAAGU,WAAWlD,UAAUyD,QAAQjB,GAE9CuT,EACFja,KAAK+B,MAAMqJ,GAEXpL,KAAKgD,KAAKoI,EACd,GAGF,KAAA8O,0BAA6BhY,IACvB,EAAAM,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,MAC9B3C,KAAK+Z,wBAAwB7X,EAC/B,EAuCF,KAAAc,KAAQoI,IACN,MAAM+O,EAAYtP,MAAMC,KAAK9K,KAAK2B,GAAGuC,UAAUjD,QAAOyW,GAAmB,OAAdA,EAAElJ,UACvD9H,EAAKyT,EAAU/O,GACrB,GAAI1E,IAAOA,EAAG3C,UAAUoJ,SAAS,UAAW,CAM1C,GAJwC,mBAA7BnN,KAAKgB,QAAQwY,aACtBxZ,KAAKgB,QAAQwY,YAAY5S,KAAK5G,KAAM0G,GAGlC1G,KAAKgB,QAAQuY,UAAW,CAC1B,MAAMa,EAAYD,EAAUlZ,QAAOyF,GAAMA,EAAG3C,UAAUoJ,SAAS,YAC/DiN,EAAUjP,SAAQkP,IAChB,MAAMjP,EAAQ+O,EAAUxS,QAAQ0S,GAChCra,KAAK+B,MAAMqJ,EAAM,GAErB,CAEA1E,EAAG3C,UAAUE,IAAI,UACjBjE,KAAKsa,WAAWlP,EAClB,GAOF,KAAArJ,MAASqJ,IACP,MAAM1E,EAAKmE,MAAMC,KAAK9K,KAAK2B,GAAGuC,UAAUjD,QAAOyW,GAAmB,OAAdA,EAAElJ,UAAkBpD,GACpE1E,GAAMA,EAAG3C,UAAUoJ,SAAS,YAEW,mBAA9BnN,KAAKgB,QAAQ0Y,cACtB1Z,KAAKgB,QAAQ0Y,aAAa9S,KAAK5G,KAAM0G,GAGvCA,EAAG3C,UAAUC,OAAO,UACpBhE,KAAKua,YAAYnP,GACnB,EApKCpL,KAAK2B,GAAW6Y,cAAgBxa,KAEjCA,KAAKgB,QAAU,OAAH,wBACP8Y,EAAY7U,UACZjE,GAILhB,KAAKya,SAAW5P,MAAMC,KAAK9K,KAAK2B,GAAG6B,iBAAiB,6BACpDxD,KAAKya,SAAStP,SAAQxJ,GAAMA,EAAG+Y,SAAW,IAC1C1a,KAAKoF,sBAGL,MAAMuV,EAA8B9P,MAAMC,KAAK9K,KAAK2B,GAAG6B,iBAAiB,kCACpExD,KAAKgB,QAAQuY,UACXoB,EAAazX,OAAS,GAExBlD,KAAK4a,aAAaD,EAAa,IAIjCA,EAAaxP,SAAQxJ,GAAM3B,KAAK4a,aAAajZ,IAEjD,CAEA,mBAAWsD,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAuC,CAAC,GAC7F,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS8Y,EAClC,CAEA,kBAAOvU,CAAY5D,GACjB,OAAQA,EAAW6Y,aACrB,CAEA,OAAAhV,GACExF,KAAKyF,uBACJzF,KAAK2B,GAAW6Y,mBAAgB7U,CACnC,CAEA,mBAAAP,GACEpF,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAK+Z,yBACvC/Z,KAAKya,SAAStP,SAAQ6O,GAAUA,EAAOpU,iBAAiB,UAAW5F,KAAKka,4BAC1E,CAEA,oBAAAzU,GACEzF,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAK+Z,yBAC1C/Z,KAAKya,SAAStP,SAAQ6O,GAAUA,EAAOjU,oBAAoB,UAAW/F,KAAKka,4BAC7E,CAyBQ,YAAAU,CAAalU,GACnBA,EAAGR,MAAMC,UAAYO,EAAGmU,aAAe,IACzC,CAEA,UAAAP,CAAWlP,GACT,MAAM1E,EAAoB1G,KAAK2B,GAAGuC,SAASkH,GAC3C,IAAK1E,EAAI,OACT,MAAM8D,EAAoB9D,EAAGK,cAAc,qBACrCuG,EAAWtN,KAAKgB,QAAQ4Y,WAC9BpP,EAAKtE,MAAMoF,WAAa,cAAcgC,eACtCtN,KAAK4a,aAAapQ,GAClBzF,YAAW,KAC6B,mBAA3B/E,KAAKgB,QAAQyY,WACtBzZ,KAAKgB,QAAQyY,UAAU7S,KAAK5G,KAAM0G,EACpC,GACC4G,EACL,CAEA,WAAAiN,CAAYnP,GACV,MAAM1E,EAAK1G,KAAK2B,GAAGuC,SAASkH,GAC5B,IAAK1E,EAAI,OACT,MAAM8D,EAAoB9D,EAAGK,cAAc,qBACrCuG,EAAWtN,KAAKgB,QAAQ6Y,YAC9BrP,EAAKtE,MAAMoF,WAAa,cAAcgC,eACtC9C,EAAKtE,MAAMC,UAAY,IACvBpB,YAAW,KAC8B,mBAA5B/E,KAAKgB,QAAQ2Y,YACtB3Z,KAAKgB,QAAQ2Y,WAAW/S,KAAK5G,KAAM0G,EACrC,GACC4G,EACL,EA/HF,e,uFCxBA,kBAaE,WAAA5L,CAAYC,EAAiBX,EAAqB8Z,GAE1CnZ,aAAcoZ,aAClBC,QAAQC,MAAMC,MAAMvZ,EAAK,4BAG3B,IAAIwZ,EAAML,EAASvV,YAAY5D,GACzBwZ,GACJA,EAAI3V,UAENxF,KAAK2B,GAAKA,CACZ,CAmCU,WAAO0D,CAEfC,EAA0BtE,EAAqB8Z,GAC/C,IAAIM,EAAY,KAChB,GAAI9V,aAAe+V,QACjBD,EAAY,IAAIN,EAAsBxV,EAAKtE,QAExC,GAAMsE,GAAOA,EAAIpC,OAAQ,CAC5BkY,EAAY,GACZ,IAAK,IAAIrb,EAAI,EAAGA,EAAIuF,EAAIpC,OAAQnD,IAC9Bqb,EAAUzR,KAAK,IAAImR,EAAsBxV,EAAIvF,GAAIiB,GAErD,CACA,OAAOoa,CACT,CAKA,mBAAWnW,GAAyB,MAAO,CAAC,CAAG,CAM/C,kBAAOM,CAAY5D,GACjB,MAAM,IAAIuZ,MAAM,mCAClB,CAKA,OAAA1V,GAAkB,MAAM,IAAI0V,MAAM,mCAAqC,E,2FCtHzE,eACA,SACA,SACA,QAoJA,IAAIjb,EAA+B,CAEjCqb,WAAW,EAEXC,OAAQ,eAERC,MAAO,KAEPC,YAAa,KAEbC,gBAAgB,EAChBC,iBAAiB,EACjBC,aAAc,KAEdC,SAAU,EAEVC,QAAS,KAETC,QAAS,KAETC,UAAW,GAEXC,QAAS,EACTC,QAAS,KACTC,cAAUxW,EACVyW,cAAUzW,EACV0W,WAAY,KACZC,SAAU,KACVC,OAAO,EACPC,kBAAkB,EAElBC,oBAAoB,EAEpBC,iCAAiC,EAEjCnZ,UAAW,KAEXoZ,cAAc,EAEdC,KAAM,CACJC,OAAQ,SACRC,MAAO,QACPC,KAAM,KACNC,cAAe,IACfC,UAAW,IACXC,OAAQ,CACN,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEFC,YAAa,CACX,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEFC,SAAU,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC7EC,cAAe,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC1DC,eAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAGjDC,OAAQ,GAERC,SAAU,KACVC,OAAQ,KACRC,QAAS,KACTC,OAAQ,MAGV,MAAaC,UAAmB,EAAAnc,UAuB9B,WAAAC,CAAYC,EAAsBX,GAChCY,MAAMD,EAAIX,EAAS4c,GA0pBrB,KAAArZ,kBAAoB,KAClBvE,KAAKgD,MAAM,EAGb,KAAAK,oBAAuBnB,IACjB,EAAAM,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,OAC9BT,EAAE2B,iBACF7D,KAAKgD,OACP,EAGF,KAAA6a,qBAAwB3b,IACtB,IAAKlC,KAAK2E,OAAQ,OAClB,MAAMyF,EAAuBlI,EAAQ,OAChCkI,EAAOrG,UAAUoJ,SAAS,kBAE3B/C,EAAOrG,UAAUoJ,SAAS,0BACzB/C,EAAOrG,UAAUoJ,SAAS,aAC1B/C,EAAO9D,cAAcvC,UAAUoJ,SAAS,eAalC/C,EAAO4C,QAAQ,eACtBhN,KAAK8d,YAEE1T,EAAO4C,QAAQ,gBACtBhN,KAAKid,aAfLjd,KAAK+d,QACH,IAAI1O,KACFnN,EAAEkI,OAAOxG,aAAa,aACtB1B,EAAEkI,OAAOxG,aAAa,cACtB1B,EAAEkI,OAAOxG,aAAa,cAGtB5D,KAAKgB,QAAQsa,WACftb,KAAKge,oBASX,EAGF,KAAAC,kBAAoB,KAClBje,KAAKke,KAAO,KACZle,KAAKme,gBACLne,KAAK+B,OAAO,EAGd,KAAAqc,mBAAsBlc,IACpBlC,KAAKqe,UAAUnc,EAAEkI,OAAO7H,MAAM,EAGhC,KAAA+b,kBAAqBpc,IACnBlC,KAAKue,SAASrc,EAAEkI,OAAO7H,MAAM,EAmB/B,KAAAic,mBAAsBtc,I,MACpB,IAAIgc,GAEW,QAAX,EAAAhc,EAAU,cAAC,eAAEuc,WAAYze,OAE3Bke,EADEle,KAAKgB,QAAQwa,MACRxb,KAAKgB,QAAQwa,MAAMxb,KAAK2B,GAAGY,MACD,mBAAxBvC,KAAKgB,QAAQua,OAChBvb,KAAKgB,QAAQua,OAAO,IAAIlM,KAAKrP,KAAK2B,GAAGY,QACrCvC,KAAKgB,QAAQua,QAGZ,IAAIlM,KAAKA,KAAKmM,MAAMxb,KAAK2B,GAAGY,QAEjCqb,EAAWc,QAAQR,IAAOle,KAAK+d,QAAQG,GAAK,EAYlD,KAAAF,iBAAmB,KACjBhe,KAAKme,gBACLne,KAAK+B,OAAO,EAMd,KAAAiB,KAAO,KACL,IAAIhD,KAAK2E,OAOT,OANA3E,KAAK2E,QAAS,EACqB,mBAAxB3E,KAAKgB,QAAQyc,QACtBzd,KAAKgB,QAAQyc,OAAO7W,KAAK5G,MAE3BA,KAAK2e,OACL3e,KAAK4e,MAAM5b,UAAK2C,GACT3F,IAAI,EAMb,KAAA+B,MAAQ,KACN,GAAK/B,KAAK2E,OAMV,OALA3E,KAAK2E,QAAS,EACsB,mBAAzB3E,KAAKgB,QAAQ0c,SACtB1d,KAAKgB,QAAQ0c,QAAQ9W,KAAK5G,MAE5BA,KAAK4e,MAAM7c,QACJ/B,IAAI,EArxBVA,KAAK2B,GAAWkd,aAAe7e,KAEhCA,KAAKgB,QAAU,OAAH,wBACP4c,EAAW3Y,UACXjE,GAICA,GAAWA,EAAQ8d,eAAe,SAAmC,iBAAjB9d,EAAQ4b,OAChE5c,KAAKgB,QAAQ4b,KAAO,OAAH,wBAAOgB,EAAW3Y,SAAS2X,MAAS5b,EAAQ4b,OAI3D5c,KAAKgB,QAAQ8a,SAAS9b,KAAKgB,QAAQ8a,QAAQiD,SAAS,EAAG,EAAG,EAAG,GAC7D/e,KAAKgB,QAAQ+a,SAAS/b,KAAKgB,QAAQ+a,QAAQgD,SAAS,EAAG,EAAG,EAAG,GAEjE/e,KAAKmB,GAAK,EAAAqB,MAAM4D,OAEhBpG,KAAKgf,kBACLhf,KAAKif,qBACLjf,KAAKkf,cACLlf,KAAKoF,sBAEApF,KAAKgB,QAAQya,cAChBzb,KAAKgB,QAAQya,YAAc,IAAIpM,KAAKA,KAAKmM,MAAMxb,KAAK2B,GAAGY,SAGzD,IAAI4c,EAAUnf,KAAKgB,QAAQya,YACvBmC,EAAWc,QAAQS,GACjBnf,KAAKgB,QAAQ0a,gBACf1b,KAAK+d,QAAQoB,GAAS,GACtBnf,KAAKme,iBAGLne,KAAKof,SAASD,GAIhBnf,KAAKof,SAAS,IAAI/P,MAEpBrP,KAAK2E,QAAS,CAChB,CAEA,mBAAWM,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAAmEtE,EAAsC,CAAC,GACpH,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS4c,EAClC,CAEA,cAAOc,CAAQW,GACb,MAAO,OAAOC,KAAK7K,OAAO8K,UAAUne,SAASwF,KAAKyY,MAAUxW,MAAMwW,EAAIG,UACxE,CAEA,iBAAOC,CAAWvB,GAChB,IAAIwB,EAAMxB,EAAKyB,SACf,OAAe,IAARD,GAAqB,IAARA,CACtB,CAEA,uBAAOE,CAAiB1B,GAClBN,EAAWc,QAAQR,IAAOA,EAAKa,SAAS,EAAG,EAAG,EAAG,EACvD,CAEA,sBAAOc,CAAgBC,EAAMC,GAC3B,MAAO,CAAC,GAAInC,EAAWoC,YAAYF,GAAQ,GAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACtFC,EAEJ,CAEA,kBAAOC,CAAYF,GAEjB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,CAChE,CAEA,oBAAOG,CAAcngB,EAAGogB,GAEtB,OAAOpgB,EAAE0f,YAAcU,EAAEV,SAC3B,CAEA,kBAAOja,CAAY5D,GACjB,OAAQA,EAAWkd,YACrB,CAEA,OAAArZ,GACExF,KAAKyF,uBACLzF,KAAK4e,MAAMpZ,UACXxF,KAAKmgB,QAAQnc,SACbhE,KAAKogB,iBACJpgB,KAAK2B,GAAWkd,kBAAelZ,CAClC,CAEA,cAAAya,GACE,IAAIC,EAAgBrgB,KAAKsgB,WAAWvZ,cAAc,qBAC9CsZ,GACF,EAAAE,WAAWhb,YAAY8a,GAA8B7a,UAEvD,IAAIgb,EAAiBxgB,KAAKsgB,WAAWvZ,cAAc,sBAC/CyZ,GACF,EAAAD,WAAWhb,YAAYib,GAA+Bhb,SAE1D,CAEA,kBAAAyZ,GAQE,GAPIjf,KAAKgB,QAAQ2b,eACf3c,KAAKygB,SAASva,MAAMmO,WAAa,GACjCrU,KAAKygB,SAAS3X,UAAY9I,KAAKgB,QAAQ4b,KAAKE,OAE9C9c,KAAK0gB,QAAQ5X,UAAY9I,KAAKgB,QAAQ4b,KAAKG,KAC3C/c,KAAK2gB,UAAU7X,UAAY9I,KAAKgB,QAAQ4b,KAAKC,OAEzC7c,KAAKgB,QAAQuC,UAAW,CAC1B,MAAMqd,EAAQ5gB,KAAKgB,QAAQuC,UAC3BvD,KAAKgB,QAAQuC,UACXqd,aAAiB7F,YAAc6F,EAAQ5a,SAASe,cAAc6Z,GAChE5gB,KAAKgB,QAAQuC,UAAU0F,OAAOjJ,KAAKmgB,QACrC,MAGEngB,KAAK2B,GAAG2E,cAAcC,YAAYvG,KAAKmgB,QAE3C,CAEA,WAAAjB,GACElf,KAAKmgB,QAAQhf,GAAK,SAAWnB,KAAKmB,GAClCnB,KAAK4e,MAAQ,EAAAiC,MAAMxb,KAAKrF,KAAKmgB,QAAS,CACpCxG,WAAY,KACV3Z,KAAK2E,QAAS,CAAK,GAGzB,CAKA,QAAAvD,CAASma,EAAyC,MAEhD,MAAsB,mBADtBA,EAASA,GAAUvb,KAAKgB,QAAQua,QACSA,EAAOvb,KAAKke,MAChDN,EAAWc,QAAQ1e,KAAKke,MAET3C,EAAOuF,MAAM,+BAE9BC,KAAIja,GAAS9G,KAAKghB,QAAQla,GAAS9G,KAAKghB,QAAQla,KAAWA,IAC3Dma,KAAK,IALmC,EAO7C,CAOA,OAAAlD,CAAQG,EAAsB,KAAMgD,GAA2B,GAC7D,IAAKhD,EAGH,OAFAle,KAAKke,KAAO,KACZle,KAAKmhB,qBACEnhB,KAAK2e,OAKd,GAHoB,iBAATT,IACTA,EAAO,IAAI7O,KAAKA,KAAKmM,MAAM0C,MAExBN,EAAWc,QAAQR,GACtB,OAEF,IAAIlM,EAAMhS,KAAKgB,QAAQ8a,QACrBzD,EAAMrY,KAAKgB,QAAQ+a,QACjB6B,EAAWc,QAAQ1M,IAAQkM,EAAOlM,EACpCkM,EAAOlM,EAEA4L,EAAWc,QAAQrG,IAAQ6F,EAAO7F,IACzC6F,EAAO7F,GAETrY,KAAKke,KAAO,IAAI7O,KAAK6O,EAAKsB,WAC1Bxf,KAAKmhB,qBACLvD,EAAWgC,iBAAiB5f,KAAKke,MACjCle,KAAKof,SAASpf,KAAKke,MACdgD,GAAoD,mBAA1BlhB,KAAKgB,QAAQwc,UAC1Cxd,KAAKgB,QAAQwc,SAAS5W,KAAK5G,KAAMA,KAAKke,KAE1C,CAKA,aAAAC,GACEne,KAAK2B,GAAGY,MAAQvC,KAAKoB,WACrBpB,KAAK2B,GAAGyH,cAAc,IAAIgY,YAAY,SAAU,CAACC,SAAQ,EAAMC,YAAW,EAAMC,UAAS,EAAMC,OAAQ,CAAC/C,QAASze,QACnH,CAEA,kBAAAmhB,GACE,IAAIM,EAAc7D,EAAWc,QAAQ1e,KAAKke,MAAQle,KAAKke,KAAO,IAAI7O,KAC9DuN,EAAO5c,KAAKgB,QAAQ4b,KACpB8C,EAAM9C,EAAKS,cAAcoE,EAAY9B,UACrCI,EAAQnD,EAAKO,YAAYsE,EAAYC,YACrCxD,EAAOuD,EAAYE,UACvB3hB,KAAK4hB,WAAW3Z,UAAYwZ,EAAYI,cAAczgB,WACtDpB,KAAK8hB,WAAW7Z,UAAY,GAAGyX,MAAQK,KAAS7B,GAClD,CAMA,QAAAkB,CAASlB,GACP,IAAI6D,GAAc,EAClB,GAAKnE,EAAWc,QAAQR,GAAxB,CAGA,GAAIle,KAAKgiB,UAAW,CAClB,IAAIC,EAAmB,IAAI5S,KAAKrP,KAAKgiB,UAAU,GAAGlC,KAAM9f,KAAKgiB,UAAU,GAAGjC,MAAO,GAC/EmC,EAAkB,IAAI7S,KACpBrP,KAAKgiB,UAAUhiB,KAAKgiB,UAAU9e,OAAS,GAAG4c,KAC1C9f,KAAKgiB,UAAUhiB,KAAKgiB,UAAU9e,OAAS,GAAG6c,MAC1C,GAEFoC,EAAcjE,EAAKsB,UAErB0C,EAAgBE,SAASF,EAAgBR,WAAa,GACtDQ,EAAgBnE,QAAQmE,EAAgBP,UAAY,GACpDI,EACEI,EAAcF,EAAiBzC,WAAa0C,EAAgB1C,UAAY2C,CAC5E,CACIJ,IACF/hB,KAAKgiB,UAAY,CACf,CACEjC,MAAO7B,EAAKwD,WACZ5B,KAAM5B,EAAK2D,iBAIjB7hB,KAAKqiB,iBAvBL,CAwBF,CAEA,eAAAA,GACEriB,KAAKgiB,UAAU,GAAKhiB,KAAKsiB,eAAetiB,KAAKgiB,UAAU,IACvDhiB,KAAK2e,MACP,CAEA,cAAA2D,CAAeC,GASb,OARIA,EAASxC,MAAQ,IACnBwC,EAASzC,MAAQ9P,KAAKwS,KAAKxS,KAAKC,IAAIsS,EAASxC,OAAS,IACtDwC,EAASxC,OAAS,IAEhBwC,EAASxC,MAAQ,KACnBwC,EAASzC,MAAQ9P,KAAK4D,MAAM5D,KAAKC,IAAIsS,EAASxC,OAAS,IACvDwC,EAASxC,OAAS,IAEbwC,CACT,CAEA,SAAAtF,GACEjd,KAAKgiB,UAAU,GAAGjC,QAClB/f,KAAKqiB,iBACP,CAEA,SAAAvE,GACE9d,KAAKgiB,UAAU,GAAGjC,QAClB/f,KAAKqiB,iBACP,CAEA,MAAAI,CAAO3C,EAAMC,EAAO2C,GAClB,IAAIC,EAAO3iB,KAAKgB,QACdsO,EAAM,IAAID,KACVuT,EAAOhF,EAAWiC,gBAAgBC,EAAMC,GACxC3G,EAAS,IAAI/J,KAAKyQ,EAAMC,EAAO,GAAGJ,SAClCzf,EAAO,GACP2iB,EAAM,GACRjF,EAAWgC,iBAAiBtQ,GACxBqT,EAAK9G,SAAW,IAClBzC,GAAUuJ,EAAK9G,SACXzC,EAAS,IACXA,GAAU,IAGd,IAAI4D,EAA0B,IAAV+C,EAAc,GAAKA,EAAQ,EAC7C9C,EAAsB,KAAV8C,EAAe,EAAIA,EAAQ,EACvC+C,EAAgC,IAAV/C,EAAcD,EAAO,EAAIA,EAC/CiD,EAA4B,KAAVhD,EAAeD,EAAO,EAAIA,EAC5CkD,EAAsBpF,EAAWiC,gBAAgBiD,EAAqB9F,GACpEiG,EAAQL,EAAOxJ,EACjBpS,EAAQic,EACV,KAAOjc,EAAQ,GACbA,GAAS,EAEXic,GAAS,EAAIjc,EACb,IAAIkc,GAAiB,EACrB,IAAK,IAAInjB,EAAI,EAAGojB,EAAI,EAAGpjB,EAAIkjB,EAAOljB,IAAK,CACrC,IAAI2f,EAAM,IAAIrQ,KAAKyQ,EAAMC,EAAYhgB,EAAIqZ,EAAT,GAC9BgK,IAAaxF,EAAWc,QAAQ1e,KAAKke,OACjCN,EAAWqC,cAAcP,EAAK1f,KAAKke,MAEvCmF,EAAUzF,EAAWqC,cAAcP,EAAKpQ,GACxCgU,GAAwD,IAA7CX,EAAKpF,OAAO5V,QAAQ+X,EAAI6D,gBACnCC,EAAUzjB,EAAIqZ,GAAUrZ,GAAK6iB,EAAOxJ,EACpCqK,EAAiB1jB,EAAIqZ,EAAT,EACZsK,EAAc3D,EACd4D,EAAa7D,EACb8D,EAAejB,EAAKtG,YAAcuB,EAAWqC,cAAc0C,EAAKtG,WAAYqD,GAC5EmE,EAAalB,EAAKrG,UAAYsB,EAAWqC,cAAc0C,EAAKrG,SAAUoD,GACtEoE,EACEnB,EAAKtG,YAAcsG,EAAKrG,UAAYqG,EAAKtG,WAAaqD,GAAOA,EAAMiD,EAAKrG,SAOxEkH,IACEzjB,EAAIqZ,GACNqK,EAAYT,EAAsBS,EAClCC,EAAc1G,EACd2G,EAAab,IAEbW,GAAwBb,EACxBc,EAAczG,EACd0G,EAAaZ,IAIjB,IAAIgB,EAAY,CACdrE,IAAK+D,EACL1D,MAAO2D,EACP5D,KAAM6D,EACNL,SAAUA,EACVF,WAAYA,EACZC,QAASA,EACTW,WAxBGrB,EAAK7G,SAAW4D,EAAMiD,EAAK7G,SAC3B6G,EAAK5G,SAAW2D,EAAMiD,EAAK5G,SAC3B4G,EAAKhH,iBAAmBiC,EAAW6B,WAAWC,IAC9CiD,EAAK/G,cAAgB+G,EAAK/G,aAAa8D,GAsB1C8D,QAASA,EACTI,aAAcA,EACdC,WAAYA,EACZC,UAAWA,EACXpH,gCAAiCiG,EAAKjG,iCAGxCmG,EAAIlZ,KAAK3J,KAAKikB,UAAUF,IAEZ,KAANZ,IACJjjB,EAAKyJ,KAAK3J,KAAKkkB,UAAUrB,EAAKF,EAAKpG,MAAO2G,IAC1CL,EAAM,GACNM,EAAI,EACJD,GAAiB,EAErB,CACA,OAAOljB,KAAKmkB,YAAYxB,EAAMziB,EAAMwiB,EACtC,CAEA,SAAAuB,CAAUtB,GACR,IAAIyB,EAAM,GACNC,EAAe,QACnB,GAAI1B,EAAKa,QAAS,CAChB,IAAIb,EAAKjG,gCAIP,MAAO,6BAHP0H,EAAIza,KAAK,4BACTya,EAAIza,KAAK,wBAIb,CAwBA,OAvBIgZ,EAAKqB,YACPI,EAAIza,KAAK,eAGPgZ,EAAKU,SACPe,EAAIza,KAAK,YAEPgZ,EAAKS,aACPgB,EAAIza,KAAK,eACT0a,EAAe,QAEb1B,EAAKW,UACPc,EAAIza,KAAK,aAEPgZ,EAAKmB,WACPM,EAAIza,KAAK,cAEPgZ,EAAKiB,cACPQ,EAAIza,KAAK,iBAEPgZ,EAAKkB,YACPO,EAAIza,KAAK,eAGT,iBAAiBgZ,EAAKjD,eAAe0E,EAAInD,KAAK,wBAAwBoD,qEACJ1B,EAAK7C,qBAAqB6C,EAAK5C,oBAAoB4C,EAAKjD,QAAQiD,EAAKjD,mBAG3I,CAEA,SAAAwE,CAAUtB,EAAMrG,EAAO+H,GACrB,MACE,6BACCA,EAAgB,eAAiB,IAClC,MACC/H,EAAQqG,EAAK5X,UAAY4X,GAAM3B,KAAK,IACrC,OAEJ,CAEA,WAAAkD,CAAYxB,EAAMziB,EAAMwiB,GACtB,MACE,sIACAA,EACA,KACA1iB,KAAKukB,WAAW5B,GAChB3iB,KAAKwkB,WAAWtkB,GAChB,gBAEJ,CAEA,UAAAqkB,CAAW5B,GACT,IAAI5iB,EACFqkB,EAAM,GACR,IAAKrkB,EAAI,EAAGA,EAAI,EAAGA,IACjBqkB,EAAIza,KACF,gCAAgC3J,KAAKykB,cAAc9B,EAAM5iB,OAAOC,KAAKykB,cACnE9B,EACA5iB,GACA,kBAIN,MAAO,eAAiB4iB,EAAKpG,MAAQ6H,EAAIpZ,UAAYoZ,GAAKnD,KAAK,IAAM,eACvE,CAEA,UAAAuD,CAAWE,GACT,MAAO,UAAYA,EAAKzD,KAAK,IAAM,UACrC,CAEA,WAAA0D,CAAYC,EAAUlN,EAAGoI,EAAMC,EAAO8E,EAASnC,GAC7C,IAAI3iB,EACF+kB,EACAV,EAQAW,EACAC,EARArC,EAAO3iB,KAAKgB,QACZikB,EAAYnF,IAAS6C,EAAK1G,QAC1BiJ,EAAYpF,IAAS6C,EAAKzG,QAC1BiJ,EACE,YACAzC,EACA,sEAGF3R,GAAO,EACPD,GAAO,EAET,IAAKsT,EAAM,GAAIrkB,EAAI,EAAGA,EAAI,GAAIA,IAC5BqkB,EAAIza,KACF,mBACGmW,IAAS+E,EAAU9kB,EAAI2X,EAAI,GAAK3X,EAAI2X,GACrC,KACC3X,IAAMggB,EAAQ,uBAAyB,KACtCkF,GAAallB,EAAI4iB,EAAKxG,UAAc+I,GAAanlB,EAAI4iB,EAAKvG,SACxD,sBACA,IACJ,IACAuG,EAAK/F,KAAKM,OAAOnd,GACjB,aAeN,IAXAglB,EAAY,qEAAqEX,EAAInD,KAAK,IAAI,YAE1FpW,MAAMua,QAAQzC,EAAK3G,YACrBjc,EAAI4iB,EAAK3G,UAAU,GACnB8I,EAAInC,EAAK3G,UAAU,GAAK,IAGxBjc,EAAI+f,EAAO6C,EAAK3G,UAChB8I,EAAI,EAAIhF,EAAO6C,EAAK3G,WAGjBoI,EAAM,GAAIrkB,EAAI+kB,GAAK/kB,GAAK4iB,EAAKzG,QAASnc,IACrCA,GAAK4iB,EAAK1G,SACZmI,EAAIza,KAAK,kBAAkB5J,MAAMA,IAAM+f,EAAO,sBAAwB,MAAM/f,cAmChF,OAhCI4iB,EAAKnG,kBAAkB4H,EAAIpZ,UAE/Bga,EAAW,oEAAoEZ,EAAInD,KAAK,eAIxFkE,GAAQ,4BACNpU,EAAO,GAAK,gPAGdoU,GAAQ,kCACJxC,EAAKlG,mBACP0I,GAAQH,EAAWD,EAEnBI,GAAQJ,EAAYC,EAEtBG,GAAQ,SAEJF,IAAwB,IAAVlF,GAAe4C,EAAKxG,UAAY4D,KAChDhP,GAAO,GAGLmU,IAAwB,KAAVnF,GAAgB4C,EAAKvG,UAAY2D,KACjDjP,GAAO,GAKTqU,GAAQ,4BACNrU,EAAO,GAAK,+OAGNqU,EAAQ,QAClB,CAGA,IAAAxG,CAAK0G,GAAiB,GACpB,IAAKrlB,KAAK2E,SAAW0gB,EAAO,OAC5B,IAME3C,EANEC,EAAO3iB,KAAKgB,QACdib,EAAU0G,EAAK1G,QACfC,EAAUyG,EAAKzG,QACfC,EAAWwG,EAAKxG,SAChBC,EAAWuG,EAAKvG,SAChB+I,EAAO,GAGLnlB,KAAKslB,IAAMrJ,IACbjc,KAAKslB,GAAKrJ,GACLpT,MAAMsT,IAAanc,KAAKulB,GAAKpJ,IAChCnc,KAAKulB,GAAKpJ,IAGVnc,KAAKslB,IAAMpJ,IACblc,KAAKslB,GAAKpJ,GACLrT,MAAMuT,IAAapc,KAAKulB,GAAKnJ,IAChCpc,KAAKulB,GAAKnJ,IAIdsG,EACE,oBACA1S,KAAKwV,SACFpkB,SAAS,IACTqkB,QAAQ,WAAY,IACpBC,OAAO,EAAG,GAEf,IAAK,IAAIhO,EAAI,EAAGA,EAAI,EAAGA,IACrB1X,KAAKmhB,qBACLgE,GACEnlB,KAAK2kB,YACH3kB,KACA0X,EACA1X,KAAKgiB,UAAUtK,GAAGoI,KAClB9f,KAAKgiB,UAAUtK,GAAGqI,MAClB/f,KAAKgiB,UAAU,GAAGlC,KAClB4C,GACE1iB,KAAKyiB,OAAOziB,KAAKgiB,UAAUtK,GAAGoI,KAAM9f,KAAKgiB,UAAUtK,GAAGqI,MAAO2C,GAGrE1iB,KAAKogB,iBAELpgB,KAAKsgB,WAAWrY,UAAYkd,EAG5B,IAAIQ,EAAa3lB,KAAKsgB,WAAWvZ,cAAc,qBAC3C6e,EAAc5lB,KAAKsgB,WAAWvZ,cAAc,sBAChD,EAAAwZ,WAAWlb,KAAKsgB,EAAY,CAC1BE,QAAS,cACTzlB,gBAAiB,CAAEmD,UAAWyC,SAASwE,KAAMsb,gBAAgB,KAE/D,EAAAvF,WAAWlb,KAAKugB,EAAa,CAC3BC,QAAS,eACTzlB,gBAAiB,CAAEmD,UAAWyC,SAASwE,KAAMsb,gBAAgB,KAI/DH,EAAW/f,iBAAiB,SAAU5F,KAAKse,mBAC3CsH,EAAYhgB,iBAAiB,SAAU5F,KAAKoe,oBAET,mBAAxBpe,KAAKgB,QAAQ2c,QACtB3d,KAAKgB,QAAQ2c,OAAO/W,KAAK5G,KAE7B,CAEA,mBAAAoF,GACEpF,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKuE,mBACvCvE,KAAK2B,GAAGiE,iBAAiB,UAAW5F,KAAKqD,qBACzCrD,KAAK2B,GAAGiE,iBAAiB,SAAU5F,KAAKwe,oBACxCxe,KAAKsgB,WAAW1a,iBAAiB,QAAS5F,KAAK6d,sBAC/C7d,KAAK0gB,QAAQ9a,iBAAiB,QAAS5F,KAAKge,kBAC5Che,KAAK2gB,UAAU/a,iBAAiB,QAAS5F,KAAK+B,OAE1C/B,KAAKgB,QAAQ2b,cACf3c,KAAKygB,SAAS7a,iBAAiB,QAAS5F,KAAKie,kBAEjD,CAEA,eAAAe,GACE,MAAM+G,EAAW/f,SAASC,cAAc,YACxC8f,EAAS9d,UAAY2V,EAAWoI,UAAUC,OAC1CjmB,KAAKmgB,QAAuB4F,EAASG,QAAQrN,WAE7C7Y,KAAKsgB,WAAatgB,KAAKmgB,QAAQpZ,cAAc,wBAC7C/G,KAAK4hB,WAAa5hB,KAAKmgB,QAAQpZ,cAAc,cAC7C/G,KAAK8hB,WAAa9hB,KAAKmgB,QAAQpZ,cAAc,cACzC/G,KAAKgB,QAAQ2b,eACf3c,KAAKygB,SAAWzgB,KAAKmgB,QAAQpZ,cAAc,sBAE7C/G,KAAK0gB,QAAU1gB,KAAKmgB,QAAQpZ,cAAc,oBAC1C/G,KAAK2gB,UAAY3gB,KAAKmgB,QAAQpZ,cAAc,sBAE5C/G,KAAKghB,QAAU,CACbmF,EAAG,IACMnmB,KAAKke,KAAKyD,UAEnByE,GAAI,KACF,IAAID,EAAInmB,KAAKke,KAAKyD,UAClB,OAAQwE,EAAI,GAAK,IAAM,IAAMA,CAAC,EAEhCE,IAAK,IACIrmB,KAAKgB,QAAQ4b,KAAKS,cAAcrd,KAAKke,KAAKyB,UAEnD2G,KAAM,IACGtmB,KAAKgB,QAAQ4b,KAAKQ,SAASpd,KAAKke,KAAKyB,UAE9C4G,EAAG,IACMvmB,KAAKke,KAAKwD,WAAa,EAEhC8E,GAAI,KACF,IAAID,EAAIvmB,KAAKke,KAAKwD,WAAa,EAC/B,OAAQ6E,EAAI,GAAK,IAAM,IAAMA,CAAC,EAEhCE,IAAK,IACIzmB,KAAKgB,QAAQ4b,KAAKO,YAAYnd,KAAKke,KAAKwD,YAEjDgF,KAAM,IACG1mB,KAAKgB,QAAQ4b,KAAKM,OAAOld,KAAKke,KAAKwD,YAE5CiF,GAAI,KACM,GAAK3mB,KAAKke,KAAK2D,eAAeha,MAAM,GAE9C+e,KAAM,IACG5mB,KAAKke,KAAK2D,cAGvB,CAEA,oBAAApc,GACEzF,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKuE,mBAC1CvE,KAAK2B,GAAGoE,oBAAoB,UAAW/F,KAAKqD,qBAC5CrD,KAAK2B,GAAGoE,oBAAoB,SAAU/F,KAAKwe,oBAC3Cxe,KAAKsgB,WAAWva,oBAAoB,QAAS/F,KAAK6d,qBACpD,CAyDA,SAAAQ,CAAU0B,GACHlX,MAAMkX,KACT/f,KAAKgiB,UAAU,GAAGjC,MAAQjL,SAASiL,EAAO,IAC1C/f,KAAKqiB,kBAET,CAGA,QAAA9D,CAASuB,GACFjX,MAAMiX,KACT9f,KAAKgiB,UAAU,GAAGlC,KAAOhL,SAASgL,EAAM,IACxC9f,KAAKqiB,kBAET,CAkBA,aAAAoC,CAAc9B,EAAMjD,EAAKmH,GAAgB,GAEvC,IADAnH,GAAOiD,EAAK9G,SACL6D,GAAO,GACZA,GAAO,EAET,OAAOmH,EAAOlE,EAAK/F,KAAKU,eAAeoC,GAAOiD,EAAK/F,KAAKQ,SAASsC,EACnE,EA9wBF,eAkzBI9B,EAAWoI,UAAY,i2B,yFC/hC3B,eACA,QA2EM/lB,EAA6B,CACjCmT,UAAW,OACX/S,WAAW,EACXylB,gBAAgB,EAChBviB,UAAW,KACXhD,cAAc,EACdD,cAAc,EACdwmB,OAAO,EACPlN,WAAY,IACZC,YAAa,IACbL,YAAa,KACbC,UAAW,KACXC,aAAc,KACdC,WAAY,KACZlT,YAAa,MAGf,MAAaI,UAAiB,EAAApF,UAgB5B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAAS6F,GAsGrB,KAAAI,aAAgB/E,IACdA,EAAE2B,iBACE7D,KAAK2E,OACL3E,KAAK+B,QAEL/B,KAAKgD,MACT,EAGF,KAAA+jB,kBAAoB,KAClB/mB,KAAKgD,MAAM,EAGb,KAAAgkB,kBAAqB9kB,IACnB,MAAM+kB,EAAO/kB,EAAEglB,cACTC,IAA2BF,EAAKja,QAAQ,qBAC9C,IAAIoa,GAA+B,EACnC,MAAMC,EAAiBJ,EAAKja,QAAQ,qBAElCqa,GACQA,EAAgBC,YAClBD,EAAgBC,WAAW3iB,SAEjCyiB,GAA+B,GAG5BA,GAAiCD,GACpCnnB,KAAK+B,OACP,EAGF,KAAAoI,qBAAwBjI,IACtB,MAAMkI,EAAsBlI,EAAEkI,OAE5BpK,KAAKgB,QAAQV,cACb8J,EAAO4C,QAAQ,uBACdhN,KAAKunB,cAGNvnB,KAAK+B,QAGJqI,EAAO4C,QAAQ,sBAIhBjI,YAAW,KACL/E,KAAK2E,QACP3E,KAAK+B,OACP,GACC,GAEL/B,KAAKunB,eAAgB,CAAK,EAG5B,KAAAC,sBAAyBtlB,KAEE,EAAAM,MAAMC,KAAKI,WAAWxB,SAASa,EAAES,MAAQ,EAAAH,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,QACrE3C,KAAK2E,SAC5BzC,EAAE2B,iBACF7D,KAAKgD,OACP,EAGF,KAAAykB,yBAA4BvlB,IACEA,EAAEkI,OACnB4C,QAAQ,uBACjBhN,KAAKunB,eAAgB,EACvB,EAGF,KAAAG,qBAAwBxlB,IAEtB,GAAwC,mBAA7BlC,KAAKgB,QAAQyF,YAA4B,CAClD,MAAMkhB,EAAuBzlB,EAAEkI,OAAQ4C,QAAQ,MAC/ChN,KAAKgB,QAAQyF,YAAYG,KAAK5G,KAAM2nB,EACtC,GAGF,KAAAC,uBAA0B1lB,IACxB,MAAM2lB,EAAgB,EAAArlB,MAAMC,KAAKI,WAAWxB,SAASa,EAAES,MAAQ,EAAAH,MAAMC,KAAKG,SAASvB,SAASa,EAAES,KAC9F,GAAI,EAAAH,MAAMC,KAAKqlB,IAAIzmB,SAASa,EAAES,KAC5BT,EAAE2B,iBACF7D,KAAK+B,aAGF,GAAI8lB,GAAiB7nB,KAAK2E,OAAQ,CACrCzC,EAAE2B,iBACF,MAAMiG,EAAY,EAAAtH,MAAMC,KAAKI,WAAWxB,SAASa,EAAES,KAAO,GAAK,EAC/D,IAAIolB,EAAkB/nB,KAAKgoB,aACvBC,GAAmB,EACvB,GAEE,GADAF,GAAoCje,EAEhC9J,KAAKkoB,WAAWhkB,SAAS6jB,KACoC,IAAzD/nB,KAAKkoB,WAAWhkB,SAAS6jB,GAAkBrN,SACjD,CACAuN,GAAmB,EACnB,KACF,QACOF,EAAkB/nB,KAAKkoB,WAAWhkB,SAAShB,QAAU6kB,GAAmB,GAE7EE,IAEEjoB,KAAKgoB,cAAgB,GACvBhoB,KAAKkoB,WAAWhkB,SAASlE,KAAKgoB,cAAcjkB,UAAUC,OAAO,UAC/DhE,KAAKgoB,aAAeD,EACpB/nB,KAAKmoB,oBAET,MAEK,GAAI,EAAA3lB,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,MAAQ3C,KAAK2E,OAAQ,CAExD,MAAMyjB,EAAiBpoB,KAAKkoB,WAAWhkB,SAASlE,KAAKgoB,cAC/CK,EAAkCD,EAAerhB,cAAc,aAE/DshB,EACJA,EAAmBC,QAEVF,GACLA,aAA0BrN,aAC5BqN,EAAeE,OAGrB,MAES,EAAA9lB,MAAMC,KAAK8lB,IAAIlnB,SAASa,EAAES,MAAQ3C,KAAK2E,SAC9CzC,EAAE2B,iBACF7D,KAAK+B,SAIP,MAAMymB,EAAUtmB,EAAES,IAAI8lB,cAChBC,EAAW,gBAAgBpJ,KAAKkJ,GAChCG,EAAc,IAAI,EAAAnmB,MAAMC,KAAKI,cAAe,EAAAL,MAAMC,KAAKG,YAAa,EAAAJ,MAAMC,KAAKC,SAAU,EAAAF,MAAMC,KAAK8lB,OAAQ,EAAA/lB,MAAMC,KAAKqlB,KAC7H,GAAIY,IAAaC,EAAYtnB,SAASa,EAAES,KAAM,CAC5C3C,KAAK4oB,YAAYjf,KAAK6e,GACtB,MAAMK,EAAS7oB,KAAK4oB,YAAY3H,KAAK,IAC/B6H,EAAcje,MAAMC,KAAK9K,KAAKkoB,WAAW1kB,iBAAiB,OAC7DgG,MAAM7H,GAAsD,IAA/CA,EAAGmH,UAAU2f,cAAc9gB,QAAQkhB,KAC/CC,IACF9oB,KAAKgoB,aAAe,IAAIc,EAAY1hB,WAAWlD,UAAUyD,QAAQmhB,GACjE9oB,KAAKmoB,oBAET,CACAnoB,KAAK+oB,cAAgBhkB,WAAW/E,KAAKgpB,kBAAmB,IAAK,EAG/D,KAAAC,oBAAuB/mB,IAGjBlC,KAAK2B,GAAGunB,cACVlpB,KAAK8E,uBACP,EAIF,KAAAkkB,kBAAoB,KAClBhpB,KAAK4oB,YAAc,EAAE,EAkOvB,KAAA5lB,KAAO,KACDhD,KAAK2E,SACT3E,KAAK2E,QAAS,EAE0B,mBAA7B3E,KAAKgB,QAAQwY,aACtBxZ,KAAKgB,QAAQwY,YAAY5S,KAAK5G,KAAMA,KAAK2B,IAG3C3B,KAAKmpB,uBACLnpB,KAAKkoB,WAAWhiB,MAAMqH,QAAU,QAChCvN,KAAKopB,iBACLppB,KAAKsa,aAGLvV,YAAW,IAAM/E,KAAKqpB,gCAAgC,GAAE,EAM1D,KAAAtnB,MAAQ,KACD/B,KAAK2E,SACV3E,KAAK2E,QAAS,EACd3E,KAAKgoB,cAAgB,EAEoB,mBAA9BhoB,KAAKgB,QAAQ0Y,cACtB1Z,KAAKgB,QAAQ0Y,aAAa9S,KAAK5G,KAAMA,KAAK2B,IAE5C3B,KAAKua,cACLva,KAAKspB,gCACDtpB,KAAKgB,QAAQX,WACfL,KAAK2B,GAAGkI,QACV,EAMF,KAAA/E,sBAAwB,KAClB9E,KAAK2E,SACP3E,KAAKkoB,WAAWhiB,MAAMmG,MAAQ,GAC9BrM,KAAKkoB,WAAWhiB,MAAMsM,OAAS,GAC/BxS,KAAKkoB,WAAWhiB,MAAMkG,KAAO,GAC7BpM,KAAKkoB,WAAWhiB,MAAMqjB,IAAM,GAC5BvpB,KAAKkoB,WAAWhiB,MAAMsjB,gBAAkB,GACxCxpB,KAAKopB,iBACP,EAnhBCppB,KAAK2B,GAAW2lB,WAAatnB,KAE9B6G,EAAS4iB,WAAW9f,KAAK3J,MACzBA,KAAKmB,GAAK,EAAAqB,MAAMknB,iBAAiB/nB,GACjC3B,KAAKkoB,WAAaliB,SAAS2jB,eAAe3pB,KAAKmB,IAE/CnB,KAAKgB,QAAU,OAAH,wBACP6F,EAAS5B,UACTjE,GAGLhB,KAAK2E,QAAS,EACd3E,KAAK4pB,cAAe,EACpB5pB,KAAKunB,eAAgB,EACrBvnB,KAAKgoB,cAAgB,EACrBhoB,KAAK4oB,YAAc,GAGnB5oB,KAAK6pB,gBACL7pB,KAAK8pB,yBACL9pB,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAoC,CAAC,GAC1F,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS6F,EAClC,CAEA,kBAAOtB,CAAY5D,GACjB,OAAQA,EAAW2lB,UACrB,CAEA,OAAA9hB,GACExF,KAAKmpB,uBACLnpB,KAAKyF,uBACLoB,EAAS4iB,WAAWnQ,OAAOzS,EAAS4iB,WAAW9hB,QAAQ3H,MAAO,GAC7DA,KAAK2B,GAAW2lB,gBAAa3hB,CAChC,CAEA,mBAAAP,G,MAEEpF,KAAK2B,GAAGiE,iBAAiB,UAAW5F,KAAKwnB,uBAE1B,QAAf,EAAAxnB,KAAKkoB,kBAAU,SAAEtiB,iBAAiB,QAAS5F,KAAK0nB,sBAE5C1nB,KAAKgB,QAAQ8lB,OACf9mB,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAK+mB,mBAC5C/mB,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAKgnB,mBAC5ChnB,KAAKkoB,WAAWtiB,iBAAiB,aAAc5F,KAAKgnB,oBAGpDhnB,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKiH,aAE3C,CAEA,oBAAAxB,GACEzF,KAAK2B,GAAGoE,oBAAoB,UAAW/F,KAAKwnB,uBAC5CxnB,KAAKkoB,WAAWniB,oBAAoB,QAAS/F,KAAK0nB,sBAC9C1nB,KAAKgB,QAAQ8lB,OACf9mB,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAK+mB,mBAC/C/mB,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAKgnB,mBAC/ChnB,KAAKkoB,WAAWniB,oBAAoB,aAAc/F,KAAKgnB,oBAEvDhnB,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKiH,aAE9C,CAEA,4BAAAoiB,GACErjB,SAASwE,KAAK5E,iBAAiB,QAAS5F,KAAKmK,sBAC7CnE,SAASwE,KAAK5E,iBAAiB,YAAa5F,KAAKynB,0BACjDznB,KAAKkoB,WAAWtiB,iBAAiB,UAAW5F,KAAK4nB,wBACjD/hB,OAAOD,iBAAiB,SAAU5F,KAAKipB,oBACzC,CAEA,6BAAAK,GACEtjB,SAASwE,KAAKzE,oBAAoB,QAAS/F,KAAKmK,sBAChDnE,SAASwE,KAAKzE,oBAAoB,YAAa/F,KAAKynB,0BACpDznB,KAAKkoB,WAAWniB,oBAAoB,UAAW/F,KAAK4nB,wBACpD/hB,OAAOE,oBAAoB,SAAU/F,KAAKipB,oBAC5C,CAmKA,oBAAAE,GACEnpB,KAAKkoB,WAAWhiB,MAAMqH,QAAU,GAChCvN,KAAKkoB,WAAWhiB,MAAMmG,MAAQ,GAC9BrM,KAAKkoB,WAAWhiB,MAAMsM,OAAS,GAC/BxS,KAAKkoB,WAAWhiB,MAAMkG,KAAO,GAC7BpM,KAAKkoB,WAAWhiB,MAAMqjB,IAAM,GAC5BvpB,KAAKkoB,WAAWhiB,MAAMsjB,gBAAkB,GACxCxpB,KAAKkoB,WAAWhiB,MAAMsF,UAAY,GAClCxL,KAAKkoB,WAAWhiB,MAAMqF,QAAU,EAClC,CAGA,aAAAse,CAAcE,EAA2B,MACjC/pB,KAAKgB,QAAQuC,UACjBvD,KAAKgB,QAAQuC,UAAU0F,OAAOjJ,KAAKkoB,YAE5B6B,EACFA,EAAY5c,SAASnN,KAAKkoB,aAC7B6B,EAAY9gB,OAAOjJ,KAAKkoB,YAI1BloB,KAAK2B,GAAGqF,MAAMhH,KAAKkoB,WAEvB,CAEA,sBAAA4B,GACO9pB,KAAKkoB,aAEVloB,KAAKkoB,WAAWxN,SAAW,EAE3B7P,MAAMC,KAAK9K,KAAKkoB,WAAWhkB,UAAUiH,SAASxJ,IACvCA,EAAGiC,aAAa,aACnBjC,EAAG0E,aAAa,WAAY,IAAI,IAEtC,CAEA,iBAAA8hB,GAEInoB,KAAKgoB,cAAgB,GACrBhoB,KAAKgoB,aAAehoB,KAAKkoB,WAAWhkB,SAAShB,QAC7ClD,KAAKgB,QAAQX,YAEZL,KAAKkoB,WAAWhkB,SAASlE,KAAKgoB,cAA8Bne,MAAM,CACjEmgB,eAAe,IAEjBhqB,KAAKkoB,WAAWhkB,SAASlE,KAAKgoB,cAAc7jB,eAAe,CACzDC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAGd,CAEA,oBAAA2lB,CAAqBC,GACOlqB,KAAK2B,GAAGunB,aAAand,wBAA/C,MACMoe,EAAenqB,KAAK2B,GAAGoK,wBACvBqe,EAAgBpqB,KAAKkoB,WAAWnc,wBAEtC,IAAIse,EAAcD,EAAc5X,OAC5B8X,EAAaF,EAAc/d,MAC3Bke,EAAYJ,EAAa/d,KAAOge,EAAche,KAC9Coe,EAAYL,EAAaZ,IAAMa,EAAcb,IAEjD,MAAMkB,EAAiB,CACrBre,KAAMme,EACNhB,IAAKiB,EACLhY,OAAQ6X,EACRhe,MAAOie,GAGHI,EAAa,EAAAloB,MAAMmoB,wBACvB3qB,KAAK2B,GACLuoB,EACAO,EACAzqB,KAAKgB,QAAQT,aAAe,EAAI4pB,EAAa3X,QAG/C,IAAIoY,EAAoB,MACpBC,EAAsB7qB,KAAKgB,QAAQoS,UA+BvC,GA9BAoX,GAAaxqB,KAAKgB,QAAQT,aAAe,EAAI4pB,EAAa3X,OAG1DxS,KAAK4pB,cAAe,EAEfc,EAAWnB,MACVmB,EAAWpe,QACbse,EAAoB,SAEf5qB,KAAKgB,QAAQT,eAChBiqB,GAAaL,EAAa3X,UAG5BxS,KAAK4pB,cAAe,EAGpBS,GAAe,GACXK,EAAWI,WAAaJ,EAAWK,eACrCH,EAAoB,SACpBP,GAAeK,EAAWI,WAC1BN,GAAaxqB,KAAKgB,QAAQT,aACtBmqB,EAAWI,WAAa,GACxBJ,EAAWI,WAAa,GAAKX,EAAa3X,QAE9C6X,GAAeK,EAAWK,iBAM3BL,EAAWG,GAAsB,CACpC,MAAMG,EAA4C,SAAxBH,EAAiC,QAAU,OACjEH,EAAWM,GACbH,EAAsBG,EAGlBN,EAAWO,YAAcP,EAAWQ,cACtCL,EAAsB,QACtBP,GAAcI,EAAWO,YACzBV,GAAaG,EAAWO,cAExBJ,EAAsB,OACtBP,GAAcI,EAAWQ,aAG/B,CASA,MAP0B,WAAtBN,IACFJ,EACEA,EAAYJ,EAAc5X,QAAUxS,KAAKgB,QAAQT,aAAe4pB,EAAa3X,OAAS,IAE9D,UAAxBqY,IACFN,EAAYA,EAAYH,EAAc/d,MAAQ8d,EAAa9d,OAEtD,CACLuD,EAAG2a,EACH1a,EAAG2a,EACHI,kBAAmBA,EACnBC,oBAAqBA,EACrBrY,OAAQ6X,EACRhe,MAAOie,EAEX,CAEA,UAAAhQ,GACE,MAAMhN,EAAWtN,KAAKgB,QAAQ4Y,WAC9B5Z,KAAKkoB,WAAWhiB,MAAMoF,WAAa,OAEnCtL,KAAKkoB,WAAWhiB,MAAMqF,QAAU,IAChCvL,KAAKkoB,WAAWhiB,MAAMsF,UAAY,kBAClCzG,YAAW,KAET/E,KAAKkoB,WAAWhiB,MAAMoF,WAAa,WAAWgC,uBAA8BA,WAE5EtN,KAAKkoB,WAAWhiB,MAAMqF,QAAU,IAChCvL,KAAKkoB,WAAWhiB,MAAMsF,UAAY,aAAa,GAC9C,GACHzG,YAAW,KACL/E,KAAKgB,QAAQX,WAAWL,KAAKkoB,WAAWre,QACN,mBAA3B7J,KAAKgB,QAAQyY,WAA0BzZ,KAAKgB,QAAQyY,UAAU7S,KAAK5G,KAAMA,KAAK2B,GAAG,GAC3F2L,EACL,CAEA,WAAAiN,GACE,MAAMjN,EAAWtN,KAAKgB,QAAQ6Y,YAE9B7Z,KAAKkoB,WAAWhiB,MAAMoF,WAAa,WAAWgC,uBAA8BA,WAE5EtN,KAAKkoB,WAAWhiB,MAAMqF,QAAU,IAChCvL,KAAKkoB,WAAWhiB,MAAMsF,UAAY,kBAClCzG,YAAW,KACT/E,KAAKmpB,uBACkC,mBAA5BnpB,KAAKgB,QAAQ2Y,YAA2B3Z,KAAKgB,QAAQ2Y,WAAW/S,KAAK5G,KAAMA,KAAK2B,GAAG,GAC7F2L,EACL,CAEQ,mBAAA6d,CAAoBxpB,EAAiBypB,GAC3C,IAAIC,EAAW1pB,EAAGyF,WAClB,KAAoB,OAAbikB,GAAqBA,IAAarlB,UAAU,CACjD,GAAIolB,EAAUC,GACZ,OAAoBA,EAEtBA,EAAWA,EAAS/kB,aACtB,CACA,OAAO,IACT,CAEA,cAAA8iB,GAEE,IAAIc,EAAqClqB,KAAKmrB,oBAAoBnrB,KAAKkoB,YAAamD,IAC1E,CAAC,OAAO,QAAQhqB,SAASgqB,EAAS7c,UAAoD,YAAxCtC,iBAAiBmf,GAAUze,WAG9Esd,IACHA,EAAwClqB,KAAKkoB,WAAWgB,aACpDlpB,KAAKkoB,WAAWgB,aAChBlpB,KAAKkoB,WAAW9gB,YAGmC,WAArD8E,iBAAiBge,GAAuBoB,WAC1CpB,EAAsBhkB,MAAMolB,SAAW,YAEzCtrB,KAAK6pB,cAAcK,GAGnB,MAAMI,EAAatqB,KAAKgB,QAAQ8kB,eAC5B9lB,KAAK2B,GAAGoK,wBAAwBM,MAChCrM,KAAKkoB,WAAWnc,wBAAwBM,MAC5CrM,KAAKkoB,WAAWhiB,MAAMmG,MAAQie,EAAa,KAE3C,MAAMiB,EAAevrB,KAAKiqB,qBAAqBC,GAC/ClqB,KAAKkoB,WAAWhiB,MAAMkG,KAAOmf,EAAa3b,EAAI,KAC9C5P,KAAKkoB,WAAWhiB,MAAMqjB,IAAMgC,EAAa1b,EAAI,KAC7C7P,KAAKkoB,WAAWhiB,MAAMsM,OAAS+Y,EAAa/Y,OAAS,KACrDxS,KAAKkoB,WAAWhiB,MAAMmG,MAAQkf,EAAalf,MAAQ,KACnDrM,KAAKkoB,WAAWhiB,MAAMsjB,gBAAkB,GACD,SAArC+B,EAAaV,oBAAiC,IAAM,UACf,QAAnCU,EAAaX,kBAA8B,IAAM,QACvD,EAlfF,aACS,EAAAnB,WAAyB,E,sFC9FlC,eAEA,MAAa+B,EAOX,yBAAOC,CAAmBC,GACxB,IAAKA,EAEH,YADA1Q,QAAQC,MAAM,6BAIhB,IAAI0Q,EAA4B3lB,SAASe,cAAc,cAClD4kB,IACHA,EAAY3lB,SAASC,cAAc,OACnC0lB,EAAU5nB,UAAUE,IAAI,YAAa,UACrC+B,SAASwE,KAAKvB,OAAO0iB,IAEvB,MAAMzlB,EAAQgG,iBAAiBwf,GAEzBE,EAAa1lB,EAAM0lB,WACnBnW,EAAWvP,EAAMuP,SACjBoW,EAAa3lB,EAAM2lB,WAEnBC,EAAa5lB,EAAM4lB,WACnBC,EAAe7lB,EAAM6lB,aACrBC,EAAgB9lB,EAAM8lB,cACtBC,EAAc/lB,EAAM+lB,YAEtBxW,IAAUkW,EAAUzlB,MAAMuP,SAAWA,GACrCmW,IAAYD,EAAUzlB,MAAM0lB,WAAaA,GACzCC,IAAYF,EAAUzlB,MAAM2lB,WAAaA,GACzCC,IAAYH,EAAUzlB,MAAM4lB,WAAaA,GACzCC,IAAcJ,EAAUzlB,MAAM6lB,aAAeA,GAC7CC,IAAeL,EAAUzlB,MAAM8lB,cAAgBA,GAC/CC,IAAaN,EAAUzlB,MAAM+lB,YAAcA,GAG1CP,EAASQ,aAAa,oBACzBR,EAASrlB,aAAa,kBAAmBqlB,EAAS3f,wBAAwByG,OAAOpR,YAE7C,QAAlCsqB,EAAS9nB,aAAa,UACxB+nB,EAAUzlB,MAAMimB,aAAe,SAC/BR,EAAUzlB,MAAMkmB,WAAa,OAG/BT,EAAU7iB,UAAY4iB,EAASnpB,MAAQ,KAEvC,MAAM2jB,EAAUyF,EAAU1jB,UAAUwd,QAAQ,MAAO,QACnDkG,EAAU1jB,UAAYie,EAIlBwF,EAASW,YAAc,GAAKX,EAAS9Y,aAAe,EACtD+Y,EAAUzlB,MAAMmG,MAAQqf,EAAS3f,wBAAwBM,MAAO,KAGhEsf,EAAUzlB,MAAMmG,MAASxG,OAAO8F,WAAa,EAAG,KAKlD,MAAM2gB,EAAiBxX,SAAS4W,EAAS9nB,aAAa,oBAChD2oB,EAAazX,SAAS4W,EAAS9nB,aAAa,oBAC9CiF,MAAMyjB,KACNA,GAAkBX,EAAUta,aAC9Bqa,EAASxlB,MAAMsM,OAASmZ,EAAUta,aAAa,KAExCqa,EAASnpB,MAAMW,OAASqpB,IAI/Bb,EAASxlB,MAAMsM,OAAS8Z,EAAe,MAEzCZ,EAASrlB,aAAa,kBAAmBqlB,EAASnpB,MAAMW,OAAO9B,YACjE,CAEA,WAAOyL,GACL7G,SAASJ,iBAAiB,oBAAoB,KAE5CI,SAASJ,iBAAiB,SAAU1D,IAClC,MAAMkI,EAA2BlI,EAAEkI,OAE/BA,aAAkBoiB,kBAAoB,CAAC,QAAQ,YAAYnrB,SAAS+I,EAAOjI,OAEzE,EAAAK,MAAMC,KAAKqlB,IAAIzmB,SAASa,EAAES,OAC5ByH,EAAOrG,UAAUE,IAAI,UACrBmG,EAAOxE,iBAAiB,QAAQ1D,GAAKkI,EAAOrG,UAAUC,OAAO,WAAW,CAACyoB,MAAM,IAEnF,IAGFzmB,SAASxC,iBAAiB,yBAAyB2H,SAASuhB,IACxDlB,EAAMC,mBAAmBiB,EAAS,IAItC1mB,SAASxC,iBAAiB,kCAAkC2H,SAASwhB,IACjEnB,EAAMoB,kBAAkBD,EAAU,GACpC,GAGN,CAEA,mBAAOE,CAAanB,GAEdA,EAASrlB,aAAa,kBAAmBqlB,EAAS3f,wBAAwByG,OAAOpR,YACjFsqB,EAASrlB,aAAa,kBAAmBqlB,EAASnpB,MAAMW,OAAO9B,YAC/DoqB,EAAMC,mBAAmBC,GAEzBA,EAAS9lB,iBAAiB,SAAS1D,GAAKspB,EAAMC,mBAAmBC,KACjEA,EAAS9lB,iBAAiB,WAAW1D,GAAKspB,EAAMC,mBAAmBC,IACzE,CAEA,wBAAOkB,CAAkBD,GACnBA,EAAU/mB,iBAAiB,UAAU1D,IACnC,MACM4qB,EADYH,EAAU3f,QAAQ,eACUjG,cAAc,mBACtDgmB,EAAQJ,EAAUI,MAClBC,EAAY,GAClB,IAAK,IAAIjtB,EAAI,EAAGA,EAAIgtB,EAAM7pB,OAAQnD,IAChCitB,EAAUrjB,KAAKojB,EAAMhtB,GAAGktB,MAE1BH,EAAUvqB,MAAQyqB,EAAU/L,KAAK,MACjC6L,EAAU1jB,cAAc,IAAIC,MAAM,SAAS,CAACgY,SAAQ,EAAMC,YAAW,EAAMC,UAAS,IAAO,GAEnG,EA/HF,S,4FCFA,eACA,QAmCMthB,EAAgC,CACpC2Z,WAAY,IACZC,YAAa,IACbL,YAAa,KACbC,UAAW,KACXC,aAAc,KACdC,WAAY,MAGd,MAAauT,UAAoB,EAAAzrB,UAuB/B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASksB,GAoEb,KAAAC,wBAA0B,MAEL,IAAvBntB,KAAKotB,eAA4BptB,KAAKqtB,eAAiBrtB,KAAKotB,cAC9DptB,KAAK+B,QAEL/B,KAAKgD,MAAM,EAGP,KAAAsqB,oBAAsB,KACxBttB,KAAKqtB,eAAertB,KAAK+B,OAAO,EAG9B,KAAAknB,oBAAsB,KACxBjpB,KAAKqtB,eAAertB,KAAK+B,OAAO,EAG9B,KAAAwrB,oBAAuBrrB,IACzB,EAAAM,MAAMC,KAAK8lB,IAAIlnB,SAASa,EAAES,MAAQ3C,KAAKotB,eAAiBptB,KAAKqtB,eAAertB,KAAK+B,OAAO,EA6L9F,KAAAiB,KAAO,KACLhD,KAAKwtB,cACLxtB,KAAKytB,cAAgBztB,KAAK2B,GAAGoK,wBAAwBM,MACrDrM,KAAKssB,eAAiBtsB,KAAK2B,GAAGoK,wBAAwByG,OAEtDxS,KAAKotB,eAAgB,EACrBptB,KAAK2B,GAAGoC,UAAUE,IAAI,UACtBjE,KAAKqtB,eAAgB,EAEmB,mBAA7BrtB,KAAKgB,QAAQwY,aAA4BxZ,KAAKgB,QAAQwY,YAAY5S,KAAK5G,KAAMA,KAAK2B,IAE7F3B,KAAK0V,YAAYxP,MAAMmG,MAAQrM,KAAK0V,YAAY3J,wBAAwBM,MAAQ,KAChFrM,KAAK0V,YAAYxP,MAAMsM,OAASxS,KAAK0V,YAAY3J,wBAAwByG,OAAS,KAClFxS,KAAK0V,YAAYxP,MAAMolB,SAAW,WAClCtrB,KAAK0V,YAAYxP,MAAMqjB,IAAM,IAC7BvpB,KAAK0V,YAAYxP,MAAMkG,KAAO,IAC9BpM,KAAK0tB,gCAEL1tB,KAAK2B,GAAGuE,MAAMolB,SAAW,WACzBtrB,KAAK2B,GAAGuE,MAAMkO,OAAS,OACvBpU,KAAK2B,GAAGuE,MAAMynB,WAAa,2BAE3B3tB,KAAK4tB,UAAY5tB,KAAK2B,GAAGiC,aAAa,SACtC5D,KAAK6tB,WAAa7tB,KAAK2B,GAAGiC,aAAa,UACnC5D,KAAK4tB,YACP5tB,KAAK2B,GAAGuE,MAAMmG,MAAQrM,KAAK4tB,UAAU,KACrC5tB,KAAK2B,GAAGmsB,gBAAgB,UAEtB9tB,KAAK6tB,aACP7tB,KAAK2B,GAAGuE,MAAMmG,MAAQrM,KAAK6tB,WAAW,KACtC7tB,KAAK2B,GAAGmsB,gBAAgB,WAE1B9tB,KAAK+tB,cAEgB,KAAjB/tB,KAAKguB,SAAgBhuB,KAAKiuB,cAE9B,MAAMC,EAAeluB,KAAKytB,cAAgBztB,KAAK0L,YACzCyiB,EAAgBnuB,KAAKssB,eAAiBtsB,KAAK4L,aAGjD,GAFA5L,KAAKouB,SAAW,EAChBpuB,KAAKquB,UAAY,EACbH,EAAeC,EAAe,CAEhC,MAAMG,EAAQtuB,KAAKssB,eAAiBtsB,KAAKytB,cACzCztB,KAAKouB,SAA8B,GAAnBpuB,KAAK0L,YACrB1L,KAAKquB,UAA+B,GAAnBruB,KAAK0L,YAAoB4iB,CAC5C,KACK,CAEH,MAAMA,EAAQtuB,KAAKytB,cAAgBztB,KAAKssB,eACxCtsB,KAAKouB,SAA+B,GAApBpuB,KAAK4L,aAAqB0iB,EAC1CtuB,KAAKquB,UAAgC,GAApBruB,KAAK4L,YACxB,CACA5L,KAAKuuB,kBAEL1oB,OAAOD,iBAAiB,SAAU5F,KAAKstB,qBACvCznB,OAAOD,iBAAiB,SAAU5F,KAAKipB,qBACvCpjB,OAAOD,iBAAiB,QAAS5F,KAAKutB,oBAAoB,EAM5D,KAAAxrB,MAAQ,KACN/B,KAAKwtB,cACLxtB,KAAKotB,eAAgB,EAEoB,mBAA9BptB,KAAKgB,QAAQ0Y,cAA6B1Z,KAAKgB,QAAQ0Y,aAAa9S,KAAK5G,KAAMA,KAAK2B,IAK/FkE,OAAOE,oBAAoB,SAAU/F,KAAKstB,qBAC1CznB,OAAOE,oBAAoB,SAAU/F,KAAKipB,qBAC1CpjB,OAAOE,oBAAoB,QAAS/F,KAAKutB,qBACzCvtB,KAAKwuB,iBACLxuB,KAAKyuB,mBACgB,KAAjBzuB,KAAKguB,SAAgBhuB,KAAK0uB,gBAAgB,EA7V7C1uB,KAAK2B,GAAWgtB,cAAgB3uB,KAEjCA,KAAKgB,QAAU,OAAH,wBACPksB,EAAYjoB,UACZjE,GAGLhB,KAAKqtB,eAAgB,EACrBrtB,KAAKotB,eAAgB,EACrBptB,KAAK0V,YAAc1P,SAASC,cAAc,OAC1CjG,KAAK0V,YAAY3R,UAAUE,IAAI,wBAC/BjE,KAAKytB,cAAgB,EACrBztB,KAAKssB,eAAiB,EACtBtsB,KAAK4uB,mBAAqB5uB,KAAK2B,GAAGiC,aAAa,SAC/C5D,KAAKguB,QAAUhuB,KAAK2B,GAAGiC,aAAa,iBAAmB,GAEvD5D,KAAK2B,GAAGyX,OAAOpZ,KAAK0V,aACpB1V,KAAK0V,YAAYzM,OAAOjJ,KAAK2B,IAC7B3B,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAuC,CAAC,GAC7F,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASksB,EAClC,CAEA,kBAAO3nB,CAAY5D,GACjB,OAAQA,EAAWgtB,aACrB,CAEA,OAAAnpB,GACExF,KAAKyF,uBACJzF,KAAK2B,GAAWgtB,mBAAgBhpB,EAGjC3F,KAAK0V,YAAY1R,SACjBhE,KAAK2B,GAAGmsB,gBAAgB,QAC1B,CAEQ,mBAAA1oB,GACNpF,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKmtB,wBACzC,CAEQ,oBAAA1nB,GACNzF,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKmtB,wBAC5C,CAsBQ,6BAAAO,GACN1tB,KAAK6uB,qBAAuB,GAC5B,IAAIxD,EAAWrrB,KAAK0V,YAAYtO,WAChC,KAAoB,OAAbikB,GAAqBA,IAAarlB,UAAU,CACjD,MAAM8oB,EAAoBzD,EACE,YAAxByD,EAAK5oB,MAAM0G,WACbkiB,EAAK5oB,MAAM0G,SAAW,UACtB5M,KAAK6uB,qBAAqBllB,KAAKmlB,IAEjCzD,EAAWA,EAASjkB,UACtB,CACF,CAEQ,OAAA2nB,CAAQptB,GACd,MAAMqtB,EAAMrtB,EAAGoK,wBACTkjB,EAAUjpB,SAASkpB,gBACzB,MAAO,CACL3F,IAAKyF,EAAIzF,IAAM1jB,OAAOspB,YAAcF,EAAQG,UAC5ChjB,KAAM4iB,EAAI5iB,KAAOvG,OAAOwpB,YAAcJ,EAAQK,WAElD,CACQ,WAAA9B,GACNxtB,KAAK0L,YAAc7F,OAAO8F,WAC1B3L,KAAK4L,aAAe/F,OAAOgG,YAC3B7L,KAAKguB,QAAUhuB,KAAK2B,GAAGiC,aAAa,iBAAmB,EACzD,CAGQ,eAAA2qB,GACNvuB,KAAK2B,GAAGuE,MAAMC,UAAYnG,KAAKquB,UAAUjtB,WAAa,KACtDpB,KAAK2B,GAAGuE,MAAMqpB,SAAWvvB,KAAKouB,SAAShtB,WAAa,KACpD,MAAMkM,EAAWtN,KAAKgB,QAAQ4Y,WAE9B5Z,KAAK2B,GAAGuE,MAAMoF,WAAa,OAC3BtL,KAAK2B,GAAGuE,MAAMsM,OAASxS,KAAKssB,eAAiB,KAC7CtsB,KAAK2B,GAAGuE,MAAMmG,MAAQrM,KAAKytB,cAAgB,KAC3C1oB,YAAW,KAET/E,KAAK2B,GAAGuE,MAAMoF,WAAa,UAAUgC,4BAC3BA,2BACDA,0BACDA,mBAGRtN,KAAK2B,GAAGuE,MAAMsM,OAASxS,KAAKquB,UAAY,KACxCruB,KAAK2B,GAAGuE,MAAMmG,MAAQrM,KAAKouB,SAAW,KACtCpuB,KAAK2B,GAAGuE,MAAMkG,KAAQ,EAAA5J,MAAMgtB,wBAC1BxvB,KAAK0L,YAAc,EACnB1L,KAAK+uB,QAAQ/uB,KAAK0V,aAAatJ,KAC/BpM,KAAKouB,SAAW,EAAK,KAEvBpuB,KAAK2B,GAAGuE,MAAMqjB,IAAO,EAAA/mB,MAAMitB,uBACzBzvB,KAAK4L,aAAe,EACpB5L,KAAK+uB,QAAQ/uB,KAAK0V,aAAa6T,IAC/BvpB,KAAKquB,UAAY,EAAK,IAAI,GAC3B,GAEHtpB,YAAW,KACT/E,KAAKotB,eAAgB,EACiB,mBAA3BptB,KAAKgB,QAAQyY,WAA0BzZ,KAAKgB,QAAQyY,UAAU7S,KAAK5G,KAAMA,KAAK2B,GAAG,GAC3F2L,EA0BL,CACQ,gBAAAmhB,GACN,MAAMnhB,EAAWtN,KAAKgB,QAAQ6Y,YAE9B7Z,KAAK2B,GAAGuE,MAAMoF,WAAa,UAAUgC,0BAC3BA,yBACDA,wBACDA,iBAGRtN,KAAK2B,GAAGuE,MAAMsM,OAASxS,KAAKytB,cAAgB,KAC5CztB,KAAK2B,GAAGuE,MAAMmG,MAAQrM,KAAKytB,cAAgB,KAC3CztB,KAAK2B,GAAGuE,MAAMkG,KAAO,IACrBpM,KAAK2B,GAAGuE,MAAMqjB,IAAM,IACpBxkB,YAAW,KACT/E,KAAK0V,YAAYxP,MAAMsM,OAAS,GAChCxS,KAAK0V,YAAYxP,MAAMmG,MAAQ,GAC/BrM,KAAK0V,YAAYxP,MAAMolB,SAAW,GAClCtrB,KAAK0V,YAAYxP,MAAMqjB,IAAM,GAC7BvpB,KAAK0V,YAAYxP,MAAMkG,KAAO,GAE1BpM,KAAK4tB,WAAW5tB,KAAK2B,GAAG0E,aAAa,QAASrG,KAAK4tB,UAAUxsB,YAC7DpB,KAAK6tB,YAAY7tB,KAAK2B,GAAG0E,aAAa,SAAUrG,KAAK6tB,WAAWzsB,YACpEpB,KAAK2B,GAAGmsB,gBAAgB,SACxB9tB,KAAK4uB,oBAAsB5uB,KAAK2B,GAAG0E,aAAa,QAASrG,KAAK4uB,oBAE9D5uB,KAAK2B,GAAGoC,UAAUC,OAAO,UACzBhE,KAAKotB,eAAgB,EAErBptB,KAAK6uB,qBAAqB1jB,SAAQukB,GAAaA,EAAUxpB,MAAM0G,SAAW,KAEnC,mBAA5B5M,KAAKgB,QAAQ2Y,YAA2B3Z,KAAKgB,QAAQ2Y,WAAW/S,KAAK5G,KAAMA,KAAK2B,GAAG,GAC7F2L,EACL,CAGQ,WAAA2gB,GACNjuB,KAAK2vB,cAAgB3pB,SAASC,cAAc,OAC5CjG,KAAK2vB,cAAc5rB,UAAUE,IAAI,uBACjCjE,KAAK2vB,cAAc7mB,UAAY9I,KAAKguB,QACpChoB,SAASwE,KAAKvB,OAAOjJ,KAAK2vB,eAC1B3vB,KAAK2vB,cAAczpB,MAAMqH,QAAU,SAEnCvN,KAAK2vB,cAAczpB,MAAMoF,WAAa,OACtCtL,KAAK2vB,cAAczpB,MAAMqF,QAAU,IACnC,MAAM+B,EAAWtN,KAAKgB,QAAQ4Y,WAC9B7U,YAAW,KACT/E,KAAK2vB,cAAczpB,MAAMoF,WAAa,WAAWgC,WACjDtN,KAAK2vB,cAAczpB,MAAMqF,QAAU,GAAG,GACrC,EACL,CACQ,cAAAmjB,GACN,MAAMphB,EAAWtN,KAAKgB,QAAQ6Y,YAC9B7Z,KAAK2vB,cAAczpB,MAAMoF,WAAa,WAAWgC,WACjDtN,KAAK2vB,cAAczpB,MAAMqF,QAAU,IACnCxG,YAAW,KACT/E,KAAK2vB,cAAc3rB,QAAQ,GAC1BsJ,EACL,CAGQ,WAAAygB,GACN/tB,KAAK4vB,SAAW5pB,SAASC,cAAc,OACvCjG,KAAK4vB,SAASzuB,GAAK,sBACnBnB,KAAK4vB,SAAShqB,iBAAiB,SAAS1D,IAClClC,KAAKotB,eAAeptB,KAAK+B,OAAO,GACnC,CAAC0qB,MAAM,IAGVzsB,KAAK2B,GAAGyX,OAAOpZ,KAAK4vB,UAGpB,MAAMC,EAAgB7vB,KAAK4vB,SAAS7jB,wBACpC/L,KAAK4vB,SAAS1pB,MAAMmG,MAAQrM,KAAK0L,YAAc,KAC/C1L,KAAK4vB,SAAS1pB,MAAMsM,OAASxS,KAAK4L,aAAe,KACjD5L,KAAK4vB,SAAS1pB,MAAMkG,MAAQ,EAAIyjB,EAAczjB,KAAO,KACrDpM,KAAK4vB,SAAS1pB,MAAMqjB,KAAO,EAAIsG,EAActG,IAAM,KAGnDvpB,KAAK4vB,SAAS1pB,MAAMoF,WAAa,OACjCtL,KAAK4vB,SAAS1pB,MAAMqF,QAAU,IAC9B,MAAM+B,EAAWtN,KAAKgB,QAAQ4Y,WAC9B7U,YAAW,KACT/E,KAAK4vB,SAAS1pB,MAAMoF,WAAa,WAAWgC,WAC5CtN,KAAK4vB,SAAS1pB,MAAMqF,QAAU,GAAG,GAChC,EACL,CACQ,cAAAijB,GACN,MAAMlhB,EAAWtN,KAAKgB,QAAQ6Y,YAC9B7Z,KAAK4vB,SAAS1pB,MAAMoF,WAAa,WAAWgC,WAC5CtN,KAAK4vB,SAAS1pB,MAAMqF,QAAU,IAC9BxG,YAAW,KACT/E,KAAKqtB,eAAgB,EACrBrtB,KAAK4vB,SAAS5rB,QAAQ,GACrBsJ,EACL,EArSF,e,sFC7CA,eACA,QA4DMrN,EAAY,CAChBsL,QAAS,GACTqO,WAAY,IACZC,YAAa,IACbL,YAAa,KACbC,UAAW,KACXC,aAAc,KACdC,WAAY,KACZmW,kBAAkB,EAClBC,aAAa,EACbC,YAAa,KACbC,UAAW,OAGb,MAAapP,UAAc,EAAApf,UAkBzB,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAAS6f,GAwErB,KAAAqP,oBAAuBhuB,IACrB,MAAM4K,EAAW5K,EAAEkI,OAAuB4C,QAAQ,kBAClD,IAAKF,EAAS,OACd,MAAMqjB,EAAU,EAAA3tB,MAAMknB,iBAAiB5c,GACjCsjB,EAAiBpqB,SAAS2jB,eAAewG,GAAiBE,QAC5DD,GAAeA,EAAcptB,KAAK8J,GACtC5K,EAAE2B,gBAAgB,EAGpB,KAAAysB,oBAAsB,KAChBtwB,KAAKgB,QAAQ+uB,aAAa/vB,KAAK+B,OAAO,EAG5C,KAAAwuB,uBAA0BruB,IACFA,EAAEkI,OAAuB4C,QAAQ,iBACrChN,KAAK+B,OAAO,EAGhC,KAAAyuB,eAAkBtuB,IACZ,EAAAM,MAAMC,KAAK8lB,IAAIlnB,SAASa,EAAES,MAAQ3C,KAAKgB,QAAQ+uB,aAAa/vB,KAAK+B,OAAO,EAG9E,KAAA0uB,aAAgBvuB,IAETlC,KAAK2B,GAAGwL,SAASjL,EAAEkI,SAA0BpK,KAAK0wB,kBAAoB7P,EAAM8P,aAC/E3wB,KAAK2B,GAAGkI,OACV,EAsFF,KAAA7G,KAAQ8J,IACN,IAAI9M,KAAK2E,OAAT,CAaA,GAZA3E,KAAK2E,QAAS,EACdkc,EAAM8P,cACN3wB,KAAK0wB,gBAAkB7P,EAAM8P,YAE7B3wB,KAAK4vB,SAAS1pB,MAAMkO,QAAU,IAA2B,EAApByM,EAAM8P,aAAiBvvB,WAC5DpB,KAAK2B,GAAGuE,MAAMkO,QAAU,IAA2B,EAApByM,EAAM8P,YAAkB,GAAGvvB,WAE1DpB,KAAK4wB,gBAAoB9jB,QAAoBnH,EAEL,mBAA7B3F,KAAKgB,QAAQwY,aACtBxZ,KAAKgB,QAAQwY,YAAY5S,KAAK5G,KAAMA,KAAK2B,GAAI3B,KAAK4wB,iBAEhD5wB,KAAKgB,QAAQ8uB,kBACc9pB,SAASkpB,gBAAgBrU,aAAe7U,SAASkpB,gBAAgB7d,aACpE,CACxB,MAAMwf,EAAY7qB,SAASkpB,gBAAgB2B,UAC3C7qB,SAASkpB,gBAAgBhpB,MAAMqjB,IAAM,IAAMsH,EAAY,KACvD7qB,SAASkpB,gBAAgBnrB,UAAUE,IAAI,WACzC,CAWF,OATAjE,KAAK2B,GAAGoC,UAAUE,IAAI,QACtBjE,KAAK2B,GAAGmvB,sBAAsB,WAAY9wB,KAAK4vB,UAC3C5vB,KAAKgB,QAAQ+uB,cACf/pB,SAASJ,iBAAiB,UAAW5F,KAAKwwB,gBAC1CxqB,SAASJ,iBAAiB,QAAS5F,KAAKywB,cAAc,IAExDzwB,KAAKsa,aAELta,KAAK2B,GAAGkI,QACD7J,IA9BgB,CA8BZ,EAMb,KAAA+B,MAAQ,KACN,GAAK/B,KAAK2E,OAAV,CAUA,GATA3E,KAAK2E,QAAS,EACdkc,EAAM8P,cACN3wB,KAAK0wB,gBAAkB,EAEkB,mBAA9B1wB,KAAKgB,QAAQ0Y,cACtB1Z,KAAKgB,QAAQ0Y,aAAa9S,KAAK5G,KAAMA,KAAK2B,IAE5C3B,KAAK2B,GAAGoC,UAAUC,OAAO,QAEC,IAAtB6c,EAAM8P,YAAmB,CAC3B,MAAME,GAAa/b,SAAS9O,SAASkpB,gBAAgBhpB,MAAMqjB,KAC3DvjB,SAASkpB,gBAAgBhpB,MAAM6qB,eAAe,OAC9C/qB,SAASkpB,gBAAgBnrB,UAAUC,OAAO,YAC1CgC,SAASkpB,gBAAgB2B,UAAYA,CACvC,CAMA,OALI7wB,KAAKgB,QAAQ+uB,cACf/pB,SAASD,oBAAoB,UAAW/F,KAAKwwB,gBAC7CxqB,SAASD,oBAAoB,QAAS/F,KAAKywB,cAAc,IAE3DzwB,KAAKua,cACEva,IArBiB,CAqBb,EAlPVA,KAAK2B,GAAW0uB,QAAUrwB,KAE3BA,KAAKgB,QAAU,OAAH,wBACP6f,EAAM5b,UACNjE,GAGLhB,KAAK2E,QAAS,EACd3E,KAAKmB,GAAKnB,KAAK2B,GAAGR,GAClBnB,KAAK4wB,qBAAkBjrB,EACvB3F,KAAK4vB,SAAW5pB,SAASC,cAAc,OACvCjG,KAAK4vB,SAAS7rB,UAAUE,IAAI,iBAC5BjE,KAAK2B,GAAG+Y,SAAW,EACnB1a,KAAK0wB,gBAAkB,EACvB7P,EAAMmQ,SACNhxB,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAiC,CAAC,GACvF,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS6f,EAClC,CAEA,kBAAOtb,CAAY5D,GACjB,OAAQA,EAAW0uB,OACrB,CAEA,OAAA7qB,GACEqb,EAAMmQ,SACNhxB,KAAKyF,uBACLzF,KAAK2B,GAAGmsB,gBAAgB,SACxB9tB,KAAK4vB,SAAS5rB,SACbhE,KAAK2B,GAAW0uB,aAAU1qB,CAC7B,CAEA,mBAAAP,GACuB,IAAjByb,EAAMmQ,QACRhrB,SAASwE,KAAK5E,iBAAiB,QAAS5F,KAAKkwB,qBAE/ClwB,KAAK4vB,SAAShqB,iBAAiB,QAAS5F,KAAKswB,qBAC7CtwB,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKuwB,uBACzC,CAEA,oBAAA9qB,GACuB,IAAjBob,EAAMmQ,QACRhrB,SAASwE,KAAKzE,oBAAoB,QAAS/F,KAAKkwB,qBAElDlwB,KAAK4vB,SAAS7pB,oBAAoB,QAAS/F,KAAKswB,qBAChDtwB,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKuwB,uBAC5C,CA+BA,UAAAjW,GAEEta,KAAK4vB,SAAS1pB,MAAMqH,QAAU,QAC9BvN,KAAK4vB,SAAS1pB,MAAMqF,QAAU,IAC9BvL,KAAK2B,GAAGuE,MAAMqH,QAAU,QACxBvN,KAAK2B,GAAGuE,MAAMqF,QAAU,IAExB,MAAM+B,EAAWtN,KAAKgB,QAAQ4Y,WACxBqX,EAAgBjxB,KAAK2B,GAAGoC,UAAUoJ,SAAS,gBAE5C8jB,IACHjxB,KAAK2B,GAAGuE,MAAMqjB,IAAMvpB,KAAKgB,QAAQgvB,YACjChwB,KAAK2B,GAAGuE,MAAMsF,UAAY,2BAG5BxL,KAAK4vB,SAAS1pB,MAAMoF,WAAa,WAAWgC,eAE5CtN,KAAK2B,GAAGuE,MAAMoF,WAAa,eACnBgC,+BACGA,gCACCA,kCACEA,qBAGdvI,YAAW,KACT/E,KAAK4vB,SAAS1pB,MAAMqF,QAAUvL,KAAKgB,QAAQuK,QAAQnK,WACnDpB,KAAK2B,GAAGuE,MAAMqF,QAAU,IACpB0lB,EACFjxB,KAAK2B,GAAGuE,MAAMoG,OAAS,KAGvBtM,KAAK2B,GAAGuE,MAAMqjB,IAAMvpB,KAAKgB,QAAQivB,UACjCjwB,KAAK2B,GAAGuE,MAAMsF,UAAY,uBAE5BzG,YAAW,KAC6B,mBAA3B/E,KAAKgB,QAAQyY,WACtBzZ,KAAKgB,QAAQyY,UAAU7S,KAAK5G,KAAMA,KAAK2B,GAAI3B,KAAK4wB,gBAClD,GACCtjB,EAAS,GACX,EACL,CAEA,WAAAiN,GACE,MAAMjN,EAAWtN,KAAKgB,QAAQ6Y,YACxBoX,EAAgBjxB,KAAK2B,GAAGoC,UAAUoJ,SAAS,gBAC5C8jB,IACHjxB,KAAK2B,GAAGuE,MAAMqjB,IAAMvpB,KAAKgB,QAAQivB,WAInCjwB,KAAK4vB,SAAS1pB,MAAMoF,WAAa,WAAWgC,eAG5CtN,KAAK2B,GAAGuE,MAAMoF,WAAa,eACnBgC,+BACGA,gCACCA,kCACEA,qBAGdvI,YAAW,KACT/E,KAAK4vB,SAAS1pB,MAAMqF,QAAU,IAC9BvL,KAAK2B,GAAGuE,MAAMqF,QAAU,IACpB0lB,EACFjxB,KAAK2B,GAAGuE,MAAMoG,OAAS,SAGvBtM,KAAK2B,GAAGuE,MAAMqjB,IAAMvpB,KAAKgB,QAAQgvB,YACjChwB,KAAK2B,GAAGuE,MAAMsF,UAAY,2BAE5BzG,YAAW,KACT/E,KAAK2B,GAAGuE,MAAMqH,QAAU,OACxBvN,KAAK4vB,SAAS5rB,SACyB,mBAA5BhE,KAAKgB,QAAQ2Y,YACtB3Z,KAAKgB,QAAQ2Y,WAAW/S,KAAK5G,KAAMA,KAAK2B,GAC1C,GACC2L,EAAS,GACX,EACL,EAtMF,UA0QIuT,EAAM8P,YAAc,EACpB9P,EAAMmQ,OAAS,C,yFCtVnB,eACA,QAUA,IAAI/wB,EAA6B,CAC/BixB,oBAAqB,GAGvB,MAAaC,UAAiB,EAAA1vB,UAO5B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASmwB,GA6FrB,KAAAC,iBAAmB,KACjBpxB,KAAKqxB,iBAAiB,EA7FrBrxB,KAAK2B,GAAW2vB,WAAatxB,KAE9BA,KAAKgB,QAAU,OAAH,wBACPmwB,EAASlsB,UACTjE,GAGLhB,KAAKuxB,SAAW1rB,OAAO8F,WAAa3L,KAAKgB,QAAQkwB,oBACjDlxB,KAAKwxB,KAAOxxB,KAAK2B,GAAGoF,cAAc,OAClC/G,KAAKqxB,kBACLrxB,KAAKoF,sBACLpF,KAAKyxB,eACLN,EAASO,YAAY/nB,KAAK3J,KAC5B,CAEA,mBAAWiF,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAoC,CAAC,GAC1F,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASmwB,EAClC,CAEA,kBAAO5rB,CAAY5D,GACjB,OAAQA,EAAW2vB,UACrB,CAEA,OAAA9rB,GACE2rB,EAASO,YAAYpY,OAAO6X,EAASO,YAAY/pB,QAAQ3H,MAAO,GAChEA,KAAKwxB,KAAKtrB,MAAMsF,UAAY,GAC5BxL,KAAKyF,uBACJzF,KAAK2B,GAAW2vB,gBAAa3rB,CAChC,CAEA,oBAAOgsB,GACL,IAAK,IAAI5xB,EAAI,EAAGA,EAAIoxB,EAASO,YAAYxuB,OAAQnD,IAAK,CACpD,IAAI6xB,EAAmBT,EAASO,YAAY3xB,GAC5C6xB,EAAiBP,gBAAgBzqB,KAAKgrB,EACxC,CACF,CAEA,0BAAO3I,GACL,IAAK,IAAIlpB,EAAI,EAAGA,EAAIoxB,EAASO,YAAYxuB,OAAQnD,IAAK,CACpD,IAAI6xB,EAAmBT,EAASO,YAAY3xB,GAC5C6xB,EAAiBL,SACf1rB,OAAO8F,WAAaimB,EAAiB5wB,QAAQkwB,mBACjD,CACF,CAEA,mBAAA9rB,GACEpF,KAAKwxB,KAAK5rB,iBAAiB,OAAQ5F,KAAKoxB,kBACJ,IAAhCD,EAASO,YAAYxuB,SAClBiuB,EAASU,yBACZV,EAASU,uBAAyB,EAAArvB,MAAM4L,SAAS+iB,EAASQ,cAAe,IAEtER,EAASW,+BACZX,EAASW,6BAA+B,EAAAtvB,MAAM4L,SAAS+iB,EAASlI,oBAAqB,IAEvFpjB,OAAOD,iBAAiB,SAAUurB,EAASU,wBAC3ChsB,OAAOD,iBAAiB,SAAUurB,EAASW,8BAE/C,CAEA,oBAAArsB,GACEzF,KAAKwxB,KAAKzrB,oBAAoB,OAAQ/F,KAAKoxB,kBACP,IAAhCD,EAASO,YAAYxuB,SACvB2C,OAAOE,oBAAoB,SAAUorB,EAASU,wBAC9ChsB,OAAOE,oBAAoB,SAAUorB,EAASW,8BAElD,CAEA,YAAAL,GACEzxB,KAAKwxB,KAAKtrB,MAAMqF,QAAU,GAC5B,CAMQ,OAAAwjB,CAAQptB,GACd,MAAMqtB,EAAMrtB,EAAGoK,wBACTkjB,EAAUjpB,SAASkpB,gBACzB,MAAO,CACL3F,IAAKyF,EAAIzF,IAAM1jB,OAAOspB,YAAcF,EAAQG,UAC5ChjB,KAAM4iB,EAAI5iB,KAAOvG,OAAOwpB,YAAcJ,EAAQK,WAElD,CAEA,eAAA+B,GACE,MAAMU,EAAkB/xB,KAAK2B,GAAGoK,wBAAwByG,OAAS,EAAKxS,KAAK2B,GAAGyF,WAAmBwL,aAAe,IAE1Gof,EADYhyB,KAAKwxB,KAAK5e,aACKmf,EAC3BzlB,EAAStM,KAAK+uB,QAAQ/uB,KAAK2B,IAAI4nB,IAAMwI,EACrCxI,EAAMvpB,KAAK+uB,QAAQ/uB,KAAK2B,IAAI4nB,IAC5BsH,EAAY,EAAAruB,MAAMitB,uBAClB7jB,EAAe/F,OAAOgG,YAGtBomB,EAAWD,IAFInB,EAAYjlB,EACO2d,IAAQwI,EAAkBnmB,IAG7D5L,KAAKuxB,SAGDjlB,EAASukB,GAAatH,EAAMsH,EAAYjlB,IAC/C5L,KAAKwxB,KAAKtrB,MAAMsF,UAAY,qBAAqBymB,WAHjDjyB,KAAKwxB,KAAKtrB,MAAMsF,UAAY,EAKhC,EApIF,aAGS,EAAAkmB,YAA0B,E,wFClBnC,eACA,QA4BA,IAAIzxB,EAAY,CACdspB,IAAK,EACLjd,OAAQ0J,IACR7G,OAAQ,EACR+iB,iBAAkB,MAGpB,MAAaC,UAAgB,EAAA1wB,UAI3B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASmxB,GAClBnyB,KAAK2B,GAAWywB,UAAYpyB,KAE7BA,KAAKgB,QAAU,OAAH,wBACPmxB,EAAQltB,UACRjE,GAGLhB,KAAKqyB,eAAkBryB,KAAK2B,GAAmB2wB,UAC/CH,EAAQI,UAAU5oB,KAAK3J,MACvBA,KAAKoF,sBACLpF,KAAKwyB,iBACP,CAEA,mBAAWvtB,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAmC,CAAC,GACzF,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASmxB,EAClC,CAEA,kBAAO5sB,CAAY5D,GACjB,OAAQA,EAAWywB,SACrB,CAEA,OAAA5sB,GACGxF,KAAK2B,GAAmBuE,MAAMqjB,IAAM,KACrCvpB,KAAKyyB,oBAEL,IAAIrnB,EAAQ+mB,EAAQI,UAAU5qB,QAAQ3H,MACtCmyB,EAAQI,UAAUjZ,OAAOlO,EAAO,GACC,IAA7B+mB,EAAQI,UAAUrvB,QACpBlD,KAAKyF,uBAENzF,KAAK2B,GAAWywB,eAAYzsB,CAC/B,CAEA,sBAAO+sB,GACL,IAAK,IAAIC,KAAWR,EAAQI,UACVJ,EAAQI,UAAUI,GACxBH,iBAEd,CAEA,mBAAAptB,GACEY,SAASJ,iBAAiB,SAAUusB,EAAQO,gBAC9C,CAEA,oBAAAjtB,GACEO,SAASD,oBAAoB,SAAUosB,EAAQO,gBACjD,CAEA,eAAAF,GACE,IAAII,EAAW,EAAApwB,MAAMitB,uBAAyBzvB,KAAKgB,QAAQmO,OAGzDnP,KAAKgB,QAAQuoB,KAAOqJ,GACpB5yB,KAAKgB,QAAQsL,QAAUsmB,IACtB5yB,KAAK2B,GAAGoC,UAAUoJ,SAAS,YAE5BnN,KAAKyyB,oBACJzyB,KAAK2B,GAAmBuE,MAAMqjB,IAAM,GAAGvpB,KAAKgB,QAAQmO,WACrDnP,KAAK2B,GAAGoC,UAAUE,IAAI,UAGuB,mBAAlCjE,KAAKgB,QAAQkxB,kBACtBlyB,KAAKgB,QAAQkxB,iBAAiBtrB,KAAK5G,KAAM,WAKzC4yB,EAAW5yB,KAAKgB,QAAQuoB,MAAQvpB,KAAK2B,GAAGoC,UAAUoJ,SAAS,aAC7DnN,KAAKyyB,oBACJzyB,KAAK2B,GAAmBuE,MAAMqjB,IAAM,IACrCvpB,KAAK2B,GAAGoC,UAAUE,IAAI,WAGuB,mBAAlCjE,KAAKgB,QAAQkxB,kBACtBlyB,KAAKgB,QAAQkxB,iBAAiBtrB,KAAK5G,KAAM,YAKzC4yB,EAAW5yB,KAAKgB,QAAQsL,SAAWtM,KAAK2B,GAAGoC,UAAUoJ,SAAS,gBAChEnN,KAAKyyB,oBACLzyB,KAAK2B,GAAGoC,UAAUE,IAAI,cACrBjE,KAAK2B,GAAmBuE,MAAMqjB,IAASvpB,KAAKgB,QAAQsL,OAAStM,KAAKqyB,eAA9B,KAGQ,mBAAlCryB,KAAKgB,QAAQkxB,kBACtBlyB,KAAKgB,QAAQkxB,iBAAiBtrB,KAAK5G,KAAM,cAG/C,CAEA,iBAAAyyB,GAEEzyB,KAAK2B,GAAGoC,UAAUC,OAAO,WACzBhE,KAAK2B,GAAGoC,UAAUC,OAAO,UACzBhE,KAAK2B,GAAGoC,UAAUC,OAAO,aAC3B,EA3HF,YA8HImuB,EAAQI,UAAY,E,qFClKxB,cAIMtyB,EAA0B,CAAC,EAIjC,MAAa4yB,UAAc,EAAApxB,UAMzB,WAAAC,CAAYC,EAAsBX,GAChCY,MAAMD,EAAIX,EAAS6xB,GA4ErB,KAAAC,mBAAqB,KACnB9yB,KAAKuC,MAAM0F,UAAYjI,KAAK2B,GAAGY,MAC1BvC,KAAK+yB,MAAMhvB,UAAUoJ,SAAS,WACjCnN,KAAKgzB,mBAEP,MAAMC,EAAajzB,KAAKkzB,mBACxBlzB,KAAK+yB,MAAMhvB,UAAUE,IAAI,UACzBjE,KAAK+yB,MAAM7sB,MAAMkG,KAAO6mB,EAAW,IAAI,EAGzC,KAAAE,gCAAmCjxB,IAQjC,GANAlC,KAAKuC,MAAM0F,UAAYjI,KAAK2B,GAAGY,MAC/BvC,KAAK8B,YAAa,EAClB9B,KAAK2B,GAAGoC,UAAUE,IAAI,UACjBjE,KAAK+yB,MAAMhvB,UAAUoJ,SAAS,WACjCnN,KAAKgzB,mBAEQ,UAAX9wB,EAAEC,KAAkB,CACtB,MAAM8wB,EAAajzB,KAAKkzB,mBACxBlzB,KAAK+yB,MAAMhvB,UAAUE,IAAI,UACzBjE,KAAK+yB,MAAM7sB,MAAMkG,KAAO6mB,EAAW,IACrC,GAGF,KAAAG,oCAAsC,KACpC,GAAIpzB,KAAK8B,WAAY,CACd9B,KAAK+yB,MAAMhvB,UAAUoJ,SAAS,WACjCnN,KAAKgzB,mBAEP,MAAMC,EAAajzB,KAAKkzB,mBACxBlzB,KAAK+yB,MAAMhvB,UAAUE,IAAI,UACzBjE,KAAK+yB,MAAM7sB,MAAMkG,KAAO6mB,EAAW,KACnCjzB,KAAKuC,MAAM0F,UAAYjI,KAAK2B,GAAGY,KACjC,GAGF,KAAA8wB,4BAA8B,KAC5BrzB,KAAK8B,YAAa,EAClB9B,KAAK2B,GAAGoC,UAAUC,OAAO,SAAS,EAGpC,KAAAsvB,mCAAqC,KACnC,IAAKtzB,KAAK8B,WAAY,CACpB,MACMyxB,EAAiB,EADHze,SAAS5I,iBAAiBlM,KAAK2B,IAAIsqB,aACd,KACzC,GAAIjsB,KAAK+yB,MAAMhvB,UAAUoJ,SAAS,UAAW,CAC3C,MAAMG,EAAW,IAEjBtN,KAAK+yB,MAAM7sB,MAAMoF,WAAa,OAC9BvG,YAAW,KACT/E,KAAK+yB,MAAM7sB,MAAMoF,WAAa,wBACnBgC,gCACDA,8BACFA,iCACGA,uBAGXtN,KAAK+yB,MAAM7sB,MAAMsM,OAAS,IAC1BxS,KAAK+yB,MAAM7sB,MAAMmG,MAAQ,IACzBrM,KAAK+yB,MAAM7sB,MAAMqjB,IAAM,IACvBvpB,KAAK+yB,MAAM7sB,MAAMstB,WAAaD,CAAc,GAC3C,EACL,CACAvzB,KAAK+yB,MAAMhvB,UAAUC,OAAO,SAC9B,GA5IChE,KAAK2B,GAAW8xB,QAAUzzB,KAE3BA,KAAKgB,QAAU,OAAH,wBACP6xB,EAAM5tB,UACNjE,GAGLhB,KAAK8B,YAAa,EAClB9B,KAAK0zB,cACL1zB,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAAmEtE,EAAiC,CAAC,GAC/G,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS6xB,EAClC,CAEA,kBAAOttB,CAAY5D,GACjB,OAAQA,EAAW8xB,OACrB,CAEA,OAAAjuB,GACExF,KAAKyF,uBACLzF,KAAK2zB,eACJ3zB,KAAK2B,GAAW8xB,aAAU9tB,CAC7B,CAEA,mBAAAP,GACEpF,KAAK2B,GAAGiE,iBAAiB,SAAU5F,KAAK8yB,oBACxC9yB,KAAK2B,GAAGiE,iBAAiB,YAAa5F,KAAKmzB,iCAC3CnzB,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAKmzB,iCAC5CnzB,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKozB,qCACvCpzB,KAAK2B,GAAGiE,iBAAiB,YAAa5F,KAAKozB,qCAC3CpzB,KAAK2B,GAAGiE,iBAAiB,YAAa5F,KAAKozB,qCAC3CpzB,KAAK2B,GAAGiE,iBAAiB,UAAW5F,KAAKqzB,6BACzCrzB,KAAK2B,GAAGiE,iBAAiB,WAAY5F,KAAKqzB,6BAC1CrzB,KAAK2B,GAAGiE,iBAAiB,OAAQ5F,KAAKszB,oCACtCtzB,KAAK2B,GAAGiE,iBAAiB,WAAY5F,KAAKszB,oCAC1CtzB,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAKszB,mCAC9C,CAEA,oBAAA7tB,GACEzF,KAAK2B,GAAGoE,oBAAoB,SAAU/F,KAAK8yB,oBAC3C9yB,KAAK2B,GAAGoE,oBAAoB,YAAa/F,KAAKmzB,iCAC9CnzB,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAKmzB,iCAC/CnzB,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKozB,qCAC1CpzB,KAAK2B,GAAGoE,oBAAoB,YAAa/F,KAAKozB,qCAC9CpzB,KAAK2B,GAAGoE,oBAAoB,YAAa/F,KAAKozB,qCAC9CpzB,KAAK2B,GAAGoE,oBAAoB,UAAW/F,KAAKqzB,6BAC5CrzB,KAAK2B,GAAGoE,oBAAoB,WAAY/F,KAAKqzB,6BAC7CrzB,KAAK2B,GAAGoE,oBAAoB,OAAQ/F,KAAKszB,oCACzCtzB,KAAK2B,GAAGoE,oBAAoB,WAAY/F,KAAKszB,oCAC7CtzB,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAKszB,mCACjD,CAsEA,WAAAI,GACE1zB,KAAK+yB,MAAQ/sB,SAASC,cAAc,QACpCjG,KAAKuC,MAAQyD,SAASC,cAAc,QACpCjG,KAAK+yB,MAAMhvB,UAAUE,IAAI,SACzBjE,KAAKuC,MAAMwB,UAAUE,IAAI,SACzBjE,KAAK+yB,MAAM9pB,OAAOjJ,KAAKuC,OACvBvC,KAAK2B,GAAGqF,MAAMhH,KAAK+yB,MACrB,CAEA,YAAAY,GACE3zB,KAAK+yB,MAAM/uB,QACb,CAEA,gBAAAgvB,GACE,MACMO,GAAkB,EADJze,SAAS5I,iBAAiBlM,KAAK+yB,MAAMzsB,eAAe2lB,aAC9B,KAG1CjsB,KAAK+yB,MAAM7sB,MAAMoF,WAAa,4GAO9BtL,KAAK+yB,MAAM7sB,MAAMsM,OAAS,OAC1BxS,KAAK+yB,MAAM7sB,MAAMmG,MAAQ,OACzBrM,KAAK+yB,MAAM7sB,MAAMqjB,IAAM,QACvBvpB,KAAK+yB,MAAM7sB,MAAMstB,WAAaD,CAChC,CAEA,gBAAAL,GACE,MAAM7mB,EAAQrM,KAAK2B,GAAGoK,wBAAwBM,MAAQ,GAChDgM,EAAMub,WAAW5zB,KAAK2B,GAAGiC,aAAa,SAAW,IACjDoO,EAAM4hB,WAAW5zB,KAAK2B,GAAGiC,aAAa,SAAW,EAEvD,OADiBgwB,WAAW5zB,KAAK2B,GAAGY,OAASyP,IAAQqG,EAAMrG,GAC1C3F,CACnB,CAKA,WAAOQ,GACLgmB,EAAMxtB,KAAMW,SAASxC,iBAAiB,qBAAuD,CAAC,EAChG,EAnMF,S,yFCRA,eACA,QAyBA,IAAIvD,EAA8B,CAChCmO,SAAU,IACVylB,aAAc,IACdC,YAAa,SACbC,iBAAmB5yB,GAAgC,YAAYA,EAAG,MAGpE,MAAa6yB,UAAkB,EAAAvyB,UAU7B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASgzB,GAyErB,KAAA7lB,uBAAqC,EAAA3L,MAAM4L,UAAS,WAAYpO,KAAKstB,qBAAuB,GAAG,KAAKhf,KAAKtO,MAEzG,KAAAkwB,oBAAuBhuB,IACrB,MAAM4K,EAAU5K,EAAEkI,OAClB,IAAK,IAAIrK,EAAIi0B,EAAUC,UAAU/wB,OAAS,EAAGnD,GAAK,EAAGA,IAAK,CACxD,MAAMm0B,EAAYF,EAAUC,UAAUl0B,GAEtC,GAAI+M,IADM9G,SAASe,cAAc,YAAYmtB,EAAUvyB,GAAGR,GAAG,MAC1C,CACjBe,EAAE2B,iBACFqwB,EAAUvyB,GAAGwC,eAAe,CAACC,SAAU,WACvC,KACF,CACF,GAGF,KAAAkpB,oBAAsB,KAEpB0G,EAAUG,SAGV,IAAI5K,EAAM,EAAA/mB,MAAMitB,uBACdrjB,EAAO,EAAA5J,MAAMgtB,wBACb4E,EAAQhoB,EAAOvG,OAAO8F,WACtBW,EAASid,EAAM1jB,OAAOgG,YAGpBwoB,EAAgBL,EAAUM,cAAc/K,EAAK6K,EAAO9nB,EAAQF,GAChE,IAAK,IAAIrM,EAAI,EAAGA,EAAIs0B,EAAcnxB,OAAQnD,IAAK,CAC7C,IAAIm0B,EAAYG,EAAct0B,GACfm0B,EAAUK,OACV,GAEbL,EAAUM,SAIZN,EAAUK,OAASP,EAAUG,MAC/B,CAEA,IAAK,IAAIp0B,EAAI,EAAGA,EAAIi0B,EAAUS,gBAAgBvxB,OAAQnD,IAAK,CACzD,IAAIm0B,EAAYF,EAAUS,gBAAgB10B,GACtC20B,EAAWR,EAAUK,OACrBG,GAAY,GAAKA,IAAaV,EAAUG,SAE1CD,EAAUS,QACVT,EAAUK,QAAU,EAExB,CAEAP,EAAUS,gBAAkBJ,CAAa,EAzHxCr0B,KAAK2B,GAAWizB,YAAc50B,KAE/BA,KAAKgB,QAAU,OAAH,wBACPgzB,EAAU/uB,UACVjE,GAGLgzB,EAAUC,UAAUtqB,KAAK3J,MACzBg0B,EAAUhD,SACVgD,EAAUa,aACV70B,KAAKu0B,QAAU,EACfv0B,KAAKmB,GAAK6yB,EAAUa,WACpB70B,KAAKoF,sBACLpF,KAAKstB,qBACP,CAEA,mBAAWroB,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAqC,CAAC,GAC3F,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASgzB,EAClC,CAEA,kBAAOzuB,CAAY5D,GACjB,OAAQA,EAAWizB,WACrB,CAEA,OAAApvB,GACEwuB,EAAUC,UAAU3a,OAAO0a,EAAUC,UAAUtsB,QAAQ3H,MAAO,GAC9Dg0B,EAAUS,gBAAgBnb,OAAO0a,EAAUS,gBAAgB9sB,QAAQ3H,MAAO,GAC1Eg0B,EAAUc,iBAAiBxb,OAAO0a,EAAUc,iBAAiBntB,QAAQ3H,KAAK2B,IAAK,GAC/EqyB,EAAUhD,SACVhxB,KAAKyF,uBACWO,SAASe,cAAc/G,KAAKgB,QAAQ+yB,iBAAiB/zB,KAAK2B,GAAGR,KACrE4C,UAAUC,OAAOhE,KAAKgB,QAAQ8yB,aACrC9zB,KAAK2B,GAAWizB,iBAAcjvB,CACjC,CAEA,mBAAAP,GAC2B,IAArB4uB,EAAUhD,SACZnrB,OAAOD,iBAAiB,SAAU5F,KAAKstB,qBACvCznB,OAAOD,iBAAiB,SAAU5F,KAAKmO,wBACvCnI,SAASwE,KAAK5E,iBAAiB,QAAS5F,KAAKkwB,qBAEjD,CAEA,oBAAAzqB,GAC2B,IAArBuuB,EAAUhD,SACZnrB,OAAOE,oBAAoB,SAAU/F,KAAKstB,qBAC1CznB,OAAOE,oBAAoB,SAAU/F,KAAKmO,wBAC1CnI,SAASwE,KAAKzE,oBAAoB,QAAS/F,KAAKkwB,qBAEpD,CAsDA,cAAOnB,CAAQptB,GACb,MAAMqtB,EAAMrtB,EAAGoK,wBACTkjB,EAAUjpB,SAASkpB,gBACzB,MAAO,CACL3F,IAAKyF,EAAIzF,IAAM1jB,OAAOspB,YAAcF,EAAQG,UAC5ChjB,KAAM4iB,EAAI5iB,KAAOvG,OAAOwpB,YAAcJ,EAAQK,WAElD,CAEA,oBAAOgF,CAAc/K,EAAa6K,EAAe9nB,EAAgBF,GAC/D,IAAI2oB,EAAO,GACX,IAAK,IAAIh1B,EAAI,EAAGA,EAAIi0B,EAAUC,UAAU/wB,OAAQnD,IAAK,CACnD,IAAIm0B,EAAYF,EAAUC,UAAUl0B,GAChCi1B,EAAUzL,EAAM2K,EAAUlzB,QAAQ6yB,cAAgB,IAEtD,GAAIK,EAAUvyB,GAAGoK,wBAAwByG,OAAS,EAAG,CACnD,IAAIyiB,EAAQjB,EAAUjF,QAAQmF,EAAUvyB,IAAI4nB,IAC1C2L,EAASlB,EAAUjF,QAAQmF,EAAUvyB,IAAIyK,KACzC+oB,EAAUD,EAAShB,EAAUvyB,GAAGoK,wBAAwBM,MACxD+oB,EAAWH,EAAQf,EAAUvyB,GAAGoK,wBAAwByG,SAGxD0iB,EAASd,GACTe,EAAU/oB,GACV6oB,EAAQ3oB,GACR8oB,EAAWJ,IAIXD,EAAKprB,KAAKuqB,EAEd,CACF,CACA,OAAOa,CACT,CAEA,MAAAP,G,MAGE,GAFAR,EAAUc,iBAAmBd,EAAUc,iBAAiB7zB,QAAOsB,GAAkD,IAAzCA,EAAMwJ,wBAAwByG,SAElGwhB,EAAUc,iBAAiB,GAAI,CACjC,MAAMO,EAAUrvB,SAASe,cAAc/G,KAAKgB,QAAQ+yB,iBAAiBC,EAAUc,iBAAiB,GAAG3zB,KACnGk0B,SAAAA,EAAStxB,UAAUC,OAAOhE,KAAKgB,QAAQ8yB,aAEnCE,EAAUc,iBAAiB,GAAGF,aAAe50B,KAAKmB,GAAK6yB,EAAUc,iBAAiB,GAAGF,YAAYzzB,GACnG6yB,EAAUc,iBAAiBQ,QAAQt1B,KAAK2B,IAGxCqyB,EAAUc,iBAAiBnrB,KAAK3J,KAAK2B,GAEzC,MAEEqyB,EAAUc,iBAAiBnrB,KAAK3J,KAAK2B,IAEvC,MAAM4zB,EAAWv1B,KAAKgB,QAAQ+yB,iBAAiBC,EAAUc,iBAAiB,GAAG3zB,IAC7C,QAAhC,EAAA6E,SAASe,cAAcwuB,UAAS,SAAExxB,UAAUE,IAAIjE,KAAKgB,QAAQ8yB,YAC/D,CAEA,KAAAa,G,MAGE,GAFAX,EAAUc,iBAAmBd,EAAUc,iBAAiB7zB,QAAOsB,GAAkD,IAAzCA,EAAMwJ,wBAAwByG,SAElGwhB,EAAUc,iBAAiB,GAAI,CACjC,MAAMO,EAAUrvB,SAASe,cAAc/G,KAAKgB,QAAQ+yB,iBAAiBC,EAAUc,iBAAiB,GAAG3zB,KAKnG,GAJAk0B,SAAAA,EAAStxB,UAAUC,OAAOhE,KAAKgB,QAAQ8yB,aAEvCE,EAAUc,iBAAmBd,EAAUc,iBAAiB7zB,QAAQ2O,GAAMA,EAAEzO,IAAMnB,KAAK2B,GAAGR,KAElF6yB,EAAUc,iBAAiB,GAAI,CAEjC,MAAMS,EAAWv1B,KAAKgB,QAAQ+yB,iBAAiBC,EAAUc,iBAAiB,GAAG3zB,IAC7C,QAAhC,EAAA6E,SAASe,cAAcwuB,UAAS,SAAExxB,UAAUE,IAAIjE,KAAKgB,QAAQ8yB,YAC/D,CACF,CACF,EAhNF,cAmNIE,EAAUC,UAAY,GACtBD,EAAUS,gBAAkB,GAC5BT,EAAUc,iBAAmB,GAC7Bd,EAAUhD,OAAS,EACnBgD,EAAUa,WAAa,EACvBb,EAAUG,OAAS,C,2FCzPvB,eACA,SACA,QAeA,IAAIl0B,EAA+B,CACjC4lB,QAAS,GACTzlB,gBAAiB,CAAC,GAQpB,MAAamgB,UAAmB,EAAA9e,UAoB9B,WAAAC,CAAYC,EAAuBX,GACjCY,MAAMD,EAAIX,EAASuf,GA0ErB,KAAAiV,oBAAsB,KACpBx1B,KAAKy1B,kBAAkB,EAGzB,KAAAC,mBAAsBxzB,IACpBA,EAAE2B,iBACF,MAAM8xB,EAAiBzzB,EAAEkI,OAAyB4C,QAAQ,MAC1DhN,KAAK41B,qBAAqBD,GAC1BzzB,EAAEiO,iBAAiB,EAqCrB,KAAA5L,kBAAoB,KACdvE,KAAK6E,UAAY7E,KAAK6E,SAASF,SACjC3E,KAAKy1B,mBACLz1B,KAAK61B,qBACP,EA1HI71B,KAAK2B,GAAGoC,UAAUoJ,SAAS,qBAC9BnN,KAAK2B,GAAWm0B,aAAe91B,KAEhCA,KAAKgB,QAAU,OAAH,wBACPuf,EAAWtb,UACXjE,GAGLhB,KAAK+1B,WAAa/1B,KAAK2B,GAAGq0B,SAC1Bh2B,KAAK2B,GAAG+Y,UAAY,EACpB1a,KAAKi2B,QAAU,GAGfj2B,KAAKmF,iBACLnF,KAAKoF,sBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAAqEtE,EAAsC,CAAC,GACtH,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASuf,EAClC,CAEA,kBAAOhb,CAAY5D,GACjB,OAAQA,EAAWm0B,YACrB,CAEA,OAAAtwB,GAGExF,KAAKyF,uBACLzF,KAAK0F,kBACJ1F,KAAK2B,GAAWm0B,kBAAenwB,CAClC,CAEA,mBAAAP,GACEpF,KAAKI,gBAAgBoD,iBAAiB,qBAAqB2H,SAASxJ,IAClEA,EAAGiE,iBAAiB,QAAS5F,KAAK01B,oBAClC/zB,EAAGiE,iBAAiB,WAAY1D,IAChB,MAAVA,EAAES,KAAyB,UAAVT,EAAES,KAAiB3C,KAAK01B,mBAAmBxzB,EAAE,GAClE,IAEJlC,KAAK2B,GAAGiE,iBAAiB,SAAU5F,KAAKw1B,qBACxCx1B,KAAKyH,MAAM7B,iBAAiB,QAAS5F,KAAKuE,kBAC5C,CAEA,oBAAAkB,GACEzF,KAAKI,gBAAgBoD,iBAAiB,qBAAqB2H,SAASxJ,IAClEA,EAAGoE,oBAAoB,QAAS/F,KAAK01B,mBAAmB,IAE1D11B,KAAK2B,GAAGoE,oBAAoB,SAAU/F,KAAKw1B,qBAC3Cx1B,KAAKyH,MAAM1B,oBAAoB,QAAS/F,KAAKuE,kBAC/C,CAaA,YAAA2xB,CAAmBp2B,EAAQogB,GACzB,GAAIpgB,IAAMogB,EAAG,OAAO,EACpB,GAAS,MAALpgB,GAAkB,MAALogB,EAAW,OAAO,EACnC,GAAIpgB,EAAEoD,SAAWgd,EAAEhd,OAAQ,OAAO,EAClC,IAAK,IAAInD,EAAI,EAAGA,EAAID,EAAEoD,SAAUnD,EAAG,GAAID,EAAEC,KAAOmgB,EAAEngB,GAAI,OAAO,EAC7D,OAAO,CACT,CAEA,oBAAA61B,CAAqBD,GACnB,IAAKA,EAAc5xB,UAAUoJ,SAAS,cAAgBwoB,EAAc5xB,UAAUoJ,SAAS,YAAa,CAClG,MAAM5K,EAAQvC,KAAKi2B,QAAQzsB,MAAMjH,GAAUA,EAAM4zB,WAAaR,IACxDS,EAAyBp2B,KAAKq2B,oBAChCr2B,KAAK+1B,WAEP/1B,KAAKs2B,sBAAsB/zB,IAI3BvC,KAAKu2B,eACLv2B,KAAKw2B,aAAaj0B,IAGpBvC,KAAKy1B,mBAEL,MAAMgB,EAAuBz2B,KAAKq2B,qBACLr2B,KAAKk2B,aAChCE,EACAK,IAEuBz2B,KAAK2B,GAAGyH,cAAc,IAAIC,MAAM,SAAS,CAACgY,SAAQ,EAAMC,YAAW,EAAMC,UAAS,IAC7G,CACKvhB,KAAK+1B,YAAY/1B,KAAK6E,SAAS9C,OACtC,CASA,cAAAoD,GAEEnF,KAAK02B,QAAU12B,KAAK2B,GAAG2E,cAAcS,cAAc,SAGnD/G,KAAK22B,QAAU3wB,SAASC,cAAc,OACtCjG,KAAK22B,QAAQ5yB,UAAUE,IAAI,iBAAkB,eACzCjE,KAAKgB,QAAQ6kB,QAAQ3iB,OAAS,GAChClD,KAAK22B,QAAQ5yB,UAAUE,OAAOjE,KAAKgB,QAAQ6kB,QAAQ/E,MAAM,MAE3D9gB,KAAK2B,GAAGyX,OAAOpZ,KAAK22B,SAGpB,MAAMC,EAAa5wB,SAASC,cAAc,OAC1C2wB,EAAW7yB,UAAUE,IAAI,eACzBjE,KAAK22B,QAAQ1tB,OAAO2tB,GACpBA,EAAWrwB,YAAYvG,KAAK2B,IAExB3B,KAAK2B,GAAGk1B,UAAU72B,KAAK22B,QAAQ5yB,UAAUE,IAAI,YAEjDjE,KAAK82B,cAA2DjsB,MAAMC,KAAK9K,KAAK2B,GAAGuC,UAAUjD,QAAOU,GAAM,CAAC,SAAS,YAAYN,SAASM,EAAG6M,WAG5IxO,KAAKI,gBAAkB4F,SAASC,cAAc,MAC9CjG,KAAKI,gBAAgBe,GAAK,kBAAkB,EAAAqB,MAAM4D,SAClDpG,KAAKI,gBAAgB2D,UAAUE,IAAI,mBAAoB,mBACvDjE,KAAKI,gBAAgBiG,aAAa,OAAQ,WAC1CrG,KAAKI,gBAAgB22B,oBAAsB/2B,KAAK+1B,WAAW30B,WACvDpB,KAAK+1B,YAAY/1B,KAAKI,gBAAgB2D,UAAUE,IAAI,4BAGpDjE,KAAK82B,cAAc5zB,OAAS,GAC9BlD,KAAK82B,cAAc3rB,SAAS6rB,IAC1B,GAA2B,WAAvBA,EAAWxoB,QAAsB,CAEnC,MAAMmnB,EAAgB31B,KAAKi3B,+BAA+BD,EAAYh3B,KAAK+1B,WAAa,gBAAapwB,GACrG3F,KAAKk3B,mBAAmBF,EAAiCrB,EAC3D,MACK,GAA2B,aAAvBqB,EAAWxoB,QAAwB,CAE1C,MAAM2oB,EAAU,aAAa,EAAA30B,MAAM4D,OAC7BgxB,EAAcpxB,SAASC,cAAc,MAC3CmxB,EAAYrzB,UAAUE,IAAI,YAC1BmzB,EAAY1c,UAAY,EACxB0c,EAAY/wB,aAAa,OAAQ,SACjC+wB,EAAY/wB,aAAa,kBAAmB8wB,GAC5CC,EAAYnvB,UAAY,aAAakvB,0BAAgCH,EAAWpzB,aAAa,kBAC7F5D,KAAKI,gBAAgB6I,OAAOmuB,GAE5B,MAAMC,EAAgB,GACqBxsB,MAAMC,KAAKksB,EAAW9yB,UAAUjD,QAAOU,GAAqB,WAAfA,EAAG6M,UAC7ErD,SAAQ6rB,IACpB,MAAMrB,EAAgB31B,KAAKi3B,+BAA+BD,EAAY,mBAChEM,EAAU,aAAa,EAAA90B,MAAM4D,OACnCuvB,EAAcx0B,GAAKm2B,EACnBD,EAAc1tB,KAAK2tB,GACnBt3B,KAAKk3B,mBAAmBF,EAAYrB,EAAc,IAEpDyB,EAAY/wB,aAAa,YAAagxB,EAAcpW,KAAK,KAC3D,KAGJjhB,KAAK22B,QAAQ1tB,OAAOjJ,KAAKI,iBAGzBJ,KAAKyH,MAAQzB,SAASC,cAAc,SACpCjG,KAAKyH,MAAMtG,GAAK,kBAAoB,EAAAqB,MAAM4D,OAC1CpG,KAAKyH,MAAM1D,UAAUE,IAAI,kBAAmB,oBAC5CjE,KAAKyH,MAAMtF,KAAO,OAClBnC,KAAKyH,MAAM8vB,UAAW,EACtBv3B,KAAKyH,MAAMpB,aAAa,cAAerG,KAAKI,gBAAgBe,IAC5DnB,KAAKyH,MAAM+vB,aAAe,OAC1Bx3B,KAAKyH,MAAMgwB,aAAez3B,KAAK2B,GAAGuqB,aAAa,YAAY9qB,WACvDpB,KAAK2B,GAAGk1B,WAAU72B,KAAKyH,MAAMovB,UAAW,GAGxC72B,KAAK02B,UACP12B,KAAKyH,MAAMT,MAAMhH,KAAK02B,SACtB12B,KAAK02B,QAAQrwB,aAAa,MAAOrG,KAAKyH,MAAMtG,IAC5CnB,KAAK02B,QAAQv1B,GAAK,kBAAoB,EAAAqB,MAAM4D,OAC5CpG,KAAKI,gBAAgBiG,aAAa,kBAAmBrG,KAAK02B,QAAQv1B,KAgCpE,MAAMu2B,EAAQ13B,KAAK2B,GAAGg2B,WACtB,IAAK,IAAI53B,EAAI,EAAGA,EAAI23B,EAAMx0B,SAAUnD,EAAE,CACpC,MAAM63B,EAAOF,EAAM33B,GACf63B,EAAK3K,KAAKna,WAAW,UACvB9S,KAAKyH,MAAMpB,aAAauxB,EAAK3K,KAAM2K,EAAKr1B,MAC5C,CAGAvC,KAAKyH,MAAMpB,aAAa,OAAQ,YAChCrG,KAAKyH,MAAMowB,aAAe,QAC1B73B,KAAKyH,MAAMpB,aAAa,YAAarG,KAAKI,gBAAgBe,IAC1DnB,KAAKyH,MAAMpB,aAAa,gBAAiBrG,KAAKI,gBAAgBe,IAC9DnB,KAAKyH,MAAMiO,YAAc,IAEzB1V,KAAK22B,QAAQmB,QAAQ93B,KAAKyH,OAC1BzH,KAAKy1B,mBAGL,MAAMsC,EAAe/xB,SAASgyB,gBAAgB,6BAA8B,OAU5E,GATAD,EAAah0B,UAAUE,IAAI,SAC3B8zB,EAAa1xB,aAAa,SAAU,MACpC0xB,EAAa1xB,aAAa,QAAS,MACnC0xB,EAAa1xB,aAAa,UAAW,aACrC0xB,EAAaE,WAAa,OAC1BF,EAAa9vB,UAAY,kEACzBjI,KAAK22B,QAAQmB,QAAQC,IAGhB/3B,KAAK2B,GAAGk1B,SAAU,CACrB,MAAMz2B,EAAkB,OAAH,UAAOJ,KAAKgB,QAAQZ,iBACzCA,EAAgBG,cAAe,EAC/B,MAAM23B,EAAgB93B,EAAgBqZ,UAChC0e,EAAiB/3B,EAAgBuZ,WAEvCvZ,EAAgBqZ,UAAa9X,IAC3B,MAAMy2B,EAAiBp4B,KAAKI,gBAAgB2G,cAAc,aAC1D,GAAIqxB,IAEF,EAAA51B,MAAM61B,SAAU,EAChBr4B,KAAK6E,SAASmjB,aAAe,IAAIoQ,EAAehxB,WAAWlD,UAAUyD,QAAQywB,GAC7Ep4B,KAAK6E,SAASsjB,oBACd,EAAA3lB,MAAM61B,SAAU,EAEZr4B,KAAK6E,SAAS+kB,cAAc,CAC9B,IAAIiK,EACFuE,EAAersB,wBAAwBwd,IACtCvpB,KAAKI,gBAAgC2L,wBAAwBwd,IAChEsK,GAAgB7zB,KAAKI,gBAAgBiR,aAAe,EACpDrR,KAAKI,gBAAgBywB,UAAYgD,CACnC,CAEF7zB,KAAKyH,MAAMowB,aAAe,OAEtBK,GAA0C,mBAAlBA,GAC1BA,EAActxB,KAAK5G,KAAK6E,SAAU7E,KAAK2B,GAAG,EAG9CvB,EAAgBuZ,WAAchY,IAC5B3B,KAAKyH,MAAMowB,aAAe,QAEtBM,GAA4C,mBAAnBA,GAC3BA,EAAevxB,KAAK5G,KAAK6E,SAAU7E,KAAK2B,GAAG,EAG/CvB,EAAgBE,cAAe,EAC/BN,KAAK6E,SAAW,EAAAgC,SAASxB,KAAKrF,KAAKyH,MAAOrH,EAC5C,CAEAJ,KAAK61B,qBAGD71B,KAAK02B,SAAS12B,KAAKyH,MAAMT,MAAMhH,KAAK02B,QAC1C,CAEA,kBAAAQ,CAAmBF,EAA+BrB,GAChD31B,KAAKi2B,QAAQtsB,KAAK,CAAEhI,GAAIq1B,EAAYb,SAAUR,GAChD,CAEA,eAAAjwB,GACE1F,KAAK22B,QAAQ5vB,cAAc,UAAU/C,SACrChE,KAAKyH,MAAMzD,SACXhE,KAAKI,gBAAgB4D,SACrBhE,KAAK22B,QAAQvd,OAAOpZ,KAAK2B,IACzB3B,KAAK22B,QAAQ3yB,QACf,CAEA,8BAAAizB,CAA+BD,EAAY70B,G,MACzC,MAAMuE,EAAKV,SAASC,cAAc,MAClCS,EAAGL,aAAa,OAAQ,UACpB2wB,EAAWH,WACbnwB,EAAG3C,UAAUE,IAAI,YACjByC,EAAG4xB,aAAe,QAEP,oBAATn2B,GAA4BuE,EAAG3C,UAAUE,IAAI9B,GAEjD,MAAMo2B,EAAOvyB,SAASC,cAAc,QAChCjG,KAAK+1B,WACPwC,EAAKtwB,UAAY,gCACf+uB,EAAWH,SAAW,uBAAyB,YACvCG,EAAW/uB,2BAErBswB,EAAKtwB,UAAY+uB,EAAW/uB,UAC9BvB,EAAGH,YAAYgyB,GAEf,MAAMC,EAAUxB,EAAWpzB,aAAa,aAClCiiB,EAA0C,QAAhC,EAAAmR,EAAWpzB,aAAa,gBAAQ,eAAEkd,QAClD,GAAI0X,EAAS,CACX,MAAMnwB,EAAMrC,SAASC,cAAc,OAC/B4f,GAASxd,EAAItE,UAAUE,IAAI4hB,GAC/Bxd,EAAIC,IAAMkwB,EACVnwB,EAAI4vB,WAAa,OACjBvxB,EAAGoxB,QAAQzvB,EACb,CAGA,OADArI,KAAKI,gBAAgB6I,OAAOvC,GACrBA,CACT,CAEA,YAAA8vB,CAAaj0B,GACXA,EAAMZ,GAAG82B,UAAW,EACpBl2B,EAAM4zB,SAASpyB,UAAUE,IAAI,YAC7B1B,EAAM4zB,SAAS9R,aAAe,OAC9B,MAAM5a,EAA6BlH,EAAM4zB,SAASpvB,cAAc,0BAC5D0C,IAAUA,EAASC,SAAU,EACnC,CAEA,cAAAgvB,CAAen2B,GACbA,EAAMZ,GAAG82B,UAAW,EACpBl2B,EAAM4zB,SAASpyB,UAAUC,OAAO,YAChCzB,EAAM4zB,SAAS9R,aAAe,QAC9B,MAAM5a,EAA6BlH,EAAM4zB,SAASpvB,cAAc,0BAC5D0C,IAAUA,EAASC,SAAU,EACnC,CAEA,YAAA6sB,GACEv2B,KAAKi2B,QAAQ9qB,SAAQ5I,GAASvC,KAAK04B,eAAen2B,IACpD,CAEA,gBAAAo2B,CAAiBp2B,GAEf,OADmBvC,KAAKq2B,oBACNnuB,MAAM0wB,GAAcA,IAAcr2B,EAAMZ,GAAGY,OAC/D,CAEA,qBAAA+zB,CAAsB/zB,GAChBvC,KAAK24B,iBAAiBp2B,GACxBvC,KAAK04B,eAAen2B,GAEpBvC,KAAKw2B,aAAaj0B,EACtB,CAEA,mBAAAs2B,GAEE,OAAOhuB,MAAM0U,UAAUte,OAAO2F,KAAK5G,KAAK2B,GAAGm3B,iBAAkB9B,GAAkCA,GACjG,CAEA,gBAAAvB,GACE,MAAMsD,EAAc/4B,KAAK64B,sBAEnBG,EADSh5B,KAAKi2B,QAAQh1B,QAAQsB,GAAUw2B,EAAYpxB,QAAQpF,EAAMZ,KAAO,IAC1Dof,KAAKxe,GAAUA,EAAM4zB,SAASpvB,cAAc,QAAQ+B,UAAUmd,SAEnF,GAAqB,IAAjB+S,EAAM91B,OAAc,CACtB,MAAM+1B,EAAyCj5B,KAAK2B,GAAGoF,cAAc,mBACrE,GAAIkyB,GAAqD,KAA9BA,EAAoB12B,MAE7C,YADAvC,KAAKyH,MAAMlF,MAAQ02B,EAAoBnwB,UAG3C,CACA9I,KAAKyH,MAAMlF,MAAQy2B,EAAM/X,KAAK,KAChC,CAEA,kBAAA4U,GACE71B,KAAKi2B,QAAQ9qB,SAAS5I,IACpB,MAAM22B,EAAmB32B,EAAMZ,GAAG82B,SAC5BU,EAAuB52B,EAAM4zB,SAASpvB,cAAc,0BACtDoyB,IAAIA,EAAGzvB,QAAUwvB,GACjBA,EACFl5B,KAAKo5B,gBAAgBp5B,KAAKI,gBAAiBmC,EAAM4zB,WAGjD5zB,EAAM4zB,SAASpyB,UAAUC,OAAO,YAChCzB,EAAM4zB,SAAS9R,aAAe,QAChC,GAEJ,CAEA,eAAA+U,CAAgBC,EAAiB3yB,GAC1BA,IACA1G,KAAK+1B,YAAYsD,EAAG71B,iBAAiB,eAAe2H,SAAQzE,GAAMA,EAAG3C,UAAUC,OAAO,cAC3F0C,EAAG3C,UAAUE,IAAI,YACjByC,EAAG2d,aAAe,OACpB,CAEA,iBAAAgS,GACE,OAAOr2B,KAAK64B,sBAAsB9X,KAAKiW,GAAeA,EAAWz0B,OACnE,EArcF,c,wFC3BA,eACA,QAmDMtC,EAA4B,CAChCq5B,KAAM,OACNC,WAAW,EACXC,gBAAiB,OACjB5f,WAAY,IACZC,YAAa,IACbL,YAAa,KACbC,UAAW,KACXC,aAAc,KACdC,WAAY,KACZmW,kBAAkB,GAGpB,MAAa2J,UAAgB,EAAAh4B,UAuB3B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASy4B,GAkJb,KAAAC,sBAAyBx3B,IAE/B,IAAKlC,KAAKgB,QAAQu4B,WAAav5B,KAAK25B,qBAAuB35B,KAAK45B,qBAC9D,OAGG55B,KAAK65B,WACR75B,KAAK85B,WAAW53B,GAGlBlC,KAAK+5B,gBAAgB73B,GAErB,IAAI83B,EAAch6B,KAAKi6B,MAAQj6B,KAAKk6B,cAEpC,MAAMC,EAAgBH,EAAc,EAAI,QAAU,OAElDA,EAAchqB,KAAKgC,IAAIhS,KAAKo6B,OAAQpqB,KAAKC,IAAI+pB,IACzCh6B,KAAKgB,QAAQs4B,OAASa,IACxBH,EAAc,GAOhB,IAAIK,EAAaL,EACbM,EAAkB,oBACI,UAAtBt6B,KAAKgB,QAAQs4B,OACfgB,EAAkB,mBAClBD,GAAcA,GAGhBr6B,KAAKu6B,YAAcvqB,KAAKgC,IAAI,EAAGgoB,EAAch6B,KAAKo6B,QAElDp6B,KAAK2B,GAAGuE,MAAMsF,UAAY,GAAG8uB,gBAA8BD,OAC3Dr6B,KAAK4vB,SAAS1pB,MAAMqF,QAAUvL,KAAKu6B,YAAYn5B,UAAU,EAGnD,KAAAo5B,yBAA2B,KAC7Bx6B,KAAK65B,YACH75B,KAAKu6B,YAAc,GACrBv6B,KAAKgD,OAELhD,KAAKua,cAEPva,KAAK65B,WAAY,EACjB75B,KAAK45B,sBAAuB,EAC9B,EAGM,KAAAa,iBAAoBv4B,IAC1B,GAAIlC,KAAK2E,OAAQ,CAEf,IAAK3E,KAAKgB,QAAQu4B,WAAav5B,KAAK25B,qBAAuB35B,KAAK45B,qBAC9D,OAGG55B,KAAK65B,WACR75B,KAAK85B,WAAW53B,GAGlBlC,KAAK+5B,gBAAgB73B,GAErB,IAAI83B,EAAch6B,KAAKi6B,MAAQj6B,KAAKk6B,cAEhCC,EAAgBH,EAAc,EAAI,QAAU,OAEhDA,EAAchqB,KAAKgC,IAAIhS,KAAKo6B,OAAQpqB,KAAKC,IAAI+pB,IACzCh6B,KAAKgB,QAAQs4B,OAASa,IACxBH,EAAc,GAEhB,IAAIK,GAAcL,EACQ,UAAtBh6B,KAAKgB,QAAQs4B,OACfe,GAAcA,GAGhBr6B,KAAKu6B,YAAcvqB,KAAKgC,IAAI,EAAG,EAAIgoB,EAAch6B,KAAKo6B,QAEtDp6B,KAAK2B,GAAGuE,MAAMsF,UAAY,cAAc6uB,OACxCr6B,KAAK4vB,SAAS1pB,MAAMqF,QAAUvL,KAAKu6B,YAAYn5B,UACjD,GAGM,KAAAs5B,oBAAsB,KACxB16B,KAAK2E,QAAU3E,KAAK65B,YAClB75B,KAAKu6B,YAAc,GACrBv6B,KAAKsa,aAELta,KAAK+B,QAEP/B,KAAK65B,WAAY,EACjB75B,KAAK45B,sBAAuB,EAC9B,EAIM,KAAAe,yBAA4Bz4B,IACbA,EAAEkI,OAAO4C,QAAQ,oBACjBhN,KAAK25B,qBACxB35B,KAAK+B,OACP,EAGM,KAAAknB,oBAAsB,KAExBjpB,KAAK46B,kBAAoB/0B,OAAO8F,aAC9B9F,OAAO8F,WAAa,IACtB3L,KAAKgD,OAELhD,KAAK+B,SAGT/B,KAAK46B,gBAAkB/0B,OAAO8F,WAC9B3L,KAAK66B,iBAAmBh1B,OAAOgG,WAAW,EA0C5C,KAAA7I,KAAO,MACe,IAAhBhD,KAAK2E,SACT3E,KAAK2E,QAAS,EAE0B,mBAA7B3E,KAAKgB,QAAQwY,aACtBxZ,KAAKgB,QAAQwY,YAAY5S,KAAK5G,KAAMA,KAAK2B,IAGvC3B,KAAK25B,qBAEP35B,KAAK2B,GAAGuE,MAAMsF,UAAY,gBAC1BxL,KAAK86B,uBACL96B,KAAK4vB,SAAS1pB,MAAMqH,QAAU,SAI1BvN,KAAKgB,QAAQ8uB,kBAAkB9vB,KAAK+6B,wBACnC/6B,KAAK65B,WAAiC,GAApB75B,KAAKu6B,aAAkBv6B,KAAKsa,cACrD,EAMF,KAAAvY,MAAQ,KACN,IAAoB,IAAhB/B,KAAK2E,OAOT,GANA3E,KAAK2E,QAAS,EAE2B,mBAA9B3E,KAAKgB,QAAQ0Y,cACtB1Z,KAAKgB,QAAQ0Y,aAAa9S,KAAK5G,KAAMA,KAAK2B,IAGxC3B,KAAK25B,oBAAqB,CAC5B,MAAMU,EAAmC,SAAtBr6B,KAAKgB,QAAQs4B,KAAkB,QAAU,OAC5Dt5B,KAAK2B,GAAGuE,MAAMsF,UAAY,cAAc6uB,IAC1C,MAGEr6B,KAAK86B,uBACA96B,KAAK65B,WAAiC,GAApB75B,KAAKu6B,YAG1Bv6B,KAAK4vB,SAAS1pB,MAAMqH,QAAU,OAF9BvN,KAAKua,aAIT,EAxVCva,KAAK2B,GAAWq5B,UAAYh7B,KAE7BA,KAAKgB,QAAU,OAAH,wBACPy4B,EAAQx0B,UACRjE,GAGLhB,KAAKmB,GAAKnB,KAAK2B,GAAGR,GAClBnB,KAAK2E,QAAS,EACd3E,KAAKi7B,QAAUj7B,KAAK2B,GAAGoC,UAAUoJ,SAAS,iBAC1CnN,KAAK65B,WAAY,EAEjB75B,KAAK46B,gBAAkB/0B,OAAO8F,WAC9B3L,KAAK66B,iBAAmBh1B,OAAOgG,YAC/B7L,KAAKk7B,iBACLl7B,KAAKm7B,oBACLn7B,KAAKoF,sBACLpF,KAAKo7B,gBACLp7B,KAAKq7B,cACL5B,EAAQ6B,UAAU3xB,KAAK3J,KACzB,CAEA,mBAAWiF,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAmC,CAAC,GACzF,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASy4B,EAClC,CAEA,kBAAOl0B,CAAY5D,GACjB,OAAQA,EAAWq5B,SACrB,CAEA,OAAAx1B,GACExF,KAAKyF,uBACLzF,KAAK86B,uBACL96B,KAAK4vB,SAASxoB,WAAWC,YAAYrH,KAAK4vB,UAC1C5vB,KAAKu7B,WAAWn0B,WAAWC,YAAYrH,KAAKu7B,YAC3Cv7B,KAAK2B,GAAWq5B,eAAYr1B,EAC7B3F,KAAK2B,GAAGuE,MAAMsF,UAAY,GAC1B,MAAMJ,EAAQquB,EAAQ6B,UAAU3zB,QAAQ3H,MACpCoL,GAAS,GACXquB,EAAQ6B,UAAUhiB,OAAOlO,EAAO,EAEpC,CAEQ,cAAA8vB,GACNl7B,KAAK4vB,SAAW5pB,SAASC,cAAc,OACvCjG,KAAK4vB,SAAS7rB,UAAUE,IAAI,mBAC5BjE,KAAK4vB,SAAShqB,iBAAiB,QAAS5F,KAAK+B,OAC7CiE,SAASwE,KAAKjE,YAAYvG,KAAK4vB,SACjC,CAEQ,mBAAAxqB,GAC2B,IAA7Bq0B,EAAQ6B,UAAUp4B,QACpB8C,SAASwE,KAAK5E,iBAAiB,QAAS5F,KAAKkwB,qBAE/C,IAAIsL,EAA8B,KAClCx7B,KAAKu7B,WAAW31B,iBAAiB,YAAa5F,KAAK05B,sBAAuB8B,GAC1Ex7B,KAAKu7B,WAAW31B,iBAAiB,WAAY5F,KAAKw6B,0BAClDx6B,KAAK4vB,SAAShqB,iBAAiB,YAAa5F,KAAKy6B,iBAAkBe,GACnEx7B,KAAK4vB,SAAShqB,iBAAiB,WAAY5F,KAAK06B,qBAChD16B,KAAK2B,GAAGiE,iBAAiB,YAAa5F,KAAKy6B,iBAAkBe,GAC7Dx7B,KAAK2B,GAAGiE,iBAAiB,WAAY5F,KAAK06B,qBAC1C16B,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAK26B,0BAEnC36B,KAAKi7B,SACPp1B,OAAOD,iBAAiB,SAAU5F,KAAKipB,oBAE3C,CAEQ,oBAAAxjB,GAC2B,IAA7Bg0B,EAAQ6B,UAAUp4B,QACpB8C,SAASwE,KAAKzE,oBAAoB,QAAS/F,KAAKkwB,qBAElDlwB,KAAKu7B,WAAWx1B,oBAAoB,YAAa/F,KAAK05B,uBACtD15B,KAAKu7B,WAAWx1B,oBAAoB,WAAY/F,KAAKw6B,0BACrDx6B,KAAK4vB,SAAS7pB,oBAAoB,YAAa/F,KAAKy6B,kBACpDz6B,KAAK4vB,SAAS7pB,oBAAoB,WAAY/F,KAAK06B,qBACnD16B,KAAK2B,GAAGoE,oBAAoB,YAAa/F,KAAKy6B,kBAC9Cz6B,KAAK2B,GAAGoE,oBAAoB,WAAY/F,KAAK06B,qBAC7C16B,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAK26B,0BAGtC36B,KAAKi7B,SACPp1B,OAAOE,oBAAoB,SAAU/F,KAAKipB,oBAE9C,CAEQ,mBAAAiH,CAAoBhuB,GAC1B,MAAM4K,EAAU5K,EAAEkI,OAAO4C,QAAQ,oBACjC,GAAI9K,EAAEkI,QAAU0C,EAAS,CACvB,MAAM2uB,EAAY,EAAAj5B,MAAMknB,iBAAiB5c,GACnC4uB,EAAmB11B,SAAS2jB,eAAe8R,GAAmBT,UAChEU,GACFA,EAAgB14B,KAAK8J,GAEvB5K,EAAE2B,gBACJ,CACF,CAGQ,UAAAi2B,CAAW53B,GACjB,MAAM2O,EAAU3O,EAAE6Q,cAAc,GAAGlC,QACnC7Q,KAAK65B,WAAY,EACjB75B,KAAKk6B,cAAgBrpB,EACrB7Q,KAAKi6B,MAAQj6B,KAAKk6B,cAClBl6B,KAAK27B,MAAQtsB,KAAKC,MAClBtP,KAAKo6B,OAASp6B,KAAK2B,GAAGoK,wBAAwBM,MAC9CrM,KAAK4vB,SAAS1pB,MAAMqH,QAAU,QAC9BvN,KAAK47B,kBAAoB57B,KAAK2E,OAAS3E,KAAK2B,GAAGkvB,UAAY,EAAAruB,MAAMitB,uBACjEzvB,KAAK45B,sBAAuB,CAC9B,CAGQ,eAAAG,CAAgB73B,GACtB,MAAM2O,EAAU3O,EAAE6Q,cAAc,GAAGlC,QAC7BgrB,EAAmB77B,KAAK2E,OAAS3E,KAAK2B,GAAGkvB,UAAY,EAAAruB,MAAMitB,uBACjEzvB,KAAK87B,OAAS9rB,KAAKC,IAAIjQ,KAAKi6B,MAAQppB,GACpC7Q,KAAKi6B,MAAQppB,EACb7Q,KAAK+7B,UAAY/7B,KAAK87B,QAAUzsB,KAAKC,MAAQtP,KAAK27B,OAClD37B,KAAK27B,MAAQtsB,KAAKC,MACdtP,KAAK47B,oBAAsBC,IAC7B77B,KAAK45B,sBAAuB,EAEhC,CAsHQ,aAAAwB,GACoB,UAAtBp7B,KAAKgB,QAAQs4B,OACft5B,KAAK2B,GAAGoC,UAAUE,IAAI,iBACtBjE,KAAKu7B,WAAWx3B,UAAUE,IAAI,iBAElC,CAEQ,cAAA+3B,GACNh8B,KAAK2B,GAAGoC,UAAUC,OAAO,iBACzBhE,KAAKu7B,WAAWx3B,UAAUC,OAAO,gBACnC,CAEQ,WAAAq3B,GACFr7B,KAAK25B,qBAAqB35B,KAAKgD,MACrC,CAEQ,iBAAA22B,GACN,OAAO35B,KAAKi7B,SAAWp1B,OAAO8F,WAAa,GAC7C,CAEQ,iBAAAwvB,GACN,MAAMI,EAAav1B,SAASC,cAAc,OAC1Cs1B,EAAWx3B,UAAUE,IAAI,eACzBs3B,EAAWr1B,MAAMmG,MAAQrM,KAAKgB,QAAQw4B,gBACtCxzB,SAASwE,KAAKjE,YAAYg1B,GAC1Bv7B,KAAKu7B,WAAaA,CACpB,CAEQ,qBAAAR,GACN/0B,SAASwE,KAAKtE,MAAM0G,SAAW,QACjC,CAEQ,oBAAAkuB,GACN90B,SAASwE,KAAKtE,MAAM0G,SAAW,EACjC,CAoDQ,UAAA0N,GACNta,KAAKi8B,oBACLj8B,KAAKk8B,mBACP,CAEQ,WAAA3hB,GACNva,KAAKm8B,qBACLn8B,KAAKo8B,oBACP,CAEQ,iBAAAH,GACN,IAAII,EAAwC,SAAtBr8B,KAAKgB,QAAQs4B,MAAmB,EAAI,EACtDt5B,KAAK65B,YACPwC,EACwB,SAAtBr8B,KAAKgB,QAAQs4B,KACT+C,EAAkBr8B,KAAKu6B,YACvB8B,EAAkBr8B,KAAKu6B,aAE/B,MAAMjtB,EAAWtN,KAAKgB,QAAQ4Y,WAE9B5Z,KAAK2B,GAAGuE,MAAMoF,WAAa,OAC3BtL,KAAK2B,GAAGuE,MAAMsF,UAAY,cAAmC,IAAlB6wB,EAAyB,KACpEt3B,YAAW,KACT/E,KAAK2B,GAAGuE,MAAMoF,WAAa,aAAagC,WAExCtN,KAAK2B,GAAGuE,MAAMsF,UAAY,eAAe,GACxC,GACHzG,YAAW,KAC6B,mBAA3B/E,KAAKgB,QAAQyY,WAA0BzZ,KAAKgB,QAAQyY,UAAU7S,KAAK5G,KAAMA,KAAK2B,GAAG,GAC3F2L,EACL,CAEQ,kBAAA6uB,GACN,MAAMG,EAAmC,SAAtBt8B,KAAKgB,QAAQs4B,MAAmB,EAAI,EACvD,IAAI+C,EAAkB,EAClBr8B,KAAK65B,YAEiB,SAAtB75B,KAAKgB,QAAQs4B,KACIt5B,KAAKu6B,YACLv6B,KAAKu6B,aAG1B,MAAMjtB,EAAWtN,KAAKgB,QAAQ6Y,YAC9B7Z,KAAK2B,GAAGuE,MAAMoF,WAAa,aAAagC,WAExCtN,KAAK2B,GAAGuE,MAAMsF,UAAY,cAA8B,IAAb8wB,EAAoB,KAC/Dv3B,YAAW,KAC8B,mBAA5B/E,KAAKgB,QAAQ2Y,YAA2B3Z,KAAKgB,QAAQ2Y,WAAW/S,KAAK5G,KAAMA,KAAK2B,GAAG,GAC7F2L,EACL,CAEQ,iBAAA4uB,GACN,IAAIx0B,EAAQ,EACR1H,KAAK65B,UACPnyB,EAAQ1H,KAAKu6B,YAEbv6B,KAAK4vB,SAAS1pB,MAAMqH,QAAU,QAEhC,MAAMD,EAAWtN,KAAKgB,QAAQ4Y,WAE9B5Z,KAAK4vB,SAAS1pB,MAAMoF,WAAa,OACjCtL,KAAK4vB,SAAS1pB,MAAMqF,QAAU7D,EAAMtG,WAEpC2D,YAAW,KACT/E,KAAK4vB,SAAS1pB,MAAMoF,WAAa,WAAWgC,WAE5CtN,KAAK4vB,SAAS1pB,MAAMqF,QAAU,GAAG,GAChC,EACL,CAEQ,kBAAA6wB,GACN,MAAM9uB,EAAWtN,KAAKgB,QAAQ6Y,YAE9B7Z,KAAK4vB,SAAS1pB,MAAMoF,WAAa,WAAWgC,WAE5CtN,KAAK4vB,SAAS1pB,MAAMqF,QAAU,IAC9BxG,YAAW,KACT/E,KAAK4vB,SAAS1pB,MAAMqH,QAAU,MAAM,GACnCD,EACL,EAncF,YAscImsB,EAAQ6B,UAAY,E,uFCvgBxB,eACA,QA2CA,IAAIr7B,EAA2B,CAC7B6N,YAAY,EACZ0E,OAAQ,IACRlF,SAAU,IACVivB,SAAU,IACVC,cAAc,EACdC,cAAc,EACdC,mBAAoB,MAGtB,MAAaC,UAAe,EAAAl7B,UAc1B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAAS27B,GAkJb,KAAA1rB,sBAAyB/O,IAC/B,MAAMP,EAAmBO,EAAEkI,OAAQ9D,cAC7Bs2B,EAAY,IAAIj7B,EAAGyF,WAAWlD,UAAUyD,QAAQhG,GACtD3B,KAAK68B,eAAgB,EACrB78B,KAAKwU,IAAIooB,EAAU,EAGb,KAAAE,sBAAwB,KAC9B98B,KAAK+8B,UAAW,EACK,MAAjB/8B,KAAKu8B,UACPv8B,KAAKg9B,QAAO,EACd,EAGM,KAAAC,sBAAwB,KAC9Bj9B,KAAKk9B,UAAW,EACK,MAAjBl9B,KAAKu8B,UACPv8B,KAAKg9B,QAAO,EACd,EAGM,KAAAG,sBAAwB,KAC9Bn9B,KAAK+8B,UAAW,EACV/8B,KAAKgB,QAAQw7B,cAAgBx8B,KAAKk9B,WAAal9B,KAAKo9B,YACxDp9B,KAAK0H,OACP,EAGM,KAAA21B,sBAAwB,KAC9Br9B,KAAKk9B,UAAW,EACVl9B,KAAKgB,QAAQy7B,cAAgBz8B,KAAK+8B,WAAa/8B,KAAKo9B,YACxDp9B,KAAK0H,OACP,EAGM,KAAA41B,gBAAkB,KACxB,MAAMC,EAAav9B,KAAKw9B,QAAQz2B,cAAc,WAC9C,IAAI02B,EAAiB,IAAIF,EAAWn2B,WAAWlD,UAAUyD,QAAQ41B,GAC7Dv9B,KAAK09B,QAAQx6B,SAAWu6B,EAAiB,EAC3CA,EAAiB,EAEjBA,GAAkB,EACpBz9B,KAAKwU,IAAIipB,EAAe,EAsI1B,KAAAE,MAAQ,KACN39B,KAAKg9B,QAAO,EAAM,EAMpB,KAAAt1B,MAAQ,KACN6H,cAAcvP,KAAKu8B,UACnBv8B,KAAKu8B,SAAW9sB,YACdzP,KAAKs9B,gBACLt9B,KAAKgB,QAAQsM,SAAWtN,KAAKgB,QAAQu7B,UAEvCv8B,KAAKo9B,YAAa,CAAK,EAMzB,KAAAtsB,KAAO,KACL,IAAI8sB,EAAW59B,KAAKyD,YAAc,EAE9Bm6B,GAAY59B,KAAK09B,QAAQx6B,OAAQ06B,EAAW,EACvCA,EAAW,IAAGA,EAAW59B,KAAK09B,QAAQx6B,OAAS,GACxDlD,KAAKwU,IAAIopB,EAAS,EAMpB,KAAA7sB,KAAO,KACL,IAAI6sB,EAAW59B,KAAKyD,YAAc,EAE9Bm6B,GAAY59B,KAAK09B,QAAQx6B,OAAQ06B,EAAW,EACvCA,EAAW,IAAGA,EAAW59B,KAAK09B,QAAQx6B,OAAS,GACxDlD,KAAKwU,IAAIopB,EAAS,EApWjB59B,KAAK2B,GAAWk8B,SAAW79B,KAE5BA,KAAKgB,QAAU,OAAH,wBACP27B,EAAO13B,UACPjE,GAILhB,KAAKu8B,SAAW,KAChBv8B,KAAKo9B,YAAa,EAClBp9B,KAAK+8B,UAAW,EAChB/8B,KAAKk9B,UAAW,EAChBl9B,KAAK68B,eAAgB,EAGrB78B,KAAKw9B,QAAUx9B,KAAK2B,GAAGoF,cAAc,WACrC/G,KAAK09B,QAAU7yB,MAAMC,KAAK9K,KAAKw9B,QAAQh6B,iBAAiB,OACxDxD,KAAKyD,YAAczD,KAAK09B,QAAQI,WAAUp3B,GAAMA,EAAG3C,UAAUoJ,SAAS,aAE5C,IAAtBnN,KAAKyD,cACPzD,KAAK+9B,aAAe/9B,KAAK09B,QAAQ19B,KAAKyD,cAGxCzD,KAAKg+B,mBAGDh+B,KAAKw9B,QAAQtR,aAAa,MAC5BlsB,KAAKi+B,UAAYj+B,KAAKw9B,QAAQ55B,aAAa,OAE3C5D,KAAKi+B,UAAY,UAAY,EAAAz7B,MAAM4D,OACnCpG,KAAKw9B,QAAQn3B,aAAa,KAAMrG,KAAKi+B,YAGvC,MAAMC,EAAoB,qFAE1Bl+B,KAAK09B,QAAQvyB,SAAQgzB,IAKnB,MAAM91B,EAAM81B,EAAMp3B,cAAc,OAC5BsB,GACEA,EAAIC,MAAQ41B,IACd71B,EAAInC,MAAMk4B,gBAAkB,OAAQ/1B,EAAIC,IAAK,IAC7CD,EAAIC,IAAM41B,GAITC,EAAMjS,aAAa,aACtBiS,EAAM93B,aAAa,WAAY,MAEjC83B,EAAMj4B,MAAMmO,WAAa,QAAQ,IAGnCrU,KAAKq+B,mBAGDr+B,KAAK+9B,cACP/9B,KAAK+9B,aAAa73B,MAAMqH,QAAU,QAClCvN,KAAK+9B,aAAa73B,MAAMmO,WAAa,YAGrCrU,KAAKyD,YAAc,EACnBzD,KAAK09B,QAAQ,GAAG35B,UAAUE,IAAI,UAC9BjE,KAAK09B,QAAQ,GAAGx3B,MAAMmO,WAAa,UACnCrU,KAAK+9B,aAAe/9B,KAAK09B,QAAQ,GACjC19B,KAAKs+B,cAAct+B,KAAK09B,QAAQ,IAAI,GAEhC19B,KAAKgB,QAAQ8M,YACf9N,KAAK+R,YAAY/R,KAAKyD,aAAaS,SAAS,GAAGH,UAAUE,IAAI,WAGjEjE,KAAKoF,sBAELpF,KAAK0H,OACP,CAEA,mBAAWzC,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAkC,CAAC,GACxF,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS27B,EAClC,CAEA,kBAAOp3B,CAAY5D,GACjB,OAAQA,EAAWk8B,QACrB,CAEA,OAAAr4B,GACExF,KAAK29B,QACL39B,KAAKu+B,oBACLv+B,KAAKyF,uBACJzF,KAAK2B,GAAWk8B,cAAWl4B,CAC9B,CAEQ,mBAAAP,GACFpF,KAAKgB,QAAQw7B,eACfx8B,KAAK2B,GAAGiE,iBAAiB,UAAW5F,KAAKi9B,uBACzCj9B,KAAK2B,GAAGiE,iBAAiB,WAAY5F,KAAKq9B,wBAExCr9B,KAAKgB,QAAQy7B,eACfz8B,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAK88B,uBAC5C98B,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAKm9B,wBAE1Cn9B,KAAKgB,QAAQ8M,YACf9N,KAAK+R,YAAY5G,SAASxJ,IACxBA,EAAGiE,iBAAiB,QAAS5F,KAAKiR,sBAAsB,GAG9D,CAEQ,oBAAAxL,GACFzF,KAAKgB,QAAQw7B,eACfx8B,KAAK2B,GAAGoE,oBAAoB,UAAW/F,KAAKi9B,uBAC5Cj9B,KAAK2B,GAAGoE,oBAAoB,WAAY/F,KAAKq9B,wBAE3Cr9B,KAAKgB,QAAQy7B,eACfz8B,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAK88B,uBAC/C98B,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAKm9B,wBAE7Cn9B,KAAKgB,QAAQ8M,YACf9N,KAAK+R,YAAY5G,SAASxJ,IACxBA,EAAGoE,oBAAoB,QAAS/F,KAAKiR,sBAAsB,GAGjE,CA+CQ,aAAAqtB,CAAcH,EAAoBK,GACxC,IAAIC,EAAK,EAAGC,EAAK,EAEjBP,EAAMj4B,MAAMqF,QAAUizB,EAAgB,IAAM,IAC5Cz5B,YAAW,KACTo5B,EAAMj4B,MAAMoF,WAAa,WAAWtL,KAAKgB,QAAQsM,kBAEjD6wB,EAAMj4B,MAAMqF,QAAUizB,EAAgB,IAAM,GAAG,GAC9C,GAEH,MAAMxQ,EAAuBmQ,EAAMp3B,cAAc,YAC5CinB,IACDA,EAAQjqB,UAAUoJ,SAAS,gBAAiBuxB,GAAM,IAC7C1Q,EAAQjqB,UAAUoJ,SAAS,eAAgBsxB,EAAK,IAChDzQ,EAAQjqB,UAAUoJ,SAAS,gBAAesxB,GAAM,KAEzDzQ,EAAQ9nB,MAAMqF,QAAUizB,EAAgB,IAAM,IAC9CxQ,EAAQ9nB,MAAMsF,UAAYgzB,EAAgB,aAAaC,QAASC,OAAU,kBAC1E35B,YAAW,KACTipB,EAAQ9nB,MAAMoF,WAAa,WAAWtL,KAAKgB,QAAQsM,8BAA8BtN,KAAKgB,QAAQsM,kBAE9F0gB,EAAQ9nB,MAAMqF,QAAUizB,EAAgB,IAAM,IAC9CxQ,EAAQ9nB,MAAMsF,UAAYgzB,EAAgB,kBAAoB,aAAaC,QAASC,MAAO,GAC1F1+B,KAAKgB,QAAQsM,UAClB,CAEQ,gBAAA0wB,GAEDh+B,KAAK2B,GAAGoC,UAAUoJ,SAAS,gBAC1BnN,KAAKgB,QAAQ8M,WAEf9N,KAAK2B,GAAGuE,MAAMsM,OAAUxS,KAAKgB,QAAQwR,OAAS,GAAI,KAGlDxS,KAAK2B,GAAGuE,MAAMsM,OAASxS,KAAKgB,QAAQwR,OAAS,KAE/CxS,KAAKw9B,QAAQt3B,MAAMsM,OAASxS,KAAKgB,QAAQwR,OAAS,KAEtD,CAEQ,gBAAA6rB,GACN,GAAIr+B,KAAKgB,QAAQ8M,WAAY,CAC3B,MAAMurB,EAAKrzB,SAASC,cAAc,MAClCozB,EAAGt1B,UAAUE,IAAI,cAEjB,MAAM06B,EAAQ,GACd3+B,KAAK09B,QAAQvyB,SAAQ,CAACxJ,EAAI5B,KACxB,MAAM+G,EAAQ9G,KAAKgB,QAAQ07B,mBACvB18B,KAAKgB,QAAQ07B,mBAAmB91B,KAAK5G,KAAMD,EAAI,EAAS,IAANA,GAClD,GAAGA,EAAI,IACL2G,EAAKV,SAASC,cAAc,MAClCS,EAAG3C,UAAUE,IAAI,kBACjByC,EAAGuB,UAAY,gEAAgEnB,qBAAyB9G,KAAKi+B,uBAC7GU,EAAMh1B,KAAKjD,GACX2yB,EAAGpwB,OAAOvC,EAAG,IAGf1G,KAAK2B,GAAGsH,OAAOowB,GACfr5B,KAAK+R,YAAc4sB,CACrB,CACF,CAEQ,iBAAAJ,GACNv+B,KAAK2B,GAAGoF,cAAc,iBAAiB/C,QACzC,CAEA,GAAAwQ,CAAIpJ,GAMF,GAJIA,GAASpL,KAAK09B,QAAQx6B,OAAQkI,EAAQ,EACjCA,EAAQ,IAAGA,EAAQpL,KAAK09B,QAAQx6B,OAAS,GAG9ClD,KAAKyD,cAAgB2H,EAAO,OAEhCpL,KAAK+9B,aAAe/9B,KAAK09B,QAAQ19B,KAAKyD,aACtC,MAAMm7B,EAA6B5+B,KAAK+9B,aAAah3B,cAAc,YAwBnE,GAtBA/G,KAAK+9B,aAAah6B,UAAUC,OAAO,UAEnChE,KAAK09B,QAAQvyB,SAAQgzB,GAASA,EAAMj4B,MAAMmO,WAAa,YAGvDrU,KAAK+9B,aAAa73B,MAAMqF,QAAU,IAClCxG,YAAW,KACT/E,KAAK09B,QAAQvyB,SAAQgzB,IACfA,EAAMp6B,UAAUoJ,SAAS,YAC7BgxB,EAAMj4B,MAAMqF,QAAU,IACtB4yB,EAAMj4B,MAAMsF,UAAY,kBAExB2yB,EAAMj4B,MAAMmO,WAAa,SAAQ,GACjC,GAEDrU,KAAKgB,QAAQsM,UAIhBsxB,EAAS14B,MAAMqF,QAAU,IAGrBvL,KAAKgB,QAAQ8M,WAAY,CAC3B,MAAMgG,EAAkB9T,KAAK+R,YAAY/R,KAAKyD,aAAaS,SAAS,GAC9D26B,EAAgB7+B,KAAK+R,YAAY3G,GAAOlH,SAAS,GACvD4P,EAAgB/P,UAAUC,OAAO,UACjC66B,EAAc96B,UAAUE,IAAI,UACmB,mBAApCjE,KAAKgB,QAAQ07B,qBACtB5oB,EAAgBgrB,UAAY9+B,KAAKgB,QAAQ07B,mBAAmB91B,KAAK5G,KAAMA,KAAKyD,aAAa,GACzFo7B,EAAcC,UAAY9+B,KAAKgB,QAAQ07B,mBAAmB91B,KAAK5G,KAAMoL,GAAO,GAEhF,CAGApL,KAAKs+B,cAAct+B,KAAK09B,QAAQtyB,IAAQ,GACxCpL,KAAK09B,QAAQtyB,GAAOrH,UAAUE,IAAI,UAClCjE,KAAKyD,YAAc2H,EAIE,MAAjBpL,KAAKu8B,UACPv8B,KAAK0H,OAET,CAEA,MAAAs1B,CAAO+B,GACLxvB,cAAcvP,KAAKu8B,UACnBv8B,KAAKo9B,WAAa2B,EAClB/+B,KAAKu8B,SAAW,IAClB,EA5UF,U,qFCtDA,eACA,QA2BA,IAAIt8B,EAAyB,CAC3BqN,SAAU,IACV0xB,OAAQ,KACRC,WAAW,EACX/N,oBAAqBlb,KAGvB,MAAakpB,UAAa,EAAAz9B,UAUxB,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASk+B,GA8ErB,KAAAjW,oBAAsB,KACpBjpB,KAAKm/B,sBACkB,IAAnBn/B,KAAKo/B,WAAuC,IAApBp/B,KAAKq/B,aAC/Br/B,KAAKs/B,WAAWp5B,MAAMkG,KAAOpM,KAAKu/B,aAAav/B,KAAKw/B,gBAAgB,KACpEx/B,KAAKs/B,WAAWp5B,MAAMkuB,MAAQp0B,KAAKy/B,cAAcz/B,KAAKw/B,gBAAgB,KACxE,EAGF,KAAAE,gBAAmBx9B,IACjB,MAAMy9B,EAAUz9B,EAAEkI,OACZw1B,EAAMD,EAAQr5B,cAEpB,IAAKq5B,IAAYC,EAAI77B,UAAUoJ,SAAS,OAAQ,OAEhD,GAAIyyB,EAAI77B,UAAUoJ,SAAS,YAEzB,YADAjL,EAAE2B,iBAIJ,GAAI87B,EAAQzT,aAAa,UAAW,OAEpClsB,KAAKw/B,eAAez7B,UAAUC,OAAO,UACrC,MAAM67B,EAAc7/B,KAAK8/B,SAGvB9/B,KAAKw/B,eAAiBG,EAClBA,EAAQI,OACV//B,KAAK8/B,SAAW95B,SAASe,cAAc44B,EAAQI,OACjD//B,KAAKggC,UAAYhgC,KAAK2B,GAAG6B,iBAAiB,cAE1CxD,KAAKw/B,eAAez7B,UAAUE,IAAI,UAClC,MAAMg8B,EAAYjgC,KAAKkgC,OACvBlgC,KAAKkgC,OAASlwB,KAAKqI,IAAIxN,MAAMC,KAAK9K,KAAKggC,WAAWr4B,QAAQg4B,GAAU,GAGlE3/B,KAAKgB,QAAQi+B,UACXj/B,KAAKmgC,eACPngC,KAAKmgC,cAAc3rB,IAAIxU,KAAKkgC,QAAQ,KACC,mBAAxBlgC,KAAKgB,QAAQg+B,QACtBh/B,KAAKgB,QAAQg+B,OAAOp4B,KAAK5G,KAAMA,KAAK8/B,SAAS,IAI/C9/B,KAAK8/B,WACP9/B,KAAK8/B,SAAS55B,MAAMqH,QAAU,QAC9BvN,KAAK8/B,SAAS/7B,UAAUE,IAAI,UACO,mBAAxBjE,KAAKgB,QAAQg+B,QACtBh/B,KAAKgB,QAAQg+B,OAAOp4B,KAAK5G,KAAMA,KAAK8/B,UAClCD,GAAeA,IAAgB7/B,KAAK8/B,WACtCD,EAAY35B,MAAMqH,QAAU,OAC5BsyB,EAAY97B,UAAUC,OAAO,YAKnChE,KAAKm/B,sBACLn/B,KAAKogC,kBAAkBH,GACvB/9B,EAAE2B,gBAAgB,EAtIjB7D,KAAK2B,GAAW0+B,OAASrgC,KAE1BA,KAAKgB,QAAU,OAAH,wBACPk+B,EAAKj6B,UACLjE,GAGLhB,KAAKggC,UAAYhgC,KAAK2B,GAAG6B,iBAAiB,cAC1CxD,KAAKkgC,OAAS,EACdlgC,KAAKsgC,sBACDtgC,KAAKgB,QAAQi+B,UACfj/B,KAAKugC,sBAELvgC,KAAKwgC,mBAGPxgC,KAAKm/B,sBACLn/B,KAAKygC,mBACLzgC,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAgC,CAAC,GACtF,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASk+B,EAClC,CAEA,kBAAO35B,CAAY5D,GACjB,OAAQA,EAAW0+B,MACrB,CAEA,OAAA76B,GACExF,KAAKyF,uBACLzF,KAAKs/B,WAAWl4B,WAAWC,YAAYrH,KAAKs/B,YACxCt/B,KAAKgB,QAAQi+B,UACfj/B,KAAK0gC,yBAGL1gC,KAAK2gC,sBAEN3gC,KAAK2B,GAAW0+B,YAAS16B,CAC5B,CAKA,SAAIyF,GAAS,OAAOpL,KAAKkgC,MAAQ,CAEjC,mBAAA96B,GACES,OAAOD,iBAAiB,SAAU5F,KAAKipB,qBACvCjpB,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAK0/B,gBACzC,CAEA,oBAAAj6B,GACEI,OAAOE,oBAAoB,SAAU/F,KAAKipB,qBAC1CjpB,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAK0/B,gBAC5C,CA8DA,gBAAAe,GACE,MAAMvvB,EAAYlL,SAASC,cAAc,MACzCiL,EAAUnN,UAAUE,IAAI,aACxBjE,KAAK2B,GAAG4E,YAAY2K,GACpBlR,KAAKs/B,WAAapuB,EAClBlR,KAAKs/B,WAAWp5B,MAAMkG,KAAOpM,KAAKu/B,aAAav/B,KAAKw/B,gBAAgB,KACpEx/B,KAAKs/B,WAAWp5B,MAAMkuB,MAAQp0B,KAAKy/B,cAAcz/B,KAAKw/B,gBAAgB,IACxE,CAEA,mBAAAc,GAEEtgC,KAAKw/B,eAAiB30B,MAAMC,KAAK9K,KAAKggC,WAAWx2B,MAAM1J,GAAyBA,EAAE8D,aAAa,UAAYg9B,SAASb,OAE/G//B,KAAKw/B,iBACRx/B,KAAKw/B,eAAiBx/B,KAAK2B,GAAGoF,cAAc,oBAEX,IAA/B/G,KAAKw/B,eAAet8B,SACtBlD,KAAKw/B,eAAiBx/B,KAAK2B,GAAGoF,cAAc,aAE9C8D,MAAMC,KAAK9K,KAAKggC,WAAW70B,SAASrL,GAAyBA,EAAEiE,UAAUC,OAAO,YAChFhE,KAAKw/B,eAAez7B,UAAUE,IAAI,UAEhCjE,KAAKkgC,OAASlwB,KAAKqI,IAAIxN,MAAMC,KAAK9K,KAAKggC,WAAWr4B,QAAQ3H,KAAKw/B,gBAAiB,GAC5Ex/B,KAAKw/B,gBAAkBx/B,KAAKw/B,eAAeO,OAC7C//B,KAAK8/B,SAAW95B,SAASe,cAAc/G,KAAKw/B,eAAeO,MACvD//B,KAAK8/B,UACP9/B,KAAK8/B,SAAS/7B,UAAUE,IAAI,UAElC,CAEF,mBAAAs8B,GAEM16B,OAAO8F,WAAa3L,KAAKgB,QAAQkwB,sBACnClxB,KAAKgB,QAAQi+B,WAAY,GAEzB,MAAM4B,EAAc,GACpB7gC,KAAKggC,UAAU70B,SAAQrL,IACrB,GAAIA,EAAEigC,KAAM,CACV,MAAMe,EAAc96B,SAASe,cAAcjH,EAAEigC,MAC7Ce,EAAY/8B,UAAUE,IAAI,iBAC1B48B,EAAYl3B,KAAKm3B,EACnB,KAIJ,MAAMC,EAAc/6B,SAASC,cAAc,OAC3C86B,EAAYh9B,UAAUE,IAAI,eAAgB,WAAY,mBAGtD48B,EAAY,GAAGv6B,cAAcsS,aAAamoB,EAAaF,EAAY,IACnEA,EAAY11B,SAAQ61B,IAClBD,EAAYx6B,YAAYy6B,GACxBA,EAAW96B,MAAMqH,QAAU,EAAE,IAI/B,MAAMqyB,EAAM5/B,KAAKw/B,eAAel5B,cAC1B26B,EAAiBp2B,MAAMC,KAAK80B,EAAIx4B,WAAWlD,UAAUyD,QAAQi4B,GAEnE5/B,KAAKmgC,cAAgB,EAAAlyB,SAAS5I,KAAK07B,EAAa,CAC9ClzB,WAAW,EACXE,QAAQ,EACRC,UAAYhG,IACV,MAAMi4B,EAAYjgC,KAAKkgC,OACvBlgC,KAAKkgC,OAASr1B,MAAMC,KAAK9C,EAAKZ,WAAWlD,UAAUyD,QAAQK,GAC3DhI,KAAKw/B,eAAez7B,UAAUC,OAAO,UACrChE,KAAKw/B,eAAiB30B,MAAMC,KAAK9K,KAAKggC,WAAWhgC,KAAKkgC,QACtDlgC,KAAKw/B,eAAez7B,UAAUE,IAAI,UAClCjE,KAAKogC,kBAAkBH,GACY,mBAAxBjgC,KAAKgB,QAAQg+B,QACtBh/B,KAAKgB,QAAQg+B,OAAOp4B,KAAK5G,KAAMA,KAAK8/B,SAAS,IAInD9/B,KAAKmgC,cAAc3rB,IAAIysB,EACzB,CAEA,sBAAAP,GACE,MAAMK,EAAc/gC,KAAKmgC,cAAcx+B,GACvC3B,KAAKmgC,cAAc36B,UAEnBu7B,EAAY/5B,MAAM+5B,EAAY78B,UAC9B68B,EAAY/8B,QACd,CAEA,gBAAAw8B,GAEE31B,MAAMC,KAAK9K,KAAKggC,WAAW70B,SAASrL,IAClC,GAAIA,IAAME,KAAKw/B,gBACS1/B,EAAGigC,KAAM,CAC/B,MAAMe,EAAc96B,SAASe,cAAkCjH,EAAGigC,MAC9De,IAA2BA,EAAa56B,MAAMqH,QAAU,OAC9D,IAEJ,CAEA,mBAAAozB,GAEE3gC,KAAKggC,UAAU70B,SAASrL,IACtB,GAAIA,EAAEigC,KAAM,CACV,MAAMe,EAAc96B,SAASe,cAAcjH,EAAEigC,MACzCe,IAAaA,EAAY56B,MAAMqH,QAAU,GAC/C,IAEJ,CAEA,mBAAA4xB,GACEn/B,KAAKq/B,WAAar/B,KAAK2B,GAAGoK,wBAAwBM,MAClDrM,KAAKo/B,UAAYpvB,KAAKqI,IAAIrY,KAAKq/B,WAAYr/B,KAAK2B,GAAGu/B,aAAelhC,KAAKggC,UAAU98B,MACnF,CAEA,aAAAu8B,CAAc99B,GACZ,OAAOqO,KAAKwS,KAAKxiB,KAAKq/B,WAAa19B,EAAGsxB,WAAatxB,EAAGoK,wBAAwBM,MAChF,CAEA,YAAAkzB,CAAa59B,GACX,OAAOqO,KAAK4D,MAAMjS,EAAGsxB,WACvB,CAMA,kBAAAkO,GACEnhC,KAAKm/B,sBACLn/B,KAAKogC,kBAAkBpgC,KAAKkgC,OAC9B,CAEA,iBAAAE,CAAkBH,GAChB,IAAImB,EAAY,EAAGC,EAAa,EAEDrhC,KAAKkgC,OAASD,GAAa,EAExDmB,EAAY,GAEZC,EAAa,GAGfrhC,KAAKs/B,WAAWp5B,MAAMoF,WAAa,gBAC1BtL,KAAKgB,QAAQsM,uBAAuB8zB,qBACnCphC,KAAKgB,QAAQsM,uBAAuB+zB,MAE9CrhC,KAAKs/B,WAAWp5B,MAAMkG,KAAOpM,KAAKu/B,aAAav/B,KAAKw/B,gBAAkB,KACtEx/B,KAAKs/B,WAAWp5B,MAAMkuB,MAAQp0B,KAAKy/B,cAAcz/B,KAAKw/B,gBAAkB,IAC1E,CAMA,MAAA8B,CAAOC,GACL,MAAM3B,EAAM/0B,MAAMC,KAAK9K,KAAKggC,WAAWx2B,MAAM1J,GAAyBA,EAAE8D,aAAa,UAAY,IAAI29B,IACjG3B,GAAyBA,EAAKtX,OACpC,EA9SF,Q,0FCnCA,eACA,QAeA,IAAIroB,EAA8B,CAChCwd,OAAQ,KACRC,QAAS,MAGX,MAAa8jB,UAAkB,EAAA//B,UAY7B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAASwgC,GA+DrB,KAAArzB,uBAAqC,EAAA3L,MAAM4L,UAAS,WAAYpO,KAAKqO,eAAiB,GAAG,KAAKC,KAAKtO,MAEnG,KAAAyhC,mBAAqB,KACnBzhC,KAAKgD,MAAM,EAGb,KAAA0+B,mBAAqB,KACnB1hC,KAAK+B,OAAO,EAGd,KAAAsM,cAAgB,KACdrO,KAAK2hC,uBAAuB,EAG9B,KAAAx3B,qBAAwBjI,IAChBA,EAAEkI,OAAuB4C,QAAQ,yBACrChN,KAAK+B,QACLG,EAAE2B,iBACF3B,EAAEiO,kBACJ,EAkIF,KAAAnN,KAAO,KACDhD,KAAK2E,SAE0B,mBAAxB3E,KAAKgB,QAAQyc,QACtBzd,KAAKgB,QAAQyc,OAAO7W,KAAK5G,KAAMA,KAAK4hC,SAEtC5hC,KAAK2E,QAAS,EACd3E,KAAK22B,QAAQ5yB,UAAUE,IAAI,QAC3B+B,SAASwE,KAAK5E,iBAAiB,QAAS5F,KAAKmK,sBAAsB,GACnEnE,SAASwE,KAAK5E,iBAAiB,WAAY5F,KAAKmK,sBAAqB,EAMvE,KAAApI,MAAQ,KACD/B,KAAK2E,SAE0B,mBAAzB3E,KAAKgB,QAAQ0c,SACtB1d,KAAKgB,QAAQ0c,QAAQ9W,KAAK5G,KAAMA,KAAK4hC,SAEvC5hC,KAAK2E,QAAS,EACd3E,KAAK22B,QAAQ5yB,UAAUC,OAAO,QAC9BgC,SAASwE,KAAKzE,oBAAoB,QAAS/F,KAAKmK,sBAAsB,GACtEnE,SAASwE,KAAKzE,oBAAoB,WAAY/F,KAAKmK,sBAAqB,EA3OvEnK,KAAK2B,GAAWkgC,YAAc7hC,KAE/BA,KAAKgB,QAAU,OAAH,wBACPwgC,EAAUv8B,UACVjE,GAGLhB,KAAK2E,QAAS,EAEd3E,KAAK4hC,QAAU57B,SAASe,cAAc,IAAIpF,EAAGmgC,QAAQ13B,UACrDpK,KAAK+hC,SACL/hC,KAAK2hC,wBACL3hC,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAqC,CAAC,GAC3F,OAAOY,MAAMyD,KAAKC,EAAKtE,EAASwgC,EAClC,CAEA,kBAAOj8B,CAAY5D,GACjB,OAAQA,EAAWkgC,WACrB,CAEA,OAAAr8B,GACExF,KAAKyF,uBACJzF,KAAK2B,GAAW6/B,eAAY77B,CAC/B,CAEA,mBAAAP,GACEpF,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKyhC,oBACvCzhC,KAAKgiC,SAASp8B,iBAAiB,QAAS5F,KAAK0hC,oBAE7C77B,OAAOD,iBAAiB,SAAU5F,KAAKmO,uBACzC,CAEA,oBAAA1I,GACEzF,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKyhC,oBAC1CzhC,KAAKgiC,SAASj8B,oBAAoB,QAAS/F,KAAK0hC,oBAChD77B,OAAOE,oBAAoB,SAAU/F,KAAKmO,uBAC5C,CAwBA,MAAA4zB,GAEE/hC,KAAK22B,QAAU32B,KAAK2B,GAAG2E,cACvBtG,KAAKiiC,OAASjiC,KAAK22B,QAAQ5vB,cAAc,oBACzC/G,KAAKgiC,SAAWhiC,KAAK22B,QAAQ5vB,cAAc,sBAC3C/G,KAAKkiC,UAAYliC,KAAK2B,GAAGoF,cAAc,uBAElC/G,KAAK22B,QAAQ5yB,UAAUoJ,SAAS,yBACnCnN,KAAK22B,QAAU3wB,SAASC,cAAc,OACtCjG,KAAK22B,QAAQ5yB,UAAUE,IAAI,sBAC3BjE,KAAK2B,GAAGyX,OAAOpZ,KAAK22B,SACpB32B,KAAK22B,QAAQ1tB,OAAOjJ,KAAK2B,KAGtB3B,KAAKkiC,YACRliC,KAAKkiC,UAAYl8B,SAASC,cAAc,OACxCjG,KAAKkiC,UAAUn+B,UAAUE,IAAI,sBAC7BjE,KAAK2B,GAAGsH,OAAOjJ,KAAKkiC,YAGjBliC,KAAKiiC,SACRjiC,KAAKiiC,OAASj8B,SAASC,cAAc,OACrCjG,KAAKiiC,OAAOl+B,UAAUE,IAAI,mBAErBjE,KAAKgiC,WACRhiC,KAAKgiC,SAAwBhiC,KAAK4hC,QAAQO,WAAU,GACpDniC,KAAKgiC,SAASj+B,UAAUE,IAAI,qBAC5BjE,KAAKgiC,SAASlU,gBAAgB,MAC9B9tB,KAAKgiC,SAASlU,gBAAgB,SAC9B9tB,KAAKiiC,OAAOh5B,OAAOjJ,KAAKgiC,WAE1BhiC,KAAK22B,QAAQ1tB,OAAOjJ,KAAKiiC,QAE7B,CAEQ,OAAAlT,CAAQptB,GACd,MAAMqtB,EAAMrtB,EAAGoK,wBACTkjB,EAAUjpB,SAASkpB,gBACzB,MAAO,CACL3F,IAAKyF,EAAIzF,IAAM1jB,OAAOspB,YAAcF,EAAQG,UAC5ChjB,KAAM4iB,EAAI5iB,KAAOvG,OAAOwpB,YAAcJ,EAAQK,WAElD,CAEA,qBAAAqS,GAEE,IAAI1G,EAAsD,UAA5C/uB,iBAAiBlM,KAAK4hC,SAAStW,SAC7C,IAAK2P,EAAS,CAEZ,IAAImH,EAAmBpiC,KAAK4hC,QAC5B,MAAMS,EAAU,GAChB,MAAQD,EAAcA,EAAYh7B,aAAeg7B,IAAgBp8B,UAC/Dq8B,EAAQ14B,KAAKy4B,GAEf,IAAK,IAAIriC,EAAI,EAAGA,EAAIsiC,EAAQn/B,SAC1B+3B,EAAoD,UAA1C/uB,iBAAiBm2B,EAAQtiC,IAAIurB,UACnC2P,GAF8Bl7B,KAItC,CAEA,MAAMuiC,EAActiC,KAAK4hC,QAAQvV,YAC3BkW,EAAeviC,KAAK4hC,QAAQhvB,aAC5B4vB,EAAYvH,EAAUj7B,KAAK+uB,QAAQ/uB,KAAK4hC,SAASrY,IAAM,EAAA/mB,MAAMitB,uBAAyBzvB,KAAK+uB,QAAQ/uB,KAAK4hC,SAASrY,IACjHkZ,EAAaxH,EAAUj7B,KAAK+uB,QAAQ/uB,KAAK4hC,SAASx1B,KAAO,EAAA5J,MAAMgtB,wBAA0BxvB,KAAK+uB,QAAQ/uB,KAAK4hC,SAASx1B,KAGpHV,EAAc7F,OAAO8F,WACrBC,EAAe/F,OAAOgG,YACtB62B,EAAiBh3B,EAAc1F,SAASkpB,gBAAgB3iB,YACxDo2B,EAAUj3B,EAAc,EACxBk3B,EAAUh3B,EAAe,EACzBi3B,EAASJ,GAAcE,EACvBG,EAAUL,EAAaE,EACvBI,EAAQP,GAAaI,EACrBI,EAAWR,EAAYI,EACvBK,EAAYR,GAA4B,IAAd/2B,GAAsB+2B,GAA4B,IAAd/2B,EAG9Dw3B,EAAiBljC,KAAK2B,GAAG0qB,YACzB8W,EAAkBnjC,KAAK2B,GAAGiR,aAC1BwwB,EAAeZ,EAAYD,EAAe,EAAIY,EAAkB,EAChEE,EAAgBZ,EAAaH,EAAc,EAAIY,EAAiB,EAChEI,EAAoBrI,EAAU,QAAU,WAGxCsI,EAAqBN,EAAYC,EAAiBA,EAAiB,EAAIZ,EACvEkB,EAAsBL,EAAkB,EACxCM,EAAmBV,EAAQI,EAAkB,EAAI,EAEjDO,EAAoBb,IAAWI,EAAYC,EAAiB,EAAIZ,EAAc,EAE9EqB,EAAuBrB,EACvBsB,EAAqBZ,EAAW,SAAW,MAG3Ca,EAAgE,EAAdvB,EAClDwB,EAAsBD,EACtBE,EAAmBZ,EAAkB,EAAIW,EAAsB,EAC/DE,EAAoBd,EAAiB,EAAIW,EAAqB,EAGpE7jC,KAAK22B,QAAQzwB,MAAMqjB,IAAMwZ,EAAQK,EAAe,KAAO,GACvDpjC,KAAK22B,QAAQzwB,MAAMkuB,MAAQ0O,EAAUp3B,EAAc23B,EAAgBH,EAAiBR,EAAiB,KAAO,GAC5G1iC,KAAK22B,QAAQzwB,MAAMoG,OAAS02B,EAAWp3B,EAAew3B,EAAeD,EAAkB,KAAO,GAC9FnjC,KAAK22B,QAAQzwB,MAAMkG,KAAOy2B,EAASQ,EAAgB,KAAO,GAC1DrjC,KAAK22B,QAAQzwB,MAAMolB,SAAWgY,EAG9BtjC,KAAKkiC,UAAUh8B,MAAMmG,MAAQk3B,EAAqB,KAClDvjC,KAAKkiC,UAAUh8B,MAAMsM,OAASgxB,EAAsB,KACpDxjC,KAAKkiC,UAAUh8B,MAAMqjB,IAAMka,EAAmB,KAC9CzjC,KAAKkiC,UAAUh8B,MAAMkuB,MAAQ6P,MAC7BjkC,KAAKkiC,UAAUh8B,MAAMoG,OAAS43B,MAC9BlkC,KAAKkiC,UAAUh8B,MAAMkG,KAAOs3B,EAAoB,KAChD1jC,KAAKkiC,UAAUh8B,MAAMyH,QAAUg2B,EAAuB,KACtD3jC,KAAKkiC,UAAUh8B,MAAMi+B,cAAgBP,EAGrC5jC,KAAKiiC,OAAO/7B,MAAMqjB,IAAMwa,EAAiB,KACzC/jC,KAAKiiC,OAAO/7B,MAAMkG,KAAO43B,EAAkB,KAC3ChkC,KAAKiiC,OAAO/7B,MAAMmG,MAAQw3B,EAAmB,KAC7C7jC,KAAKiiC,OAAO/7B,MAAMsM,OAASsxB,EAAoB,IACjD,EA5NF,a,2FCrBA,eACA,SACA,QAiGA,IAAI7jC,EAA+B,CACjCmkC,WAAY,IACZC,YAAa,IACbC,YAAa,GACbC,WAAY,GACZj3B,SAAU,IACV/J,UAAW,KACXihC,YAAa,MACbC,QAAS,EACT9nB,cAAc,EAEdC,KAAM,CACJC,OAAQ,SACRC,MAAO,QACPC,KAAM,MAERzB,WAAW,EACXopB,YAAY,EACZC,SAAS,EAETnrB,YAAa,KACbC,UAAW,KACXC,aAAc,KACdC,WAAY,KACZ6D,SAAU,MAQZ,MAAaonB,UAAmB,EAAAnjC,UAgD9B,WAAAC,CAAYC,EAAsBX,GAChCY,MAAMD,EAAIX,EAAS4jC,GAqFrB,KAAArgC,kBAAoB,KAClBvE,KAAKgD,MAAM,EAGb,KAAAK,oBAAuBnB,IACjB,EAAAM,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,OAC9BT,EAAE2B,iBACF7D,KAAKgD,OACP,EAGF,KAAA6hC,yBAA4B3iC,IACtB,EAAAM,MAAMC,KAAKC,MAAMrB,SAASa,EAAES,OAC9BT,EAAE2B,iBACF7D,KAAK8kC,sBACP,EAGF,KAAAC,uBAA0B7iC,IACxBA,EAAE2B,iBACF,IAAImhC,EAAehlC,KAAKilC,MAAMl5B,wBAC1BoD,EAAc61B,EAAa54B,KAA3B+C,EAAoC61B,EAAazb,IAErDvpB,KAAKklC,GAAK/1B,EAAWnP,KAAKgB,QAAQojC,WAClCpkC,KAAKmlC,GAAKh2B,EAAWnP,KAAKgB,QAAQojC,WAClCpkC,KAAKolC,OAAQ,EACb,IAAIC,EAAWT,EAAWU,KAAKpjC,GAC/BlC,KAAKy+B,GAAK4G,EAASz1B,EAAI5P,KAAKklC,GAC5BllC,KAAK0+B,GAAK2G,EAASx1B,EAAI7P,KAAKmlC,GAG5BnlC,KAAKulC,QAAQvlC,KAAKy+B,GAAIz+B,KAAK0+B,IAAI,GAE/B14B,SAASJ,iBAAiB,YAAa5F,KAAKwlC,0BAC5Cx/B,SAASJ,iBAAiB,YAAa5F,KAAKwlC,0BAE5Cx/B,SAASJ,iBAAiB,UAAW5F,KAAKylC,yBAC1Cz/B,SAASJ,iBAAiB,WAAY5F,KAAKylC,wBAAwB,EAGrE,KAAAD,yBAA4BtjC,IAC1BA,EAAE2B,iBACF,IAAIwhC,EAAWT,EAAWU,KAAKpjC,GAC3B0N,EAAIy1B,EAASz1B,EAAI5P,KAAKklC,GACtBr1B,EAAIw1B,EAASx1B,EAAI7P,KAAKmlC,GAC1BnlC,KAAKolC,OAAQ,EACbplC,KAAKulC,QAAQ31B,EAAGC,GAAG,EAAM,EAG3B,KAAA41B,wBAA2BvjC,IACzBA,EAAE2B,iBACFmC,SAASD,oBAAoB,UAAW/F,KAAKylC,yBAC7Cz/B,SAASD,oBAAoB,WAAY/F,KAAKylC,yBAC9C,IAAIJ,EAAWT,EAAWU,KAAKpjC,GAC3B0N,EAAIy1B,EAASz1B,EAAI5P,KAAKklC,GACtBr1B,EAAIw1B,EAASx1B,EAAI7P,KAAKmlC,GACtBnlC,KAAKolC,OAASx1B,IAAM5P,KAAKy+B,IAAM5uB,IAAM7P,KAAK0+B,IAC5C1+B,KAAKulC,QAAQ31B,EAAGC,GAEO,UAArB7P,KAAK0lC,YACP1lC,KAAK2lC,SAAS,UAAW3lC,KAAKgB,QAAQsM,SAAW,GAE1CtN,KAAKgB,QAAQsa,YACpBtb,KAAK4lC,YAAY7hC,UAAUE,IAAI,uBAC/Bc,YAAW,KACT/E,KAAK+c,MAAM,GACV/c,KAAKgB,QAAQsM,SAAW,IAEQ,mBAA1BtN,KAAKgB,QAAQwc,UACtBxd,KAAKgB,QAAQwc,SAAS5W,KAAK5G,KAAMA,KAAK6lC,MAAO7lC,KAAK8lC,SAGpD9/B,SAASD,oBAAoB,YAAa/F,KAAKwlC,0BAC/Cx/B,SAASD,oBAAoB,YAAa/F,KAAKwlC,yBAAyB,EA+L1E,KAAAO,iBAAoB7jC,IAClB,MAAM8jC,EAA0B9jC,EAAEkI,OAClCpK,KAAKimC,OAASD,EAAWjiC,UAAUoJ,SAAS,UAAY,KAAO,KAC/DnN,KAAKkmC,iBAAiB,EA8CxB,KAAAP,SAAW,CAACQ,EAAa96B,EAAgB,QAC1B,YAAT86B,GAAsBj6B,iBAAiBlM,KAAKomC,WAAW/xB,WAG3D,IAAIgyB,EAAmB,UAATF,EACZG,EAAWD,EAAUrmC,KAAKomC,UAAYpmC,KAAK4lC,YAC3CW,EAAWF,EAAUrmC,KAAK4lC,YAAc5lC,KAAKomC,UAC/CpmC,KAAK0lC,YAAcS,EAEfE,GACFrmC,KAAKwmC,WAAWziC,UAAUE,IAAI,gBAC9BjE,KAAKymC,aAAa1iC,UAAUC,OAAO,kBAGnChE,KAAKwmC,WAAWziC,UAAUC,OAAO,gBACjChE,KAAKymC,aAAa1iC,UAAUE,IAAI,iBAIlCsiC,EAASxiC,UAAUE,IAAI,uBAEvBqiC,EAASpgC,MAAMmO,WAAa,UAC5BiyB,EAASviC,UAAUC,OAAO,uBAG1BhE,KAAK0mC,WAAWr7B,GAEhBoI,aAAazT,KAAK2mC,iBAClB3mC,KAAK2mC,gBAAkB5hC,YAAW,KAChCwhC,EAASrgC,MAAMmO,WAAa,QAAQ,GACnCrU,KAAKgB,QAAQsM,SAAS,EA2B3B,KAAAw3B,oBAAsB,KACpB,MAAMuB,EAA+B,UAArBrmC,KAAK0lC,YACrB,GAAIW,EAAS,CACX,MAAM9jC,EAAQuS,SAAS9U,KAAKwmC,WAAWjkC,OACvC,GAAIA,EAAQ,GAAKA,EAAQ,GACvBvC,KAAK4mC,uBAAuBrkC,EAAO8jC,GACnCrmC,KAAK2lC,SAAS,UAAW3lC,KAAKgB,QAAQsM,SAAW,GACjDtN,KAAK6lC,MAAQtjC,EACbvC,KAAKymC,aAAa58B,YAEf,CACH,MAAMg9B,GAAO,IAAIx3B,MAAOy3B,WACxB9mC,KAAKwmC,WAAWjkC,OAASskC,EAAO,IAAIzlC,UACtC,CACF,KACK,CACH,MAAMmB,EAAQuS,SAAS9U,KAAKymC,aAAalkC,OACzC,GAAIA,GAAS,GAAKA,EAAQ,GACxBvC,KAAKymC,aAAalkC,MAAQqiC,EAAWmC,gBAAgBxkC,GACrDvC,KAAK4mC,uBAAuBrkC,EAAO8jC,GACnCrmC,KAAK8lC,QAAUvjC,EACDvC,KAAKmgB,QAAQpZ,cAAc,oCAAqC8C,YAE3E,CACH,MAAMi8B,GAAU,IAAIz2B,MAAO23B,aAC3BhnC,KAAKymC,aAAalkC,MAAQqiC,EAAWmC,gBAAgBjB,EACvD,CACF,GAsGF,KAAA9iC,KAAO,KACDhD,KAAK2E,SACT3E,KAAK2E,QAAS,EACd3E,KAAKinC,uBACLjnC,KAAK2lC,SAAS,SACd3lC,KAAK4e,MAAM5b,UAAK2C,GAAU,EAM5B,KAAA5D,MAAQ,KACD/B,KAAK2E,SACV3E,KAAK2E,QAAS,EACd3E,KAAK4e,MAAM7c,QAAO,EAGpB,KAAAgb,KAAO,CAAC7a,EAAI,KAAMglC,EAAa,QAE7B,IAAIC,EAAOnnC,KAAK2B,GAAGY,MACfA,EAAQ2kC,EACR,GACAtC,EAAWmC,gBAAgB/mC,KAAK6lC,OAAS,IAAMjB,EAAWmC,gBAAgB/mC,KAAK8lC,SACnF9lC,KAAKonC,KAAO7kC,GACP2kC,GAAclnC,KAAKgB,QAAQ0jC,aAC9BniC,EAAQ,GAAGA,KAASvC,KAAKimC,UAE3BjmC,KAAK2B,GAAGY,MAAQA,EAEZA,IAAU4kC,GACZnnC,KAAK2B,GAAGyH,cAAc,IAAIC,MAAM,SAAS,CAACgY,SAAQ,EAAMC,YAAW,EAAMC,UAAS,KAEpFvhB,KAAK+B,QACL/B,KAAK2B,GAAGkI,OAAO,EAGjB,KAAAiT,MAAQ,KACN9c,KAAK+c,KAAK,MAAM,EAAK,EA5mBpB/c,KAAK2B,GAAW0lC,aAAernC,KAEhCA,KAAKgB,QAAU,OAAH,wBACP4jC,EAAW3/B,UACXjE,GAGLhB,KAAKmB,GAAK,EAAAqB,MAAM4D,OAChBpG,KAAKif,qBACLjf,KAAKkf,cACLlf,KAAKgf,kBACLhf,KAAKoF,sBACLpF,KAAKsnC,cACLtnC,KAAKunC,cACP,CAEA,mBAAWtiC,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAAmEtE,EAAsC,CAAC,GACpH,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS4jC,EAClC,CAEA,sBAAOmC,CAAgBS,GACrB,OAAQA,EAAM,GAAK,IAAM,IAAMA,CACjC,CAEA,mBAAOC,CAAaxa,GAElB,OAAOjnB,SAASgyB,gBADJ,6BAC2B/K,EACzC,CAEA,WAAOqY,CAAKpjC,GACV,OAAIA,EAAEC,KAAK2Q,WAAW,UAAa5Q,EAAiB6Q,cAAc7P,QAAU,EACnE,CAAE0M,EAAI1N,EAAiB6Q,cAAc,GAAGlC,QAAShB,EAAI3N,EAAiB6Q,cAAc,GAAGC,SAGzF,CAAEpD,EAAI1N,EAAiB2O,QAAShB,EAAI3N,EAAiB8Q,QAC9D,CAEA,kBAAOzN,CAAY5D,GACjB,OAAQA,EAAW0lC,YACrB,CAEA,OAAA7hC,GACExF,KAAKyF,uBACLzF,KAAK4e,MAAMpZ,UACXxF,KAAKmgB,QAAQnc,SACZhE,KAAK2B,GAAW0lC,kBAAe1hC,CAClC,CAEA,mBAAAP,GACEpF,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKuE,mBACvCvE,KAAK2B,GAAGiE,iBAAiB,UAAW5F,KAAKqD,qBACzCrD,KAAKilC,MAAMr/B,iBAAiB,YAAa5F,KAAK+kC,wBAC9C/kC,KAAKilC,MAAMr/B,iBAAiB,aAAc5F,KAAK+kC,wBAC/C/kC,KAAK0nC,aAAa9hC,iBAAiB,QAAS5F,KAAK8kC,qBACjD9kC,KAAKwmC,WAAW5gC,iBAAiB,SAAS,IAAM5F,KAAK2lC,SAAS,WAC9D3lC,KAAKymC,aAAa7gC,iBAAiB,SAAS,IAAM5F,KAAK2lC,SAAS,YAClE,CAEA,oBAAAlgC,GACEzF,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKuE,mBAC1CvE,KAAK2B,GAAGoE,oBAAoB,UAAW/F,KAAKqD,oBAC9C,CA8EA,kBAAA4b,GACE,MAAM8G,EAAW/f,SAASC,cAAc,YACxC8f,EAAS9d,UAAY28B,EAAW5e,UAAUC,OAC1CjmB,KAAKmgB,QAAuB4F,EAASG,QAAQrN,WAC7C7Y,KAAKmgB,QAAQhf,GAAK,SAAWnB,KAAKmB,GAGlC,MAAMyf,EAAQ5gB,KAAKgB,QAAQuC,UACrBwmB,EAAcnJ,aAAiB7F,YAAc6F,EAAQ5a,SAASe,cAAc6Z,GAE9E5gB,KAAKgB,QAAQuC,WAAewmB,EAC9BA,EAAY9gB,OAAOjJ,KAAKmgB,SAGxBngB,KAAK2B,GAAG2E,cAAcC,YAAYvG,KAAKmgB,QAE3C,CAEA,WAAAjB,GACElf,KAAK4e,MAAQ,EAAAiC,MAAMxb,KAAKrF,KAAKmgB,QAAS,CACpC3G,YAAaxZ,KAAKgB,QAAQwY,YAC1BC,UAAWzZ,KAAKgB,QAAQyY,UACxBC,aAAc1Z,KAAKgB,QAAQ0Y,aAC3BC,WAAY,KAC6B,mBAA5B3Z,KAAKgB,QAAQ2Y,YACtB3Z,KAAKgB,QAAQ2Y,WAAW/S,KAAK5G,MAE/BA,KAAK2E,QAAS,CAAK,GAGzB,CAEA,eAAAqa,GACEhf,KAAK0lC,YAAc,QACnB1lC,KAAK2kC,QAAUgD,UAAUhD,QACrB,UACCgD,UAAkBC,cACnB,gBACA,KACJ5nC,KAAK6nC,QAAU7nC,KAAKmgB,QAAQpZ,cAAc,sBAC1C/G,KAAKilC,MAAQjlC,KAAKmgB,QAAQpZ,cAAc,qBACxC/G,KAAK0nC,aAAe1nC,KAAKmgB,QAAQpZ,cAAc,8BAC/C/G,KAAKomC,UAAYpmC,KAAKmgB,QAAQpZ,cAAc,qBAC5C/G,KAAK4lC,YAAc5lC,KAAKmgB,QAAQpZ,cAAc,uBAC9C/G,KAAKwmC,WAAaxmC,KAAKmgB,QAAQpZ,cAAc,2BAC7C/G,KAAKymC,aAAezmC,KAAKmgB,QAAQpZ,cAAc,6BAC/C/G,KAAK8nC,SAAW9nC,KAAKmgB,QAAQpZ,cAAc,0BAC3C/G,KAAK+nC,OAAS/nC,KAAKmgB,QAAQpZ,cAAc,sBACzC/G,KAAKimC,OAAS,IAChB,CAEQ,aAAA+B,CAAcrnC,EAAc0T,GAClC,MAAM4zB,EAASjiC,SAASC,cAAc,UAMtC,OALAgiC,EAAOlkC,UAAUE,IAAI,WAAY,gBACjCgkC,EAAO/hC,MAAMmO,WAAaA,EAC1B4zB,EAAO9lC,KAAO,SACd8lC,EAAOvtB,SAAW1a,KAAKgB,QAAQ0jC,WAAa,EAAI,EAChDuD,EAAOn/B,UAAYnI,EACZsnC,CACT,CAEA,YAAAV,GACE,MAAMW,EAAcloC,KAAKgoC,cAAchoC,KAAKgB,QAAQ4b,KAAKE,MAAO9c,KAAKgB,QAAQ2b,aAAe,GAAK,UACjGurB,EAAYnkC,UAAUE,IAAI,oBAC1BikC,EAAYtiC,iBAAiB,QAAS5F,KAAK8c,OAC3C9c,KAAK+nC,OAAOxhC,YAAY2hC,GAExB,MAAMC,EAA4BniC,SAASC,cAAc,OACzDkiC,EAA0BpkC,UAAUE,IAAI,qBACxCjE,KAAK+nC,OAAO9+B,OAAOk/B,GAEnB,MAAMC,EAAepoC,KAAKgoC,cAAchoC,KAAKgB,QAAQ4b,KAAKC,OAAQ,IAClEurB,EAAarkC,UAAUE,IAAI,oBAC3BmkC,EAAaxiC,iBAAiB,QAAS5F,KAAK+B,OAC5ComC,EAA0B5hC,YAAY6hC,GAEtC,MAAMC,EAAaroC,KAAKgoC,cAAchoC,KAAKgB,QAAQ4b,KAAKG,KAAM,IAC9DsrB,EAAWtkC,UAAUE,IAAI,oBACzBokC,EAAWziC,iBAAiB,QAAS5F,KAAK+c,MAC1CorB,EAA0B5hC,YAAY8hC,EACxC,CAEA,WAAAf,GACMtnC,KAAKgB,QAAQ0jC,aAEf1kC,KAAKsoC,OAAStiC,SAASC,cAAc,OACrCjG,KAAKsoC,OAAOvkC,UAAUE,IAAI,UAC1BjE,KAAKsoC,OAAOx/B,UAAY,KACxB9I,KAAKsoC,OAAO1iC,iBAAiB,QAAS5F,KAAK+lC,kBAC3C/lC,KAAK8nC,SAASvhC,YAAYvG,KAAKsoC,QAE/BtoC,KAAKuoC,OAASviC,SAASC,cAAc,OACrCjG,KAAKuoC,OAAOxkC,UAAUE,IAAI,UAC1BjE,KAAKuoC,OAAOz/B,UAAY,KACxB9I,KAAKuoC,OAAO3iC,iBAAiB,QAAS5F,KAAK+lC,kBAC3C/lC,KAAK8nC,SAASvhC,YAAYvG,KAAKuoC,SAEjCvoC,KAAKwoC,kBACLxoC,KAAKyoC,oBACLzoC,KAAK0oC,gBACP,CAEA,cAAAA,GAEE,IAAItE,EAAapkC,KAAKgB,QAAQojC,WAC1BG,EAAavkC,KAAKgB,QAAQujC,WAC1BoE,EAAwB,EAAbvE,EACXwE,EAAMhE,EAAW6C,aAAa,OAClCmB,EAAIviC,aAAa,QAAS,kBAC1BuiC,EAAIviC,aAAa,QAASsiC,EAASvnC,YACnCwnC,EAAIviC,aAAa,SAAUsiC,EAASvnC,YACpC,IAAIynC,EAAIjE,EAAW6C,aAAa,KAChCoB,EAAExiC,aAAa,YAAa,aAAe+9B,EAAa,IAAMA,EAAa,KAC3E,IAAI0E,EAAUlE,EAAW6C,aAAa,UACtCqB,EAAQziC,aAAa,QAAS,6BAC9ByiC,EAAQziC,aAAa,KAAM,KAC3ByiC,EAAQziC,aAAa,KAAM,KAC3ByiC,EAAQziC,aAAa,IAAK,KAC1B,IAAI0iC,EAAOnE,EAAW6C,aAAa,QACnCsB,EAAK1iC,aAAa,KAAM,KACxB0iC,EAAK1iC,aAAa,KAAM,KACxB,IAAI2iC,EAAKpE,EAAW6C,aAAa,UACjCuB,EAAG3iC,aAAa,QAAS,wBACzB2iC,EAAG3iC,aAAa,IAAKk+B,EAAWnjC,YAChCynC,EAAEtiC,YAAYwiC,GACdF,EAAEtiC,YAAYyiC,GACdH,EAAEtiC,YAAYuiC,GACdF,EAAIriC,YAAYsiC,GAChB7oC,KAAK6nC,QAAQthC,YAAYqiC,GACzB5oC,KAAK+oC,KAAOA,EACZ/oC,KAAKgpC,GAAKA,EACVhpC,KAAK8oC,QAAUA,EACf9oC,KAAK6oC,EAAIA,CACX,CAEA,eAAAL,GACE,MAAMS,EAAQjjC,SAASC,cAAc,OAGrC,GAFAgjC,EAAMllC,UAAUE,IAAI,mBAEhBjE,KAAKgB,QAAQ0jC,WACf,IAAK,IAAI3kC,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,MAAMmpC,EAAoBD,EAAM9G,WAAU,GACpCgH,EAAUppC,EAAI,EAAKiQ,KAAKo5B,GACxBC,EAASrpC,KAAKgB,QAAQqjC,YAC5B6E,EAAKhjC,MAAMkG,KAAOpM,KAAKgB,QAAQojC,WAAap0B,KAAKs5B,IAAIH,GAAUE,EAASrpC,KAAKgB,QAAQujC,WAAa,KAClG2E,EAAKhjC,MAAMqjB,IAAMvpB,KAAKgB,QAAQojC,WAAap0B,KAAKu5B,IAAIJ,GAAUE,EAASrpC,KAAKgB,QAAQujC,WAAa,KACjG2E,EAAKjhC,UAAkB,IAANlI,EAAU,KAAOA,EAAEqB,WACpCpB,KAAKomC,UAAU7/B,YAAY2iC,EAE7B,MAGA,IAAK,IAAInpC,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,MAAMmpC,EAAoBD,EAAM9G,WAAU,GACpCgH,EAAUppC,EAAI,EAAKiQ,KAAKo5B,GAExBC,EADQtpC,EAAI,GAAKA,EAAI,GACJC,KAAKgB,QAAQsjC,YAActkC,KAAKgB,QAAQqjC,YAC/D6E,EAAKhjC,MAAMkG,KAAOpM,KAAKgB,QAAQojC,WAAap0B,KAAKs5B,IAAIH,GAAUE,EAASrpC,KAAKgB,QAAQujC,WAAa,KAClG2E,EAAKhjC,MAAMqjB,IAAMvpB,KAAKgB,QAAQojC,WAAap0B,KAAKu5B,IAAIJ,GAAUE,EAASrpC,KAAKgB,QAAQujC,WAAa,KACjG2E,EAAKjhC,UAAkB,IAANlI,EAAU,KAAOA,EAAEqB,WACpCpB,KAAKomC,UAAU7/B,YAAY2iC,EAE7B,CAEJ,CAEA,iBAAAT,GACE,MAAMe,EAAQxjC,SAASC,cAAc,OACrCujC,EAAMzlC,UAAUE,IAAI,mBAEpB,IAAK,IAAIlE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,MAAMmpC,EAAoBM,EAAMrH,WAAU,GACpCgH,EAAUppC,EAAI,GAAMiQ,KAAKo5B,GAC/BF,EAAKhjC,MAAMkG,KACTpM,KAAKgB,QAAQojC,WACbp0B,KAAKs5B,IAAIH,GAAUnpC,KAAKgB,QAAQqjC,YAChCrkC,KAAKgB,QAAQujC,WACb,KACF2E,EAAKhjC,MAAMqjB,IACPvpB,KAAKgB,QAAQojC,WACbp0B,KAAKu5B,IAAIJ,GAAUnpC,KAAKgB,QAAQqjC,YAChCrkC,KAAKgB,QAAQujC,WACb,KACJ2E,EAAKjhC,UAAY28B,EAAWmC,gBAAgBhnC,GAC5CC,KAAK4lC,YAAYr/B,YAAY2iC,EAC/B,CACF,CAQA,eAAAhD,GACMlmC,KAAKgB,QAAQ0jC,aACK,OAAhB1kC,KAAKimC,QACPjmC,KAAKsoC,OAAOvkC,UAAUC,OAAO,gBAC7BhE,KAAKuoC,OAAOxkC,UAAUE,IAAI,iBAEH,OAAhBjE,KAAKimC,SACZjmC,KAAKsoC,OAAOvkC,UAAUE,IAAI,gBAC1BjE,KAAKuoC,OAAOxkC,UAAUC,OAAO,iBAGnC,CAEA,oBAAAijC,GAEE,IAAI1kC,IAAUvC,KAAK2B,GAAGY,OAASvC,KAAKgB,QAAQwjC,aAAe,IAAM,IAAI1jB,MAAM,KAS3E,GARI9gB,KAAKgB,QAAQ0jC,iBAAoC,IAAbniC,EAAM,KACxCA,EAAM,GAAGknC,cAAc9hC,QAAQ,MAAQ,EACzC3H,KAAKimC,OAAS,KAEdjmC,KAAKimC,OAAS,KAEhB1jC,EAAM,GAAKA,EAAM,GAAGkjB,QAAQ,KAAM,IAAIA,QAAQ,KAAM,KAErC,QAAbljB,EAAM,GAAc,CACtB,IAAI+M,EAAM,IAAID,MAAM,IAAIA,KAASrP,KAAKgB,QAAQyjC,SAC9CliC,EAAQ,CAAC+M,EAAIw3B,WAAW1lC,WAAYkO,EAAI03B,aAAa5lC,YACjDpB,KAAKgB,QAAQ0jC,aACf1kC,KAAKimC,OAASnxB,SAASvS,EAAM,KAAO,IAAMuS,SAASvS,EAAM,IAAM,GAAK,KAAO,KAE/E,CACAvC,KAAK6lC,OAAStjC,EAAM,IAAM,EAC1BvC,KAAK8lC,SAAWvjC,EAAM,IAAM,EAC5BvC,KAAKwmC,WAAWjkC,MAAQvC,KAAK6lC,MAC7B7lC,KAAKymC,aAAalkC,MAAQqiC,EAAWmC,gBAAgB/mC,KAAK8lC,SAE1D9lC,KAAKkmC,iBACP,CAuCA,UAAAQ,CAAWr7B,G,MACT,IAAI86B,EAAOnmC,KAAK0lC,YACdnjC,EAAQvC,KAAKmmC,GACbE,EAAmB,UAATF,EAEVgD,EAAS5mC,GADFyN,KAAKo5B,IAAM/C,EAAU,EAAI,KAEhCgD,EACEhD,GAAW9jC,EAAQ,GAAKA,EAAQ,GAAKvC,KAAKgB,QAAQsjC,YAActkC,KAAKgB,QAAQqjC,YAC/Ez0B,EAAII,KAAKs5B,IAAIH,GAAUE,EACvBx5B,GAAKG,KAAKu5B,IAAIJ,GAAUE,EACxBK,EAAO1pC,KAELqL,GACS,QAAX,EAAArL,KAAK2pC,cAAM,SAAE5lC,UAAUE,IAAI,yBAC3Bc,YAAW,K,MACE,QAAX,EAAA2kC,EAAKC,cAAM,SAAE5lC,UAAUC,OAAO,yBAC9B0lC,EAAKnE,QAAQ31B,EAAGC,EAAE,GACjBxE,IAGHrL,KAAKulC,QAAQ31B,EAAGC,EAEpB,CAgCA,sBAAA+2B,CAAuBrkC,EAAO8jC,GAC5B,MACM8C,EAAS5mC,GADFyN,KAAKo5B,IAAM/C,EAAU,EAAI,KAEtC,IAAIgD,EACArpC,KAAKgB,QAAQ0jC,aACf2E,EAASrpC,KAAKgB,QAAQqjC,aAExB,IAAIuF,EAAM55B,KAAKs5B,IAAIH,IAAWE,EAASrpC,KAAKgB,QAAQujC,YAClDsF,GAAO75B,KAAKu5B,IAAIJ,IAAWE,EAASrpC,KAAKgB,QAAQujC,YACjDuF,EAAM95B,KAAKs5B,IAAIH,GAAUE,EACzBU,GAAO/5B,KAAKu5B,IAAIJ,GAAUE,EAC5BrpC,KAAK+oC,KAAK1iC,aAAa,KAAMujC,EAAIxoC,YACjCpB,KAAK+oC,KAAK1iC,aAAa,KAAMwjC,EAAIzoC,YACjCpB,KAAKgpC,GAAG3iC,aAAa,KAAMyjC,EAAI1oC,YAC/BpB,KAAKgpC,GAAG3iC,aAAa,KAAM0jC,EAAI3oC,WACjC,CAEA,OAAAmkC,CAAQ31B,EAAGC,EAAGm6B,GAAoB,GAChC,IAAIb,EAASn5B,KAAKi6B,MAAMr6B,GAAIC,GAC1Bw2B,EAA+B,UAArBrmC,KAAK0lC,YACfwE,EAAOl6B,KAAKo5B,IAAM/C,GAAW2D,EAAW,EAAI,IAC5CG,EAAIn6B,KAAKo6B,KAAKx6B,EAAIA,EAAIC,EAAIA,GAC1Bw6B,EAAQhE,GAAW8D,GAAKnqC,KAAKgB,QAAQqjC,YAAcrkC,KAAKgB,QAAQsjC,aAAe,EAC/E+E,EAASgB,EAAQrqC,KAAKgB,QAAQsjC,YAActkC,KAAKgB,QAAQqjC,YAEvDrkC,KAAKgB,QAAQ0jC,aACf2E,EAASrpC,KAAKgB,QAAQqjC,aAIpB8E,EAAS,IACXA,EAAmB,EAAVn5B,KAAKo5B,GAASD,GAIzB,IAAI5mC,EAAQyN,KAAKK,MAAM84B,EAASe,GAGhCf,EAAS5mC,EAAQ2nC,EAGblqC,KAAKgB,QAAQ0jC,WACX2B,EACY,IAAV9jC,IAAaA,EAAQ,KAErBynC,IAAUznC,GAAS,GACT,KAAVA,IAAcA,EAAQ,IAGxB8jC,GACY,KAAV9jC,IACFA,EAAQ,GAEVA,EAAQ8nC,EAAmB,IAAV9nC,EAAc,GAAKA,EAAmB,IAAVA,EAAc,EAAIA,EAAQ,KAEnEynC,IACFznC,GAAS,GAEG,KAAVA,IACFA,EAAQ,IAMVvC,KAAKA,KAAK0lC,eAAiBnjC,GACzBvC,KAAK2kC,SAAW3kC,KAAKgB,QAAQ2jC,UAE1B3kC,KAAKsqC,eACR3C,UAAU3nC,KAAK2kC,SAAS,IACxB3kC,KAAKsqC,aAAevlC,YAAW,KAC7B/E,KAAKsqC,aAAe,IAAI,GACvB,OAKTtqC,KAAKA,KAAK0lC,aAAenjC,EACrB8jC,EACFrmC,KAAKwmC,WAAWjkC,MAAQA,EAAMnB,WAG9BpB,KAAKymC,aAAalkC,MAAQqiC,EAAWmC,gBAAgBxkC,GAIvD,IAAIqnC,EAAM55B,KAAKs5B,IAAIH,IAAWE,EAASrpC,KAAKgB,QAAQujC,YAClDsF,GAAO75B,KAAKu5B,IAAIJ,IAAWE,EAASrpC,KAAKgB,QAAQujC,YACjDuF,EAAM95B,KAAKs5B,IAAIH,GAAUE,EACzBU,GAAO/5B,KAAKu5B,IAAIJ,GAAUE,EAC5BrpC,KAAK+oC,KAAK1iC,aAAa,KAAMujC,EAAIxoC,YACjCpB,KAAK+oC,KAAK1iC,aAAa,KAAMwjC,EAAIzoC,YACjCpB,KAAKgpC,GAAG3iC,aAAa,KAAMyjC,EAAI1oC,YAC/BpB,KAAKgpC,GAAG3iC,aAAa,KAAM0jC,EAAI3oC,WACjC,EApnBF,eAkqBIwjC,EAAW5e,UAAY,imC,oFCvvB3B,IAAI/lB,EAA0B,CAC5BU,KAAM,GACN4pC,cAAe,IACf3wB,WAAY,IACZC,YAAa,IACbgM,QAAS,GACT2kB,iBAAkB,KAClBC,kBAAmB,IAGrB,MAAaC,EA0BX,WAAAhpC,CAAYV,GACVhB,KAAKgB,QAAU,OAAH,wBACP0pC,EAAMzlC,UACNjE,GAELhB,KAAK2qC,QAAU3qC,KAAKgB,QAAQL,KAC5BX,KAAK4qC,SAAU,EACf5qC,KAAK6qC,cAAgB7qC,KAAKgB,QAAQupC,cACL,IAAzBG,EAAMI,QAAQ5nC,QAChBwnC,EAAMK,mBAGRL,EAAMI,QAAQnhC,KAAK3J,MACnB,IAAIgrC,EAAehrC,KAAKirC,eACvBD,EAAqBE,QAAUlrC,KAChCA,KAAK2B,GAAKqpC,EACVhrC,KAAKsa,aACLta,KAAKmrC,WACP,CAEA,mBAAWlmC,GACT,OAAOhF,CACT,CAEA,kBAAOsF,CAAY5D,GACjB,OAAQA,EAAWupC,OACrB,CAEA,uBAAOH,GACL,MAAMxnC,EAAYyC,SAASC,cAAc,OACzC1C,EAAU8C,aAAa,KAAM,mBAE7B9C,EAAUqC,iBAAiB,aAAc8kC,EAAMU,cAC/C7nC,EAAUqC,iBAAiB,YAAa8kC,EAAMW,aAC9C9nC,EAAUqC,iBAAiB,WAAY8kC,EAAMY,YAC7C/nC,EAAUqC,iBAAiB,YAAa8kC,EAAMU,cAC9CplC,SAASJ,iBAAiB,YAAa8kC,EAAMW,aAC7CrlC,SAASJ,iBAAiB,UAAW8kC,EAAMY,YAC3CtlC,SAASwE,KAAKjE,YAAYhD,GAC1BmnC,EAAMa,WAAahoC,CACrB,CAEA,uBAAOioC,GACLxlC,SAASD,oBAAoB,YAAa2kC,EAAMW,aAChDrlC,SAASD,oBAAoB,UAAW2kC,EAAMY,YAC9CZ,EAAMa,WAAWvnC,SACjB0mC,EAAMa,WAAa,IACrB,CAEA,mBAAOH,CAAalpC,GAClB,GAAIA,EAAEkI,QAAwBlI,EAAEkI,OAAQ4C,QAAQ,UAAW,CACzD,MACMy+B,EAD0BvpC,EAAEkI,OAAQ4C,QAAQ,UACVk+B,QACxCO,EAAMb,SAAU,EAChBF,EAAMgB,cAAgBD,EACtBA,EAAM9pC,GAAGoC,UAAUE,IAAI,WACvBwnC,EAAM9pC,GAAGuE,MAAMoF,WAAa,GAC5BmgC,EAAME,aAAejB,EAAMzQ,MAAM/3B,GACjCupC,EAAMrE,KAAO/3B,KAAKC,MAClBm8B,EAAMG,KAAOlB,EAAMzQ,MAAM/3B,EAC3B,CACF,CAEA,kBAAOmpC,CAAYnpC,GACjB,GAAMwoC,EAAMgB,cAAe,CACzBxpC,EAAE2B,iBACF,MAAM4nC,EAAQf,EAAMgB,cACpBD,EAAM3P,OAAS9rB,KAAKC,IAAIw7B,EAAMG,KAAOlB,EAAMzQ,MAAM/3B,IACjDupC,EAAMG,KAAOlB,EAAMzQ,MAAM/3B,GACzBupC,EAAM1P,UAAY0P,EAAM3P,QAAUzsB,KAAKC,MAAQm8B,EAAMrE,MACrDqE,EAAMrE,KAAO/3B,KAAKC,MAElB,MAAM0qB,EAAcyR,EAAMG,KAAOH,EAAME,aACjCE,EAAqBJ,EAAM9pC,GAAG0qB,YAAcof,EAAMzqC,QAAQypC,kBAChEgB,EAAM9pC,GAAGuE,MAAMsF,UAAY,cAAcwuB,OACzCyR,EAAM9pC,GAAGuE,MAAMqF,SAAW,EAAIyE,KAAKC,IAAI+pB,EAAc6R,IAAqBzqC,UAC5E,CACF,CAEA,iBAAOkqC,GACL,GAAMZ,EAAMgB,cAAe,CACzB,IAAID,EAAQf,EAAMgB,cAClBD,EAAMb,SAAU,EAChBa,EAAM9pC,GAAGoC,UAAUC,OAAO,WAE1B,IAAIg2B,EAAcyR,EAAMG,KAAOH,EAAME,aACjCE,EAAqBJ,EAAM9pC,GAAG0qB,YAAcof,EAAMzqC,QAAQypC,kBACtCz6B,KAAKC,IAAI+pB,GAAe6R,GAAsBJ,EAAM1P,UAAY,GAItF0P,EAAMK,WAAY,EAClBL,EAAMM,YAINN,EAAM9pC,GAAGuE,MAAMoF,WAAa,6BAC5BmgC,EAAM9pC,GAAGuE,MAAMsF,UAAY,GAC3BigC,EAAM9pC,GAAGuE,MAAMqF,QAAU,IAE3Bm/B,EAAMgB,cAAgB,IACxB,CACF,CAEA,YAAOzR,CAAM/3B,GACX,OAAIA,EAAEC,KAAK2Q,WAAW,UAAa5Q,EAAiB6Q,cAAc7P,QAAU,EAClEhB,EAAiB6Q,cAAc,GAAGlC,QAGpC3O,EAAiB2O,OAC3B,CAKA,iBAAOm7B,GACL,IAAK,IAAIC,KAAcvB,EAAMI,QAC3BJ,EAAMI,QAAQmB,GAAYF,SAE9B,CAEA,YAAAd,GACE,IAAIQ,EAAqBzrC,KAAKgB,QAAQkrC,QAClClmC,SAAS2jB,eAAe3pB,KAAKgB,QAAQkrC,SACrClmC,SAASC,cAAc,OAC3B,GAAIwlC,aAAkBU,oBAAqB,CACzC,MAAMC,EAAQX,EAA8BvlB,QAAQic,WAAU,GAC9DsJ,EAAUW,EAAqBC,iBACjC,CAWA,OAVAZ,EAAM1nC,UAAUE,IAAI,SACpBwnC,EAAMplC,aAAa,OAAQ,SAC3BolC,EAAMplC,aAAa,YAAa,aAChColC,EAAMplC,aAAa,cAAe,QAE9BrG,KAAKgB,QAAQ6kB,QAAQ3iB,OAAS,GAChCuoC,EAAM1nC,UAAUE,OAAOjE,KAAKgB,QAAQ6kB,QAAQ/E,MAAM,MAEhD9gB,KAAK2qC,UAASc,EAAM3iC,UAAY9I,KAAK2qC,SACzCD,EAAMa,WAAWhlC,YAAYklC,GACtBA,CACT,CAEA,UAAAnxB,GAEEta,KAAK2B,GAAGuE,MAAMqH,QAAU,GACxBvN,KAAK2B,GAAGuE,MAAMqF,QAAU,IAExBvL,KAAK2B,GAAGuE,MAAMoF,WAAa,eACnBtL,KAAKgB,QAAQ4Y,qCACT5Z,KAAKgB,QAAQ4Y,0BAEzB7U,YAAW,KACT/E,KAAK2B,GAAGuE,MAAMqjB,IAAM,IACpBvpB,KAAK2B,GAAGuE,MAAMqF,QAAU,GAAG,GAC1B,EACL,CAMA,SAAA4/B,GACMnrC,KAAK6qC,gBAAkB70B,MACzBhW,KAAKssC,gBAAkB78B,aAAY,KAE5BzP,KAAK4qC,UACR5qC,KAAK6qC,eAAiB,IAGpB7qC,KAAK6qC,eAAiB,GACxB7qC,KAAK+rC,SACP,GACC,IAEP,CAKA,OAAAA,GACElmC,OAAO0J,cAAcvP,KAAKssC,iBAC1B,IAAIT,EAAqB7rC,KAAK2B,GAAG0qB,YAAcrsB,KAAKgB,QAAQypC,kBAExDzqC,KAAK8rC,YACP9rC,KAAK2B,GAAGuE,MAAMoF,WAAa,+BAC3BtL,KAAK2B,GAAGuE,MAAMsF,UAAY,cAAcqgC,OACxC7rC,KAAK2B,GAAGuE,MAAMqF,QAAU,KAI1BvL,KAAK2B,GAAGuE,MAAMoF,WAAa,kBAChBtL,KAAKgB,QAAQ6Y,sCACZ7Z,KAAKgB,QAAQ6Y,qBAEzB9U,YAAW,KACT/E,KAAK2B,GAAGuE,MAAMqF,QAAU,IACxBvL,KAAK2B,GAAGuE,MAAMqmC,UAAY,OAAO,GAChC,GAEHxnC,YAAW,KAEoC,mBAAlC/E,KAAKgB,QAAQwpC,kBACtBxqC,KAAKgB,QAAQwpC,mBAGXxqC,KAAK2B,GAAGR,IAAMnB,KAAKgB,QAAQkrC,UAC7BlsC,KAAK2B,GAAGqC,SACR0mC,EAAMI,QAAQxxB,OAAOoxB,EAAMI,QAAQnjC,QAAQ3H,MAAO,GACrB,IAAzB0qC,EAAMI,QAAQ5nC,QAChBwnC,EAAMc,mBAEV,GACCxrC,KAAKgB,QAAQ6Y,YAClB,EA/OF,UAkPI6wB,EAAMI,QAAU,GAChBJ,EAAMa,WAAa,KACnBb,EAAMgB,cAAgB,I,wFC5S1B,eAEA,QA0DMzrC,EAA4B,CAChCusC,UAAW,IACXC,WAAY,EACZ9rC,KAAM,GACN+rC,OAAQ,EACR9yB,WAAY,IACZC,YAAa,IACbyR,SAAU,SACVqhB,mBAAoB,GACpBphC,QAAS,GAGX,MAAaqhC,UAAgB,EAAAnrC,UAmB3B,WAAAC,CAAYC,EAAiBX,GAC3BY,MAAMD,EAAIX,EAAS4rC,GA8FrB,KAAA5pC,KAAQ6pC,IACF7sC,KAAK2E,SACTkoC,OAAwBlnC,IAAbknC,QAAgClnC,EAC3C3F,KAAK2E,QAAS,EAEd3E,KAAKgB,QAAU,OAAH,wBAAOhB,KAAKgB,SAAYhB,KAAK8sC,wBACzC9sC,KAAK+sC,wBACL/sC,KAAKgtC,sBAAsBH,GAAS,EAMtC,KAAA9qC,MAAQ,KACD/B,KAAK2E,SACV3E,KAAKitC,WAAY,EACjBjtC,KAAKktC,WAAY,EACjBltC,KAAK2E,QAAS,EACd3E,KAAKmtC,uBAAsB,EAiI7B,KAAApmB,kBAAoB,KAClB/mB,KAAKitC,WAAY,EACjBjtC,KAAKktC,WAAY,EACjBltC,KAAKgD,MAAK,EAAM,EAGlB,KAAAgkB,kBAAoB,KAClBhnB,KAAKitC,WAAY,EACjBjtC,KAAKktC,WAAY,EACjBltC,KAAK+B,OAAO,EAGd,KAAA0uB,aAAe,KACT,EAAAjuB,MAAMO,aACR/C,KAAKktC,WAAY,EACjBltC,KAAKgD,MAAK,GACZ,EAGF,KAAAoqC,YAAc,KACZptC,KAAKktC,WAAY,EACjBltC,KAAK+B,OAAO,EArQX/B,KAAK2B,GAAW0rC,UAAYrtC,KAE7BA,KAAKgB,QAAU,OAAH,sCACP4rC,EAAQ3nC,UACRjF,KAAK8sC,wBACL9rC,GAGLhB,KAAK2E,QAAS,EACd3E,KAAKitC,WAAY,EACjBjtC,KAAKktC,WAAY,EACjBltC,KAAKstC,mBACLttC,KAAKoF,qBACP,CAEA,mBAAWH,GACT,OAAOhF,CACT,CAmBA,WAAOoF,CAAKC,EAA2CtE,EAAmC,CAAC,GACzF,OAAOY,MAAMyD,KAAKC,EAAKtE,EAAS4rC,EAClC,CAEA,kBAAOrnC,CAAY5D,GACjB,OAAQA,EAAW0rC,SACrB,CAEA,OAAA7nC,GACExF,KAAKutC,UAAUvpC,SACfhE,KAAKyF,uBACJzF,KAAK2B,GAAW0rC,eAAY1nC,CAC/B,CAEA,gBAAA2nC,GACEttC,KAAKutC,UAAYvnC,SAASC,cAAc,OACxCjG,KAAKutC,UAAUxpC,UAAUE,IAAI,oBAE7B,MAAMupC,EAAmBxtC,KAAKgB,QAAQysC,UAClCznC,SAAS2jB,eAAe3pB,KAAKgB,QAAQysC,WACrCznC,SAASC,cAAc,OAC3BjG,KAAKutC,UAAUtkC,OAAQukC,GACvBA,EAAiBtnC,MAAMqH,QAAU,GAEjCigC,EAAiBzpC,UAAUE,IAAI,mBAC/BjE,KAAK0tC,mBAAmBF,GACxBxtC,KAAKutC,UAAUhnC,YAAYinC,GAC3BxnC,SAASwE,KAAKjE,YAAYvG,KAAKutC,UACjC,CAEA,kBAAAG,CAAmBF,GACbxtC,KAAKgB,QAAQysC,YAEjBD,EAAiB1kC,UAAY9I,KAAKgB,QAAQL,KAC5C,CAEA,qBAAAosC,GACE/sC,KAAK0tC,mBAAmB1tC,KAAKutC,UAAUxmC,cAAc,oBACvD,CAEA,mBAAA3B,GACEpF,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAK+mB,mBAC5C/mB,KAAK2B,GAAGiE,iBAAiB,aAAc5F,KAAKgnB,mBAC5ChnB,KAAK2B,GAAGiE,iBAAiB,QAAS5F,KAAKywB,cAAc,GACrDzwB,KAAK2B,GAAGiE,iBAAiB,OAAQ5F,KAAKotC,aAAa,EACrD,CAEA,oBAAA3nC,GACEzF,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAK+mB,mBAC/C/mB,KAAK2B,GAAGoE,oBAAoB,aAAc/F,KAAKgnB,mBAC/ChnB,KAAK2B,GAAGoE,oBAAoB,QAAS/F,KAAKywB,cAAc,GACxDzwB,KAAK2B,GAAGoE,oBAAoB,OAAQ/F,KAAKotC,aAAa,EACxD,CA0BA,oBAAAD,GACE15B,aAAazT,KAAK2tC,mBAClB3tC,KAAK2tC,kBAAoB5oC,YAAW,KAC9B/E,KAAKitC,WAAajtC,KAAKktC,WAC3BltC,KAAKua,aAAa,GACjBva,KAAKgB,QAAQwrC,UAClB,CAEA,qBAAAQ,CAAsBH,GACpBp5B,aAAazT,KAAK4tC,oBAClB5tC,KAAK4tC,mBAAqB7oC,YAAW,MAC9B/E,KAAKitC,WAAcjtC,KAAKktC,WAAcL,IAC3C7sC,KAAKsa,YAAY,GAChBta,KAAKgB,QAAQyrC,WAClB,CAEA,gBAAAoB,GACE,MAAMC,EAAuB9tC,KAAKutC,UAC5BQ,EAAU/tC,KAAK2B,GACnB4gC,EAAewL,EAAOn7B,aACtB0vB,EAAcyL,EAAO1hB,YACrB2hB,EAAgBF,EAAQl7B,aACxBq7B,EAAeH,EAAQzhB,YACvBqgB,EAAS1sC,KAAKgB,QAAQ0rC,OAEvB1sC,KAAKkuC,UAAY,EAAKluC,KAAKmuC,UAAY,EAExC,IAAIC,EAAYL,EAAOhiC,wBAAwBwd,IAAM,EAAA/mB,MAAMitB,uBACvD4e,EAAaN,EAAOhiC,wBAAwBK,KAAO,EAAA5J,MAAMgtB,wBAC/B,QAA1BxvB,KAAKgB,QAAQsqB,UACf8iB,IAAcJ,EAAgBtB,EAC9B2B,GAAc/L,EAAc,EAAI2L,EAAe,EAC/CjuC,KAAKmuC,WAAanuC,KAAKgB,QAAQ2rC,oBACI,UAA1B3sC,KAAKgB,QAAQsqB,UACtB8iB,GAAa7L,EAAe,EAAIyL,EAAgB,EAChDK,GAAc/L,EAAcoK,EAC5B1sC,KAAKkuC,UAAYluC,KAAKgB,QAAQ2rC,oBACK,SAA1B3sC,KAAKgB,QAAQsqB,UACtB8iB,GAAa7L,EAAe,EAAIyL,EAAgB,EAChDK,IAAeJ,EAAevB,EAC9B1sC,KAAKkuC,WAAaluC,KAAKgB,QAAQ2rC,qBAE/ByB,GAAa7L,EAAemK,EAC5B2B,GAAc/L,EAAc,EAAI2L,EAAe,EAC/CjuC,KAAKmuC,UAAYnuC,KAAKgB,QAAQ2rC,oBAGhC,MAAM2B,EAAiBtuC,KAAKuuC,wBAC1BF,EACAD,EACAH,EACAD,GAGFF,EAAQ5nC,MAAMqjB,IAAM+kB,EAAez+B,EAAE,KACrCi+B,EAAQ5nC,MAAMkG,KAAOkiC,EAAe1+B,EAAE,IACxC,CAEA,uBAAA2+B,CAAwB3+B,EAAWC,EAAWxD,EAAemG,GAC3D,MAAMg8B,EAAa,EAAAhsC,MAAMgtB,wBACnBqB,EAAY,EAAAruB,MAAMitB,uBACxB,IAAIgf,EAAO7+B,EAAI4+B,EACXE,EAAO7+B,EAAIghB,EAEf,MAAM8d,EAAqB,CACzBviC,KAAMqiC,EACNllB,IAAKmlB,EACLriC,MAAOA,EACPmG,OAAQA,GAEJrD,EAASnP,KAAKgB,QAAQ0rC,OAAS1sC,KAAKgB,QAAQ2rC,mBAC5CiC,EAAQ,EAAApsC,MAAMqsC,qBAAqB7oC,SAASwE,KAAMmkC,EAAUx/B,GAYlE,OAVIy/B,EAAMxiC,KACRqiC,EAAOt/B,EACEy/B,EAAMxa,QACfqa,GAAQA,EAAOpiC,EAAQxG,OAAO8F,YAE5BijC,EAAMrlB,IACRmlB,EAAOv/B,EACEy/B,EAAMtiC,SACfoiC,GAAQA,EAAOl8B,EAAS3M,OAAOgG,aAE1B,CACL+D,EAAG6+B,EAAOD,EACV3+B,EAAG6+B,EAAO7d,EAEd,CAEA,UAAAvW,GACEta,KAAK6tC,mBACL7tC,KAAKutC,UAAUrnC,MAAMmO,WAAa,UAClC,MAAM/G,EAAWtN,KAAKgB,QAAQ4Y,WAE9B5Z,KAAKutC,UAAUrnC,MAAMoF,WAAa,qBACpBgC,gCACFA,eACZvI,YAAW,KACT/E,KAAKutC,UAAUrnC,MAAMsF,UAAY,cAAcxL,KAAKkuC,2BAA2BluC,KAAKmuC,eACpFnuC,KAAKutC,UAAUrnC,MAAMqF,SAAWvL,KAAKgB,QAAQuK,SAAW,GAAGnK,UAAU,GACpE,EACL,CAEA,WAAAmZ,GACE,MAAMjN,EAAWtN,KAAKgB,QAAQ6Y,YAE9B7Z,KAAKutC,UAAUrnC,MAAMoF,WAAa,qBACpBgC,gCACFA,eACZvI,YAAW,KACT/E,KAAKutC,UAAUrnC,MAAMsF,UAAY,kCACjCxL,KAAKutC,UAAUrnC,MAAMqF,QAAU,GAAG,GACjC,EAYL,CA0BA,oBAAAuhC,GACE,IAAIgC,EAA4C,CAAC,EACjD,MAAMC,EAAoB/uC,KAAK2B,GAAGiC,aAAa,gBACzC6pC,EAAYztC,KAAK2B,GAAGiC,aAAa,mBACjCorC,EAAiBhvC,KAAK2B,GAAGiC,aAAa,iBAW5C,OAVImrC,IACFD,EAAiBnuC,KAAOouC,GAEtBC,IACFF,EAAiBxjB,SAAW0jB,GAE1BvB,IACFqB,EAAiBrB,UAAYA,GAGxBqB,CACT,EA7SF,W,oFClEA,MAAatsC,EAyBX,uBAAOysC,CAAiB/sC,GACtBM,EAAM61B,SAAU,EACZ,IAAI71B,EAAMC,KAAKqlB,OAAQtlB,EAAMC,KAAKI,cAAeL,EAAMC,KAAKG,UAAUvB,SAASa,EAAES,OACnFH,EAAMO,YAAa,EAEvB,CAMA,qBAAOmsC,CAAehtC,GACpBM,EAAM61B,SAAU,EACZ,IAAI71B,EAAMC,KAAKqlB,OAAQtlB,EAAMC,KAAKI,cAAeL,EAAMC,KAAKG,UAAUvB,SAASa,EAAES,OACnFH,EAAMO,YAAa,EAEvB,CAMA,qBAAOosC,CAAejtC,GAChBM,EAAM61B,SACRryB,SAASwE,KAAKzG,UAAUE,IAAI,mBAEhC,CAMA,oBAAOmrC,CAAcltC,GACnB8D,SAASwE,KAAKzG,UAAUC,OAAO,mBACjC,CAKA,WAAOoC,GACL,MAAMipC,EAAK,IACFr/B,KAAK4D,MAA4B,OAArB,EAAI5D,KAAKwV,WACzBpkB,SAAS,IACTkuC,UAAU,GAEf,OAAOD,IAAOA,IAAO,IAAMA,IAAO,IAAMA,IAAO,IAAMA,IAAO,IAAMA,IAAOA,IAAOA,GAClF,CAQA,2BAAOR,CAAqBtrC,EAAwBorC,EAAoBx/B,GACtE,IAAIy/B,EAAQ,CACVrlB,KAAK,EACL6K,OAAO,EACP9nB,QAAQ,EACRF,MAAM,GAGJmjC,EAAgBhsC,EAAUwI,wBAE1ByjC,EACFjsC,IAAcyC,SAASwE,KACnBwF,KAAKqI,IAAIk3B,EAAcjjC,OAAQzG,OAAOgG,aACtC0jC,EAAcjjC,OAEhBkiC,EAAajrC,EAAUirC,WACvB3d,EAAYttB,EAAUstB,UAEtB4e,EAAYd,EAASviC,KAAOoiC,EAC5BkB,EAAYf,EAASplB,IAAMsH,EAyB/B,OAtBI4e,EAAYF,EAAcnjC,KAAO+C,GAAUsgC,EAAYtgC,KACzDy/B,EAAMxiC,MAAO,IAIbqjC,EAAYd,EAAStiC,MAAQkjC,EAAcnb,MAAQjlB,GACnDsgC,EAAYd,EAAStiC,MAAQxG,OAAO8F,WAAawD,KAEjDy/B,EAAMxa,OAAQ,IAGZsb,EAAYH,EAAchmB,IAAMpa,GAAUugC,EAAYvgC,KACxDy/B,EAAMrlB,KAAM,IAIZmmB,EAAYf,EAASn8B,OAASg9B,EAAkBrgC,GAChDugC,EAAYf,EAASn8B,OAAS3M,OAAOgG,YAAcsD,KAEnDy/B,EAAMtiC,QAAS,GAGVsiC,CACT,CASA,8BAAOjkB,CAAwBhpB,EAAiB4B,EAAwBorC,EAAoBx/B,GAC1F,IAAIwgC,EASA,CACFpmB,KAAK,EACL6K,OAAO,EACP9nB,QAAQ,EACRF,MAAM,EACN0e,WAAY,KACZI,aAAc,KACdH,cAAe,KACfE,YAAa,MAGX2kB,EAAmE,YAAzC1jC,iBAAiB3I,GAAWqJ,SACtD2iC,EAAgBhsC,EAAUwI,wBAC1BgmB,EAAkB/hB,KAAKgC,IAAIu9B,EAAc/8B,OAAQ3M,OAAOgG,aACxDgkC,EAAiB7/B,KAAKgC,IAAIu9B,EAAcljC,MAAOxG,OAAO8F,YACtDmkC,EAAenuC,EAAGoK,wBAElByiC,EAAajrC,EAAUirC,WACvB3d,EAAYttB,EAAUstB,UAEtB4e,EAAYd,EAASviC,KAAOoiC,EAC5BuB,EAAmBpB,EAASplB,IAAMsH,EAClCmf,EAAsBrB,EAASplB,IAAMumB,EAAat9B,OAASqe,EAkC/D,OA/BA8e,EAASzkB,aAAgB0kB,EAErB/pC,OAAO8F,YAAcmkC,EAAa1jC,KAAOuiC,EAAStiC,OADlDwjC,GAAkBJ,EAAYd,EAAStiC,OAEvCsjC,EAASzkB,aAAe,IAC1BykB,EAASvjC,MAAO,GAIlBujC,EAAS1kB,YAAe2kB,EAEpBE,EAAa1b,MAAQua,EAAStiC,MAD9BojC,EAAYd,EAAStiC,MAAQyjC,EAAazjC,MAE1CsjC,EAAS1kB,YAAc,IACzB0kB,EAASvb,OAAQ,GAInBub,EAAS5kB,cAAiB6kB,EAEtB/pC,OAAOgG,aAAeikC,EAAavmB,IAAMolB,EAASn8B,OAASrD,GAD3D4iB,GAAmBge,EAAmBpB,EAASn8B,OAASrD,GAExDwgC,EAAS5kB,cAAgB,IAC3B4kB,EAASpmB,KAAM,GAIjBomB,EAAS7kB,WAAc8kB,EAEnBE,EAAaxjC,QAAUqiC,EAASn8B,OAASrD,GADzC6gC,GAAuBrB,EAASn8B,OAASrD,GAEzCwgC,EAAS7kB,WAAa,IACxB6kB,EAASrjC,QAAS,GAGbqjC,CACT,CAMA,uBAAOjmB,CAAiB5c,GACtB,IAAI3L,EAAK2L,EAAQg1B,QAAQ13B,OACzB,OAAKjJ,IACHA,EAAK2L,EAAQlJ,aAAa,QACnBzC,EAAKA,EAAG0G,MAAM,GAAK,GAG9B,CAKA,2BAAO4nB,GACL,OAAO5pB,OAAOoqC,SAAWjqC,SAASkpB,gBAAgB2B,WAAa7qB,SAASwE,KAAKqmB,WAAa,CAC5F,CAKA,4BAAOrB,GACL,OAAO3pB,OAAOqqC,SAAWlqC,SAASkpB,gBAAgBsf,YAAcxoC,SAASwE,KAAKgkC,YAAc,CAC9F,CAQA,eAAOpgC,CAAS+hC,EAAgBC,EAAcpvC,EAAuD,MACnG,IAAIqvC,EAAiBC,EAAkBC,EACnCC,EAAU,KACVC,EAAW,EACfzvC,IAAYA,EAAU,CAAC,GACvB,IAAI0vC,EAAQ,WACVD,GAA+B,IAApBzvC,EAAQ2vC,QAAoB,GAAI,IAAIthC,MAAOmQ,UACtDgxB,EAAU,KACVD,EAASJ,EAAKS,MAAMP,EAASC,GAC7BD,EAAUC,EAAO,IACnB,EACA,OAAO,WACL,IAAIhhC,GAAM,IAAID,MAAOmQ,UAChBixB,IAAgC,IAApBzvC,EAAQ2vC,UAAmBF,EAAWnhC,GACvD,IAAIuhC,EAAYT,GAAQ9gC,EAAMmhC,GAY9B,OAXAJ,EAAUrwC,KACVswC,EAAOQ,UACHD,GAAa,GACfp9B,aAAa+8B,GACbA,EAAU,KACVC,EAAWnhC,EACXihC,EAASJ,EAAKS,MAAMP,EAASC,GAC7BD,EAAUC,EAAO,MACPE,IAAgC,IAArBxvC,EAAQ+vC,WAC7BP,EAAUzrC,WAAW2rC,EAAOG,IAEvBN,CACT,CACF,EAvQF,UAES,EAAAxtC,YAAsB,EAEtB,EAAAs1B,SAAmB,EAKnB,EAAA51B,KAAO,CACZqlB,IAAK,CAAC,OACNplB,MAAO,CAAC,SACR6lB,IAAK,CAAC,SAAU,OAChBxR,UAAW,CAAC,aACZnU,SAAU,CAAC,UAAW,MACtBC,WAAY,CAAC,YAAa,QAC1BmU,WAAY,CAAC,YAAa,QAC1BsB,YAAa,CAAC,aAAc,SAC5BJ,OAAQ,CAAC,SAAU,O,oFCbvB,MAAa84B,EAEH,cAAOjiB,CAAQptB,GACrB,MAAMqtB,EAAMrtB,EAAGoK,wBACTkjB,EAAUjpB,SAASkpB,gBACzB,MAAO,CACL3F,IAAKyF,EAAIzF,IAAM1jB,OAAOspB,YAAcF,EAAQG,UAC5ChjB,KAAM4iB,EAAI5iB,KAAOvG,OAAOwpB,YAAcJ,EAAQK,WAElD,CAIA,uBAAO2hB,CAAiBC,EAA4B5lB,EAA0B,KAAM6lB,EAAuB,MACzG,MAAMC,EAA0B,OAAb9lB,EAEnB,IAAI+lB,EAAwBC,EAC5B,MAAMC,EAAgB,SAASniC,GACxBkiC,IACHA,EAAiBliC,GAEnB,MAAMF,EAAQE,EAAYkiC,EAC1B,GAAIpiC,EAPW,IAOO,CACpB,MAAMsiC,EAAUtiC,EARH,KAQsB,EAAKA,EAR3B,KASPuiC,EAASL,EAAa,oBAAsB,aAAa9lB,EAAS1b,OAAO0b,EAASzb,MAClF6hC,EAAY,SAAQP,aAAK,EAALA,EAAOhuB,IAAK,OAAMguB,aAAK,EAALA,EAAOtI,IAAK,OAAMsI,aAAK,EAALA,EAAOjxB,IAAK,MAAO,IAAO,EAAEsxB,MACpFG,EAAO,GAAKH,EAAS,IAC3BN,EAAchrC,MAAMk4B,gBAAkB,mBAAmBqT,EAAO,KAAKC,EAAU,IAAIC,EAAK,iBAAiBA,EAAK,IAC9GN,EAAiBxrC,OAAO0K,sBAAsBghC,EAChD,MAEEL,EAAchrC,MAAMk4B,gBAAkB,OACtCv4B,OAAO+rC,qBAAqBP,EAEhC,EACAA,EAAiBxrC,OAAO0K,sBAAsBghC,EAChD,CAEA,WAAO1kC,GACL7G,SAASJ,iBAAiB,oBAAoB,KAC5CI,SAASwE,KAAK5E,iBAAiB,SAAS1D,IACtC,MAAM4K,EAAuB5K,EAAEkI,OACzBzI,EAAkBmL,EAAQE,QAAQ,iBACxC,GAAIrL,GAAMA,EAAGwL,SAASL,GAAU,CAC9B,MAAM+kC,EAAalwC,EAAGoC,UAAUoJ,SAAS,gBACnCyC,EAAI1N,EAAE4vC,MAAQd,EAAMjiB,QAAQptB,GAAIyK,KAChCyD,EAAI3N,EAAE6vC,MAAQf,EAAMjiB,QAAQptB,GAAI4nB,IAEtC,IAAI4nB,EAAQ,KACRxvC,EAAGoC,UAAUoJ,SAAS,iBACxBgkC,EAAQ,CAAChuB,EAAE,IAAK0lB,EAAE,IAAK3oB,EAAE,MAE3B8wB,EAAMC,iBAAiBtvC,EAAIkwC,EAAa,KAAO,CAACjiC,IAAGC,KAAIshC,EACzD,IACA,GAGN,EAzDF,S,GCVIa,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBvsC,IAAjBwsC,EACH,OAAOA,EAAazyC,QAGrB,IAAIC,EAASqyC,EAAyBE,GAAY,CAGjDxyC,QAAS,CAAC,GAOX,OAHA0yC,EAAoBF,GAAUvyC,EAAQA,EAAOD,QAASuyC,GAG/CtyC,EAAOD,OACf,C,+FCtBA,eACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SAEA,MAAa2yC,EA8CX,eAAOC,CAASjC,EAAuBrqC,SAASwE,MAC9C,IAAI+nC,EAAW,CACb/wC,aAAc6uC,EAAQ7sC,iBAAiB,mCACvCyK,SAAUoiC,EAAQ7sC,iBAAiB,+BACnC6S,MAAOg6B,EAAQ7sC,iBAAiB,4BAChCsW,YAAau2B,EAAQ7sC,iBAAiB,kCACtCoa,WAAYyyB,EAAQ7sC,iBAAiB,iCACrCqD,SAAUwpC,EAAQ7sC,iBAAiB,uCACnC0pB,YAAamjB,EAAQ7sC,iBAAiB,oCACtCqd,MAAOwvB,EAAQ7sC,iBAAiB,4BAChC2tB,SAAUkf,EAAQ7sC,iBAAiB,+BACnC2uB,QAASke,EAAQ7sC,iBAAiB,8BAClCwwB,UAAWqc,EAAQ7sC,iBAAiB,gCACpC+c,WAAY8vB,EAAQ7sC,iBAAiB,4BACrCi2B,QAAS4W,EAAQ7sC,iBAAiB,8BAClC07B,KAAMmR,EAAQ7sC,iBAAiB,2BAC/Bg+B,UAAW6O,EAAQ7sC,iBAAiB,iCACpCohC,WAAYyL,EAAQ7sC,iBAAiB,iCACrCopC,QAASyD,EAAQ7sC,iBAAiB,iCAClCyG,qBAAsBomC,EAAQ7sC,iBAAiB,wCAEjD6uC,EAAE7wC,aAAa6D,KAAKktC,EAAS/wC,aAAc,CAAC,GAC5C6wC,EAAEpkC,SAAS5I,KAAKktC,EAAStkC,SAAU,CAAC,GACpCokC,EAAEh8B,MAAMhR,KAAKktC,EAASl8B,MAAO,CAAC,GAC9Bg8B,EAAEv4B,YAAYzU,KAAKktC,EAASz4B,YAAa,CAAC,GAC1Cu4B,EAAEz0B,WAAWvY,KAAKktC,EAAS30B,WAAY,CAAC,GACxCy0B,EAAExrC,SAASxB,KAAKktC,EAAS1rC,SAAU,CAAC,GACpCwrC,EAAEnlB,YAAY7nB,KAAKktC,EAASrlB,YAAa,CAAC,GAC1CmlB,EAAExxB,MAAMxb,KAAKktC,EAAS1xB,MAAO,CAAC,GAC9BwxB,EAAElhB,SAAS9rB,KAAKktC,EAASphB,SAAU,CAAC,GACpCkhB,EAAElgB,QAAQ9sB,KAAKktC,EAASpgB,QAAS,CAAC,GAClCkgB,EAAEre,UAAU3uB,KAAKktC,EAASve,UAAW,CAAC,GACtCqe,EAAE9xB,WAAWlb,KAAKktC,EAAShyB,WAAY,CAAC,GACxC8xB,EAAE5Y,QAAQp0B,KAAKktC,EAAS9Y,QAAS,CAAC,GAClC4Y,EAAEnT,KAAK75B,KAAKktC,EAASrT,KAAM,CAAC,GAC5BmT,EAAE7Q,UAAUn8B,KAAKktC,EAAS/Q,UAAW,CAAC,GACtC6Q,EAAEzN,WAAWv/B,KAAKktC,EAAS3N,WAAY,CAAC,GACxCyN,EAAEzF,QAAQvnC,KAAKktC,EAAS3F,QAAS,CAAC,GAClCyF,EAAEpoC,qBAAqB5E,KAAKktC,EAAStoC,qBAAsB,CAAC,EAC9D,EArFF,MACS,EAAAuoC,QAAU,QAEV,EAAAhxC,aAAoC,EAAAA,aACpC,EAAA09B,KAAoB,EAAAA,KACpB,EAAAjxB,SAA4B,EAAAA,SAC5B,EAAApH,SAA4B,EAAAA,SAC5B,EAAAoD,qBAAoD,EAAAA,qBACpD,EAAAoM,MAAsB,EAAAA,MACtB,EAAAyD,YAAkC,EAAAA,YAClC,EAAA8D,WAAgC,EAAAA,WAChC,EAAAjJ,iBAA4C,EAAAA,iBAC5C,EAAA6W,MAAsB,EAAAA,MACtB,EAAAjL,WAAgC,EAAAA,WAChC8xB,EAAAxxB,MAAsB,EAAAA,MACtB,EAAAsR,QAA0B,EAAAA,QAC1BkgB,EAAAnlB,YAAkC,EAAAA,YAClC,EAAAiE,SAA4B,EAAAA,SAC5B,EAAAwL,OAAwB,EAAAA,OACxB,EAAAiI,WAAgC,EAAAA,WAEhC,EAAA6G,MAAgDgH,GAAQ,IAAI,EAAA/H,MAAM+H,GAClE,EAAA7F,QAA0B,EAAAA,QAC1B,EAAAnT,QAA0B,EAAAA,QAC1B,EAAA+H,UAA8B,EAAAA,UAC9B,EAAAxN,UAA8B,EAAAA,UAC9B,EAAAnB,MAAsB,EAAAA,MACtB,EAAAme,MAAsB,EAAAA,MACtB,EAAAxuC,MAAsB,EAAAA,MAG3BwD,SAASJ,iBAAiB,UAAW,EAAApD,MAAMysC,kBAAkB,GAC7DjpC,SAASJ,iBAAiB,QAAS,EAAApD,MAAM0sC,gBAAgB,GACzDlpC,SAASJ,iBAAiB,QAAS,EAAApD,MAAM2sC,gBAAgB,GACzDnpC,SAASJ,iBAAiB,OAAQ,EAAApD,MAAM4sC,eAAe,GACvD,EAAAsD,MAAM7lC,OACN,EAAA2e,MAAM3e,OACN,EAAAwJ,MAAMxJ,OACN,EAAAmkC,MAAMnkC,OACN,EAAAgmB,MAAMhmB,M","sources":["webpack://@materializecss/materialize/webpack/universalModuleDefinition","webpack://@materializecss/materialize/./src/autocomplete.ts","webpack://@materializecss/materialize/./src/buttons.ts","webpack://@materializecss/materialize/./src/cards.ts","webpack://@materializecss/materialize/./src/carousel.ts","webpack://@materializecss/materialize/./src/characterCounter.ts","webpack://@materializecss/materialize/./src/chips.ts","webpack://@materializecss/materialize/./src/collapsible.ts","webpack://@materializecss/materialize/./src/component.ts","webpack://@materializecss/materialize/./src/datepicker.ts","webpack://@materializecss/materialize/./src/dropdown.ts","webpack://@materializecss/materialize/./src/forms.ts","webpack://@materializecss/materialize/./src/materialbox.ts","webpack://@materializecss/materialize/./src/modal.ts","webpack://@materializecss/materialize/./src/parallax.ts","webpack://@materializecss/materialize/./src/pushpin.ts","webpack://@materializecss/materialize/./src/range.ts","webpack://@materializecss/materialize/./src/scrollspy.ts","webpack://@materializecss/materialize/./src/select.ts","webpack://@materializecss/materialize/./src/sidenav.ts","webpack://@materializecss/materialize/./src/slider.ts","webpack://@materializecss/materialize/./src/tabs.ts","webpack://@materializecss/materialize/./src/tapTarget.ts","webpack://@materializecss/materialize/./src/timepicker.ts","webpack://@materializecss/materialize/./src/toasts.ts","webpack://@materializecss/materialize/./src/tooltip.ts","webpack://@materializecss/materialize/./src/utils.ts","webpack://@materializecss/materialize/./src/waves.ts","webpack://@materializecss/materialize/webpack/bootstrap","webpack://@materializecss/materialize/./src/global.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn ","import { Utils } from \"./utils\";\nimport { Dropdown, DropdownOptions } from \"./dropdown\";\nimport { Component, BaseOptions, InitElements, MElement } from \"./component\";\n\nexport interface AutocompleteData {\n /** \n * A primitive value that can be converted to string.\n * If \"text\" is not provided, it will also be used as \"option text\" as well\n */\n id: string | number;\n /**\n * This optional attribute is used as \"display value\" for the current entry.\n * When provided, it will also be taken into consideration by the standard search function.\n */\n text?: string;\n /**\n * This optional attribute is used to provide a valid image URL to the current option.\n */\n image?: string;\n /**\n * Optional attributes which describes the option.\n */\n description?: string;\n}\n\nexport interface AutocompleteOptions extends BaseOptions {\n /**\n * Data object defining autocomplete options with\n * optional icon strings.\n */\n data: AutocompleteData[];\n /**\n * Flag which can be set if multiple values can be selected. The Result will be an Array.\n * @default false\n */\n isMultiSelect: boolean;\n /**\n * Callback for when autocompleted.\n */\n onAutocomplete: (entries: AutocompleteData[]) => void;\n /**\n * Minimum number of characters before autocomplete starts.\n * @default 1\n */\n minLength: number;\n /**\n * The height of the Menu which can be set via css-property.\n * @default '300px'\n */\n maxDropDownHeight: string;\n /**\n * Function is called when the input text is altered and data can also be loaded asynchronously.\n * If the results are collected the items in the list can be updated via the function setMenuItems(collectedItems).\n * @param text Searched text.\n * @param autocomplete Current autocomplete instance.\n */\n onSearch: (text: string, autocomplete: Autocomplete) => void;\n /**\n * If true will render the key from each item directly as HTML.\n * User input MUST be properly sanitized first.\n * @default false\n */\n allowUnsafeHTML: boolean;\n /**\n * Pass options object to select dropdown initialization.\n * @default {}\n */\n dropdownOptions: Partial;\n};\n\nlet _defaults: AutocompleteOptions = {\n data: [], // Autocomplete data set\n onAutocomplete: null, // Callback for when autocompleted\n dropdownOptions: {\n // Default dropdown options\n autoFocus: false,\n closeOnClick: false,\n coverTrigger: false\n },\n minLength: 1, // Min characters before autocomplete starts\n isMultiSelect: false,\n onSearch: (text: string, autocomplete: Autocomplete) => {\n const normSearch = text.toLocaleLowerCase();\n autocomplete.setMenuItems(\n autocomplete.options.data.filter((option) => \n option.id.toString().toLocaleLowerCase().includes(normSearch)\n || option.text?.toLocaleLowerCase().includes(normSearch)\n )\n );\n },\n maxDropDownHeight: '300px',\n allowUnsafeHTML: false\n};\n\n\nexport class Autocomplete extends Component {\n declare el: HTMLInputElement;\n /** If the autocomplete is open. */\n isOpen: boolean;\n /** Number of matching autocomplete options. */\n count: number;\n /** Index of the current selected option. */\n activeIndex: number;\n private oldVal: string;\n private $active: HTMLElement|null;\n private _mousedown: boolean;\n container: HTMLElement;\n /** Instance of the dropdown plugin for this autocomplete. */\n dropdown: Dropdown;\n static _keydown: boolean;\n selectedValues: AutocompleteData[];\n menuItems: AutocompleteData[];\n\n\n constructor(el: HTMLInputElement, options: Partial) {\n super(el, options, Autocomplete);\n (this.el as any).M_Autocomplete = this;\n\n this.options = {\n ...Autocomplete.defaults,\n ...options\n };\n \n this.isOpen = false;\n this.count = 0;\n this.activeIndex = -1;\n this.oldVal = \"\";\n this.selectedValues = [];\n this.menuItems = [];\n this.$active = null;\n this._mousedown = false;\n this._setupDropdown();\n this._setupEventHandlers();\n }\n\n static get defaults(): AutocompleteOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Autocomplete.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLInputElement, options?: Partial): Autocomplete;\n /**\n * Initializes instances of Autocomplete.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Autocomplete[];\n /**\n * Initializes instances of Autocomplete.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLInputElement | InitElements, options: Partial = {}): Autocomplete | Autocomplete[] {\n return super.init(els, options, Autocomplete);\n }\n\n static getInstance(el: HTMLElement): Autocomplete {\n return (el as any).M_Autocomplete;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._removeDropdown();\n (this.el as any).M_Autocomplete = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('blur', this._handleInputBlur);\n this.el.addEventListener('keyup', this._handleInputKeyupAndFocus);\n this.el.addEventListener('focus', this._handleInputKeyupAndFocus);\n this.el.addEventListener('keydown', this._handleInputKeydown);\n this.el.addEventListener('click', this._handleInputClick);\n this.container.addEventListener(\n 'mousedown',\n this._handleContainerMousedownAndTouchstart\n );\n this.container.addEventListener('mouseup', this._handleContainerMouseupAndTouchend);\n if (typeof window.ontouchstart !== 'undefined') {\n this.container.addEventListener(\n 'touchstart',\n this._handleContainerMousedownAndTouchstart\n );\n this.container.addEventListener('touchend', this._handleContainerMouseupAndTouchend);\n }\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('blur', this._handleInputBlur);\n this.el.removeEventListener('keyup', this._handleInputKeyupAndFocus);\n this.el.removeEventListener('focus', this._handleInputKeyupAndFocus);\n this.el.removeEventListener('keydown', this._handleInputKeydown);\n this.el.removeEventListener('click', this._handleInputClick);\n this.container.removeEventListener(\n 'mousedown',\n this._handleContainerMousedownAndTouchstart\n );\n this.container.removeEventListener('mouseup', this._handleContainerMouseupAndTouchend);\n\n if (typeof window.ontouchstart !== 'undefined') {\n this.container.removeEventListener(\n 'touchstart',\n this._handleContainerMousedownAndTouchstart\n );\n this.container.removeEventListener(\n 'touchend',\n this._handleContainerMouseupAndTouchend\n );\n }\n }\n\n _setupDropdown() {\n this.container = document.createElement('ul');\n this.container.style.maxHeight = this.options.maxDropDownHeight;\n this.container.id = `autocomplete-options-${Utils.guid()}`;\n this.container.classList.add('autocomplete-content', 'dropdown-content');\n this.el.setAttribute('data-target', this.container.id);\n\n // ! Issue in Component Dropdown: _placeDropdown moves dom-position\n this.el.parentElement.appendChild(this.container);\n\n // Initialize dropdown\n let dropdownOptions = {\n ...Autocomplete.defaults.dropdownOptions,\n ...this.options.dropdownOptions\n };\n let userOnItemClick = dropdownOptions.onItemClick;\n // Ensuring the select Option call when user passes custom onItemClick function to dropdown\n dropdownOptions.onItemClick = (li) => {\n if (!li) return;\n const entryID = li.getAttribute('data-id');\n this.selectOption(entryID);\n // Handle user declared onItemClick if needed\n if (userOnItemClick && typeof userOnItemClick === 'function')\n userOnItemClick.call(this.dropdown, this.el);\n };\n this.dropdown = Dropdown.init(this.el, dropdownOptions);\n\n // ! Workaround for Label: move label up again\n // TODO: Just use PopperJS in future!\n const label = this.el.parentElement.querySelector('label');\n if (label) this.el.after(label);\n\n // Sketchy removal of dropdown click handler\n this.el.removeEventListener('click', this.dropdown._handleClick);\n // Set Value if already set in HTML\n if (this.el.value) this.selectOption(this.el.value);\n // Add StatusInfo\n const div = document.createElement('div');\n div.classList.add('status-info');\n div.setAttribute('style', 'position: absolute;right:0;top:0;');\n this.el.parentElement.appendChild(div);\n this._updateSelectedInfo();\n }\n\n _removeDropdown() {\n this.container.parentNode.removeChild(this.container);\n }\n\n _handleInputBlur = () => {\n if (!this._mousedown) {\n this.close();\n this._resetAutocomplete();\n }\n }\n\n _handleInputKeyupAndFocus = (e: KeyboardEvent) => {\n if (e.type === 'keyup') Autocomplete._keydown = false;\n this.count = 0;\n const actualValue = this.el.value.toLocaleLowerCase();\n // Don't capture enter or arrow key usage.\n if (Utils.keys.ENTER.includes(e.key) || Utils.keys.ARROW_UP.includes(e.key) || Utils.keys.ARROW_DOWN.includes(e.key)) return;\n // Check if the input isn't empty\n // Check if focus triggered by tab\n if (this.oldVal !== actualValue && (Utils.tabPressed || e.type !== 'focus')) {\n this.open();\n }\n // Value has changed!\n if (this.oldVal !== actualValue) {\n this._setStatusLoading();\n this.options.onSearch(this.el.value, this);\n }\n // Reset Single-Select when Input cleared\n if (!this.options.isMultiSelect && this.el.value.length === 0) {\n this.selectedValues = [];\n this._triggerChanged();\n }\n this.oldVal = actualValue;\n }\n\n _handleInputKeydown = (e: KeyboardEvent) => {\n Autocomplete._keydown = true;\n // Arrow keys and enter key usage\n const numItems = this.container.querySelectorAll('li').length;\n // select element on Enter\n if (Utils.keys.ENTER.includes(e.key) && this.activeIndex >= 0) {\n const liElement = this.container.querySelectorAll('li')[this.activeIndex];\n if (liElement) {\n this.selectOption(liElement.getAttribute('data-id'));\n e.preventDefault();\n }\n return;\n }\n // Capture up and down key\n if (Utils.keys.ARROW_UP.includes(e.key) || Utils.keys.ARROW_DOWN.includes(e.key)) {\n e.preventDefault();\n if (Utils.keys.ARROW_UP.includes(e.key) && this.activeIndex > 0) this.activeIndex--;\n if (Utils.keys.ARROW_DOWN.includes(e.key) && this.activeIndex < numItems - 1) this.activeIndex++;\n this.$active?.classList.remove('active');\n if (this.activeIndex >= 0) {\n this.$active = this.container.querySelectorAll('li')[this.activeIndex];\n this.$active?.classList.add('active');\n // Focus selected\n this.container.children[this.activeIndex].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }\n }\n\n _handleInputClick = () => {\n this.open();\n }\n\n _handleContainerMousedownAndTouchstart = () => {\n this._mousedown = true;\n }\n\n _handleContainerMouseupAndTouchend = () => {\n this._mousedown = false;\n }\n\n _resetCurrentElementPosition() {\n this.activeIndex = -1;\n this.$active?.classList.remove('active');\n }\n\n _resetAutocomplete() {\n this.container.replaceChildren();\n this._resetCurrentElementPosition();\n this.oldVal = null;\n this.isOpen = false;\n this._mousedown = false;\n }\n\n _highlightPartialText(input: string, label: string) {\n const start = label.toLocaleLowerCase().indexOf('' + input.toLocaleLowerCase() + '');\n const end = start + input.length - 1;\n //custom filters may return results where the string does not match any part\n if (start == -1 || end == -1) {\n return [label, '', ''];\n }\n return [label.slice(0, start), label.slice(start, end + 1), label.slice(end + 1)];\n }\n\n _createDropdownItem(entry: AutocompleteData) {\n const item = document.createElement('li');\n item.setAttribute('data-id', entry.id);\n item.setAttribute(\n 'style',\n 'display:grid; grid-auto-flow: column; user-select: none; align-items: center;'\n );\n // Checkbox\n if (this.options.isMultiSelect) {\n item.innerHTML = `\n
\n sel.id === entry.id) ? ' checked=\"checked\"' : ''\n }>\n
`;\n }\n // Image\n if (entry.image) {\n const img = document.createElement('img');\n img.classList.add('circle');\n img.src = entry.image;\n item.appendChild(img);\n }\n\n // Text\n const inputText = this.el.value.toLocaleLowerCase();\n const parts = this._highlightPartialText(inputText, (entry.text || entry.id).toString());\n const div = document.createElement('div');\n div.setAttribute('style', 'line-height:1.2;font-weight:500;');\n if (this.options.allowUnsafeHTML) {\n div.innerHTML = parts[0] + '' + parts[1] + '' + parts[2];\n } else {\n div.appendChild(document.createTextNode(parts[0]));\n if (parts[1]) {\n const highlight = document.createElement('span');\n highlight.textContent = parts[1];\n highlight.classList.add('highlight');\n div.appendChild(highlight);\n div.appendChild(document.createTextNode(parts[2]));\n }\n }\n\n const itemText = document.createElement('div');\n itemText.classList.add('item-text');\n itemText.setAttribute('style', 'padding:5px;overflow:hidden;');\n item.appendChild(itemText);\n item.querySelector('.item-text').appendChild(div);\n // Description\n if (typeof entry.description === 'string' || (typeof entry.description === 'number' && !isNaN(entry.description))) {\n const description = document.createElement('small');\n description.setAttribute(\n 'style',\n 'line-height:1.3;color:grey;white-space:nowrap;text-overflow:ellipsis;display:block;width:90%;overflow:hidden;'\n );\n description.innerText = entry.description;\n item.querySelector('.item-text').appendChild(description);\n }\n // Set Grid\n const getGridConfig = () => {\n if (this.options.isMultiSelect) {\n if (entry.image) return '40px min-content auto'; // cb-img-txt\n return '40px auto'; // cb-txt\n }\n if (entry.image) return 'min-content auto'; // img-txt\n return 'auto'; // txt\n };\n item.style.gridTemplateColumns = getGridConfig();\n return item;\n }\n\n _renderDropdown() {\n this._resetAutocomplete();\n // Check if Data is empty\n if (this.menuItems.length === 0) {\n this.menuItems = this.selectedValues; // Show selected Items\n }\n for (let i = 0; i < this.menuItems.length; i++) {\n const item = this._createDropdownItem(this.menuItems[i]);\n this.container.append(item);\n }\n }\n\n _setStatusLoading() {\n this.el.parentElement.querySelector(\n '.status-info'\n ).innerHTML = `
\n \n \n \n
`;\n }\n\n _updateSelectedInfo() {\n const statusElement = this.el.parentElement.querySelector('.status-info');\n if (statusElement) {\n if (this.options.isMultiSelect) statusElement.innerHTML = this.selectedValues.length.toString();\n else statusElement.innerHTML = '';\n }\n }\n\n _refreshInputText() {\n if (this.selectedValues.length === 1) {\n const entry = this.selectedValues[0];\n this.el.value = entry.text || entry.id; // Write Text to Input\n }\n }\n\n _triggerChanged() {\n this.el.dispatchEvent(new Event('change'));\n // Trigger Autocomplete Event\n if (typeof this.options.onAutocomplete === 'function')\n this.options.onAutocomplete.call(this, this.selectedValues);\n }\n\n /**\n * Show autocomplete.\n */\n open = () => {\n const inputText = this.el.value.toLocaleLowerCase();\n this._resetAutocomplete();\n if (inputText.length >= this.options.minLength) {\n this.isOpen = true;\n this._renderDropdown();\n }\n // Open dropdown\n if (!this.dropdown.isOpen) {\n setTimeout(() => {\n this.dropdown.open();\n }, 100);\n }\n else this.dropdown.recalculateDimensions(); // Recalculate dropdown when its already open\n }\n\n /**\n * Hide autocomplete.\n */\n close = () => {\n this.dropdown.close();\n }\n\n /**\n * Updates the visible or selectable items shown in the menu.\n * @param menuItems Items to be available.\n */\n setMenuItems(menuItems: AutocompleteData[]) {\n this.menuItems = menuItems;\n this.open();\n this._updateSelectedInfo();\n }\n\n /**\n * Sets selected values.\n * @param entries\n */\n setValues(entries: AutocompleteData[]) {\n this.selectedValues = entries;\n this._updateSelectedInfo();\n if (!this.options.isMultiSelect) {\n this._refreshInputText();\n }\n this._triggerChanged();\n }\n\n /**\n * Select a specific autocomplete option via id-property.\n * @param id The id of a data-entry.\n */\n selectOption(id: number | string) {\n const entry = this.menuItems.find((item) => item.id == id);\n if (!entry) return;\n // Toggle Checkbox\n const li = this.container.querySelector('li[data-id=\"'+id+'\"]');\n if (!li) return;\n if (this.options.isMultiSelect) {\n const checkbox = li.querySelector('input[type=\"checkbox\"]');\n checkbox.checked = !checkbox.checked;\n if (checkbox.checked) this.selectedValues.push(entry);\n else\n this.selectedValues = this.selectedValues.filter(\n (selectedEntry) => selectedEntry.id !== entry.id\n );\n this.el.focus();\n } else {\n // Single-Select\n this.selectedValues = [entry];\n this._refreshInputText();\n this._resetAutocomplete();\n this.close();\n }\n this._updateSelectedInfo();\n this._triggerChanged();\n }\n}\n","import { Component, BaseOptions, InitElements, MElement, Openable } from \"./component\";\n\nexport interface FloatingActionButtonOptions extends BaseOptions {\n /**\n * Direction FAB menu opens.\n * @default \"top\"\n */\n direction: \"top\" | \"right\" | \"bottom\" | \"left\";\n /**\n * true: FAB menu appears on hover, false: FAB menu appears on click.\n * @default true\n */\n hoverEnabled: boolean;\n /**\n * Enable transit the FAB into a toolbar on click.\n * @default false\n */\n toolbarEnabled: boolean;\n};\n\nlet _defaults: FloatingActionButtonOptions = {\n direction: 'top',\n hoverEnabled: true,\n toolbarEnabled: false\n};\n\nexport class FloatingActionButton extends Component implements Openable {\n /**\n * Describes open/close state of FAB.\n */\n isOpen: boolean;\n\n private _anchor: HTMLAnchorElement;\n private _menu: HTMLElement|null;\n private _floatingBtns: HTMLElement[];\n private _floatingBtnsReverse: HTMLElement[];\n\n offsetY: number;\n offsetX: number;\n btnBottom: number;\n btnLeft: number;\n btnWidth: number;\n\n constructor(el: HTMLElement, options: Partial) {\n super(el, options, FloatingActionButton);\n (this.el as any).M_FloatingActionButton = this;\n\n this.options = {\n ...FloatingActionButton.defaults,\n ...options\n };\n\n this.isOpen = false;\n this._anchor = this.el.querySelector('a');\n this._menu = this.el.querySelector('ul');\n this._floatingBtns = Array.from(this.el.querySelectorAll('ul .btn-floating'));\n this._floatingBtnsReverse = this._floatingBtns.reverse();\n this.offsetY = 0;\n this.offsetX = 0;\n\n this.el.classList.add(`direction-${this.options.direction}`);\n if (this.options.direction === 'top')\n this.offsetY = 40;\n else if (this.options.direction === 'right')\n this.offsetX = -40;\n else if (this.options.direction === 'bottom')\n this.offsetY = -40;\n else\n this.offsetX = 40;\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n /**\n * Initializes instance of FloatingActionButton.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial): FloatingActionButton\n /**\n * Initializes instances of FloatingActionButton.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): FloatingActionButton[];\n /**\n * Initializes instances of FloatingActionButton.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLElement | InitElements, options: Partial = {}): FloatingActionButton | FloatingActionButton[] {\n return super.init(els, options, FloatingActionButton);\n }\n\n static getInstance(el: HTMLElement): FloatingActionButton {\n return (el as any).M_FloatingActionButton;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).M_FloatingActionButton = undefined;\n }\n\n _setupEventHandlers() {\n if (this.options.hoverEnabled && !this.options.toolbarEnabled) {\n this.el.addEventListener('mouseenter', this.open);\n this.el.addEventListener('mouseleave', this.close);\n } else {\n this.el.addEventListener('click', this._handleFABClick);\n }\n }\n\n _removeEventHandlers() {\n if (this.options.hoverEnabled && !this.options.toolbarEnabled) {\n this.el.removeEventListener('mouseenter', this.open);\n this.el.removeEventListener('mouseleave', this.close);\n } else {\n this.el.removeEventListener('click', this._handleFABClick);\n }\n }\n\n _handleFABClick = () => {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n _handleDocumentClick = (e: MouseEvent) => {\n const elem = e.target;\n if (elem !== this._menu) this.close;\n }\n\n /**\n * Open FAB.\n */\n open = (): void => {\n if (this.isOpen) return;\n if (this.options.toolbarEnabled)\n this._animateInToolbar();\n else\n this._animateInFAB();\n this.isOpen = true;\n }\n\n /**\n * Close FAB.\n */\n close = (): void => {\n if (!this.isOpen) return;\n if (this.options.toolbarEnabled) {\n window.removeEventListener('scroll', this.close, true);\n document.body.removeEventListener('click', this._handleDocumentClick, true);\n }\n else {\n this._animateOutFAB();\n }\n this.isOpen = false;\n }\n\n _animateInFAB() {\n this.el.classList.add('active');\n const delayIncrement = 40;\n const duration = 275;\n \n this._floatingBtnsReverse.forEach((el, index) => {\n const delay = delayIncrement * index;\n el.style.transition = 'none';\n el.style.opacity = '0';\n el.style.transform = `translate(${this.offsetX}px, ${this.offsetY}px) scale(0.4)`;\n setTimeout(() => {\n // from:\n el.style.opacity = '0.4';\n // easeInOutQuad\n setTimeout(() => {\n // to:\n el.style.transition = `opacity ${duration}ms ease, transform ${duration}ms ease`;\n el.style.opacity = '1';\n el.style.transform = 'translate(0, 0) scale(1)';\n }, 1);\n }, delay);\n });\n }\n\n _animateOutFAB() {\n const duration = 175;\n setTimeout(() => this.el.classList.remove('active'), duration);\n this._floatingBtnsReverse.forEach((el) => {\n el.style.transition = `opacity ${duration}ms ease, transform ${duration}ms ease`;\n // to\n el.style.opacity = '0';\n el.style.transform = `translate(${this.offsetX}px, ${this.offsetY}px) scale(0.4)`;\n });\n }\n\n _animateInToolbar() {\n let scaleFactor;\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let btnRect = this.el.getBoundingClientRect();\n\n const backdrop = document.createElement('div');\n backdrop.classList.add('fab-backdrop'); // $('
');\n\n const fabColor = getComputedStyle(this._anchor).backgroundColor; // css('background-color');\n\n this._anchor.append(backdrop);\n\n this.offsetX = btnRect.left - windowWidth / 2 + btnRect.width / 2;\n this.offsetY = windowHeight - btnRect.bottom;\n scaleFactor = windowWidth / backdrop[0].clientWidth;\n this.btnBottom = btnRect.bottom;\n this.btnLeft = btnRect.left;\n this.btnWidth = btnRect.width;\n\n // Set initial state\n this.el.classList.add('active');\n this.el.style.textAlign = 'center';\n this.el.style.width = '100%';\n this.el.style.bottom = '0';\n this.el.style.left = '0';\n this.el.style.transform = 'translateX(' + this.offsetX + 'px)';\n this.el.style.transition = 'none';\n\n this._anchor.style.transform = `translateY(${this.offsetY}px`;\n this._anchor.style.transition = 'none';\n\n backdrop.style.backgroundColor = fabColor;\n\n setTimeout(() => {\n this.el.style.transform = '';\n this.el.style.transition = 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s';\n\n this._anchor.style.overflow = 'visible';\n this._anchor.style.transform = '';\n this._anchor.style.transition = 'transform .2s';\n\n setTimeout(() => {\n this.el.style.overflow = 'hidden';\n this.el.style.backgroundColor = fabColor;\n\n backdrop.style.transform = 'scale(' + scaleFactor + ')';\n backdrop.style.transition = 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)';\n\n this._menu.querySelectorAll('li > a').forEach((a: HTMLAnchorElement) => a.style.opacity = '1');\n\n // Scroll to close.\n window.addEventListener('scroll', this.close, true);\n document.body.addEventListener('click', this._handleDocumentClick, true);\n }, 100);\n }, 0);\n }\n}\n","export class Cards {\n\n static Init() {\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n document.body.addEventListener('click', e => {\n const trigger = e.target;\n\n const card: HTMLElement = trigger.closest('.card');\n if (!card) return;\n\n const cardReveal = Array.from(card.children).find(elem => elem.classList.contains('card-reveal'));\n if (!cardReveal) return;\n const initialOverflow = getComputedStyle(card).overflow;\n\n // Close Card\n const closeArea = cardReveal.querySelector('.card-reveal .card-title');\n if (trigger === closeArea || closeArea.contains(trigger)) {\n const duration = 225;\n cardReveal.style.transition = `transform ${duration}ms ease`; //easeInOutQuad\n cardReveal.style.transform = 'translateY(0)'; \n setTimeout(() => {\n cardReveal.style.display = 'none';\n card.style.overflow = initialOverflow;\n }, duration);\n };\n\n // Reveal Card\n const activators = card.querySelectorAll('.activator');\n activators.forEach(activator => {\n if (trigger === activator || activator.contains(trigger)) {\n card.style.overflow = 'hidden';\n cardReveal.style.display = 'block';\n setTimeout(() => {\n const duration = 300;\n cardReveal.style.transition = `transform ${duration}ms ease`; //easeInOutQuad\n cardReveal.style.transform = 'translateY(-100%)'; \n }, 1);\n }\n });\n\n });\n });\n\n }\n}\n","import { Utils } from \"./utils\";\nimport { Component, BaseOptions, InitElements, MElement } from \"./component\";\n\nexport interface CarouselOptions extends BaseOptions{\n /**\n * Transition duration in milliseconds.\n * @default 200\n */\n duration: number;\n /**\n * Perspective zoom. If 0, all items are the same size.\n * @default -100\n */\n dist: number;\n /**\n * Set the spacing of the center item.\n * @default 0\n */\n shift: number;\n /**\n * Set the padding between non center items.\n * @default 0\n */\n padding: number;\n /**\n * Set the number of visible items.\n * @default 5\n */\n numVisible: number;\n /**\n * Make the carousel a full width slider like the second example.\n * @default false\n */\n fullWidth: boolean;\n /**\n * Set to true to show indicators.\n * @default false\n */\n indicators: boolean;\n /**\n * Don't wrap around and cycle through items.\n * @default false\n */\n noWrap: boolean;\n /**\n * Callback for when a new slide is cycled to.\n * @default null\n */\n onCycleTo: (current: Element, dragged: boolean) => void;\n}\n\nlet _defaults: CarouselOptions = {\n duration: 200, // ms\n dist: -100, // zoom scale TODO: make this more intuitive as an option\n shift: 0, // spacing for center image\n padding: 0, // Padding between non center items\n numVisible: 5, // Number of visible items in carousel\n fullWidth: false, // Change to full width styles\n indicators: false, // Toggle indicators\n noWrap: false, // Don't wrap around and cycle through items.\n onCycleTo: null // Callback for when a new slide is cycled to.\n};\n\nexport class Carousel extends Component {\n hasMultipleSlides: boolean;\n showIndicators: boolean;\n noWrap: boolean;\n /** If the carousel is being clicked or tapped. */\n pressed: boolean;\n /** If the carousel is currently being dragged. */\n dragged: boolean;\n offset: number;\n target: number;\n images: HTMLElement[];\n itemWidth: any;\n itemHeight: any;\n dim: number;\n _indicators: any;\n count: number;\n xform: string;\n verticalDragged: boolean;\n reference: any;\n referenceY: any;\n velocity: number;\n frame: number;\n timestamp: number;\n ticker: string | number | NodeJS.Timeout;\n amplitude: number;\n /** The index of the center carousel item. */\n center: number = 0;\n imageHeight: any;\n scrollingTimeout: any;\n oneTimeCallback: any;\n\n constructor(el: HTMLElement, options: Partial) {\n super(el, options, Carousel);\n (this.el as any).M_Carousel = this;\n\n this.options = {\n ...Carousel.defaults,\n ...options\n };\n\n // Setup\n this.hasMultipleSlides = this.el.querySelectorAll('.carousel-item').length > 1;\n this.showIndicators = this.options.indicators && this.hasMultipleSlides;\n this.noWrap = this.options.noWrap || !this.hasMultipleSlides;\n this.pressed = false;\n this.dragged = false;\n this.offset = this.target = 0;\n this.images = [];\n this.itemWidth = this.el.querySelector('.carousel-item').clientWidth;\n this.itemHeight = this.el.querySelector('.carousel-item').clientHeight;\n this.dim = this.itemWidth * 2 + this.options.padding || 1; // Make sure dim is non zero for divisions.\n\n // Full Width carousel setup\n if (this.options.fullWidth) {\n this.options.dist = 0;\n this._setCarouselHeight();\n\n // Offset fixed items when indicators.\n if (this.showIndicators) {\n this.el.querySelector('.carousel-fixed-item')?.classList.add('with-indicators');\n }\n }\n\n // Iterate through slides\n this._indicators = document.createElement('ul');\n this._indicators.classList.add('indicators');\n\n this.el.querySelectorAll('.carousel-item').forEach((item: HTMLElement, i) => {\n this.images.push(item);\n if (this.showIndicators) {\n const indicator = document.createElement('li');\n indicator.classList.add('indicator-item');\n if (i === 0) {\n indicator.classList.add('active');\n }\n this._indicators.appendChild(indicator);\n }\n });\n\n if (this.showIndicators)\n this.el.appendChild(this._indicators);\n\n this.count = this.images.length;\n\n // Cap numVisible at count\n this.options.numVisible = Math.min(this.count, this.options.numVisible);\n\n // Setup cross browser string\n this.xform = 'transform';\n ['webkit', 'Moz', 'O', 'ms'].every((prefix) => {\n var e = prefix + 'Transform';\n if (typeof document.body.style[e] !== 'undefined') {\n this.xform = e;\n return false;\n }\n return true;\n });\n\n this._setupEventHandlers();\n this._scroll(this.offset);\n }\n\n static get defaults(): CarouselOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Carousel.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial): Carousel;\n /**\n * Initializes instances of Carousel.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Carousel[];\n /**\n * Initializes instances of Carousel.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLElement | InitElements, options: Partial = {}): Carousel | Carousel[] {\n return super.init(els, options, Carousel);\n }\n\n static getInstance(el: HTMLElement): Carousel {\n return (el as any).M_Carousel;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).M_Carousel = undefined;\n }\n\n _setupEventHandlers() {\n if (typeof window.ontouchstart !== 'undefined') {\n this.el.addEventListener('touchstart', this._handleCarouselTap);\n this.el.addEventListener('touchmove', this._handleCarouselDrag);\n this.el.addEventListener('touchend', this._handleCarouselRelease);\n }\n this.el.addEventListener('mousedown', this._handleCarouselTap);\n this.el.addEventListener('mousemove', this._handleCarouselDrag);\n this.el.addEventListener('mouseup', this._handleCarouselRelease);\n this.el.addEventListener('mouseleave', this._handleCarouselRelease);\n this.el.addEventListener('click', this._handleCarouselClick);\n if (this.showIndicators && this._indicators) {\n this._indicators.querySelectorAll('.indicator-item').forEach((el) => {\n el.addEventListener('click', this._handleIndicatorClick);\n });\n }\n // Resize\n window.addEventListener('resize', this._handleThrottledResize);\n }\n\n _removeEventHandlers() {\n if (typeof window.ontouchstart !== 'undefined') {\n this.el.removeEventListener('touchstart', this._handleCarouselTap);\n this.el.removeEventListener('touchmove', this._handleCarouselDrag);\n this.el.removeEventListener('touchend', this._handleCarouselRelease);\n }\n this.el.removeEventListener('mousedown', this._handleCarouselTap);\n this.el.removeEventListener('mousemove', this._handleCarouselDrag);\n this.el.removeEventListener('mouseup', this._handleCarouselRelease);\n this.el.removeEventListener('mouseleave', this._handleCarouselRelease);\n this.el.removeEventListener('click', this._handleCarouselClick);\n if (this.showIndicators && this._indicators) {\n this._indicators.querySelectorAll('.indicator-item').forEach((el) => {\n el.removeEventListener('click', this._handleIndicatorClick);\n });\n }\n window.removeEventListener('resize', this._handleThrottledResize);\n }\n\n _handleThrottledResize: () => void = Utils.throttle(function(){ this._handleResize(); }, 200, null).bind(this);\n\n _handleCarouselTap = (e: MouseEvent | TouchEvent) => {\n // Fixes firefox draggable image bug\n if (e.type === 'mousedown' && (e.target).tagName === 'IMG') {\n e.preventDefault();\n }\n this.pressed = true;\n this.dragged = false;\n this.verticalDragged = false;\n this.reference = this._xpos(e);\n this.referenceY = this._ypos(e);\n\n this.velocity = this.amplitude = 0;\n this.frame = this.offset;\n this.timestamp = Date.now();\n clearInterval(this.ticker);\n this.ticker = setInterval(this._track, 100);\n }\n\n _handleCarouselDrag = (e: MouseEvent | TouchEvent) => {\n let x: number, y: number, delta: number, deltaY: number;\n if (this.pressed) {\n x = this._xpos(e);\n y = this._ypos(e);\n delta = this.reference - x;\n deltaY = Math.abs(this.referenceY - y);\n if (deltaY < 30 && !this.verticalDragged) {\n // If vertical scrolling don't allow dragging.\n if (delta > 2 || delta < -2) {\n this.dragged = true;\n this.reference = x;\n this._scroll(this.offset + delta);\n }\n } else if (this.dragged) {\n // If dragging don't allow vertical scroll.\n e.preventDefault();\n e.stopPropagation();\n return false;\n } else {\n // Vertical scrolling.\n this.verticalDragged = true;\n }\n }\n if (this.dragged) {\n // If dragging don't allow vertical scroll.\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n }\n\n _handleCarouselRelease = (e: MouseEvent | TouchEvent) => {\n if (this.pressed) {\n this.pressed = false;\n } else {\n return;\n }\n clearInterval(this.ticker);\n this.target = this.offset;\n if (this.velocity > 10 || this.velocity < -10) {\n this.amplitude = 0.9 * this.velocity;\n this.target = this.offset + this.amplitude;\n }\n this.target = Math.round(this.target / this.dim) * this.dim;\n // No wrap of items.\n if (this.noWrap) {\n if (this.target >= this.dim * (this.count - 1)) {\n this.target = this.dim * (this.count - 1);\n } else if (this.target < 0) {\n this.target = 0;\n }\n }\n this.amplitude = this.target - this.offset;\n this.timestamp = Date.now();\n requestAnimationFrame(this._autoScroll);\n if (this.dragged) {\n e.preventDefault();\n e.stopPropagation();\n }\n return false;\n }\n\n _handleCarouselClick = (e: MouseEvent | TouchEvent) => {\n // Disable clicks if carousel was dragged.\n if (this.dragged) {\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n else if (!this.options.fullWidth) {\n const clickedElem = (e.target).closest('.carousel-item');\n if (!clickedElem) return;\n const clickedIndex = [...clickedElem.parentNode.children].indexOf(clickedElem);\n const diff = this._wrap(this.center) - clickedIndex;\n // Disable clicks if carousel was shifted by click\n if (diff !== 0) {\n e.preventDefault();\n e.stopPropagation();\n }\n // fixes https://github.com/materializecss/materialize/issues/180\n if (clickedIndex < 0) {\n // relative X position > center of carousel = clicked at the right part of the carousel\n if ((e as MouseEvent).clientX - (e.target as HTMLElement).getBoundingClientRect().left > this.el.clientWidth / 2) {\n this.next();\n } else {\n this.prev();\n }\n } else {\n this._cycleTo(clickedIndex);\n }\n }\n }\n\n _handleIndicatorClick = (e: Event) => {\n e.stopPropagation();\n const indicator = (e.target).closest('.indicator-item');\n if (indicator) {\n const index = [...indicator.parentNode.children].indexOf(indicator);\n this._cycleTo(index);\n }\n }\n\n _handleResize = () => {\n if (this.options.fullWidth) {\n this.itemWidth = this.el.querySelector('.carousel-item').clientWidth;\n this.imageHeight = this.el.querySelector('.carousel-item.active').clientHeight;\n this.dim = this.itemWidth * 2 + this.options.padding;\n this.offset = this.center * 2 * this.itemWidth;\n this.target = this.offset;\n this._setCarouselHeight(true);\n }\n else {\n this._scroll();\n }\n }\n\n _setCarouselHeight(imageOnly: boolean = false) {\n const firstSlide = this.el.querySelector('.carousel-item.active')\n ? this.el.querySelector('.carousel-item.active')\n : this.el.querySelector('.carousel-item');\n\n const firstImage = firstSlide.querySelector('img');\n if (firstImage) {\n if (firstImage.complete) {\n // If image won't trigger the load event\n const imageHeight = firstImage.clientHeight;\n if (imageHeight > 0) {\n this.el.style.height = imageHeight+'px';\n }\n else {\n // If image still has no height, use the natural dimensions to calculate\n const naturalWidth = firstImage.naturalWidth;\n const naturalHeight = firstImage.naturalHeight;\n const adjustedHeight = (this.el.clientWidth / naturalWidth) * naturalHeight;\n this.el.style.height = adjustedHeight+'px';\n }\n } else {\n // Get height when image is loaded normally\n firstImage.addEventListener('load', () => {\n this.el.style.height = firstImage.offsetHeight+'px';\n });\n }\n }\n else if (!imageOnly) {\n const slideHeight = firstSlide.clientHeight;\n this.el.style.height = slideHeight+'px';\n }\n }\n\n _xpos(e: MouseEvent | TouchEvent) {\n // touch event\n if (e.type.startsWith(\"touch\") && (e as TouchEvent).targetTouches.length >= 1) {\n return (e as TouchEvent).targetTouches[0].clientX;\n }\n // mouse event\n return (e as MouseEvent).clientX;\n }\n\n _ypos(e: MouseEvent | TouchEvent) {\n // touch event\n if (e.type.startsWith(\"touch\") && (e as TouchEvent).targetTouches.length >= 1) {\n return (e as TouchEvent).targetTouches[0].clientY;\n }\n // mouse event\n return (e as MouseEvent).clientY;\n }\n\n _wrap(x: number) {\n return x >= this.count\n ? x % this.count\n : x < 0\n ? this._wrap(this.count + (x % this.count))\n : x;\n }\n\n _track = () => {\n let now: number, elapsed: number, delta: number, v: number;\n now = Date.now();\n elapsed = now - this.timestamp;\n this.timestamp = now;\n delta = this.offset - this.frame;\n this.frame = this.offset;\n v = (1000 * delta) / (1 + elapsed);\n this.velocity = 0.8 * v + 0.2 * this.velocity;\n }\n\n _autoScroll = () => {\n let elapsed: number, delta: number;\n if (this.amplitude) {\n elapsed = Date.now() - this.timestamp;\n delta = this.amplitude * Math.exp(-elapsed / this.options.duration);\n if (delta > 2 || delta < -2) {\n this._scroll(this.target - delta);\n requestAnimationFrame(this._autoScroll);\n } else {\n this._scroll(this.target);\n }\n }\n }\n\n _scroll(x: number = 0) {\n // Track scrolling state\n if (!this.el.classList.contains('scrolling')) {\n this.el.classList.add('scrolling');\n }\n if (this.scrollingTimeout != null) {\n window.clearTimeout(this.scrollingTimeout);\n }\n this.scrollingTimeout = window.setTimeout(() => {\n this.el.classList.remove('scrolling');\n }, this.options.duration);\n\n // Start actual scroll\n let i: number,\n half: number,\n delta: number,\n dir: number,\n tween: number,\n el: HTMLElement,\n alignment: string,\n zTranslation: number,\n tweenedOpacity: number,\n centerTweenedOpacity: number;\n let lastCenter = this.center;\n let numVisibleOffset = 1 / this.options.numVisible;\n\n this.offset = typeof x === 'number' ? x : this.offset;\n this.center = Math.floor((this.offset + this.dim / 2) / this.dim);\n\n delta = this.offset - this.center * this.dim;\n dir = delta < 0 ? 1 : -1;\n tween = (-dir * delta * 2) / this.dim;\n half = this.count >> 1;\n\n if (this.options.fullWidth) {\n alignment = 'translateX(0)';\n centerTweenedOpacity = 1;\n }\n else {\n alignment = 'translateX(' + (this.el.clientWidth - this.itemWidth) / 2 + 'px) ';\n alignment += 'translateY(' + (this.el.clientHeight - this.itemHeight) / 2 + 'px)';\n centerTweenedOpacity = 1 - numVisibleOffset * tween;\n }\n\n // Set indicator active\n if (this.showIndicators) {\n const diff = this.center % this.count;\n const activeIndicator = this._indicators.querySelector('.indicator-item.active');\n const activeIndicatorIndex = [...activeIndicator.parentNode.children].indexOf(activeIndicator);\n if (activeIndicatorIndex !== diff) {\n activeIndicator.classList.remove('active');\n const pos = diff < 0 ? this.count + diff : diff;\n this._indicators.querySelectorAll('.indicator-item')[pos].classList.add('active');\n }\n }\n\n // center\n // Don't show wrapped items.\n if (!this.noWrap || (this.center >= 0 && this.center < this.count)) {\n el = this.images[this._wrap(this.center)];\n\n // Add active class to center item.\n if (!el.classList.contains('active')) {\n this.el.querySelector('.carousel-item').classList.remove('active');\n el.classList.add('active');\n }\n\n let transformString = `${alignment} translateX(${-delta / 2}px) translateX(${dir *\n this.options.shift *\n tween *\n i}px) translateZ(${this.options.dist * tween}px)`;\n this._updateItemStyle(el, centerTweenedOpacity, 0, transformString);\n }\n\n for (i = 1; i <= half; ++i) {\n // right side\n if (this.options.fullWidth) {\n zTranslation = this.options.dist;\n tweenedOpacity = i === half && delta < 0 ? 1 - tween : 1;\n } else {\n zTranslation = this.options.dist * (i * 2 + tween * dir);\n tweenedOpacity = 1 - numVisibleOffset * (i * 2 + tween * dir);\n }\n // Don't show wrapped items.\n if (!this.noWrap || this.center + i < this.count) {\n el = this.images[this._wrap(this.center + i)];\n let transformString = `${alignment} translateX(${this.options.shift +\n (this.dim * i - delta) / 2}px) translateZ(${zTranslation}px)`;\n this._updateItemStyle(el, tweenedOpacity, -i, transformString);\n }\n // left side\n if (this.options.fullWidth) {\n zTranslation = this.options.dist;\n tweenedOpacity = i === half && delta > 0 ? 1 - tween : 1;\n } else {\n zTranslation = this.options.dist * (i * 2 - tween * dir);\n tweenedOpacity = 1 - numVisibleOffset * (i * 2 - tween * dir);\n }\n // Don't show wrapped items.\n if (!this.noWrap || this.center - i >= 0) {\n el = this.images[this._wrap(this.center - i)];\n let transformString = `${alignment} translateX(${-this.options.shift +\n (-this.dim * i - delta) / 2}px) translateZ(${zTranslation}px)`;\n this._updateItemStyle(el, tweenedOpacity, -i, transformString);\n }\n }\n // center\n // Don't show wrapped items.\n if (!this.noWrap || (this.center >= 0 && this.center < this.count)) {\n el = this.images[this._wrap(this.center)];\n let transformString = `${alignment} translateX(${-delta / 2}px) translateX(${dir *\n this.options.shift *\n tween}px) translateZ(${this.options.dist * tween}px)`;\n this._updateItemStyle(el, centerTweenedOpacity, 0, transformString);\n }\n // onCycleTo callback\n const _currItem = this.el.querySelectorAll('.carousel-item')[this._wrap(this.center)];\n\n if (lastCenter !== this.center && typeof this.options.onCycleTo === 'function') {\n this.options.onCycleTo.call(this, _currItem, this.dragged);\n }\n // One time callback\n if (typeof this.oneTimeCallback === 'function') {\n this.oneTimeCallback.call(this, _currItem, this.dragged);\n this.oneTimeCallback = null;\n }\n }\n\n _updateItemStyle(el: HTMLElement, opacity: number, zIndex: number, transform: string) {\n el.style[this.xform] = transform;\n el.style.zIndex = zIndex.toString();\n el.style.opacity = opacity.toString();\n el.style.visibility = 'visible';\n }\n\n _cycleTo(n: number, callback: CarouselOptions[\"onCycleTo\"] = null) {\n let diff = (this.center % this.count) - n;\n // Account for wraparound.\n if (!this.noWrap) {\n if (diff < 0) {\n if (Math.abs(diff + this.count) < Math.abs(diff)) {\n diff += this.count;\n }\n } else if (diff > 0) {\n if (Math.abs(diff - this.count) < diff) {\n diff -= this.count;\n }\n }\n }\n this.target = this.dim * Math.round(this.offset / this.dim);\n // Next\n if (diff < 0) {\n this.target += this.dim * Math.abs(diff);\n } // Prev\n else if (diff > 0) {\n this.target -= this.dim * diff;\n }\n // Set one time callback\n if (typeof callback === 'function') {\n this.oneTimeCallback = callback;\n }\n // Scroll\n if (this.offset !== this.target) {\n this.amplitude = this.target - this.offset;\n this.timestamp = Date.now();\n requestAnimationFrame(this._autoScroll);\n }\n }\n\n /**\n * Move carousel to next slide or go forward a given amount of slides.\n * @param n How many times the carousel slides.\n */\n next(n: number = 1) {\n if (n === undefined || isNaN(n)) {\n n = 1;\n }\n let index = this.center + n;\n if (index >= this.count || index < 0) {\n if (this.noWrap) return;\n index = this._wrap(index);\n }\n this._cycleTo(index);\n }\n\n /**\n * Move carousel to previous slide or go back a given amount of slides.\n * @param n How many times the carousel slides.\n */\n prev(n: number = 1) {\n if (n === undefined || isNaN(n)) {\n n = 1;\n }\n let index = this.center - n;\n if (index >= this.count || index < 0) {\n if (this.noWrap) return;\n index = this._wrap(index);\n }\n this._cycleTo(index);\n }\n\n /**\n * Move carousel to nth slide.\n * @param n Index of slide.\n * @param callback \"onCycleTo\" optional callback.\n */\n set(n: number, callback?: CarouselOptions[\"onCycleTo\"]) {\n if (n === undefined || isNaN(n)) {\n n = 0;\n }\n if (n > this.count || n < 0) {\n if (this.noWrap) return;\n n = this._wrap(n);\n }\n this._cycleTo(n, callback);\n }\n}\n","import { Component, BaseOptions, InitElements, MElement } from \"./component\";\n\nexport interface CharacterCounterOptions extends BaseOptions {};\n\nconst _defaults = Object.freeze({});\n\ntype InputElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport class CharacterCounter extends Component<{}> {\n \n declare el: InputElement;\n /** Stores the reference to the counter HTML element. */\n counterEl: HTMLSpanElement;\n /** Specifies whether the input is valid or not. */\n isInvalid: boolean;\n /** Specifies whether the input text has valid length or not. */\n isValidLength: boolean;\n\n constructor(el: HTMLInputElement | HTMLTextAreaElement, options: Partial) {\n super(el, {}, CharacterCounter);\n (this.el as any).M_CharacterCounter = this;\n\n this.options = {\n ...CharacterCounter.defaults,\n ...options\n };\n\n this.isInvalid = false;\n this.isValidLength = false;\n \n this._setupCounter();\n this._setupEventHandlers();\n }\n\n static get defaults(): CharacterCounterOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of CharacterCounter.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: InputElement, options?: Partial): CharacterCounter;\n /**\n * Initializes instances of CharacterCounter.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): CharacterCounter[];\n /**\n * Initializes instances of CharacterCounter.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InputElement | InitElements, options: Partial = {}): CharacterCounter | CharacterCounter[] {\n return super.init(els, options, CharacterCounter);\n }\n\n static getInstance(el: InputElement): CharacterCounter {\n return (el as any).M_CharacterCounter;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).CharacterCounter = undefined;\n this._removeCounter();\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('focus', this.updateCounter, true);\n this.el.addEventListener('input', this.updateCounter, true);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('focus', this.updateCounter, true);\n this.el.removeEventListener('input', this.updateCounter, true);\n }\n\n _setupCounter() {\n this.counterEl = document.createElement('span');\n this.counterEl.classList.add('character-counter');\n this.counterEl.style.float = 'right';\n this.counterEl.style.fontSize = '12px';\n this.counterEl.style.height = '1';\n this.el.parentElement.appendChild(this.counterEl);\n }\n\n _removeCounter() {\n this.counterEl.remove();\n }\n\n updateCounter = () => {\n let maxLength = parseInt(this.el.getAttribute('maxlength')),\n actualLength = (this.el as HTMLInputElement).value.length;\n\n this.isValidLength = actualLength <= maxLength;\n let counterString = actualLength.toString();\n if (maxLength) {\n counterString += '/' + maxLength;\n this._validateInput();\n }\n this.counterEl.innerHTML = counterString;\n }\n\n _validateInput() {\n if (this.isValidLength && this.isInvalid) {\n this.isInvalid = false;\n this.el.classList.remove('invalid');\n }\n else if (!this.isValidLength && !this.isInvalid) {\n this.isInvalid = true;\n this.el.classList.remove('valid');\n this.el.classList.add('invalid');\n }\n }\n}\n","import { Utils } from \"./utils\";\nimport { Autocomplete, AutocompleteOptions } from \"./autocomplete\";\nimport { Component, BaseOptions, InitElements, MElement } from \"./component\";\n\nexport interface ChipData {\n /**\n * Unique identifier.\n */\n id: number|string;\n /**\n * Chip text. If not specified, \"id\" will be used.\n */\n text?: string;\n /**\n * Chip image (URL).\n */\n image?: string;\n}\n\nexport interface ChipsOptions extends BaseOptions{\n /**\n * Set the chip data.\n * @default []\n */\n data: ChipData[];\n /**\n * Set first placeholder when there are no tags.\n * @default \"\"\n */\n placeholder: string;\n /**\n * Set second placeholder when adding additional tags.\n * @default \"\"\n */\n secondaryPlaceholder: string;\n /**\n * Set autocomplete options.\n * @default {}\n */\n autocompleteOptions: Partial;\n /**\n * Toggles abililty to add custom value not in autocomplete list.\n * @default false\n */\n autocompleteOnly: boolean;\n /**\n * Set chips limit.\n * @default Infinity\n */\n limit: number;\n /**\n * Specifies class to be used in \"close\" button (useful when working with Material Symbols icon set).\n * @default 'material-icons'\n */\n closeIconClass: string;\n /**\n * Callback for chip add.\n * @default null\n */\n onChipAdd: (element: HTMLElement, chip: HTMLElement) => void;\n /**\n * Callback for chip select.\n * @default null\n */\n onChipSelect: (element: HTMLElement, chip: HTMLElement) => void;\n /**\n * Callback for chip delete.\n * @default null\n */\n onChipDelete: (element: HTMLElement, chip: HTMLElement) => void;\n}\n\nlet _defaults: ChipsOptions = {\n data: [],\n placeholder: '',\n secondaryPlaceholder: '',\n closeIconClass: 'material-icons',\n autocompleteOptions: {},\n autocompleteOnly: false,\n limit: Infinity,\n onChipAdd: null,\n onChipSelect: null,\n onChipDelete: null\n};\n\nfunction gGetIndex(el: HTMLElement): number {\n return [...el.parentNode.children].indexOf(el);\n}\n\nexport class Chips extends Component {\n /** Array of the current chips data. */\n chipsData: ChipData[];\n /** If the chips has autocomplete enabled. */\n hasAutocomplete: boolean;\n /** Autocomplete instance, if any. */\n autocomplete: Autocomplete;\n _input: HTMLInputElement;\n _label: any;\n _chips: HTMLElement[];\n static _keydown: boolean;\n private _selectedChip: any;\n\n constructor(el: HTMLElement, options: Partial) {\n super(el, options, Chips);\n (this.el as any).M_Chips = this;\n\n this.options = {\n ...Chips.defaults,\n ...options\n };\n\n this.el.classList.add('chips', 'input-field');\n this.chipsData = [];\n this._chips = [];\n this._setupInput();\n this.hasAutocomplete = Object.keys(this.options.autocompleteOptions).length > 0;\n\n // Set input id\n if (!this._input.getAttribute('id'))\n this._input.setAttribute('id', Utils.guid());\n\n // Render initial chips\n if (this.options.data.length) {\n this.chipsData = this.options.data;\n this._renderChips();\n }\n // Setup autocomplete if needed\n if (this.hasAutocomplete) this._setupAutocomplete();\n this._setPlaceholder();\n this._setupLabel();\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n /**\n * Initializes instance of Chips.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: InitElements, options?: Partial): Chips;\n /**\n * Initializes instances of Chips.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Chips[];\n /**\n * Initializes instances of Chips.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLElement | InitElements, options: Partial = {}): Chips | Chips[] {\n return super.init(els, options, Chips);\n }\n\n static getInstance(el: HTMLElement): Chips {\n return (el as any).M_Chips;\n }\n\n getData() {\n return this.chipsData;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._chips.forEach(c => c.remove());\n this._chips = [];\n (this.el as any).M_Chips = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleChipClick);\n document.addEventListener('keydown', Chips._handleChipsKeydown);\n document.addEventListener('keyup', Chips._handleChipsKeyup);\n this.el.addEventListener('blur', Chips._handleChipsBlur, true);\n this._input.addEventListener('focus', this._handleInputFocus);\n this._input.addEventListener('blur', this._handleInputBlur);\n this._input.addEventListener('keydown', this._handleInputKeydown);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleChipClick);\n document.removeEventListener('keydown', Chips._handleChipsKeydown);\n document.removeEventListener('keyup', Chips._handleChipsKeyup);\n this.el.removeEventListener('blur', Chips._handleChipsBlur, true);\n this._input.removeEventListener('focus', this._handleInputFocus);\n this._input.removeEventListener('blur', this._handleInputBlur);\n this._input.removeEventListener('keydown', this._handleInputKeydown);\n }\n\n _handleChipClick = (e: MouseEvent) => {\n const _chip = (e.target).closest('.chip');\n const clickedClose = (e.target).classList.contains('close');\n if (_chip) {\n const index = [..._chip.parentNode.children].indexOf(_chip);\n if (clickedClose) {\n this.deleteChip(index);\n this._input.focus();\n }\n else {\n this.selectChip(index);\n }\n // Default handle click to focus on input\n }\n else {\n this._input.focus();\n }\n }\n\n static _handleChipsKeydown(e: KeyboardEvent) {\n Chips._keydown = true;\n const chips = (e.target).closest('.chips');\n const chipsKeydown = e.target && chips;\n\n // Don't handle keydown inputs on input and textarea\n const tag = (e.target).tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || !chipsKeydown) return;\n\n const currChips: Chips = (chips as any).M_Chips;\n\n if (Utils.keys.BACKSPACE.includes(e.key) || Utils.keys.DELETE.includes(e.key)) {\n e.preventDefault();\n let selectIndex = currChips.chipsData.length;\n if (currChips._selectedChip) {\n const index = gGetIndex(currChips._selectedChip);\n currChips.deleteChip(index);\n currChips._selectedChip = null;\n // Make sure selectIndex doesn't go negative\n selectIndex = Math.max(index - 1, 0);\n }\n if (currChips.chipsData.length)\n currChips.selectChip(selectIndex);\n else\n currChips._input.focus();\n }\n else if (Utils.keys.ARROW_LEFT.includes(e.key)) {\n if (currChips._selectedChip) {\n const selectIndex = gGetIndex(currChips._selectedChip) - 1;\n if (selectIndex < 0) return;\n currChips.selectChip(selectIndex);\n }\n }\n else if (Utils.keys.ARROW_RIGHT.includes(e.key)) {\n if (currChips._selectedChip) {\n const selectIndex = gGetIndex(currChips._selectedChip) + 1;\n if (selectIndex >= currChips.chipsData.length)\n currChips._input.focus();\n else\n currChips.selectChip(selectIndex);\n }\n }\n }\n\n static _handleChipsKeyup(e: Event) {\n Chips._keydown = false;\n }\n\n static _handleChipsBlur(e: Event) {\n if (!Chips._keydown && document.hidden) {\n const chips = (e.target).closest('.chips');\n const currChips: Chips = (chips as any).M_Chips;\n currChips._selectedChip = null;\n }\n }\n\n _handleInputFocus = () => {\n this.el.classList.add('focus');\n }\n\n _handleInputBlur = () => {\n this.el.classList.remove('focus');\n }\n\n _handleInputKeydown = (e: KeyboardEvent) => {\n Chips._keydown = true;\n if (Utils.keys.ENTER.includes(e.key)) {\n // Override enter if autocompleting.\n if (this.hasAutocomplete && this.autocomplete && this.autocomplete.isOpen) {\n return;\n }\n e.preventDefault();\n if (!this.hasAutocomplete || (this.hasAutocomplete && !this.options.autocompleteOnly)) {\n this.addChip({id: this._input.value});\n }\n this._input.value = '';\n }\n else if ( \n (Utils.keys.BACKSPACE.includes(e.key) || Utils.keys.ARROW_LEFT.includes(e.key)) &&\n this._input.value === '' &&\n this.chipsData.length\n ) {\n e.preventDefault();\n this.selectChip(this.chipsData.length - 1);\n }\n }\n\n _renderChip(chip: ChipData): HTMLDivElement {\n if (!chip.id) return;\n const renderedChip = document.createElement('div');\n renderedChip.classList.add('chip');\n renderedChip.innerText = chip.text || chip.id;\n renderedChip.setAttribute('tabindex', \"0\");\n const closeIcon = document.createElement('i');\n closeIcon.classList.add(this.options.closeIconClass, 'close');\n closeIcon.innerText = 'close';\n // attach image if needed\n if (chip.image) {\n const img = document.createElement('img');\n img.setAttribute('src', chip.image);\n renderedChip.insertBefore(img, renderedChip.firstChild);\n }\n renderedChip.appendChild(closeIcon);\n return renderedChip;\n }\n\n _renderChips() {\n this._chips = []; //.remove();\n for (let i = 0; i < this.chipsData.length; i++) {\n const chipElem = this._renderChip(this.chipsData[i]);\n this.el.appendChild(chipElem);\n this._chips.push(chipElem);\n }\n // move input to end\n this.el.append(this._input);\n }\n\n _setupAutocomplete() {\n this.options.autocompleteOptions.onAutocomplete = (items) => {\n if (items.length > 0) this.addChip({\n id: items[0].id,\n text: items[0].text,\n image: items[0].image\n });\n this._input.value = '';\n this._input.focus();\n };\n this.autocomplete = Autocomplete.init(this._input, this.options.autocompleteOptions);\n }\n\n _setupInput() {\n this._input = this.el.querySelector('input');\n if (!this._input) {\n this._input = document.createElement('input');\n this.el.append(this._input);\n }\n this._input.classList.add('input');\n }\n\n _setupLabel() {\n this._label = this.el.querySelector('label');\n if (this._label) this._label.setAttribute('for', this._input.getAttribute('id'));\n }\n\n _setPlaceholder() {\n if (this.chipsData !== undefined && !this.chipsData.length && this.options.placeholder) {\n this._input.placeholder = this.options.placeholder;\n }\n else if (\n (this.chipsData === undefined || !!this.chipsData.length) &&\n this.options.secondaryPlaceholder\n ) {\n this._input.placeholder = this.options.secondaryPlaceholder;\n }\n }\n\n _isValidAndNotExist(chip: ChipData) {\n const isValid = !!chip.id;\n const doesNotExist = !this.chipsData.some(item => item.id == chip.id);\n return isValid && doesNotExist;\n }\n\n /**\n * Add chip to input.\n * @param chip Chip data object\n */\n addChip(chip: ChipData) {\n if (!this._isValidAndNotExist(chip) || this.chipsData.length >= this.options.limit) return;\n const renderedChip = this._renderChip(chip);\n this._chips.push(renderedChip);\n this.chipsData.push(chip);\n //$(this._input).before(renderedChip);\n this._input.before(renderedChip);\n this._setPlaceholder();\n // fire chipAdd callback\n if (typeof this.options.onChipAdd === 'function') {\n this.options.onChipAdd(this.el, renderedChip);\n }\n }\n\n /**\n * Delete nth chip.\n * @param chipIndex Index of chip\n */\n deleteChip(chipIndex: number) {\n const chip = this._chips[chipIndex];\n this._chips[chipIndex].remove();\n this._chips.splice(chipIndex, 1);\n this.chipsData.splice(chipIndex, 1);\n this._setPlaceholder();\n // fire chipDelete callback\n if (typeof this.options.onChipDelete === 'function') {\n this.options.onChipDelete(this.el, chip);\n }\n }\n\n /**\n * Select nth chip.\n * @param chipIndex Index of chip\n */\n selectChip(chipIndex: number) {\n const chip = this._chips[chipIndex];\n this._selectedChip = chip;\n chip.focus();\n // fire chipSelect callback\n if (typeof this.options.onChipSelect === 'function') {\n this.options.onChipSelect(this.el, chip);\n }\n }\n\n static Init(){\n document.addEventListener(\"DOMContentLoaded\", () => {\n // Handle removal of static chips.\n document.body.addEventListener('click', e => {\n if ((e.target).closest('.chip .close')) {\n const chips = (e.target).closest('.chips');\n if (chips && (chips as any).M_Chips == undefined) return;\n (e.target).closest('.chip').remove();\n }\n });\n });\n }\n\n static {\n Chips._keydown = false;\n }\n}\n","import { Utils } from \"./utils\";\nimport { Component, BaseOptions, InitElements, MElement } from \"./component\";\n\nexport interface CollapsibleOptions extends BaseOptions {\n /**\n * If accordion versus collapsible.\n * @default true\n */\n accordion: boolean;\n /**\n * Transition in duration in milliseconds.\n * @default 300\n */\n inDuration: number;\n /**\n * Transition out duration in milliseconds.\n * @default 300\n */\n outDuration: number;\n /**\n * Callback function called before collapsible is opened.\n * @default null\n */\n onOpenStart: (el: Element) => void;\n /**\n * Callback function called after collapsible is opened.\n * @default null\n */\n onOpenEnd: (el: Element) => void;\n /**\n * Callback function called before collapsible is closed.\n * @default null\n */\n onCloseStart: (el: Element) => void;\n /**\n * Callback function called after collapsible is closed.\n * @default null\n */\n onCloseEnd: (el: Element) => void;\n}\n\nconst _defaults: CollapsibleOptions = {\n accordion: true,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null, \n onCloseEnd: null,\n inDuration: 300,\n outDuration: 300\n};\n\nexport class Collapsible extends Component {\n private _headers: HTMLElement[];\n\n constructor(el: HTMLElement, options: Partial) {\n super(el, options, Collapsible);\n (this.el as any).M_Collapsible = this;\n\n this.options = {\n ...Collapsible.defaults,\n ...options\n };\n\n // Setup tab indices\n this._headers = Array.from(this.el.querySelectorAll('li > .collapsible-header'));\n this._headers.forEach(el => el.tabIndex = 0);\n this._setupEventHandlers();\n\n // Open active\n const activeBodies: HTMLElement[] = Array.from(this.el.querySelectorAll('li.active > .collapsible-body'));\n if (this.options.accordion) {\n if (activeBodies.length > 0) {\n // Accordion => open first active only\n this._setExpanded(activeBodies[0]);\n }\n } else {\n // Expandables => all active\n activeBodies.forEach(el => this._setExpanded(el));\n }\n }\n\n static get defaults(): CollapsibleOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Collapsible.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial): Collapsible;\n /**\n * Initializes instances of Collapsible.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Collapsible[];\n /**\n * Initializes instances of Collapsible.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLElement | InitElements, options: Partial = {}): Collapsible | Collapsible[] {\n return super.init(els, options, Collapsible);\n }\n\n static getInstance(el: HTMLElement): Collapsible {\n return (el as any).M_Collapsible;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).M_Collapsible = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleCollapsibleClick);\n this._headers.forEach(header => header.addEventListener('keydown', this._handleCollapsibleKeydown));\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleCollapsibleClick);\n this._headers.forEach(header => header.removeEventListener('keydown', this._handleCollapsibleKeydown));\n }\n\n _handleCollapsibleClick = (e: MouseEvent | KeyboardEvent) => {\n const header = (e.target as HTMLElement).closest('.collapsible-header');\n if (e.target && header) {\n const collapsible = header.closest('.collapsible');\n if (collapsible !== this.el) return;\n\n const li = header.closest('li');\n const isActive = li.classList.contains('active');\n const index = [...li.parentNode.children].indexOf(li);\n\n if (isActive)\n this.close(index);\n else\n this.open(index);\n }\n }\n\n _handleCollapsibleKeydown = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n this._handleCollapsibleClick(e);\n }\n }\n\n private _setExpanded(li: HTMLElement): void {\n li.style.maxHeight = li.scrollHeight + \"px\";\n }\n\n _animateIn(index: number) {\n const li = this.el.children[index];\n if (!li) return;\n const body: HTMLElement = li.querySelector('.collapsible-body');\n const duration = this.options.inDuration; // easeInOutCubic\n body.style.transition = `max-height ${duration}ms ease-out`;\n this._setExpanded(body);\n setTimeout(() => {\n if (typeof this.options.onOpenEnd === 'function') {\n this.options.onOpenEnd.call(this, li);\n }\n }, duration);\n }\n\n _animateOut(index: number) {\n const li = this.el.children[index];\n if (!li) return;\n const body: HTMLElement = li.querySelector('.collapsible-body');\n const duration = this.options.outDuration; // easeInOutCubic\n body.style.transition = `max-height ${duration}ms ease-out`;\n body.style.maxHeight = \"0\";\n setTimeout(() => {\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this, li);\n }\n }, duration);\n }\n\n /**\n * Open collapsible section.\n * @param n Nth section to open.\n */\n open = (index: number) => {\n const listItems = Array.from(this.el.children).filter(c => c.tagName === 'LI');\n const li = listItems[index];\n if (li && !li.classList.contains('active')) {\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, li);\n }\n // Handle accordion behavior\n if (this.options.accordion) {\n const activeLis = listItems.filter(li => li.classList.contains('active'));\n activeLis.forEach(activeLi => {\n const index = listItems.indexOf(activeLi);\n this.close(index);\n });\n }\n // Animate in\n li.classList.add('active');\n this._animateIn(index);\n }\n }\n\n /**\n * Close collapsible section.\n * @param n Nth section to close.\n */\n close = (index: number) => {\n const li = Array.from(this.el.children).filter(c => c.tagName === 'LI')[index];\n if (li && li.classList.contains('active')) {\n // onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, li);\n }\n // Animate out\n li.classList.remove('active');\n this._animateOut(index);\n }\n }\n}\n","/**\n * Base options for component initialization.\n */\nexport interface BaseOptions {};\n\nexport type MElement = HTMLElement | Element;\nexport type InitElements = NodeListOf | HTMLCollectionOf;\ntype ComponentConstructor, O extends BaseOptions> = {\n new (el: HTMLElement, options: Partial): T\n};\ntype ComponentType, O extends BaseOptions> = ComponentConstructor & typeof Component;\n\nexport interface I18nOptions {\n cancel: string;\n clear: string;\n done: string;\n}\n\nexport interface Openable {\n isOpen: boolean;\n open(): void;\n close(): void;\n};\n\n/**\n * Base class implementation for Materialize components.\n */\nexport class Component{\n /**\n * The DOM element the plugin was initialized with.\n */\n el: HTMLElement;\n /**\n * The options the instance was initialized with.\n */\n options: O;\n\n /**\n * Constructs component instance and set everything up.\n */\n constructor(el: HTMLElement, options: Partial, classDef: ComponentType, O>){\n // Display error if el is not a valid HTML Element\n if (!(el instanceof HTMLElement)) {\n console.error(Error(el + ' is not an HTML Element'));\n }\n // If exists, destroy and reinitialize in child\n let ins = classDef.getInstance(el);\n if (!!ins) {\n ins.destroy();\n }\n this.el = el;\n }\n\n /**\n * Initializes component instance.\n * @param el HTML element.\n * @param options Component options.\n * @param classDef Class definition.\n */\n protected static init<\n I extends HTMLElement, O extends BaseOptions, C extends Component\n >(el: I, options: O, classDef: ComponentType): C;\n /**\n * Initializes component instances.\n * @param els HTML elements.\n * @param options Component options.\n * @param classDef Class definition.\n */\n protected static init<\n I extends MElement, O extends BaseOptions, C extends Component\n >(els: InitElements, options: Partial, classDef: ComponentType): C[];\n /**\n * Initializes component instances.\n * @param els HTML elements.\n * @param options Component options.\n * @param classDef Class definition.\n */\n protected static init<\n I extends MElement, O extends BaseOptions, C extends Component\n >(els: I | InitElements, options: Partial, classDef: ComponentType): C | C[];\n /**\n * Initializes component instances.\n * @param els HTML elements.\n * @param options Component options.\n * @param classDef Class definition.\n */\n protected static init<\n I extends MElement, O extends BaseOptions, C extends Component\n >(els: I | InitElements, options: Partial, classDef: ComponentType): C | C[] {\n let instances = null;\n if (els instanceof Element) {\n instances = new classDef(els, options);\n }\n else if (!!els && els.length) {\n instances = [];\n for (let i = 0; i < els.length; i++) {\n instances.push(new classDef(els[i], options));\n }\n }\n return instances;\n }\n\n /**\n * @returns default options for component instance.\n */\n static get defaults(): BaseOptions{ return {}; }\n\n /**\n * Retrieves component instance for the given element.\n * @param el Associated HTML Element.\n */\n static getInstance(el: HTMLElement): Component {\n throw new Error(\"This method must be implemented.\");\n }\n\n /**\n * Destroy plugin instance and teardown.\n */\n destroy(): void { throw new Error(\"This method must be implemented.\"); }\n}\n","import { Modal } from \"./modal\";\nimport { Utils } from \"./utils\";\nimport { FormSelect } from \"./select\";\nimport { BaseOptions, Component, InitElements, MElement, I18nOptions } from \"./component\";\n\nexport interface DateI18nOptions extends I18nOptions {\n previousMonth: string;\n nextMonth: string;\n months: string[];\n monthsShort: string[];\n weekdays: string[];\n weekdaysShort: string[];\n weekdaysAbbrev: string[];\n};\n\nexport interface DatepickerOptions extends BaseOptions {\n /**\n * Automatically close picker when date is selected.\n * @default false\n */\n autoClose: boolean;\n /**\n * The date output format for the input field value\n * or a function taking the date and outputting the\n * formatted date string.\n * @default 'mmm dd, yyyy'\n */\n format: string | ((d: Date) => string);\n /**\n * Used to create date object from current input string.\n * @default null\n */\n parse: ((value: string, format: string) => Date) | null;\n /**\n * The initial date to view when first opened.\n * @default null\n */\n defaultDate: Date | null;\n /**\n * Make the `defaultDate` the initial selected value.\n * @default false\n */\n setDefaultDate: boolean;\n /**\n * Prevent selection of any date on the weekend.\n * @default false\n */\n disableWeekends: boolean;\n /**\n * Custom function to disable certain days.\n * @default null\n */\n disableDayFn: ((day: Date) => boolean) | null;\n /**\n * First day of week (0: Sunday, 1: Monday etc).\n * @default 0\n */\n firstDay: number;\n /**\n * The earliest date that can be selected.\n * @default null\n */\n minDate: Date | null;\n /**\n * The latest date that can be selected.\n * @default null\n */\n maxDate: Date | null;\n /**\n * Number of years either side, or array of upper/lower range.\n * @default 10\n */\n yearRange: number | number[];\n /**\n * Sort year range in reverse order.\n * @default false\n */\n yearRangeReverse: boolean;\n /**\n * Changes Datepicker to RTL.\n * @default false\n */\n isRTL: boolean;\n /**\n * Show month after year in Datepicker title.\n * @default false\n */\n showMonthAfterYear: boolean;\n /**\n * Render days of the calendar grid that fall in the next\n * or previous month.\n * @default false\n */\n showDaysInNextAndPreviousMonths: boolean;\n /**\n * Specify a DOM element OR selector for a DOM element to render\n * the calendar in, by default it will be placed before the input.\n * @default null\n */\n container: HTMLElement | string | null;\n /**\n * Show the clear button in the datepicker.\n * @default false\n */\n showClearBtn: boolean;\n /**\n * Internationalization options.\n */\n i18n: Partial;\n /**\n * An array of string returned by `Date.toDateString()`,\n * indicating there are events in the specified days.\n * @default []\n */\n events: string[];\n /**\n * Callback function when date is selected,\n * first parameter is the newly selected date.\n * @default null\n */\n onSelect: ((selectedDate: Date) => void) | null;\n /**\n * Callback function when Datepicker is opened.\n * @default null\n */\n onOpen: (() => void) | null;\n /**\n * Callback function when Datepicker is closed.\n * @default null\n */\n onClose: (() => void) | null;\n /**\n * Callback function when Datepicker HTML is refreshed.\n * @default null\n */\n onDraw: (() => void) | null;\n\n /** Field used for internal calculations DO NOT CHANGE IT */\n minYear?: any;\n /** Field used for internal calculations DO NOT CHANGE IT */\n maxYear?: any;\n /** Field used for internal calculations DO NOT CHANGE IT */\n minMonth?: any;\n /** Field used for internal calculations DO NOT CHANGE IT */\n maxMonth?: any;\n /** Field used for internal calculations DO NOT CHANGE IT */\n startRange?: any;\n /** Field used for internal calculations DO NOT CHANGE IT */\n endRange?: any;\n}\n\nlet _defaults: DatepickerOptions = {\n // Close when date is selected\n autoClose: false,\n // the default output format for the input field value\n format: 'mmm dd, yyyy',\n // Used to create date object from current input string\n parse: null,\n // The initial date to view when first opened\n defaultDate: null,\n // Make the `defaultDate` the initial selected value\n setDefaultDate: false,\n disableWeekends: false,\n disableDayFn: null,\n // First day of week (0: Sunday, 1: Monday etc)\n firstDay: 0,\n // The earliest date that can be selected\n minDate: null,\n // Thelatest date that can be selected\n maxDate: null,\n // Number of years either side, or array of upper/lower range\n yearRange: 10,\n // used internally (don't config outside)\n minYear: 0,\n maxYear: 9999,\n minMonth: undefined,\n maxMonth: undefined,\n startRange: null,\n endRange: null,\n isRTL: false,\n yearRangeReverse: false,\n // Render the month after year in the calendar title\n showMonthAfterYear: false,\n // Render days of the calendar grid that fall in the next or previous month\n showDaysInNextAndPreviousMonths: false,\n // Specify a DOM element to render the calendar in\n container: null,\n // Show clear button\n showClearBtn: false,\n // internationalization\n i18n: {\n cancel: 'Cancel',\n clear: 'Clear',\n done: 'Ok',\n previousMonth: '‹',\n nextMonth: '›',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n monthsShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysAbbrev: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n },\n // events array\n events: [],\n // callback function\n onSelect: null,\n onOpen: null,\n onClose: null,\n onDraw: null\n};\n\nexport class Datepicker extends Component {\n declare el: HTMLInputElement\n id: string;\n /** If the picker is open. */\n isOpen: boolean;\n modal: Modal;\n calendarEl: HTMLElement;\n /** CLEAR button instance. */\n clearBtn: HTMLElement;\n /** DONE button instance */\n doneBtn: HTMLElement;\n cancelBtn: HTMLElement;\n modalEl: HTMLElement;\n yearTextEl: HTMLElement;\n dateTextEl: HTMLElement;\n /** The selected Date. */\n date: Date;\n formats: any;\n calendars: any;\n private _y: any;\n private _m: any;\n static _template: string;\n\n constructor(el: HTMLInputElement, options: Partial) {\n super(el, options, Datepicker);\n (this.el as any).M_Datepicker = this;\n\n this.options = {\n ...Datepicker.defaults,\n ...options\n };\n\n // make sure i18n defaults are not lost when only few i18n option properties are passed\n if (!!options && options.hasOwnProperty('i18n') && typeof options.i18n === 'object') {\n this.options.i18n = {...Datepicker.defaults.i18n, ...options.i18n};\n }\n\n // Remove time component from minDate and maxDate options\n if (this.options.minDate) this.options.minDate.setHours(0, 0, 0, 0);\n if (this.options.maxDate) this.options.maxDate.setHours(0, 0, 0, 0);\n\n this.id = Utils.guid();\n\n this._setupVariables();\n this._insertHTMLIntoDOM();\n this._setupModal();\n this._setupEventHandlers();\n\n if (!this.options.defaultDate) {\n this.options.defaultDate = new Date(Date.parse(this.el.value));\n }\n\n let defDate = this.options.defaultDate;\n if (Datepicker._isDate(defDate)) {\n if (this.options.setDefaultDate) {\n this.setDate(defDate, true);\n this.setInputValue();\n }\n else {\n this.gotoDate(defDate);\n }\n }\n else {\n this.gotoDate(new Date());\n }\n this.isOpen = false;\n }\n\n static get defaults() {\n return _defaults;\n }\n\n /**\n * Initializes instance of Datepicker.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLInputElement, options?: Partial): Datepicker;\n /**\n * Initializes instances of Datepicker.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Datepicker[];\n /**\n * Initializes instances of Datepicker.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLInputElement | InitElements, options: Partial = {}): Datepicker | Datepicker[] {\n return super.init(els, options, Datepicker);\n }\n\n static _isDate(obj) {\n return /Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n }\n\n static _isWeekend(date) {\n let day = date.getDay();\n return day === 0 || day === 6;\n }\n\n static _setToStartOfDay(date) {\n if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0);\n }\n\n static _getDaysInMonth(year, month) {\n return [31, Datepicker._isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][\n month\n ];\n }\n\n static _isLeapYear(year) {\n // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n static _compareDates(a, b) {\n // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n return a.getTime() === b.getTime();\n }\n\n static getInstance(el: HTMLElement): Datepicker {\n return (el as any).M_Datepicker;\n }\n\n destroy() {\n this._removeEventHandlers();\n this.modal.destroy();\n this.modalEl.remove();\n this.destroySelects();\n (this.el as any).M_Datepicker = undefined;\n }\n\n destroySelects() {\n let oldYearSelect = this.calendarEl.querySelector('.orig-select-year');\n if (oldYearSelect) {\n FormSelect.getInstance(oldYearSelect as HTMLElement).destroy();\n }\n let oldMonthSelect = this.calendarEl.querySelector('.orig-select-month');\n if (oldMonthSelect) {\n FormSelect.getInstance(oldMonthSelect as HTMLElement).destroy();\n }\n }\n\n _insertHTMLIntoDOM() {\n if (this.options.showClearBtn) {\n this.clearBtn.style.visibility = '';\n this.clearBtn.innerText = this.options.i18n.clear;\n }\n this.doneBtn.innerText = this.options.i18n.done;\n this.cancelBtn.innerText = this.options.i18n.cancel;\n\n if (this.options.container) {\n const optEl = this.options.container;\n this.options.container =\n optEl instanceof HTMLElement ? optEl : document.querySelector(optEl) as HTMLElement;\n this.options.container.append(this.modalEl);\n }\n else {\n //this.modalEl.before(this.el);\n this.el.parentElement.appendChild(this.modalEl);\n }\n }\n\n _setupModal() {\n this.modalEl.id = 'modal-' + this.id;\n this.modal = Modal.init(this.modalEl, {\n onCloseEnd: () => {\n this.isOpen = false;\n }\n });\n }\n\n /**\n * Gets a string representation of the selected date.\n */\n toString(format: string | ((d: Date) => string) = null): string {\n format = format || this.options.format;\n if (typeof format === 'function') return format(this.date);\n if (!Datepicker._isDate(this.date)) return '';\n // String Format\n const formatArray = format.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);\n const formattedDate = formatArray\n .map(label => this.formats[label] ? this.formats[label]() : label)\n .join('');\n return formattedDate;\n }\n\n /**\n * Set a date on the datepicker.\n * @param date Date to set on the datepicker.\n * @param preventOnSelect Undocumented as of 5 March 2018.\n */\n setDate(date: Date | string = null, preventOnSelect: boolean = false) {\n if (!date) {\n this.date = null;\n this._renderDateDisplay();\n return this.draw();\n }\n if (typeof date === 'string') {\n date = new Date(Date.parse(date));\n }\n if (!Datepicker._isDate(date)) {\n return;\n }\n let min = this.options.minDate,\n max = this.options.maxDate;\n if (Datepicker._isDate(min) && date < min) {\n date = min;\n }\n else if (Datepicker._isDate(max) && date > max) {\n date = max;\n }\n this.date = new Date(date.getTime());\n this._renderDateDisplay();\n Datepicker._setToStartOfDay(this.date);\n this.gotoDate(this.date);\n if (!preventOnSelect && typeof this.options.onSelect === 'function') {\n this.options.onSelect.call(this, this.date);\n }\n }\n\n /**\n * Sets current date as the input value.\n */\n setInputValue() {\n this.el.value = this.toString();\n this.el.dispatchEvent(new CustomEvent('change', {bubbles:true, cancelable:true, composed:true, detail: {firedBy: this}}));\n }\n\n _renderDateDisplay() {\n let displayDate = Datepicker._isDate(this.date) ? this.date : new Date();\n let i18n = this.options.i18n;\n let day = i18n.weekdaysShort[displayDate.getDay()];\n let month = i18n.monthsShort[displayDate.getMonth()];\n let date = displayDate.getDate();\n this.yearTextEl.innerHTML = displayDate.getFullYear().toString();\n this.dateTextEl.innerHTML = `${day}, ${month} ${date}`;\n }\n\n /**\n * Change date view to a specific date on the datepicker.\n * @param date Date to show on the datepicker.\n */\n gotoDate(date: Date) {\n let newCalendar = true;\n if (!Datepicker._isDate(date)) {\n return;\n }\n if (this.calendars) {\n let firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n lastVisibleDate = new Date(\n this.calendars[this.calendars.length - 1].year,\n this.calendars[this.calendars.length - 1].month,\n 1\n ),\n visibleDate = date.getTime();\n // get the end of the month\n lastVisibleDate.setMonth(lastVisibleDate.getMonth() + 1);\n lastVisibleDate.setDate(lastVisibleDate.getDate() - 1);\n newCalendar =\n visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate;\n }\n if (newCalendar) {\n this.calendars = [\n {\n month: date.getMonth(),\n year: date.getFullYear()\n }\n ];\n }\n this.adjustCalendars();\n }\n\n adjustCalendars() {\n this.calendars[0] = this.adjustCalendar(this.calendars[0]);\n this.draw();\n }\n\n adjustCalendar(calendar) {\n if (calendar.month < 0) {\n calendar.year -= Math.ceil(Math.abs(calendar.month) / 12);\n calendar.month += 12;\n }\n if (calendar.month > 11) {\n calendar.year += Math.floor(Math.abs(calendar.month) / 12);\n calendar.month -= 12;\n }\n return calendar;\n }\n\n nextMonth() {\n this.calendars[0].month++;\n this.adjustCalendars();\n }\n\n prevMonth() {\n this.calendars[0].month--;\n this.adjustCalendars();\n }\n\n render(year, month, randId) {\n let opts = this.options,\n now = new Date(),\n days = Datepicker._getDaysInMonth(year, month),\n before = new Date(year, month, 1).getDay(),\n data = [],\n row = [];\n Datepicker._setToStartOfDay(now);\n if (opts.firstDay > 0) {\n before -= opts.firstDay;\n if (before < 0) {\n before += 7;\n }\n }\n let previousMonth = month === 0 ? 11 : month - 1,\n nextMonth = month === 11 ? 0 : month + 1,\n yearOfPreviousMonth = month === 0 ? year - 1 : year,\n yearOfNextMonth = month === 11 ? year + 1 : year,\n daysInPreviousMonth = Datepicker._getDaysInMonth(yearOfPreviousMonth, previousMonth);\n let cells = days + before,\n after = cells;\n while (after > 7) {\n after -= 7;\n }\n cells += 7 - after;\n let isWeekSelected = false;\n for (let i = 0, r = 0; i < cells; i++) {\n let day = new Date(year, month, 1 + (i - before)),\n isSelected = Datepicker._isDate(this.date)\n ? Datepicker._compareDates(day, this.date)\n : false,\n isToday = Datepicker._compareDates(day, now),\n hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n isEmpty = i < before || i >= days + before,\n dayNumber = 1 + (i - before),\n monthNumber = month,\n yearNumber = year,\n isStartRange = opts.startRange && Datepicker._compareDates(opts.startRange, day),\n isEndRange = opts.endRange && Datepicker._compareDates(opts.endRange, day),\n isInRange =\n opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n isDisabled =\n (opts.minDate && day < opts.minDate) ||\n (opts.maxDate && day > opts.maxDate) ||\n (opts.disableWeekends && Datepicker._isWeekend(day)) ||\n (opts.disableDayFn && opts.disableDayFn(day));\n\n if (isEmpty) {\n if (i < before) {\n dayNumber = daysInPreviousMonth + dayNumber;\n monthNumber = previousMonth;\n yearNumber = yearOfPreviousMonth;\n } else {\n dayNumber = dayNumber - days;\n monthNumber = nextMonth;\n yearNumber = yearOfNextMonth;\n }\n }\n\n let dayConfig = {\n day: dayNumber,\n month: monthNumber,\n year: yearNumber,\n hasEvent: hasEvent,\n isSelected: isSelected,\n isToday: isToday,\n isDisabled: isDisabled,\n isEmpty: isEmpty,\n isStartRange: isStartRange,\n isEndRange: isEndRange,\n isInRange: isInRange,\n showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths\n };\n\n row.push(this.renderDay(dayConfig));\n\n if (++r === 7) {\n data.push(this.renderRow(row, opts.isRTL, isWeekSelected));\n row = [];\n r = 0;\n isWeekSelected = false;\n }\n }\n return this.renderTable(opts, data, randId);\n }\n\n renderDay(opts) {\n let arr = [];\n let ariaSelected = 'false';\n if (opts.isEmpty) {\n if (opts.showDaysInNextAndPreviousMonths) {\n arr.push('is-outside-current-month');\n arr.push('is-selection-disabled');\n } else {\n return '';\n }\n }\n if (opts.isDisabled) {\n arr.push('is-disabled');\n }\n\n if (opts.isToday) {\n arr.push('is-today');\n }\n if (opts.isSelected) {\n arr.push('is-selected');\n ariaSelected = 'true';\n }\n if (opts.hasEvent) {\n arr.push('has-event');\n }\n if (opts.isInRange) {\n arr.push('is-inrange');\n }\n if (opts.isStartRange) {\n arr.push('is-startrange');\n }\n if (opts.isEndRange) {\n arr.push('is-endrange');\n }\n return (\n `` +\n `` +\n ''\n );\n }\n\n renderRow(days, isRTL, isRowSelected) {\n return (\n '' +\n (isRTL ? days.reverse() : days).join('') +\n ''\n );\n }\n\n renderTable(opts, data, randId) {\n return (\n '
' +\n this.renderHead(opts) +\n this.renderBody(data) +\n '
'\n );\n }\n\n renderHead(opts) {\n let i,\n arr = [];\n for (i = 0; i < 7; i++) {\n arr.push(\n `${this.renderDayName(\n opts,\n i,\n true\n )}`\n );\n }\n return '' + (opts.isRTL ? arr.reverse() : arr).join('') + '';\n }\n\n renderBody(rows) {\n return '' + rows.join('') + '';\n }\n\n renderTitle(instance, c, year, month, refYear, randId) {\n let i,\n j,\n arr,\n opts = this.options,\n isMinYear = year === opts.minYear,\n isMaxYear = year === opts.maxYear,\n html =\n '
',\n monthHtml,\n yearHtml,\n prev = true,\n next = true;\n\n for (arr = [], i = 0; i < 12; i++) {\n arr.push(\n ''\n );\n }\n\n monthHtml = '';\n\n if (Array.isArray(opts.yearRange)) {\n i = opts.yearRange[0];\n j = opts.yearRange[1] + 1;\n }\n else {\n i = year - opts.yearRange;\n j = 1 + year + opts.yearRange;\n }\n\n for (arr = []; i < j && i <= opts.maxYear; i++) {\n if (i >= opts.minYear) {\n arr.push(``);\n }\n }\n if (opts.yearRangeReverse) arr.reverse();\n\n yearHtml = ``;\n\n let leftArrow =\n '';\n html += ``;\n\n html += '
';\n if (opts.showMonthAfterYear) {\n html += yearHtml + monthHtml;\n } else {\n html += monthHtml + yearHtml;\n }\n html += '
';\n\n if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n prev = false;\n }\n\n if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n next = false;\n }\n\n let rightArrow =\n '';\n html += ``;\n\n return (html += '
');\n }\n\n // refresh HTML\n draw(force: boolean = false) {\n if (!this.isOpen && !force) return;\n let opts = this.options,\n minYear = opts.minYear,\n maxYear = opts.maxYear,\n minMonth = opts.minMonth,\n maxMonth = opts.maxMonth,\n html = '',\n randId;\n\n if (this._y <= minYear) {\n this._y = minYear;\n if (!isNaN(minMonth) && this._m < minMonth) {\n this._m = minMonth;\n }\n }\n if (this._y >= maxYear) {\n this._y = maxYear;\n if (!isNaN(maxMonth) && this._m > maxMonth) {\n this._m = maxMonth;\n }\n }\n\n randId =\n 'datepicker-title-' +\n Math.random()\n .toString(36)\n .replace(/[^a-z]+/g, '')\n .substr(0, 2);\n\n for (let c = 0; c < 1; c++) {\n this._renderDateDisplay();\n html +=\n this.renderTitle(\n this,\n c,\n this.calendars[c].year,\n this.calendars[c].month,\n this.calendars[0].year,\n randId\n ) + this.render(this.calendars[c].year, this.calendars[c].month, randId);\n }\n\n this.destroySelects();\n\n this.calendarEl.innerHTML = html;\n\n // Init Materialize Select\n let yearSelect = this.calendarEl.querySelector('.orig-select-year') as HTMLSelectElement;\n let monthSelect = this.calendarEl.querySelector('.orig-select-month') as HTMLSelectElement;\n FormSelect.init(yearSelect, {\n classes: 'select-year',\n dropdownOptions: { container: document.body, constrainWidth: false }\n });\n FormSelect.init(monthSelect, {\n classes: 'select-month',\n dropdownOptions: { container: document.body, constrainWidth: false }\n });\n\n // Add change handlers for select\n yearSelect.addEventListener('change', this._handleYearChange);\n monthSelect.addEventListener('change', this._handleMonthChange);\n\n if (typeof this.options.onDraw === 'function') {\n this.options.onDraw.call(this);\n }\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleInputClick);\n this.el.addEventListener('keydown', this._handleInputKeydown);\n this.el.addEventListener('change', this._handleInputChange);\n this.calendarEl.addEventListener('click', this._handleCalendarClick);\n this.doneBtn.addEventListener('click', this._finishSelection);\n this.cancelBtn.addEventListener('click', this.close);\n\n if (this.options.showClearBtn) {\n this.clearBtn.addEventListener('click', this._handleClearClick);\n }\n }\n\n _setupVariables() {\n const template = document.createElement('template');\n template.innerHTML = Datepicker._template.trim();\n this.modalEl = template.content.firstChild;\n\n this.calendarEl = this.modalEl.querySelector('.datepicker-calendar');\n this.yearTextEl = this.modalEl.querySelector('.year-text');\n this.dateTextEl = this.modalEl.querySelector('.date-text');\n if (this.options.showClearBtn) {\n this.clearBtn = this.modalEl.querySelector('.datepicker-clear');\n }\n this.doneBtn = this.modalEl.querySelector('.datepicker-done');\n this.cancelBtn = this.modalEl.querySelector('.datepicker-cancel');\n\n this.formats = {\n d: () => {\n return this.date.getDate();\n },\n dd: () => {\n let d = this.date.getDate();\n return (d < 10 ? '0' : '') + d;\n },\n ddd: () => {\n return this.options.i18n.weekdaysShort[this.date.getDay()];\n },\n dddd: () => {\n return this.options.i18n.weekdays[this.date.getDay()];\n },\n m: () => {\n return this.date.getMonth() + 1;\n },\n mm: () => {\n let m = this.date.getMonth() + 1;\n return (m < 10 ? '0' : '') + m;\n },\n mmm: () => {\n return this.options.i18n.monthsShort[this.date.getMonth()];\n },\n mmmm: () => {\n return this.options.i18n.months[this.date.getMonth()];\n },\n yy: () => {\n return ('' + this.date.getFullYear()).slice(2);\n },\n yyyy: () => {\n return this.date.getFullYear();\n }\n };\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleInputClick);\n this.el.removeEventListener('keydown', this._handleInputKeydown);\n this.el.removeEventListener('change', this._handleInputChange);\n this.calendarEl.removeEventListener('click', this._handleCalendarClick);\n }\n\n _handleInputClick = () => {\n this.open();\n }\n\n _handleInputKeydown = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n e.preventDefault();\n this.open();\n }\n }\n\n _handleCalendarClick = (e) => {\n if (!this.isOpen) return;\n const target = (e.target);\n if (!target.classList.contains('is-disabled')) {\n if (\n target.classList.contains('datepicker-day-button') &&\n !target.classList.contains('is-empty') &&\n !target.parentElement.classList.contains('is-disabled')\n ) {\n this.setDate(\n new Date(\n e.target.getAttribute('data-year'),\n e.target.getAttribute('data-month'),\n e.target.getAttribute('data-day')\n )\n );\n if (this.options.autoClose) {\n this._finishSelection();\n }\n }\n else if (target.closest('.month-prev')) {\n this.prevMonth();\n }\n else if (target.closest('.month-next')) {\n this.nextMonth();\n }\n }\n }\n\n _handleClearClick = () => {\n this.date = null;\n this.setInputValue();\n this.close();\n }\n\n _handleMonthChange = (e) => {\n this.gotoMonth(e.target.value);\n }\n\n _handleYearChange = (e) => {\n this.gotoYear(e.target.value);\n }\n\n // change view to a specific month (zero-index, e.g. 0: January)\n gotoMonth(month) {\n if (!isNaN(month)) {\n this.calendars[0].month = parseInt(month, 10);\n this.adjustCalendars();\n }\n }\n\n // change view to a specific full year (e.g. \"2012\")\n gotoYear(year) {\n if (!isNaN(year)) {\n this.calendars[0].year = parseInt(year, 10);\n this.adjustCalendars();\n }\n }\n\n _handleInputChange = (e: Event) => {\n let date;\n // Prevent change event from being fired when triggered by the plugin\n if (e['detail']?.firedBy === this) return;\n if (this.options.parse) {\n date = this.options.parse(this.el.value,\n typeof this.options.format === \"function\"\n ? this.options.format(new Date(this.el.value))\n : this.options.format);\n }\n else {\n date = new Date(Date.parse(this.el.value));\n }\n if (Datepicker._isDate(date)) this.setDate(date);\n }\n\n renderDayName(opts, day, abbr: boolean = false) {\n day += opts.firstDay;\n while (day >= 7) {\n day -= 7;\n }\n return abbr ? opts.i18n.weekdaysAbbrev[day] : opts.i18n.weekdays[day];\n }\n\n // Set input value to the selected date and close Datepicker\n _finishSelection = () => {\n this.setInputValue();\n this.close();\n }\n\n /**\n * Open datepicker.\n */\n open = () => {\n if (this.isOpen) return;\n this.isOpen = true;\n if (typeof this.options.onOpen === 'function') {\n this.options.onOpen.call(this);\n }\n this.draw();\n this.modal.open(undefined);\n return this;\n }\n\n /**\n * Close datepicker.\n */\n close = () => {\n if (!this.isOpen) return;\n this.isOpen = false;\n if (typeof this.options.onClose === 'function') {\n this.options.onClose.call(this);\n }\n this.modal.close();\n return this;\n }\n\n static {\n Datepicker._template = `\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
`;\n }\n}\n","import { Utils } from \"./utils\";\nimport { Component, BaseOptions, InitElements, MElement, Openable } from \"./component\";\n\nexport interface DropdownOptions extends BaseOptions {\n /**\n * Defines the edge the menu is aligned to.\n * @default 'left'\n */\n alignment: 'left' | 'right';\n /**\n * If true, automatically focus dropdown el for keyboard.\n * @default true\n */\n autoFocus: boolean;\n /**\n * If true, constrainWidth to the size of the dropdown activator.\n * @default true\n */\n constrainWidth: boolean;\n /**\n * Provide an element that will be the bounding container of the dropdown.\n * @default null\n */\n container: Element;\n /**\n * If false, the dropdown will show below the trigger.\n * @default true\n */\n coverTrigger: boolean;\n /**\n * If true, close dropdown on item click.\n * @default true\n */\n closeOnClick: boolean;\n /**\n * If true, the dropdown will open on hover.\n * @default false\n */\n hover: boolean;\n /**\n * The duration of the transition enter in milliseconds.\n * @default 150\n */\n inDuration: number;\n /**\n * The duration of the transition out in milliseconds.\n * @default 250\n */\n outDuration: number;\n /**\n * Function called when dropdown starts entering.\n * @default null\n */\n onOpenStart: (el: HTMLElement) => void;\n /**\n * Function called when dropdown finishes entering.\n * @default null\n */\n onOpenEnd: (el: HTMLElement) => void;\n /**\n * Function called when dropdown starts exiting.\n * @default null\n */\n onCloseStart: (el: HTMLElement) => void;\n /**\n * Function called when dropdown finishes exiting.\n * @default null\n */\n onCloseEnd: (el: HTMLElement) => void;\n /**\n * Function called when item is clicked.\n * @default null\n */\n onItemClick: (el: HTMLLIElement) => void;\n};\n\nconst _defaults: DropdownOptions = {\n alignment: 'left',\n autoFocus: true,\n constrainWidth: true,\n container: null,\n coverTrigger: true,\n closeOnClick: true,\n hover: false,\n inDuration: 150,\n outDuration: 250,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n onItemClick: null\n};\n\nexport class Dropdown extends Component implements Openable {\n static _dropdowns: Dropdown[] = [];\n /** ID of the dropdown element. */\n id: string;\n /** The DOM element of the dropdown. */\n dropdownEl: HTMLElement;\n /** If the dropdown is open. */\n isOpen: boolean;\n /** If the dropdown content is scrollable. */\n isScrollable: boolean;\n isTouchMoving: boolean;\n /** The index of the item focused. */\n focusedIndex: number;\n filterQuery: any[];\n filterTimeout: NodeJS.Timeout;\n\n constructor(el: HTMLElement, options: Partial) {\n super(el, options, Dropdown);\n (this.el as any).M_Dropdown = this;\n\n Dropdown._dropdowns.push(this);\n this.id = Utils.getIdFromTrigger(el);\n this.dropdownEl = document.getElementById(this.id);\n\n this.options = {\n ...Dropdown.defaults,\n ...options\n };\n\n this.isOpen = false;\n this.isScrollable = false;\n this.isTouchMoving = false;\n this.focusedIndex = -1;\n this.filterQuery = [];\n\n // Move dropdown-content after dropdown-trigger\n this._moveDropdown();\n this._makeDropdownFocusable();\n this._setupEventHandlers();\n }\n\n static get defaults(): DropdownOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Dropdown.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial): Dropdown;\n /**\n * Initializes instances of Dropdown.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Dropdown[];\n /**\n * Initializes instances of Dropdown.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLElement | InitElements, options: Partial = {}): Dropdown | Dropdown[] {\n return super.init(els, options, Dropdown);\n }\n\n static getInstance(el: HTMLElement): Dropdown {\n return (el as any).M_Dropdown;\n }\n\n destroy() {\n this._resetDropdownStyles();\n this._removeEventHandlers();\n Dropdown._dropdowns.splice(Dropdown._dropdowns.indexOf(this), 1);\n (this.el as any).M_Dropdown = undefined;\n }\n\n _setupEventHandlers() {\n // Trigger keydown handler\n this.el.addEventListener('keydown', this._handleTriggerKeydown);\n // Item click handler\n this.dropdownEl?.addEventListener('click', this._handleDropdownClick);\n // Hover event handlers\n if (this.options.hover) {\n this.el.addEventListener('mouseenter', this._handleMouseEnter);\n this.el.addEventListener('mouseleave', this._handleMouseLeave);\n this.dropdownEl.addEventListener('mouseleave', this._handleMouseLeave);\n // Click event handlers\n } else {\n this.el.addEventListener('click', this._handleClick);\n }\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('keydown', this._handleTriggerKeydown);\n this.dropdownEl.removeEventListener('click', this._handleDropdownClick);\n if (this.options.hover) {\n this.el.removeEventListener('mouseenter', this._handleMouseEnter);\n this.el.removeEventListener('mouseleave', this._handleMouseLeave);\n this.dropdownEl.removeEventListener('mouseleave', this._handleMouseLeave);\n } else {\n this.el.removeEventListener('click', this._handleClick);\n }\n }\n\n _setupTemporaryEventHandlers() {\n document.body.addEventListener('click', this._handleDocumentClick);\n document.body.addEventListener('touchmove', this._handleDocumentTouchmove);\n this.dropdownEl.addEventListener('keydown', this._handleDropdownKeydown);\n window.addEventListener('resize', this._handleWindowResize);\n }\n\n _removeTemporaryEventHandlers() {\n document.body.removeEventListener('click', this._handleDocumentClick);\n document.body.removeEventListener('touchmove', this._handleDocumentTouchmove);\n this.dropdownEl.removeEventListener('keydown', this._handleDropdownKeydown);\n window.removeEventListener('resize', this._handleWindowResize);\n }\n\n _handleClick = (e: MouseEvent) => {\n e.preventDefault();\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n _handleMouseEnter = () => {\n this.open();\n }\n\n _handleMouseLeave = (e: MouseEvent) => {\n const toEl = e.relatedTarget as HTMLElement;\n const leaveToDropdownContent = !!toEl.closest('.dropdown-content');\n let leaveToActiveDropdownTrigger = false;\n const closestTrigger = toEl.closest('.dropdown-trigger');\n if (\n closestTrigger &&\n !!(closestTrigger).M_Dropdown &&\n (closestTrigger).M_Dropdown.isOpen\n ) {\n leaveToActiveDropdownTrigger = true;\n }\n // Close hover dropdown if mouse did not leave to either active dropdown-trigger or dropdown-content\n if (!leaveToActiveDropdownTrigger && !leaveToDropdownContent) {\n this.close();\n }\n }\n\n _handleDocumentClick = (e: MouseEvent) => {\n const target = e.target;\n if (\n this.options.closeOnClick &&\n target.closest('.dropdown-content') &&\n !this.isTouchMoving\n ) {\n // isTouchMoving to check if scrolling on mobile.\n this.close();\n }\n else if (\n !target.closest('.dropdown-content')\n ) {\n // Do this one frame later so that if the element clicked also triggers _handleClick\n // For example, if a label for a select was clicked, that we don't close/open the dropdown\n setTimeout(() => {\n if (this.isOpen) {\n this.close();\n }\n }, 0);\n }\n this.isTouchMoving = false;\n }\n\n _handleTriggerKeydown = (e: KeyboardEvent) => {\n // ARROW DOWN OR ENTER WHEN SELECT IS CLOSED - open Dropdown\n const arrowDownOrEnter = Utils.keys.ARROW_DOWN.includes(e.key) || Utils.keys.ENTER.includes(e.key);\n if (arrowDownOrEnter && !this.isOpen) {\n e.preventDefault();\n this.open();\n }\n }\n\n _handleDocumentTouchmove = (e: TouchEvent) => {\n const target = e.target;\n if (target.closest('.dropdown-content')) {\n this.isTouchMoving = true;\n }\n }\n\n _handleDropdownClick = (e: MouseEvent) => {\n // onItemClick callback\n if (typeof this.options.onItemClick === 'function') {\n const itemEl = (e.target).closest('li');\n this.options.onItemClick.call(this, itemEl);\n }\n }\n\n _handleDropdownKeydown = (e: KeyboardEvent) => {\n const arrowUpOrDown = Utils.keys.ARROW_DOWN.includes(e.key) || Utils.keys.ARROW_UP.includes(e.key);\n if (Utils.keys.TAB.includes(e.key)) {\n e.preventDefault();\n this.close();\n }\n // Navigate down dropdown list\n else if (arrowUpOrDown && this.isOpen) {\n e.preventDefault();\n const direction = Utils.keys.ARROW_DOWN.includes(e.key) ? 1 : -1;\n let newFocusedIndex = this.focusedIndex;\n let hasFoundNewIndex = false;\n do {\n newFocusedIndex = newFocusedIndex + direction;\n if (\n !!this.dropdownEl.children[newFocusedIndex] &&\n (this.dropdownEl.children[newFocusedIndex]).tabIndex !== -1\n ) {\n hasFoundNewIndex = true;\n break;\n }\n } while (newFocusedIndex < this.dropdownEl.children.length && newFocusedIndex >= 0);\n\n if (hasFoundNewIndex) {\n // Remove active class from old element\n if (this.focusedIndex >= 0)\n this.dropdownEl.children[this.focusedIndex].classList.remove('active');\n this.focusedIndex = newFocusedIndex;\n this._focusFocusedItem();\n }\n }\n // ENTER selects choice on focused item\n else if (Utils.keys.ENTER.includes(e.key) && this.isOpen) {\n // Search for and `;\n arrLi.push(li);\n ul.append(li);\n });\n\n this.el.append(ul);\n this._indicators = arrLi;\n }\n }\n\n private _removeIndicators() {\n this.el.querySelector('ul.indicators').remove(); //find('ul.indicators').remove();\n }\n\n set(index: number) {\n // Wrap around indices.\n if (index >= this._slides.length) index = 0;\n else if (index < 0) index = this._slides.length - 1;\n\n // Only do if index changes\n if (this.activeIndex === index) return;\n\n this._activeSlide = this._slides[this.activeIndex];\n const _caption = this._activeSlide.querySelector('.caption');\n\n this._activeSlide.classList.remove('active');\n // Enables every slide\n this._slides.forEach(slide => slide.style.visibility = 'visible');\n\n //--- Hide active Slide + Caption\n this._activeSlide.style.opacity = '0';\n setTimeout(() => {\n this._slides.forEach(slide => {\n if (slide.classList.contains('active')) return;\n slide.style.opacity = '0';\n slide.style.transform = 'translate(0, 0)';\n // Disables invisible slides (for assistive technologies)\n slide.style.visibility = 'hidden';\n });\n\n }, this.options.duration);\n\n // Hide active Caption\n //this._animateCaptionIn(_caption, this.options.duration);\n _caption.style.opacity = '0';\n\n // Update indicators\n if (this.options.indicators) {\n const activeIndicator = this._indicators[this.activeIndex].children[0];\n const nextIndicator = this._indicators[index].children[0];\n activeIndicator.classList.remove('active');\n nextIndicator.classList.add('active');\n if (typeof this.options.indicatorLabelFunc === \"function\"){\n activeIndicator.ariaLabel = this.options.indicatorLabelFunc.call(this, this.activeIndex, false);\n nextIndicator.ariaLabel = this.options.indicatorLabelFunc.call(this, index, true);\n }\n }\n\n //--- Show new Slide + Caption\n this._animateSlide(this._slides[index], true);\n this._slides[index].classList.add('active');\n this.activeIndex = index;\n\n // Reset interval, if allowed. This check prevents autostart\n // when slider is paused, since it can be changed though indicators.\n if (this.interval != null) {\n this.start();\n }\n }\n\n _pause(fromEvent: boolean) {\n clearInterval(this.interval);\n this.eventPause = fromEvent;\n this.interval = null;\n }\n\n /**\n * Pause slider autoslide.\n */\n pause = () => {\n this._pause(false);\n }\n\n /**\n * Start slider autoslide.\n */\n start = () => {\n clearInterval(this.interval);\n this.interval = setInterval(\n this._handleInterval,\n this.options.duration + this.options.interval\n );\n this.eventPause = false;\n }\n\n /**\n * Move to next slider.\n */\n next = () => {\n let newIndex = this.activeIndex + 1;\n // Wrap around indices.\n if (newIndex >= this._slides.length) newIndex = 0;\n else if (newIndex < 0) newIndex = this._slides.length - 1;\n this.set(newIndex);\n }\n\n /**\n * Move to prev slider.\n */\n prev = () => {\n let newIndex = this.activeIndex - 1;\n // Wrap around indices.\n if (newIndex >= this._slides.length) newIndex = 0;\n else if (newIndex < 0) newIndex = this._slides.length - 1;\n this.set(newIndex);\n }\n}\n","import { Carousel } from \"./carousel\";\nimport { Component, BaseOptions, InitElements, MElement } from \"./component\";\n\nexport interface TabsOptions extends BaseOptions {\n /**\n * Transition duration in milliseconds.\n * @default 300\n */\n duration: number;\n /**\n * Callback for when a new tab content is shown.\n * @default null\n */\n onShow: (newContent: Element) => void;\n /**\n * Set to true to enable swipeable tabs.\n * This also uses the responsiveThreshold option.\n * @default false\n */\n swipeable: boolean;\n /**\n * The maximum width of the screen, in pixels,\n * where the swipeable functionality initializes.\n * @default infinity\n */\n responsiveThreshold: number;\n};\n\nlet _defaults: TabsOptions = {\n duration: 300,\n onShow: null,\n swipeable: false,\n responsiveThreshold: Infinity // breakpoint for swipeable\n};\n\nexport class Tabs extends Component {\n _tabLinks: NodeListOf;\n _index: number;\n _indicator: HTMLLIElement;\n _tabWidth: number;\n _tabsWidth: number;\n _tabsCarousel: any;\n _activeTabLink: any;\n _content: any;\n\n constructor(el: HTMLElement, options: Partial) {\n super(el, options, Tabs);\n (this.el as any).M_Tabs = this;\n\n this.options = {\n ...Tabs.defaults,\n ...options\n };\n\n this._tabLinks = this.el.querySelectorAll('li.tab > a');\n this._index = 0;\n this._setupActiveTabLink();\n if (this.options.swipeable) {\n this._setupSwipeableTabs();\n } else {\n this._setupNormalTabs();\n }\n // Setup tabs indicator after content to ensure accurate widths\n this._setTabsAndTabWidth();\n this._createIndicator();\n this._setupEventHandlers();\n }\n\n static get defaults(): TabsOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Tabs.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial): Tabs;\n /**\n * Initializes instances of Tabs.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Tabs[];\n /**\n * Initializes instances of Tabs.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLElement | InitElements, options: Partial = {}): Tabs | Tabs[] {\n return super.init(els, options, Tabs);\n }\n\n static getInstance(el: HTMLElement): Tabs {\n return (el as any).M_Tabs;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._indicator.parentNode.removeChild(this._indicator);\n if (this.options.swipeable) {\n this._teardownSwipeableTabs();\n }\n else {\n this._teardownNormalTabs();\n }\n (this.el as any).M_Tabs = undefined;\n }\n\n /**\n * The index of tab that is currently shown.\n */\n get index(){ return this._index; }\n\n _setupEventHandlers() {\n window.addEventListener('resize', this._handleWindowResize);\n this.el.addEventListener('click', this._handleTabClick);\n }\n\n _removeEventHandlers() {\n window.removeEventListener('resize', this._handleWindowResize);\n this.el.removeEventListener('click', this._handleTabClick);\n }\n\n _handleWindowResize = () => {\n this._setTabsAndTabWidth();\n if (this._tabWidth !== 0 && this._tabsWidth !== 0) {\n this._indicator.style.left = this._calcLeftPos(this._activeTabLink)+'px';\n this._indicator.style.right = this._calcRightPos(this._activeTabLink)+'px';\n }\n }\n\n _handleTabClick = (e: MouseEvent) => {\n const tabLink = e.target as HTMLAnchorElement;\n const tab = tabLink.parentElement;\n // Handle click on tab link only\n if (!tabLink || !tab.classList.contains('tab')) return;\n // is disabled?\n if (tab.classList.contains('disabled')) {\n e.preventDefault();\n return;\n }\n // Act as regular link if target attribute is specified.\n if (tabLink.hasAttribute('target')) return;\n // Make the old tab inactive.\n this._activeTabLink.classList.remove('active');\n const _oldContent = this._content;\n // Update the variables with the new link and content\n\n this._activeTabLink = tabLink;\n if (tabLink.hash)\n this._content = document.querySelector(tabLink.hash);\n this._tabLinks = this.el.querySelectorAll('li.tab > a');\n // Make the tab active\n this._activeTabLink.classList.add('active');\n const prevIndex = this._index;\n this._index = Math.max(Array.from(this._tabLinks).indexOf(tabLink), 0);\n\n // Swap content\n if (this.options.swipeable) {\n if (this._tabsCarousel) {\n this._tabsCarousel.set(this._index, () => {\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n });\n }\n } else {\n if (this._content) {\n this._content.style.display = 'block';\n this._content.classList.add('active');\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n if (_oldContent && _oldContent !== this._content) {\n _oldContent.style.display = 'none';\n _oldContent.classList.remove('active');\n }\n }\n }\n // Update widths after content is swapped (scrollbar bugfix)\n this._setTabsAndTabWidth();\n this._animateIndicator(prevIndex);\n e.preventDefault();\n }\n\n _createIndicator() {\n const indicator = document.createElement('li');\n indicator.classList.add('indicator');\n this.el.appendChild(indicator);\n this._indicator = indicator;\n this._indicator.style.left = this._calcLeftPos(this._activeTabLink)+'px';\n this._indicator.style.right = this._calcRightPos(this._activeTabLink)+'px';\n }\n\n _setupActiveTabLink() {\n // If the location.hash matches one of the links, use that as the active tab.\n this._activeTabLink = Array.from(this._tabLinks).find((a: HTMLAnchorElement) => a.getAttribute('href') === location.hash);\n // If no match is found, use the first link or any with class 'active' as the initial active tab.\n if (!this._activeTabLink) {\n this._activeTabLink = this.el.querySelector('li.tab a.active');\n }\n if (this._activeTabLink.length === 0) {\n this._activeTabLink = this.el.querySelector('li.tab a');\n }\n Array.from(this._tabLinks).forEach((a: HTMLAnchorElement) => a.classList.remove('active'));\n this._activeTabLink.classList.add('active');\n\n this._index = Math.max(Array.from(this._tabLinks).indexOf(this._activeTabLink), 0);\n if (this._activeTabLink && this._activeTabLink.hash) {\n this._content = document.querySelector(this._activeTabLink.hash);\n if (this._content) \n this._content.classList.add('active');\n }\n }\n\n _setupSwipeableTabs() {\n // Change swipeable according to responsive threshold\n if (window.innerWidth > this.options.responsiveThreshold)\n this.options.swipeable = false;\n\n const tabsContent = [];\n this._tabLinks.forEach(a => {\n if (a.hash) {\n const currContent = document.querySelector(a.hash);\n currContent.classList.add('carousel-item');\n tabsContent.push(currContent); \n }\n });\n\n // Create Carousel-Wrapper around Tab-Contents\n const tabsWrapper = document.createElement('div');\n tabsWrapper.classList.add('tabs-content', 'carousel', 'carousel-slider');\n\n // Wrap around\n tabsContent[0].parentElement.insertBefore(tabsWrapper, tabsContent[0]);\n tabsContent.forEach(tabContent => {\n tabsWrapper.appendChild(tabContent);\n tabContent.style.display = '';\n });\n\n // Keep active tab index to set initial carousel slide\n const tab = this._activeTabLink.parentElement;\n const activeTabIndex = Array.from(tab.parentNode.children).indexOf(tab);\n\n this._tabsCarousel = Carousel.init(tabsWrapper, {\n fullWidth: true,\n noWrap: true,\n onCycleTo: (item) => {\n const prevIndex = this._index;\n this._index = Array.from(item.parentNode.children).indexOf(item);\n this._activeTabLink.classList.remove('active');\n this._activeTabLink = Array.from(this._tabLinks)[this._index];\n this._activeTabLink.classList.add('active');\n this._animateIndicator(prevIndex);\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n }\n });\n // Set initial carousel slide to active tab\n this._tabsCarousel.set(activeTabIndex);\n }\n\n _teardownSwipeableTabs() {\n const tabsWrapper = this._tabsCarousel.el;\n this._tabsCarousel.destroy();\n // Unwrap\n tabsWrapper.after(tabsWrapper.children);\n tabsWrapper.remove();\n }\n\n _setupNormalTabs() {\n // Hide Tabs Content\n Array.from(this._tabLinks).forEach((a) => {\n if (a === this._activeTabLink) return;\n if ((a).hash) {\n const currContent = document.querySelector((a).hash);\n if (currContent) (currContent).style.display = 'none';\n }\n });\n }\n\n _teardownNormalTabs() {\n // show Tabs Content\n this._tabLinks.forEach((a) => {\n if (a.hash) {\n const currContent = document.querySelector(a.hash) as HTMLElement;\n if (currContent) currContent.style.display = '';\n }\n });\n }\n\n _setTabsAndTabWidth() {\n this._tabsWidth = this.el.getBoundingClientRect().width;\n this._tabWidth = Math.max(this._tabsWidth, this.el.scrollWidth) / this._tabLinks.length;\n }\n\n _calcRightPos(el) {\n return Math.ceil(this._tabsWidth - el.offsetLeft - el.getBoundingClientRect().width);\n }\n\n _calcLeftPos(el) {\n return Math.floor(el.offsetLeft);\n }\n\n /**\n * Recalculate tab indicator position. This is useful when\n * the indicator position is not correct.\n */\n updateTabIndicator() {\n this._setTabsAndTabWidth();\n this._animateIndicator(this._index);\n }\n\n _animateIndicator(prevIndex) {\n let leftDelay = 0, rightDelay = 0;\n\n const isMovingLeftOrStaying = (this._index - prevIndex >= 0);\n if (isMovingLeftOrStaying)\n leftDelay = 90;\n else\n rightDelay = 90;\n\n // in v1: easeOutQuad\n this._indicator.style.transition = `\n left ${this.options.duration}ms ease-out ${leftDelay}ms,\n right ${this.options.duration}ms ease-out ${rightDelay}ms`;\n\n this._indicator.style.left = this._calcLeftPos(this._activeTabLink) + 'px';\n this._indicator.style.right = this._calcRightPos(this._activeTabLink) + 'px';\n }\n\n /**\n * Show tab content that corresponds to the tab with the id.\n * @param tabId The id of the tab that you want to switch to.\n */\n select(tabId: string) {\n const tab = Array.from(this._tabLinks).find((a: HTMLAnchorElement) => a.getAttribute('href') === '#'+tabId);\n if (tab) (tab).click();\n }\n}\n","import { Utils } from \"./utils\";\nimport { Component, BaseOptions, InitElements, MElement, Openable } from \"./component\";\n\nexport interface TapTargetOptions extends BaseOptions {\n /**\n * Callback function called when Tap Target is opened.\n * @default null\n */\n onOpen: (origin: HTMLElement) => void;\n /**\n * Callback function called when Tap Target is closed.\n * @default null\n */\n onClose: (origin: HTMLElement) => void;\n};\n\nlet _defaults: TapTargetOptions = {\n onOpen: null,\n onClose: null\n};\n\nexport class TapTarget extends Component implements Openable {\n /**\n * If the tap target is open.\n */\n isOpen: boolean;\n\n private wrapper: HTMLElement;\n private _origin: HTMLElement;\n private originEl: HTMLElement;\n private waveEl: HTMLElement & Element & Node;\n private contentEl: HTMLElement;\n\n constructor(el: HTMLElement, options: Partial) {\n super(el, options, TapTarget);\n (this.el as any).M_TapTarget = this;\n\n this.options = {\n ...TapTarget.defaults,\n ...options\n };\n\n this.isOpen = false;\n // setup\n this._origin = document.querySelector(`#${el.dataset.target}`);\n this._setup();\n this._calculatePositioning();\n this._setupEventHandlers();\n }\n\n static get defaults(): TapTargetOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of TapTarget.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial): TapTarget;\n /**\n * Initializes instances of TapTarget.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): TapTarget[];\n /**\n * Initializes instances of TapTarget.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLElement | InitElements, options: Partial = {}): TapTarget | TapTarget[] {\n return super.init(els, options, TapTarget);\n }\n\n static getInstance(el: HTMLElement): TapTarget {\n return (el as any).M_TapTarget;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).TapTarget = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleTargetClick);\n this.originEl.addEventListener('click', this._handleOriginClick);\n // Resize\n window.addEventListener('resize', this._handleThrottledResize);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleTargetClick);\n this.originEl.removeEventListener('click', this._handleOriginClick);\n window.removeEventListener('resize', this._handleThrottledResize);\n }\n\n _handleThrottledResize: () => void = Utils.throttle(function(){ this._handleResize(); }, 200).bind(this);\n\n _handleTargetClick = () => {\n this.open();\n }\n\n _handleOriginClick = () => {\n this.close();\n }\n\n _handleResize = () => {\n this._calculatePositioning();\n }\n\n _handleDocumentClick = (e: MouseEvent | TouchEvent) => {\n if (!(e.target as HTMLElement).closest('.tap-target-wrapper')) {\n this.close();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n _setup() {\n // Creating tap target\n this.wrapper = this.el.parentElement;\n this.waveEl = this.wrapper.querySelector('.tap-target-wave');\n this.originEl = this.wrapper.querySelector('.tap-target-origin');\n this.contentEl = this.el.querySelector('.tap-target-content');\n // Creating wrapper\n if (!this.wrapper.classList.contains('.tap-target-wrapper')) {\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add('tap-target-wrapper');\n this.el.before(this.wrapper);\n this.wrapper.append(this.el);\n }\n // Creating content\n if (!this.contentEl) {\n this.contentEl = document.createElement('div');\n this.contentEl.classList.add('tap-target-content');\n this.el.append(this.contentEl);\n }\n // Creating foreground wave\n if (!this.waveEl) {\n this.waveEl = document.createElement('div');\n this.waveEl.classList.add('tap-target-wave');\n // Creating origin\n if (!this.originEl) {\n this.originEl = this._origin.cloneNode(true); // .clone(true, true);\n this.originEl.classList.add('tap-target-origin');\n this.originEl.removeAttribute('id');\n this.originEl.removeAttribute('style');\n this.waveEl.append(this.originEl);\n }\n this.wrapper.append(this.waveEl);\n }\n }\n\n private _offset(el: HTMLElement) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n\n _calculatePositioning() {\n // Element or parent is fixed position?\n let isFixed = getComputedStyle(this._origin).position === 'fixed';\n if (!isFixed) {\n\n let currentElem: any = this._origin;\n const parents = [];\n while ((currentElem = currentElem.parentNode) && currentElem !== document)\n parents.push(currentElem);\n\n for (let i = 0; i < parents.length; i++) {\n isFixed = getComputedStyle(parents[i]).position === 'fixed';\n if (isFixed) break;\n }\n }\n // Calculating origin\n const originWidth = this._origin.offsetWidth;\n const originHeight = this._origin.offsetHeight;\n const originTop = isFixed ? this._offset(this._origin).top - Utils.getDocumentScrollTop() : this._offset(this._origin).top;\n const originLeft = isFixed ? this._offset(this._origin).left - Utils.getDocumentScrollLeft() : this._offset(this._origin).left;\n\n // Calculating screen\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const scrollBarWidth = windowWidth - document.documentElement.clientWidth;\n const centerX = windowWidth / 2;\n const centerY = windowHeight / 2;\n const isLeft = originLeft <= centerX;\n const isRight = originLeft > centerX;\n const isTop = originTop <= centerY;\n const isBottom = originTop > centerY;\n const isCenterX = originLeft >= windowWidth * 0.25 && originLeft <= windowWidth * 0.75;\n\n // Calculating tap target\n const tapTargetWidth = this.el.offsetWidth;\n const tapTargetHeight = this.el.offsetHeight;\n const tapTargetTop = originTop + originHeight / 2 - tapTargetHeight / 2;\n const tapTargetLeft = originLeft + originWidth / 2 - tapTargetWidth / 2;\n const tapTargetPosition = isFixed ? 'fixed' : 'absolute';\n\n // Calculating content\n const tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth / 2 + originWidth;\n const tapTargetTextHeight = tapTargetHeight / 2;\n const tapTargetTextTop = isTop ? tapTargetHeight / 2 : 0;\n const tapTargetTextBottom = 0;\n const tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth / 2 - originWidth : 0;\n const tapTargetTextRight = 0;\n const tapTargetTextPadding = originWidth;\n const tapTargetTextAlign = isBottom ? 'bottom' : 'top';\n\n // Calculating wave\n const tapTargetWaveWidth = originWidth > originHeight ? originWidth * 2 : originWidth * 2;\n const tapTargetWaveHeight = tapTargetWaveWidth;\n const tapTargetWaveTop = tapTargetHeight / 2 - tapTargetWaveHeight / 2;\n const tapTargetWaveLeft = tapTargetWidth / 2 - tapTargetWaveWidth / 2;\n\n // Setting tap target\n this.wrapper.style.top = isTop ? tapTargetTop + 'px' : '';\n this.wrapper.style.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth - scrollBarWidth + 'px' : '';\n this.wrapper.style.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight + 'px' : '';\n this.wrapper.style.left = isLeft ? tapTargetLeft + 'px' : '';\n this.wrapper.style.position = tapTargetPosition;\n\n // Setting content\n this.contentEl.style.width = tapTargetTextWidth + 'px';\n this.contentEl.style.height = tapTargetTextHeight + 'px';\n this.contentEl.style.top = tapTargetTextTop + 'px';\n this.contentEl.style.right = tapTargetTextRight + 'px';\n this.contentEl.style.bottom = tapTargetTextBottom + 'px';\n this.contentEl.style.left = tapTargetTextLeft + 'px';\n this.contentEl.style.padding = tapTargetTextPadding + 'px';\n this.contentEl.style.verticalAlign = tapTargetTextAlign;\n\n // Setting wave\n this.waveEl.style.top = tapTargetWaveTop+'px';\n this.waveEl.style.left = tapTargetWaveLeft+'px';\n this.waveEl.style.width = tapTargetWaveWidth+'px';\n this.waveEl.style.height = tapTargetWaveHeight+'px';\n }\n\n /**\n * Open Tap Target.\n */\n open = () => {\n if (this.isOpen) return;\n // onOpen callback\n if (typeof this.options.onOpen === 'function') {\n this.options.onOpen.call(this, this._origin);\n }\n this.isOpen = true;\n this.wrapper.classList.add('open');\n document.body.addEventListener('click', this._handleDocumentClick, true);\n document.body.addEventListener('touchend', this._handleDocumentClick);\n };\n\n /**\n * Close Tap Target.\n */\n close = () => {\n if (!this.isOpen) return;\n // onClose callback\n if (typeof this.options.onClose === 'function') {\n this.options.onClose.call(this, this._origin);\n }\n this.isOpen = false;\n this.wrapper.classList.remove('open');\n document.body.removeEventListener('click', this._handleDocumentClick, true);\n document.body.removeEventListener('touchend', this._handleDocumentClick);\n };\n}\n","import { Modal } from \"./modal\";\nimport { Utils } from \"./utils\";\nimport { Component, BaseOptions, InitElements, MElement, I18nOptions } from \"./component\";\n\nexport type Views = \"hours\" | \"minutes\";\n\nexport interface TimepickerOptions extends BaseOptions {\n /**\n * Dial radius.\n * @default 135\n */\n dialRadius: number;\n /**\n * Outer radius.\n * @default 105\n */\n outerRadius: number;\n /**\n * Inner radius.\n * @default 70\n */\n innerRadius: number;\n /**\n * Tick radius.\n * @default 20\n */\n tickRadius: number;\n /**\n * Duration of the transition from/to the hours/minutes view.\n * @default 350\n */\n duration: number;\n /**\n * Specify a DOM element OR selector for a DOM element to render\n * the time picker in, by default it will be placed before the input.\n * @default null\n */\n container: HTMLElement | string | null;\n /**\n * Show the clear button in the Timepicker.\n * @default false\n */\n showClearBtn: boolean;\n /**\n * Default time to set on the timepicker 'now' or '13:14'.\n * @default 'now';\n */\n defaultTime: string;\n /**\n * Millisecond offset from the defaultTime.\n * @default 0\n */\n fromNow: number;\n /**\n * Internationalization options.\n */\n i18n: Partial;\n /**\n * Automatically close picker when minute is selected.\n * @default false;\n */\n autoClose: boolean;\n /**\n * Use 12 hour AM/PM clock instead of 24 hour clock.\n * @default true\n */\n twelveHour: boolean;\n /**\n * Vibrate device when dragging clock hand.\n * @default true\n */\n vibrate: boolean;\n /**\n * Callback function called before modal is opened.\n * @default null\n */\n onOpenStart: (el: HTMLElement) => void;\n /**\n * Callback function called after modal is opened.\n * @default null\n */\n onOpenEnd: (el: HTMLElement) => void;\n /**\n * Callback function called before modal is closed.\n * @default null\n */\n onCloseStart: (el: HTMLElement) => void;\n /**\n * Callback function called after modal is closed.\n * @default null\n */\n onCloseEnd: (el: HTMLElement) => void;\n /**\n * Callback function when a time is selected.\n * @default null\n */\n onSelect: (hour: number, minute: number) => void;\n}\n\nlet _defaults: TimepickerOptions = {\n dialRadius: 135,\n outerRadius: 105,\n innerRadius: 70,\n tickRadius: 20,\n duration: 350,\n container: null,\n defaultTime: 'now', // default time, 'now' or '13:14' e.g.\n fromNow: 0, // Millisecond offset from the defaultTime\n showClearBtn: false,\n // internationalization\n i18n: {\n cancel: 'Cancel',\n clear: 'Clear',\n done: 'Ok'\n },\n autoClose: false, // auto close when minute is selected\n twelveHour: true, // change to 12 hour AM/PM clock from 24 hour\n vibrate: true, // vibrate the device when dragging clock hand\n // Callbacks\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n onSelect: null\n};\n\ntype Point = {\n x: number,\n y: number\n};\n\nexport class Timepicker extends Component {\n declare el: HTMLInputElement;\n id: string;\n modal: Modal;\n modalEl: HTMLElement;\n plate: any;\n digitalClock: any;\n inputHours: HTMLInputElement;\n inputMinutes: HTMLInputElement;\n x0: number;\n y0: number;\n moved: boolean;\n dx: number;\n dy: number;\n /**\n * Current view on the timepicker.\n * @default 'hours'\n */\n currentView: Views;\n hand: any;\n minutesView: HTMLElement;\n hours: any;\n minutes: any;\n /** The selected time. */\n time: string;\n /**\n * If the time is AM or PM on twelve-hour clock.\n * @default 'PM'\n */\n amOrPm: \"AM\" | \"PM\";\n static _template: any;\n /** If the picker is open. */\n isOpen: boolean;\n /** Vibrate device when dragging clock hand. */\n vibrate: \"vibrate\" | \"webkitVibrate\" | null;\n _canvas: HTMLElement;\n hoursView: any;\n spanAmPm: HTMLSpanElement;\n footer: HTMLElement;\n private _amBtn: HTMLElement;\n private _pmBtn: HTMLElement;\n bg: Element;\n bearing: Element;\n g: Element;\n toggleViewTimer: string | number | NodeJS.Timeout;\n canvas: any;\n vibrateTimer: any;\n\n constructor(el: HTMLInputElement, options: Partial) {\n super(el, options, Timepicker);\n (this.el as any).M_Timepicker = this;\n\n this.options = {\n ...Timepicker.defaults,\n ...options\n };\n\n this.id = Utils.guid();\n this._insertHTMLIntoDOM();\n this._setupModal();\n this._setupVariables();\n this._setupEventHandlers();\n this._clockSetup();\n this._pickerSetup();\n }\n\n static get defaults(): TimepickerOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Timepicker.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLInputElement, options?: Partial): Timepicker;\n /**\n * Initializes instances of Timepicker.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Timepicker[];\n /**\n * Initializes instances of Timepicker.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLInputElement | InitElements, options: Partial = {}): Timepicker | Timepicker[] {\n return super.init(els, options, Timepicker);\n }\n\n static _addLeadingZero(num: number) {\n return (num < 10 ? '0' : '') + num;\n }\n\n static _createSVGEl(name: string) {\n let svgNS = 'http://www.w3.org/2000/svg';\n return document.createElementNS(svgNS, name);\n }\n\n static _Pos(e: TouchEvent | MouseEvent): Point {\n if (e.type.startsWith(\"touch\") && (e as TouchEvent).targetTouches.length >= 1) {\n return { x: (e as TouchEvent).targetTouches[0].clientX, y: (e as TouchEvent).targetTouches[0].clientY };\n }\n // mouse event\n return { x: (e as MouseEvent).clientX, y: (e as MouseEvent).clientY };\n }\n\n static getInstance(el: HTMLElement): Timepicker {\n return (el as any).M_Timepicker;\n }\n\n destroy() {\n this._removeEventHandlers();\n this.modal.destroy();\n this.modalEl.remove();\n (this.el as any).M_Timepicker = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleInputClick);\n this.el.addEventListener('keydown', this._handleInputKeydown);\n this.plate.addEventListener('mousedown', this._handleClockClickStart);\n this.plate.addEventListener('touchstart', this._handleClockClickStart);\n this.digitalClock.addEventListener('keyup', this._inputFromTextField);\n this.inputHours.addEventListener('click', () => this.showView('hours'));\n this.inputMinutes.addEventListener('click', () => this.showView('minutes'));\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleInputClick);\n this.el.removeEventListener('keydown', this._handleInputKeydown);\n }\n\n _handleInputClick = () => {\n this.open();\n }\n\n _handleInputKeydown = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n e.preventDefault();\n this.open();\n }\n }\n\n _handleTimeInputEnterKey = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n e.preventDefault();\n this._inputFromTextField();\n }\n }\n\n _handleClockClickStart = (e) => {\n e.preventDefault();\n let clockPlateBR = this.plate.getBoundingClientRect();\n let offset = { x: clockPlateBR.left, y: clockPlateBR.top };\n\n this.x0 = offset.x + this.options.dialRadius;\n this.y0 = offset.y + this.options.dialRadius;\n this.moved = false;\n let clickPos = Timepicker._Pos(e);\n this.dx = clickPos.x - this.x0;\n this.dy = clickPos.y - this.y0;\n\n // Set clock hands\n this.setHand(this.dx, this.dy, false);\n // Mousemove on document\n document.addEventListener('mousemove', this._handleDocumentClickMove);\n document.addEventListener('touchmove', this._handleDocumentClickMove);\n // Mouseup on document\n document.addEventListener('mouseup', this._handleDocumentClickEnd);\n document.addEventListener('touchend', this._handleDocumentClickEnd);\n }\n\n _handleDocumentClickMove = (e) => {\n e.preventDefault();\n let clickPos = Timepicker._Pos(e);\n let x = clickPos.x - this.x0;\n let y = clickPos.y - this.y0;\n this.moved = true;\n this.setHand(x, y, false);\n }\n\n _handleDocumentClickEnd = (e) => {\n e.preventDefault();\n document.removeEventListener('mouseup', this._handleDocumentClickEnd);\n document.removeEventListener('touchend', this._handleDocumentClickEnd);\n let clickPos = Timepicker._Pos(e);\n let x = clickPos.x - this.x0;\n let y = clickPos.y - this.y0;\n if (this.moved && x === this.dx && y === this.dy) {\n this.setHand(x, y);\n }\n if (this.currentView === 'hours') {\n this.showView('minutes', this.options.duration / 2);\n }\n else if (this.options.autoClose) {\n this.minutesView.classList.add('timepicker-dial-out');\n setTimeout(() => {\n this.done();\n }, this.options.duration / 2);\n }\n if (typeof this.options.onSelect === 'function') {\n this.options.onSelect.call(this, this.hours, this.minutes);\n }\n // Unbind mousemove event\n document.removeEventListener('mousemove', this._handleDocumentClickMove);\n document.removeEventListener('touchmove', this._handleDocumentClickMove);\n }\n\n _insertHTMLIntoDOM() {\n const template = document.createElement('template');\n template.innerHTML = Timepicker._template.trim();\n this.modalEl = template.content.firstChild;\n this.modalEl.id = 'modal-' + this.id;\n\n // Append popover to input by default\n const optEl = this.options.container;\n const containerEl = optEl instanceof HTMLElement ? optEl : document.querySelector(optEl);\n\n if (this.options.container && !!containerEl) {\n containerEl.append(this.modalEl);\n }\n else {\n this.el.parentElement.appendChild(this.modalEl);\n }\n }\n\n _setupModal() {\n this.modal = Modal.init(this.modalEl, {\n onOpenStart: this.options.onOpenStart,\n onOpenEnd: this.options.onOpenEnd,\n onCloseStart: this.options.onCloseStart,\n onCloseEnd: () => {\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this);\n }\n this.isOpen = false;\n }\n });\n }\n\n _setupVariables() {\n this.currentView = 'hours';\n this.vibrate = navigator.vibrate\n ? 'vibrate'\n : (navigator as any).webkitVibrate\n ? 'webkitVibrate'\n : null;\n this._canvas = this.modalEl.querySelector('.timepicker-canvas');\n this.plate = this.modalEl.querySelector('.timepicker-plate');\n this.digitalClock = this.modalEl.querySelector('.timepicker-display-column');\n this.hoursView = this.modalEl.querySelector('.timepicker-hours');\n this.minutesView = this.modalEl.querySelector('.timepicker-minutes');\n this.inputHours = this.modalEl.querySelector('.timepicker-input-hours');\n this.inputMinutes = this.modalEl.querySelector('.timepicker-input-minutes');\n this.spanAmPm = this.modalEl.querySelector('.timepicker-span-am-pm');\n this.footer = this.modalEl.querySelector('.timepicker-footer');\n this.amOrPm = 'PM';\n }\n\n private _createButton(text: string, visibility: string): HTMLButtonElement {\n const button = document.createElement('button');\n button.classList.add('btn-flat', 'waves-effect');\n button.style.visibility = visibility;\n button.type = 'button';\n button.tabIndex = this.options.twelveHour ? 3 : 1;\n button.innerText = text;\n return button;\n }\n\n _pickerSetup() {\n const clearButton = this._createButton(this.options.i18n.clear, this.options.showClearBtn ? '' : 'hidden');\n clearButton.classList.add('timepicker-clear');\n clearButton.addEventListener('click', this.clear);\n this.footer.appendChild(clearButton);\n\n const confirmationBtnsContainer = document.createElement('div');\n confirmationBtnsContainer.classList.add('confirmation-btns');\n this.footer.append(confirmationBtnsContainer);\n\n const cancelButton = this._createButton(this.options.i18n.cancel, '');\n cancelButton.classList.add('timepicker-close');\n cancelButton.addEventListener('click', this.close);\n confirmationBtnsContainer.appendChild(cancelButton);\n\n const doneButton = this._createButton(this.options.i18n.done, '');\n doneButton.classList.add('timepicker-close');\n doneButton.addEventListener('click', this.done);\n confirmationBtnsContainer.appendChild(doneButton);\n }\n\n _clockSetup() {\n if (this.options.twelveHour) {\n // AM Button\n this._amBtn = document.createElement('div');\n this._amBtn.classList.add('am-btn');\n this._amBtn.innerText = 'AM';\n this._amBtn.addEventListener('click', this._handleAmPmClick);\n this.spanAmPm.appendChild(this._amBtn);\n // PM Button\n this._pmBtn = document.createElement('div');\n this._pmBtn.classList.add('pm-btn');\n this._pmBtn.innerText = 'PM';\n this._pmBtn.addEventListener('click', this._handleAmPmClick);\n this.spanAmPm.appendChild(this._pmBtn);\n }\n this._buildHoursView();\n this._buildMinutesView();\n this._buildSVGClock();\n }\n\n _buildSVGClock() {\n // Draw clock hands and others\n let dialRadius = this.options.dialRadius;\n let tickRadius = this.options.tickRadius;\n let diameter = dialRadius * 2;\n let svg = Timepicker._createSVGEl('svg');\n svg.setAttribute('class', 'timepicker-svg');\n svg.setAttribute('width', diameter.toString());\n svg.setAttribute('height', diameter.toString());\n let g = Timepicker._createSVGEl('g');\n g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\n let bearing = Timepicker._createSVGEl('circle');\n bearing.setAttribute('class', 'timepicker-canvas-bearing');\n bearing.setAttribute('cx', '0');\n bearing.setAttribute('cy', '0');\n bearing.setAttribute('r', '4');\n let hand = Timepicker._createSVGEl('line');\n hand.setAttribute('x1', '0');\n hand.setAttribute('y1', '0');\n let bg = Timepicker._createSVGEl('circle');\n bg.setAttribute('class', 'timepicker-canvas-bg');\n bg.setAttribute('r', tickRadius.toString());\n g.appendChild(hand);\n g.appendChild(bg);\n g.appendChild(bearing);\n svg.appendChild(g);\n this._canvas.appendChild(svg);\n this.hand = hand;\n this.bg = bg;\n this.bearing = bearing;\n this.g = g;\n }\n\n _buildHoursView() {\n const $tick = document.createElement('div');\n $tick.classList.add('timepicker-tick');\n // Hours view\n if (this.options.twelveHour) {\n for (let i = 1; i < 13; i += 1) {\n const tick = $tick.cloneNode(true);\n const radian = (i / 6) * Math.PI;\n const radius = this.options.outerRadius;\n tick.style.left = this.options.dialRadius + Math.sin(radian) * radius - this.options.tickRadius + 'px';\n tick.style.top = this.options.dialRadius - Math.cos(radian) * radius - this.options.tickRadius + 'px';\n tick.innerHTML = i === 0 ? '00' : i.toString();\n this.hoursView.appendChild(tick);\n // tick.on(mousedownEvent, mousedown);\n }\n }\n else {\n for (let i = 0; i < 24; i += 1) {\n const tick = $tick.cloneNode(true);\n const radian = (i / 6) * Math.PI;\n const inner = i > 0 && i < 13;\n const radius = inner ? this.options.innerRadius : this.options.outerRadius;\n tick.style.left = this.options.dialRadius + Math.sin(radian) * radius - this.options.tickRadius + 'px';\n tick.style.top = this.options.dialRadius - Math.cos(radian) * radius - this.options.tickRadius + 'px';\n tick.innerHTML = i === 0 ? '00' : i.toString();\n this.hoursView.appendChild(tick);\n // tick.on(mousedownEvent, mousedown);\n }\n }\n }\n\n _buildMinutesView() {\n const _tick = document.createElement('div');\n _tick.classList.add('timepicker-tick');\n // Minutes view\n for (let i = 0; i < 60; i += 5) {\n const tick = _tick.cloneNode(true);\n const radian = (i / 30) * Math.PI;\n tick.style.left =\n this.options.dialRadius +\n Math.sin(radian) * this.options.outerRadius -\n this.options.tickRadius +\n 'px';\n tick.style.top =\n this.options.dialRadius -\n Math.cos(radian) * this.options.outerRadius -\n this.options.tickRadius +\n 'px';\n tick.innerHTML = Timepicker._addLeadingZero(i);\n this.minutesView.appendChild(tick);\n }\n }\n\n _handleAmPmClick = (e) => {\n const btnClicked = e.target;\n this.amOrPm = btnClicked.classList.contains('am-btn') ? 'AM' : 'PM';\n this._updateAmPmView();\n }\n\n _updateAmPmView() {\n if (this.options.twelveHour) {\n if (this.amOrPm === 'PM') {\n this._amBtn.classList.remove('text-primary');\n this._pmBtn.classList.add('text-primary');\n }\n else if (this.amOrPm === 'AM') {\n this._amBtn.classList.add('text-primary');\n this._pmBtn.classList.remove('text-primary');\n }\n }\n }\n\n _updateTimeFromInput() {\n // Get the time\n let value = ((this.el.value || this.options.defaultTime || '') + '').split(':');\n if (this.options.twelveHour && !(typeof value[1] === 'undefined')) {\n if (value[1].toUpperCase().indexOf('AM') > 0) {\n this.amOrPm = 'AM';\n } else {\n this.amOrPm = 'PM';\n }\n value[1] = value[1].replace('AM', '').replace('PM', '');\n }\n if (value[0] === 'now') {\n let now = new Date(+new Date() + this.options.fromNow);\n value = [now.getHours().toString(), now.getMinutes().toString()];\n if (this.options.twelveHour) {\n this.amOrPm = parseInt(value[0]) >= 12 && parseInt(value[0]) < 24 ? 'PM' : 'AM';\n }\n }\n this.hours = +value[0] || 0;\n this.minutes = +value[1] || 0;\n this.inputHours.value = this.hours;\n this.inputMinutes.value = Timepicker._addLeadingZero(this.minutes);\n\n this._updateAmPmView();\n }\n\n /**\n * Show hours or minutes view on timepicker.\n * @param view The name of the view you want to switch to, 'hours' or 'minutes'.\n */\n showView = (view: Views, delay: number = null) => {\n if (view === 'minutes' && getComputedStyle(this.hoursView).visibility === 'visible') {\n // raiseCallback(this.options.beforeHourSelect);\n }\n let isHours = view === 'hours',\n nextView = isHours ? this.hoursView : this.minutesView,\n hideView = isHours ? this.minutesView : this.hoursView;\n this.currentView = view;\n\n if (isHours) {\n this.inputHours.classList.add('text-primary');\n this.inputMinutes.classList.remove('text-primary');\n }\n else {\n this.inputHours.classList.remove('text-primary');\n this.inputMinutes.classList.add('text-primary');\n }\n\n // Transition view\n hideView.classList.add('timepicker-dial-out');\n\n nextView.style.visibility = 'visible';\n nextView.classList.remove('timepicker-dial-out');\n\n // Reset clock hand\n this.resetClock(delay);\n // After transitions ended\n clearTimeout(this.toggleViewTimer);\n this.toggleViewTimer = setTimeout(() => {\n hideView.style.visibility = 'hidden';\n }, this.options.duration);\n }\n\n resetClock(delay) {\n let view = this.currentView,\n value = this[view],\n isHours = view === 'hours',\n unit = Math.PI / (isHours ? 6 : 30),\n radian = value * unit,\n radius =\n isHours && value > 0 && value < 13 ? this.options.innerRadius : this.options.outerRadius,\n x = Math.sin(radian) * radius,\n y = -Math.cos(radian) * radius,\n self = this;\n\n if (delay) {\n this.canvas?.classList.add('timepicker-canvas-out');\n setTimeout(() => {\n self.canvas?.classList.remove('timepicker-canvas-out');\n self.setHand(x, y);\n }, delay);\n }\n else {\n this.setHand(x, y);\n }\n }\n\n _inputFromTextField = () => {\n const isHours = this.currentView === 'hours';\n if (isHours) {\n const value = parseInt(this.inputHours.value);\n if (value > 0 && value < 13) {\n this.drawClockFromTimeInput(value, isHours);\n this.showView('minutes', this.options.duration / 2);\n this.hours = value;\n this.inputMinutes.focus();\n }\n else {\n const hour = new Date().getHours();\n this.inputHours.value = (hour % 12).toString();\n }\n }\n else {\n const value = parseInt(this.inputMinutes.value);\n if (value >= 0 && value < 60) {\n this.inputMinutes.value = Timepicker._addLeadingZero(value);\n this.drawClockFromTimeInput(value, isHours);\n this.minutes = value;\n (this.modalEl.querySelector('.confirmation-btns :nth-child(2)')).focus();\n }\n else {\n const minutes = new Date().getMinutes();\n this.inputMinutes.value = Timepicker._addLeadingZero(minutes);\n }\n }\n }\n\n drawClockFromTimeInput(value, isHours) {\n const unit = Math.PI / (isHours ? 6 : 30);\n const radian = value * unit;\n let radius;\n if (this.options.twelveHour) {\n radius = this.options.outerRadius;\n }\n let cx1 = Math.sin(radian) * (radius - this.options.tickRadius),\n cy1 = -Math.cos(radian) * (radius - this.options.tickRadius),\n cx2 = Math.sin(radian) * radius,\n cy2 = -Math.cos(radian) * radius;\n this.hand.setAttribute('x2', cx1.toString());\n this.hand.setAttribute('y2', cy1.toString());\n this.bg.setAttribute('cx', cx2.toString());\n this.bg.setAttribute('cy', cy2.toString());\n }\n\n setHand(x, y, roundBy5: boolean = false) {\n let radian = Math.atan2(x, -y),\n isHours = this.currentView === 'hours',\n unit = Math.PI / (isHours || roundBy5 ? 6 : 30),\n z = Math.sqrt(x * x + y * y),\n inner = isHours && z < (this.options.outerRadius + this.options.innerRadius) / 2,\n radius = inner ? this.options.innerRadius : this.options.outerRadius;\n\n if (this.options.twelveHour) {\n radius = this.options.outerRadius;\n }\n\n // Radian should in range [0, 2PI]\n if (radian < 0) {\n radian = Math.PI * 2 + radian;\n }\n\n // Get the round value\n let value = Math.round(radian / unit);\n\n // Get the round radian\n radian = value * unit;\n\n // Correct the hours or minutes\n if (this.options.twelveHour) {\n if (isHours) {\n if (value === 0) value = 12;\n } else {\n if (roundBy5) value *= 5;\n if (value === 60) value = 0;\n }\n } else {\n if (isHours) {\n if (value === 12) {\n value = 0;\n }\n value = inner ? (value === 0 ? 12 : value) : value === 0 ? 0 : value + 12;\n } else {\n if (roundBy5) {\n value *= 5;\n }\n if (value === 60) {\n value = 0;\n }\n }\n }\n\n // Once hours or minutes changed, vibrate the device\n if (this[this.currentView] !== value) {\n if (this.vibrate && this.options.vibrate) {\n // Do not vibrate too frequently\n if (!this.vibrateTimer) {\n navigator[this.vibrate](10);\n this.vibrateTimer = setTimeout(() => {\n this.vibrateTimer = null;\n }, 100);\n }\n }\n }\n\n this[this.currentView] = value;\n if (isHours) {\n this.inputHours.value = value.toString();\n }\n else {\n this.inputMinutes.value = Timepicker._addLeadingZero(value);\n }\n\n // Set clock hand and others' position\n let cx1 = Math.sin(radian) * (radius - this.options.tickRadius),\n cy1 = -Math.cos(radian) * (radius - this.options.tickRadius),\n cx2 = Math.sin(radian) * radius,\n cy2 = -Math.cos(radian) * radius;\n this.hand.setAttribute('x2', cx1.toString());\n this.hand.setAttribute('y2', cy1.toString());\n this.bg.setAttribute('cx', cx2.toString());\n this.bg.setAttribute('cy', cy2.toString());\n }\n\n /**\n * Open timepicker.\n */\n open = () => {\n if (this.isOpen) return;\n this.isOpen = true;\n this._updateTimeFromInput();\n this.showView('hours');\n this.modal.open(undefined);\n }\n\n /**\n * Close timepicker.\n */\n close = () => {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.modal.close();\n }\n\n done = (e = null, clearValue = null) => {\n // Set input value\n let last = this.el.value;\n let value = clearValue\n ? ''\n : Timepicker._addLeadingZero(this.hours) + ':' + Timepicker._addLeadingZero(this.minutes);\n this.time = value;\n if (!clearValue && this.options.twelveHour) {\n value = `${value} ${this.amOrPm}`;\n }\n this.el.value = value;\n // Trigger change event\n if (value !== last) {\n this.el.dispatchEvent(new Event('change',{bubbles:true, cancelable:true, composed:true}));\n }\n this.close();\n this.el.focus();\n }\n\n clear = () => {\n this.done(null, true);\n }\n\n static {\n Timepicker._template = `\n
\n
\n
\n
\n
\n \n :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n void;\n /**\n * The percentage of the toast's width it takes fora drag\n * to dismiss a Toast.\n * @default 0.8\n */\n activationPercent: number;\n}\n\nlet _defaults: ToastOptions = {\n text: '',\n displayLength: 4000,\n inDuration: 300,\n outDuration: 375,\n classes: '',\n completeCallback: null,\n activationPercent: 0.8\n};\n\nexport class Toast {\n /** The toast element. */\n el: HTMLElement;\n /**\n * The remaining amount of time in ms that the toast\n * will stay before dismissal.\n */\n timeRemaining: number;\n /**\n * Describes the current pan state of the Toast.\n */\n panning: boolean;\n options: ToastOptions;\n message: string;\n counterInterval: NodeJS.Timeout;\n wasSwiped: boolean;\n startingXPos: number;\n xPos: number;\n time: number;\n deltaX: number;\n velocityX: number;\n\n static _toasts: Toast[];\n static _container: any;\n static _draggedToast: Toast;\n\n constructor(options: Partial) {\n this.options = {\n ...Toast.defaults,\n ...options\n };\n this.message = this.options.text;\n this.panning = false;\n this.timeRemaining = this.options.displayLength;\n if (Toast._toasts.length === 0) {\n Toast._createContainer();\n }\n // Create new toast\n Toast._toasts.push(this);\n let toastElement = this._createToast();\n (toastElement as any).M_Toast = this;\n this.el = toastElement;\n this._animateIn();\n this._setTimer();\n }\n\n static get defaults(): ToastOptions {\n return _defaults;\n }\n\n static getInstance(el: HTMLElement): Toast {\n return (el as any).M_Toast;\n }\n\n static _createContainer() {\n const container = document.createElement('div');\n container.setAttribute('id', 'toast-container');\n // Add event handler\n container.addEventListener('touchstart', Toast._onDragStart);\n container.addEventListener('touchmove', Toast._onDragMove);\n container.addEventListener('touchend', Toast._onDragEnd);\n container.addEventListener('mousedown', Toast._onDragStart);\n document.addEventListener('mousemove', Toast._onDragMove);\n document.addEventListener('mouseup', Toast._onDragEnd);\n document.body.appendChild(container);\n Toast._container = container;\n }\n\n static _removeContainer() {\n document.removeEventListener('mousemove', Toast._onDragMove);\n document.removeEventListener('mouseup', Toast._onDragEnd);\n Toast._container.remove();\n Toast._container = null;\n }\n\n static _onDragStart(e: TouchEvent | MouseEvent) {\n if (e.target && (e.target).closest('.toast')) {\n const toastElem = (e.target).closest('.toast');\n const toast: Toast = (toastElem as any).M_Toast;\n toast.panning = true;\n Toast._draggedToast = toast;\n toast.el.classList.add('panning');\n toast.el.style.transition = '';\n toast.startingXPos = Toast._xPos(e);\n toast.time = Date.now();\n toast.xPos = Toast._xPos(e);\n }\n }\n\n static _onDragMove(e: TouchEvent | MouseEvent) {\n if (!!Toast._draggedToast) {\n e.preventDefault();\n const toast = Toast._draggedToast;\n toast.deltaX = Math.abs(toast.xPos - Toast._xPos(e));\n toast.xPos = Toast._xPos(e);\n toast.velocityX = toast.deltaX / (Date.now() - toast.time);\n toast.time = Date.now();\n\n const totalDeltaX = toast.xPos - toast.startingXPos;\n const activationDistance = toast.el.offsetWidth * toast.options.activationPercent;\n toast.el.style.transform = `translateX(${totalDeltaX}px)`;\n toast.el.style.opacity = (1 - Math.abs(totalDeltaX / activationDistance)).toString();\n }\n }\n\n static _onDragEnd() {\n if (!!Toast._draggedToast) {\n let toast = Toast._draggedToast;\n toast.panning = false;\n toast.el.classList.remove('panning');\n\n let totalDeltaX = toast.xPos - toast.startingXPos;\n let activationDistance = toast.el.offsetWidth * toast.options.activationPercent;\n let shouldBeDismissed = Math.abs(totalDeltaX) > activationDistance || toast.velocityX > 1;\n\n // Remove toast\n if (shouldBeDismissed) {\n toast.wasSwiped = true;\n toast.dismiss();\n // Animate toast back to original position\n }\n else {\n toast.el.style.transition = 'transform .2s, opacity .2s';\n toast.el.style.transform = '';\n toast.el.style.opacity = '';\n }\n Toast._draggedToast = null;\n }\n }\n\n static _xPos(e: TouchEvent | MouseEvent) {\n if (e.type.startsWith(\"touch\") && (e as TouchEvent).targetTouches.length >= 1) {\n return (e as TouchEvent).targetTouches[0].clientX;\n }\n // mouse event\n return (e as MouseEvent).clientX;\n }\n\n /**\n * dismiss all toasts.\n */\n static dismissAll() {\n for (let toastIndex in Toast._toasts) {\n Toast._toasts[toastIndex].dismiss();\n }\n }\n\n _createToast() {\n let toast: HTMLElement = this.options.toastId \n ? document.getElementById(this.options.toastId)\n : document.createElement('div');\n if (toast instanceof HTMLTemplateElement) {\n const node = (toast as HTMLTemplateElement).content.cloneNode(true);\n toast = ((node as HTMLElement).firstElementChild as HTMLElement); \n } \n toast.classList.add('toast');\n toast.setAttribute('role', 'alert');\n toast.setAttribute('aria-live', 'assertive');\n toast.setAttribute('aria-atomic', 'true');\n // Add custom classes onto toast\n if (this.options.classes.length > 0) {\n toast.classList.add(...this.options.classes.split(' '));\n }\n if (this.message) toast.innerText = this.message;\n Toast._container.appendChild(toast);\n return toast;\n }\n\n _animateIn() {\n // Animate toast in\n this.el.style.display = \"\";\n this.el.style.opacity = '0';\n // easeOutCubic\n this.el.style.transition = `\n top ${this.options.inDuration}ms ease,\n opacity ${this.options.inDuration}ms ease\n `;\n setTimeout(() => {\n this.el.style.top = '0';\n this.el.style.opacity = '1'; \n }, 1); \n }\n\n /**\n * Create setInterval which automatically removes toast when timeRemaining >= 0\n * has been reached.\n */\n _setTimer() {\n if (this.timeRemaining !== Infinity) {\n this.counterInterval = setInterval(() => {\n // If toast is not being dragged, decrease its time remaining\n if (!this.panning) {\n this.timeRemaining -= 20;\n }\n // Animate toast out\n if (this.timeRemaining <= 0) {\n this.dismiss();\n }\n }, 20);\n }\n }\n\n /**\n * Dismiss toast with animation.\n */\n dismiss() {\n window.clearInterval(this.counterInterval);\n let activationDistance = this.el.offsetWidth * this.options.activationPercent;\n\n if (this.wasSwiped) {\n this.el.style.transition = 'transform .05s, opacity .05s';\n this.el.style.transform = `translateX(${activationDistance}px)`;\n this.el.style.opacity = '0';\n }\n\n // easeOutExpo\n this.el.style.transition = `\n margin ${this.options.outDuration}ms ease,\n opacity ${this.options.outDuration}ms ease`;\n\n setTimeout(() => {\n this.el.style.opacity = '0';\n this.el.style.marginTop = '-40px'; \n }, 1);\n\n setTimeout(() => {\n // Call the optional callback\n if (typeof this.options.completeCallback === 'function') {\n this.options.completeCallback();\n }\n // Remove toast from DOM\n if (this.el.id != this.options.toastId) {\n this.el.remove();\n Toast._toasts.splice(Toast._toasts.indexOf(this), 1);\n if (Toast._toasts.length === 0) {\n Toast._removeContainer();\n }\n }\n }, this.options.outDuration);\n }\n\n static {\n Toast._toasts = [];\n Toast._container = null;\n Toast._draggedToast = null;\n }\n}","import { Utils } from \"./utils\";\nimport { Bounding } from \"./bounding\";\nimport { Component, BaseOptions, InitElements, MElement } from \"./component\";\n\nexport type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipOptions extends BaseOptions {\n /**\n * Delay time before tooltip disappears.\n * @default 200\n */\n exitDelay: number;\n /**\n * Delay time before tooltip appears.\n * @default 0\n */\n enterDelay: number;\n /**\n * Element Id for the tooltip.\n * @default \"\"\n */\n tooltipId?: string;\n /**\n * Text string for the tooltip.\n * @default \"\"\n */\n text: string;\n /**\n * Set distance tooltip appears away from its activator\n * excluding transitionMovement.\n * @default 5\n */\n margin: number;\n /**\n * Enter transition duration.\n * @default 300\n */\n inDuration: number;\n /**\n * Opacity of the tooltip.\n * @default 1\n */\n opacity: number;\n /**\n * Exit transition duration.\n * @default 250\n */\n outDuration: number;\n /**\n * Set the direction of the tooltip.\n * @default 'bottom'\n */\n position: TooltipPosition;\n /**\n * Amount in px that the tooltip moves during its transition.\n * @default 10\n */\n transitionMovement: number;\n}\n\nconst _defaults: TooltipOptions = {\n exitDelay: 200,\n enterDelay: 0,\n text: '',\n margin: 5,\n inDuration: 250,\n outDuration: 200,\n position: 'bottom' as TooltipPosition,\n transitionMovement: 10,\n opacity: 1\n};\n\nexport class Tooltip extends Component {\n /**\n * If tooltip is open.\n */\n isOpen: boolean;\n /**\n * If tooltip is hovered.\n */\n isHovered: boolean;\n /**\n * If tooltip is focused.\n */\n isFocused: boolean;\n tooltipEl: HTMLElement;\n private _exitDelayTimeout: string | number | NodeJS.Timeout;\n private _enterDelayTimeout: string | number | NodeJS.Timeout;\n xMovement: number;\n yMovement: number;\n\n constructor(el: HTMLElement, options: Partial) {\n super(el, options, Tooltip);\n (this.el as any).M_Tooltip = this;\n\n this.options = {\n ...Tooltip.defaults,\n ...this._getAttributeOptions(),\n ...options\n };\n \n this.isOpen = false;\n this.isHovered = false;\n this.isFocused = false;\n this._appendTooltipEl();\n this._setupEventHandlers();\n }\n\n static get defaults(): TooltipOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Tooltip.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial): Tooltip;\n /**\n * Initializes instances of Tooltip.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements, options?: Partial): Tooltip[];\n /**\n * Initializes instances of Tooltip.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: HTMLElement | InitElements, options: Partial = {}): Tooltip | Tooltip[] {\n return super.init(els, options, Tooltip);\n }\n\n static getInstance(el: HTMLElement): Tooltip {\n return (el as any).M_Tooltip;\n }\n\n destroy() {\n this.tooltipEl.remove();\n this._removeEventHandlers();\n (this.el as any).M_Tooltip = undefined;\n }\n\n _appendTooltipEl() {\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.classList.add('material-tooltip');\n\n const tooltipContentEl = this.options.tooltipId \n ? document.getElementById(this.options.tooltipId)\n : document.createElement('div');\n this.tooltipEl.append( tooltipContentEl);\n tooltipContentEl.style.display = \"\"; \n \n tooltipContentEl.classList.add('tooltip-content');\n this._setTooltipContent(tooltipContentEl);\n this.tooltipEl.appendChild(tooltipContentEl);\n document.body.appendChild(this.tooltipEl);\n }\n\n _setTooltipContent(tooltipContentEl: HTMLElement) {\n if (this.options.tooltipId) \n return;\n tooltipContentEl.innerText = this.options.text; \n }\n\n _updateTooltipContent() {\n this._setTooltipContent(this.tooltipEl.querySelector('.tooltip-content'));\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('mouseenter', this._handleMouseEnter);\n this.el.addEventListener('mouseleave', this._handleMouseLeave);\n this.el.addEventListener('focus', this._handleFocus, true);\n this.el.addEventListener('blur', this._handleBlur, true);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('mouseenter', this._handleMouseEnter);\n this.el.removeEventListener('mouseleave', this._handleMouseLeave);\n this.el.removeEventListener('focus', this._handleFocus, true);\n this.el.removeEventListener('blur', this._handleBlur, true);\n }\n\n /**\n * Show tooltip.\n */\n open = (isManual: boolean) => {\n if (this.isOpen) return;\n isManual = isManual === undefined ? true : undefined; // Default value true\n this.isOpen = true;\n // Update tooltip content with HTML attribute options\n this.options = {...this.options, ...this._getAttributeOptions()};\n this._updateTooltipContent();\n this._setEnterDelayTimeout(isManual);\n }\n \n /**\n * Hide tooltip.\n */\n close = () => {\n if (!this.isOpen) return;\n this.isHovered = false;\n this.isFocused = false;\n this.isOpen = false;\n this._setExitDelayTimeout();\n }\n\n _setExitDelayTimeout() {\n clearTimeout(this._exitDelayTimeout);\n this._exitDelayTimeout = setTimeout(() => {\n if (this.isHovered || this.isFocused) return;\n this._animateOut();\n }, this.options.exitDelay);\n }\n\n _setEnterDelayTimeout(isManual) {\n clearTimeout(this._enterDelayTimeout);\n this._enterDelayTimeout = setTimeout(() => {\n if (!this.isHovered && !this.isFocused && !isManual) return;\n this._animateIn();\n }, this.options.enterDelay);\n }\n\n _positionTooltip() {\n const tooltip: HTMLElement = this.tooltipEl;\n const origin = (this.el as HTMLElement),\n originHeight = origin.offsetHeight,\n originWidth = origin.offsetWidth,\n tooltipHeight = tooltip.offsetHeight,\n tooltipWidth = tooltip.offsetWidth,\n margin = this.options.margin;\n\n (this.xMovement = 0), (this.yMovement = 0);\n\n let targetTop = origin.getBoundingClientRect().top + Utils.getDocumentScrollTop();\n let targetLeft = origin.getBoundingClientRect().left + Utils.getDocumentScrollLeft();\n if (this.options.position === 'top') {\n targetTop += -tooltipHeight - margin;\n targetLeft += originWidth / 2 - tooltipWidth / 2;\n this.yMovement = -this.options.transitionMovement;\n } else if (this.options.position === 'right') {\n targetTop += originHeight / 2 - tooltipHeight / 2;\n targetLeft += originWidth + margin;\n this.xMovement = this.options.transitionMovement;\n } else if (this.options.position === 'left') {\n targetTop += originHeight / 2 - tooltipHeight / 2;\n targetLeft += -tooltipWidth - margin;\n this.xMovement = -this.options.transitionMovement;\n } else {\n targetTop += originHeight + margin;\n targetLeft += originWidth / 2 - tooltipWidth / 2;\n this.yMovement = this.options.transitionMovement;\n }\n\n const newCoordinates = this._repositionWithinScreen(\n targetLeft,\n targetTop,\n tooltipWidth,\n tooltipHeight\n );\n\n tooltip.style.top = newCoordinates.y+'px';\n tooltip.style.left = newCoordinates.x+'px';\n }\n\n _repositionWithinScreen(x: number, y: number, width: number, height: number) {\n const scrollLeft = Utils.getDocumentScrollLeft();\n const scrollTop = Utils.getDocumentScrollTop();\n let newX = x - scrollLeft;\n let newY = y - scrollTop;\n\n const bounding: Bounding = {\n left: newX,\n top: newY,\n width: width,\n height: height\n };\n const offset = this.options.margin + this.options.transitionMovement;\n const edges = Utils.checkWithinContainer(document.body, bounding, offset);\n\n if (edges.left) {\n newX = offset;\n } else if (edges.right) {\n newX -= newX + width - window.innerWidth;\n }\n if (edges.top) {\n newY = offset;\n } else if (edges.bottom) {\n newY -= newY + height - window.innerHeight;\n }\n return {\n x: newX + scrollLeft,\n y: newY + scrollTop\n };\n }\n\n _animateIn() {\n this._positionTooltip();\n this.tooltipEl.style.visibility = 'visible';\n const duration = this.options.inDuration;\n // easeOutCubic\n this.tooltipEl.style.transition = `\n transform ${duration}ms ease-out,\n opacity ${duration}ms ease-out`;\n setTimeout(() => {\n this.tooltipEl.style.transform = `translateX(${this.xMovement}px) translateY(${this.yMovement}px)`;\n this.tooltipEl.style.opacity = (this.options.opacity || 1).toString();\n }, 1);\n }\n\n _animateOut() {\n const duration = this.options.outDuration;\n // easeOutCubic\n this.tooltipEl.style.transition = `\n transform ${duration}ms ease-out,\n opacity ${duration}ms ease-out`;\n setTimeout(() => {\n this.tooltipEl.style.transform = `translateX(0px) translateY(0px)`;\n this.tooltipEl.style.opacity = '0';\n }, 1);\n /*\n anim.remove(this.tooltipEl);\n anim({\n targets: this.tooltipEl,\n opacity: 0,\n translateX: 0,\n translateY: 0,\n duration: this.options.outDuration,\n easing: 'easeOutCubic'\n });\n */\n }\n\n _handleMouseEnter = () => {\n this.isHovered = true;\n this.isFocused = false; // Allows close of tooltip when opened by focus.\n this.open(false);\n }\n\n _handleMouseLeave = () => {\n this.isHovered = false;\n this.isFocused = false; // Allows close of tooltip when opened by focus.\n this.close();\n }\n\n _handleFocus = () => {\n if (Utils.tabPressed) {\n this.isFocused = true;\n this.open(false);\n }\n }\n\n _handleBlur = () => {\n this.isFocused = false;\n this.close();\n }\n\n _getAttributeOptions(): Partial { \n let attributeOptions: Partial = { };\n const tooltipTextOption = this.el.getAttribute('data-tooltip');\n const tooltipId = this.el.getAttribute('data-tooltip-id');\n const positionOption = this.el.getAttribute('data-position');\n if (tooltipTextOption) {\n attributeOptions.text = tooltipTextOption;\n }\n if (positionOption) {\n attributeOptions.position = positionOption as TooltipPosition;\n }\n if (tooltipId) {\n attributeOptions.tooltipId = tooltipId;\n }\n\n return attributeOptions;\n }\n}\n","import { Edges } from './edges';\nimport { Bounding } from './bounding';\n\n/**\n * Class with utilitary functions for global usage.\n */\nexport class Utils {\n /** Specifies wether tab is pressed or not. */\n static tabPressed: boolean = false;\n /** Specifies wether there is a key pressed. */\n static keyDown: boolean = false;\n\n /**\n * Key maps.\n */\n static keys = {\n TAB: ['Tab'],\n ENTER: ['Enter'],\n ESC: ['Escape', 'Esc'],\n BACKSPACE: ['Backspace'],\n ARROW_UP: ['ArrowUp', 'Up'],\n ARROW_DOWN: ['ArrowDown', 'Down'],\n ARROW_LEFT: ['ArrowLeft', 'Left'],\n ARROW_RIGHT: ['ArrowRight', 'Right'],\n DELETE: ['Delete', 'Del'],\n };\n\n /**\n * Detects when a key is pressed.\n * @param e Event instance.\n */\n static docHandleKeydown(e: KeyboardEvent) {\n Utils.keyDown = true;\n if ([...Utils.keys.TAB, ...Utils.keys.ARROW_DOWN, ...Utils.keys.ARROW_UP].includes(e.key)) {\n Utils.tabPressed = true;\n }\n }\n\n /**\n * Detects when a key is released.\n * @param e Event instance.\n */\n static docHandleKeyup(e: KeyboardEvent) {\n Utils.keyDown = false;\n if ([...Utils.keys.TAB, ...Utils.keys.ARROW_DOWN, ...Utils.keys.ARROW_UP].includes(e.key)) {\n Utils.tabPressed = false;\n }\n }\n\n /**\n * Detects when document is focused.\n * @param e Event instance.\n */\n static docHandleFocus(e: FocusEvent) {\n if (Utils.keyDown) {\n document.body.classList.add('keyboard-focused');\n }\n }\n\n /**\n * Detects when document is not focused.\n * @param e Event instance.\n */\n static docHandleBlur(e: FocusEvent) {\n document.body.classList.remove('keyboard-focused');\n }\n\n /**\n * Generates a unique string identifier.\n */\n static guid(): string {\n const s4 = (): string => {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n }\n\n /**\n * Checks for exceeded edges\n * @param container Container element.\n * @param bounding Bounding rect.\n * @param offset Element offset.\n */\n static checkWithinContainer(container: HTMLElement, bounding: Bounding, offset: number): Edges {\n let edges = {\n top: false,\n right: false,\n bottom: false,\n left: false\n };\n\n let containerRect = container.getBoundingClientRect();\n // If body element is smaller than viewport, use viewport height instead.\n let containerBottom =\n container === document.body\n ? Math.max(containerRect.bottom, window.innerHeight)\n : containerRect.bottom;\n\n let scrollLeft = container.scrollLeft;\n let scrollTop = container.scrollTop;\n\n let scrolledX = bounding.left - scrollLeft;\n let scrolledY = bounding.top - scrollTop;\n\n // Check for container and viewport for each edge\n if (scrolledX < containerRect.left + offset || scrolledX < offset) {\n edges.left = true;\n }\n\n if (\n scrolledX + bounding.width > containerRect.right - offset ||\n scrolledX + bounding.width > window.innerWidth - offset\n ) {\n edges.right = true;\n }\n\n if (scrolledY < containerRect.top + offset || scrolledY < offset) {\n edges.top = true;\n }\n\n if (\n scrolledY + bounding.height > containerBottom - offset ||\n scrolledY + bounding.height > window.innerHeight - offset\n ) {\n edges.bottom = true;\n }\n\n return edges;\n }\n\n /**\n * Checks if element can be aligned in multiple directions.\n * @param el Element to be inspected.\n * @param container Container element.\n * @param bounding Bounding rect.\n * @param offset Element offset.\n */\n static checkPossibleAlignments(el: HTMLElement, container: HTMLElement, bounding: Bounding, offset: number) {\n let canAlign: {\n top: boolean,\n right: boolean,\n bottom: boolean,\n left: boolean,\n spaceOnTop: number,\n spaceOnRight: number,\n spaceOnBottom: number\n spaceOnLeft: number\n } = {\n top: true,\n right: true,\n bottom: true,\n left: true,\n spaceOnTop: null,\n spaceOnRight: null,\n spaceOnBottom: null,\n spaceOnLeft: null\n };\n\n let containerAllowsOverflow = getComputedStyle(container).overflow === 'visible';\n let containerRect = container.getBoundingClientRect();\n let containerHeight = Math.min(containerRect.height, window.innerHeight);\n let containerWidth = Math.min(containerRect.width, window.innerWidth);\n let elOffsetRect = el.getBoundingClientRect();\n\n let scrollLeft = container.scrollLeft;\n let scrollTop = container.scrollTop;\n\n let scrolledX = bounding.left - scrollLeft;\n let scrolledYTopEdge = bounding.top - scrollTop;\n let scrolledYBottomEdge = bounding.top + elOffsetRect.height - scrollTop;\n\n // Check for container and viewport for left\n canAlign.spaceOnRight = !containerAllowsOverflow\n ? containerWidth - (scrolledX + bounding.width)\n : window.innerWidth - (elOffsetRect.left + bounding.width);\n if (canAlign.spaceOnRight < 0) {\n canAlign.left = false;\n }\n\n // Check for container and viewport for Right\n canAlign.spaceOnLeft = !containerAllowsOverflow\n ? scrolledX - bounding.width + elOffsetRect.width\n : elOffsetRect.right - bounding.width;\n if (canAlign.spaceOnLeft < 0) {\n canAlign.right = false;\n }\n\n // Check for container and viewport for Top\n canAlign.spaceOnBottom = !containerAllowsOverflow\n ? containerHeight - (scrolledYTopEdge + bounding.height + offset)\n : window.innerHeight - (elOffsetRect.top + bounding.height + offset);\n if (canAlign.spaceOnBottom < 0) {\n canAlign.top = false;\n }\n\n // Check for container and viewport for Bottom\n canAlign.spaceOnTop = !containerAllowsOverflow\n ? scrolledYBottomEdge - (bounding.height - offset)\n : elOffsetRect.bottom - (bounding.height + offset);\n if (canAlign.spaceOnTop < 0) {\n canAlign.bottom = false;\n }\n\n return canAlign;\n }\n\n /**\n * Retrieves target element id from trigger.\n * @param trigger Trigger element.\n */\n static getIdFromTrigger(trigger: HTMLElement): string {\n let id = trigger.dataset.target;\n if (!id) {\n id = trigger.getAttribute('href');\n return id ? id.slice(1) : '';\n }\n return id;\n }\n\n /**\n * Retrieves document scroll postion from top.\n */\n static getDocumentScrollTop(): number {\n return window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;\n };\n\n /**\n * Retrieves document scroll postion from left.\n */\n static getDocumentScrollLeft(): number {\n return window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n }\n\n /**\n * Fires the given function after a certain ammount of time.\n * @param func Function to be fired.\n * @param wait Wait time.\n * @param options Additional options.\n */\n static throttle(func: Function, wait: number, options: Partial<{leading:boolean,trailing:boolean}> = null) {\n let context: object, args: IArguments, result: any;\n let timeout = null;\n let previous = 0;\n options || (options = {});\n let later = function() {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n context = args = null;\n };\n return function() {\n let now = new Date().getTime();\n if (!previous && options.leading === false) previous = now;\n let remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n }\n}","type RGBColor = {\n r: number,\n g: number,\n b: number,\n}\n\ntype Position = {\n x: number,\n y: number,\n}\n\nexport class Waves {\n\n private static _offset(el: HTMLElement) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n\n // https://phoenix-dx.com/css-techniques-for-material-ripple-effect/\n\n static renderWaveEffect(targetElement: HTMLElement, position: Position|null = null, color: RGBColor|null = null): void {\n const isCentered = position === null;\n const duration = 500;\n let animationFrame: number, animationStart: number;\n const animationStep = function(timestamp: number) {\n if (!animationStart) {\n animationStart = timestamp;\n }\n const frame = timestamp - animationStart;\n if (frame < duration) {\n const easing = (frame/duration) * (2 - (frame/duration));\n const circle = isCentered ? 'circle at 50% 50%' : `circle at ${position.x}px ${position.y}px`;\n const waveColor = `rgba(${color?.r || 0}, ${color?.g || 0}, ${color?.b || 0}, ${ 0.3 * (1-easing) })`;\n const stop = 90 * easing + \"%\";\n targetElement.style.backgroundImage = \"radial-gradient(\"+circle+\", \"+waveColor+\" \"+stop+\", transparent \"+stop+\")\";\n animationFrame = window.requestAnimationFrame(animationStep);\n }\n else {\n targetElement.style.backgroundImage = 'none';\n window.cancelAnimationFrame(animationFrame);\n }\n };\n animationFrame = window.requestAnimationFrame(animationStep);\n }\n\n static Init() {\n document.addEventListener(\"DOMContentLoaded\", () => {\n document.body.addEventListener('click', e => {\n const trigger = e.target;\n const el = trigger.closest('.waves-effect');\n if (el && el.contains(trigger)) {\n const isCircular = el.classList.contains('waves-circle');\n const x = e.pageX - Waves._offset(el).left;\n const y = e.pageY - Waves._offset(el).top;\n\n let color = null;\n if (el.classList.contains('waves-light'))\n color = {r:255, g:255, b:255};\n\n Waves.renderWaveEffect(el, isCircular ? null : {x, y}, color);\n }\n });\n });\n\n }\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","import { Autocomplete } from './autocomplete';\nimport { FloatingActionButton } from './buttons';\nimport { Cards } from './cards';\nimport { Carousel } from './carousel';\nimport { CharacterCounter } from './characterCounter';\nimport { Chips } from './chips';\nimport { Collapsible } from './collapsible';\nimport { Datepicker } from './datepicker';\nimport { Dropdown } from './dropdown';\nimport { Forms } from './forms';\nimport { Materialbox } from './materialbox';\nimport { Modal } from './modal';\nimport { Parallax } from './parallax';\nimport { Pushpin } from './pushpin';\nimport { ScrollSpy } from './scrollspy';\nimport { FormSelect } from './select';\nimport { Sidenav } from './sidenav';\nimport { Slider } from './slider';\nimport { Tabs } from './tabs';\nimport { TapTarget } from './tapTarget';\nimport { Timepicker } from './timepicker';\nimport { Toast, ToastOptions } from './toasts';\nimport { Tooltip } from './tooltip';\nimport { Waves } from './waves';\nimport { Range } from './range';\nimport { Utils } from './utils';\n\nexport class M {\n static version = '2.1.0';\n\n static Autocomplete: typeof Autocomplete = Autocomplete;\n static Tabs: typeof Tabs = Tabs;\n static Carousel: typeof Carousel = Carousel;\n static Dropdown: typeof Dropdown = Dropdown;\n static FloatingActionButton: typeof FloatingActionButton = FloatingActionButton;\n static Chips: typeof Chips = Chips;\n static Collapsible: typeof Collapsible = Collapsible;\n static Datepicker: typeof Datepicker = Datepicker;\n static CharacterCounter: typeof CharacterCounter = CharacterCounter;\n static Forms: typeof Forms = Forms;\n static FormSelect: typeof FormSelect = FormSelect;\n static Modal: typeof Modal = Modal;\n static Pushpin: typeof Pushpin = Pushpin;\n static Materialbox: typeof Materialbox = Materialbox;\n static Parallax: typeof Parallax = Parallax;\n static Slider: typeof Slider = Slider;\n static Timepicker: typeof Timepicker = Timepicker;\n /** Creates a toast. */\n static toast: (opt: Partial) => Toast = (opt) => new Toast(opt) ;\n static Tooltip: typeof Tooltip = Tooltip;\n static Sidenav: typeof Sidenav = Sidenav;\n static TapTarget: typeof TapTarget = TapTarget;\n static ScrollSpy: typeof ScrollSpy = ScrollSpy;\n static Range: typeof Range = Range;\n static Waves: typeof Waves = Waves;\n static Utils: typeof Utils = Utils;\n\n static {\n document.addEventListener('keydown', Utils.docHandleKeydown, true);\n document.addEventListener('keyup', Utils.docHandleKeyup, true);\n document.addEventListener('focus', Utils.docHandleFocus, true);\n document.addEventListener('blur', Utils.docHandleBlur, true);\n Cards.Init();\n Forms.Init();\n Chips.Init();\n Waves.Init();\n Range.Init();\n }\n\n /**\n * Automatically initialize components.\n * @param context Root element to initialize. Defaults to `document.body`.\n */\n static AutoInit(context: HTMLElement = document.body) {\n let registry = {\n Autocomplete: context.querySelectorAll('.autocomplete:not(.no-autoinit)'),\n Carousel: context.querySelectorAll('.carousel:not(.no-autoinit)'),\n Chips: context.querySelectorAll('.chips:not(.no-autoinit)'),\n Collapsible: context.querySelectorAll('.collapsible:not(.no-autoinit)'),\n Datepicker: context.querySelectorAll('.datepicker:not(.no-autoinit)'),\n Dropdown: context.querySelectorAll('.dropdown-trigger:not(.no-autoinit)'),\n Materialbox: context.querySelectorAll('.materialboxed:not(.no-autoinit)'),\n Modal: context.querySelectorAll('.modal:not(.no-autoinit)'),\n Parallax: context.querySelectorAll('.parallax:not(.no-autoinit)'),\n Pushpin: context.querySelectorAll('.pushpin:not(.no-autoinit)'),\n ScrollSpy: context.querySelectorAll('.scrollspy:not(.no-autoinit)'),\n FormSelect: context.querySelectorAll('select:not(.no-autoinit)'),\n Sidenav: context.querySelectorAll('.sidenav:not(.no-autoinit)'),\n Tabs: context.querySelectorAll('.tabs:not(.no-autoinit)'),\n TapTarget: context.querySelectorAll('.tap-target:not(.no-autoinit)'),\n Timepicker: context.querySelectorAll('.timepicker:not(.no-autoinit)'),\n Tooltip: context.querySelectorAll('.tooltipped:not(.no-autoinit)'),\n FloatingActionButton: context.querySelectorAll('.fixed-action-btn:not(.no-autoinit)'),\n };\n M.Autocomplete.init(registry.Autocomplete, {});\n M.Carousel.init(registry.Carousel, {});\n M.Chips.init(registry.Chips, {});\n M.Collapsible.init(registry.Collapsible, {});\n M.Datepicker.init(registry.Datepicker, {});\n M.Dropdown.init(registry.Dropdown, {});\n M.Materialbox.init(registry.Materialbox, {});\n M.Modal.init(registry.Modal, {});\n M.Parallax.init(registry.Parallax, {});\n M.Pushpin.init(registry.Pushpin, {});\n M.ScrollSpy.init(registry.ScrollSpy, {});\n M.FormSelect.init(registry.FormSelect, {});\n M.Sidenav.init(registry.Sidenav, {});\n M.Tabs.init(registry.Tabs, {});\n M.TapTarget.init(registry.TapTarget, {});\n M.Timepicker.init(registry.Timepicker, {});\n M.Tooltip.init(registry.Tooltip, {});\n M.FloatingActionButton.init(registry.FloatingActionButton, {});\n }\n}"],"names":["root","factory","exports","module","define","amd","a","i","this","_defaults","data","onAutocomplete","dropdownOptions","autoFocus","closeOnClick","coverTrigger","minLength","isMultiSelect","onSearch","text","autocomplete","normSearch","toLocaleLowerCase","setMenuItems","options","filter","option","id","toString","includes","maxDropDownHeight","allowUnsafeHTML","Autocomplete","Component","constructor","el","super","_handleInputBlur","_mousedown","close","_resetAutocomplete","_handleInputKeyupAndFocus","e","type","_keydown","count","actualValue","value","Utils","keys","ENTER","key","ARROW_UP","ARROW_DOWN","oldVal","tabPressed","open","_setStatusLoading","length","selectedValues","_triggerChanged","_handleInputKeydown","numItems","container","querySelectorAll","activeIndex","liElement","selectOption","getAttribute","preventDefault","$active","classList","remove","add","children","scrollIntoView","behavior","block","inline","_handleInputClick","_handleContainerMousedownAndTouchstart","_handleContainerMouseupAndTouchend","inputText","isOpen","_renderDropdown","dropdown","recalculateDimensions","setTimeout","M_Autocomplete","defaults","menuItems","_setupDropdown","_setupEventHandlers","init","els","getInstance","destroy","_removeEventHandlers","_removeDropdown","undefined","addEventListener","window","ontouchstart","removeEventListener","document","createElement","style","maxHeight","guid","setAttribute","parentElement","appendChild","userOnItemClick","onItemClick","li","entryID","call","Dropdown","label","querySelector","after","_handleClick","div","_updateSelectedInfo","parentNode","removeChild","_resetCurrentElementPosition","replaceChildren","_highlightPartialText","input","start","indexOf","end","slice","_createDropdownItem","entry","item","innerHTML","some","sel","image","img","src","parts","createTextNode","highlight","textContent","itemText","description","isNaN","innerText","gridTemplateColumns","getGridConfig","append","statusElement","_refreshInputText","dispatchEvent","Event","setValues","entries","find","checkbox","checked","push","selectedEntry","focus","direction","hoverEnabled","toolbarEnabled","FloatingActionButton","_handleFABClick","_handleDocumentClick","target","_menu","_animateInToolbar","_animateInFAB","body","_animateOutFAB","M_FloatingActionButton","_anchor","_floatingBtns","Array","from","_floatingBtnsReverse","reverse","offsetY","offsetX","forEach","index","delay","transition","opacity","transform","scaleFactor","windowWidth","innerWidth","windowHeight","innerHeight","btnRect","getBoundingClientRect","backdrop","fabColor","getComputedStyle","backgroundColor","left","width","bottom","clientWidth","btnBottom","btnLeft","btnWidth","textAlign","overflow","Init","trigger","card","closest","cardReveal","elem","contains","initialOverflow","closeArea","duration","display","activator","dist","shift","padding","numVisible","fullWidth","indicators","noWrap","onCycleTo","Carousel","center","_handleThrottledResize","throttle","_handleResize","bind","_handleCarouselTap","tagName","pressed","dragged","verticalDragged","reference","_xpos","referenceY","_ypos","velocity","amplitude","frame","offset","timestamp","Date","now","clearInterval","ticker","setInterval","_track","_handleCarouselDrag","x","y","delta","deltaY","Math","abs","_scroll","stopPropagation","_handleCarouselRelease","round","dim","requestAnimationFrame","_autoScroll","_handleCarouselClick","clickedElem","clickedIndex","_wrap","clientX","next","prev","_cycleTo","_handleIndicatorClick","indicator","itemWidth","imageHeight","clientHeight","_setCarouselHeight","elapsed","v","exp","M_Carousel","hasMultipleSlides","showIndicators","images","itemHeight","_indicators","min","xform","every","prefix","imageOnly","firstSlide","firstImage","complete","height","naturalWidth","naturalHeight","adjustedHeight","offsetHeight","slideHeight","startsWith","targetTouches","clientY","half","dir","tween","alignment","zTranslation","tweenedOpacity","centerTweenedOpacity","scrollingTimeout","clearTimeout","lastCenter","numVisibleOffset","floor","diff","activeIndicator","pos","transformString","_updateItemStyle","_currItem","oneTimeCallback","zIndex","visibility","n","callback","set","Object","freeze","CharacterCounter","updateCounter","maxLength","parseInt","actualLength","isValidLength","counterString","_validateInput","counterEl","M_CharacterCounter","isInvalid","_setupCounter","_removeCounter","float","fontSize","placeholder","secondaryPlaceholder","closeIconClass","autocompleteOptions","autocompleteOnly","limit","Infinity","onChipAdd","onChipSelect","onChipDelete","gGetIndex","Chips","_handleChipClick","_chip","clickedClose","deleteChip","_input","selectChip","_handleInputFocus","hasAutocomplete","addChip","BACKSPACE","ARROW_LEFT","chipsData","M_Chips","_chips","_setupInput","_renderChips","_setupAutocomplete","_setPlaceholder","_setupLabel","getData","c","_handleChipsKeydown","_handleChipsKeyup","_handleChipsBlur","chips","chipsKeydown","tag","currChips","DELETE","selectIndex","_selectedChip","max","ARROW_RIGHT","hidden","_renderChip","chip","renderedChip","closeIcon","insertBefore","firstChild","chipElem","items","_label","_isValidAndNotExist","isValid","doesNotExist","before","chipIndex","splice","accordion","onOpenStart","onOpenEnd","onCloseStart","onCloseEnd","inDuration","outDuration","Collapsible","_handleCollapsibleClick","header","isActive","_handleCollapsibleKeydown","listItems","activeLis","activeLi","_animateIn","_animateOut","M_Collapsible","_headers","tabIndex","activeBodies","_setExpanded","scrollHeight","classDef","HTMLElement","console","error","Error","ins","instances","Element","autoClose","format","parse","defaultDate","setDefaultDate","disableWeekends","disableDayFn","firstDay","minDate","maxDate","yearRange","minYear","maxYear","minMonth","maxMonth","startRange","endRange","isRTL","yearRangeReverse","showMonthAfterYear","showDaysInNextAndPreviousMonths","showClearBtn","i18n","cancel","clear","done","previousMonth","nextMonth","months","monthsShort","weekdays","weekdaysShort","weekdaysAbbrev","events","onSelect","onOpen","onClose","onDraw","Datepicker","_handleCalendarClick","prevMonth","setDate","_finishSelection","_handleClearClick","date","setInputValue","_handleMonthChange","gotoMonth","_handleYearChange","gotoYear","_handleInputChange","firedBy","_isDate","draw","modal","M_Datepicker","hasOwnProperty","setHours","_setupVariables","_insertHTMLIntoDOM","_setupModal","defDate","gotoDate","obj","test","prototype","getTime","_isWeekend","day","getDay","_setToStartOfDay","_getDaysInMonth","year","month","_isLeapYear","_compareDates","b","modalEl","destroySelects","oldYearSelect","calendarEl","FormSelect","oldMonthSelect","clearBtn","doneBtn","cancelBtn","optEl","Modal","split","map","formats","join","preventOnSelect","_renderDateDisplay","CustomEvent","bubbles","cancelable","composed","detail","displayDate","getMonth","getDate","yearTextEl","getFullYear","dateTextEl","newCalendar","calendars","firstVisibleDate","lastVisibleDate","visibleDate","setMonth","adjustCalendars","adjustCalendar","calendar","ceil","render","randId","opts","days","row","yearOfPreviousMonth","yearOfNextMonth","daysInPreviousMonth","cells","isWeekSelected","r","isSelected","isToday","hasEvent","toDateString","isEmpty","dayNumber","monthNumber","yearNumber","isStartRange","isEndRange","isInRange","dayConfig","isDisabled","renderDay","renderRow","renderTable","arr","ariaSelected","isRowSelected","renderHead","renderBody","renderDayName","rows","renderTitle","instance","refYear","j","monthHtml","yearHtml","isMinYear","isMaxYear","html","isArray","force","_y","_m","random","replace","substr","yearSelect","monthSelect","classes","constrainWidth","template","_template","trim","content","d","dd","ddd","dddd","m","mm","mmm","mmmm","yy","yyyy","abbr","hover","_handleMouseEnter","_handleMouseLeave","toEl","relatedTarget","leaveToDropdownContent","leaveToActiveDropdownTrigger","closestTrigger","M_Dropdown","isTouchMoving","_handleTriggerKeydown","_handleDocumentTouchmove","_handleDropdownClick","itemEl","_handleDropdownKeydown","arrowUpOrDown","TAB","newFocusedIndex","focusedIndex","hasFoundNewIndex","dropdownEl","_focusFocusedItem","focusedElement","activatableElement","click","ESC","keyText","toLowerCase","isLetter","specialKeys","filterQuery","string","newOptionEl","filterTimeout","_resetFilterQuery","_handleWindowResize","offsetParent","_resetDropdownStyles","_placeDropdown","_setupTemporaryEventHandlers","_removeTemporaryEventHandlers","top","transformOrigin","_dropdowns","getIdFromTrigger","getElementById","isScrollable","_moveDropdown","_makeDropdownFocusable","containerEl","preventScroll","_getDropdownPosition","closestOverflowParent","triggerBRect","dropdownBRect","idealHeight","idealWidth","idealXPos","idealYPos","dropdownBounds","alignments","checkPossibleAlignments","verticalAlignment","horizontalAlignment","spaceOnTop","spaceOnBottom","oppositeAlignment","spaceOnLeft","spaceOnRight","_getClosestAncestor","condition","ancestor","position","positionInfo","Forms","textareaAutoResize","textarea","hiddenDiv","fontFamily","lineHeight","paddingTop","paddingRight","paddingBottom","paddingLeft","hasAttribute","overflowWrap","whiteSpace","offsetWidth","originalHeight","prevLength","HTMLInputElement","once","textArea","fileInput","InitFileInputPath","InitTextarea","pathInput","files","filenames","name","Materialbox","_handleMaterialboxClick","doneAnimating","overlayActive","_handleWindowScroll","_handleWindowEscape","_updateVars","originalWidth","_makeAncestorsOverflowVisible","willChange","attrWidth","attrHeight","removeAttribute","_addOverlay","caption","_addCaption","widthPercent","heightPercent","newWidth","newHeight","ratio","_animateImageIn","_removeOverlay","_animateImageOut","_removeCaption","M_Materialbox","originInlineStyles","_changedAncestorList","curr","_offset","box","docElem","documentElement","pageYOffset","clientTop","pageXOffset","clientLeft","maxWidth","getDocumentScrollLeft","getDocumentScrollTop","anchestor","_photoCaption","_overlay","overlayOffset","preventScrolling","dismissible","startingTop","endingTop","_handleTriggerClick","modalId","modalInstance","M_Modal","_handleOverlayClick","_handleModalCloseClick","_handleKeydown","_handleFocus","_nthModalOpened","_modalsOpen","_openingTrigger","scrollTop","insertAdjacentElement","removeProperty","_count","isBottomSheet","responsiveThreshold","Parallax","_handleImageLoad","_updateParallax","M_Parallax","_enabled","_img","_setupStyles","_parallaxes","_handleScroll","parallaxInstance","_handleScrollThrottled","_handleWindowResizeThrottled","containerHeight","parallaxDist","parallax","onPositionChange","Pushpin","M_Pushpin","originalOffset","offsetTop","_pushpins","_updatePosition","_removePinClasses","_updateElements","elIndex","scrolled","Range","_handleRangeChange","thumb","_showRangeBubble","offsetLeft","_calcRangeOffset","_handleRangeMousedownTouchstart","_handleRangeInputMousemoveTouchmove","_handleRangeMouseupTouchend","_handleRangeBlurMouseoutTouchleave","marginLeftText","marginLeft","M_Range","_setupThumb","_removeThumb","parseFloat","scrollOffset","activeClass","getActiveElement","ScrollSpy","_elements","scrollspy","_ticks","right","intersections","_findElements","tickId","_enter","_elementsInView","lastTick","_exit","M_ScrollSpy","_increment","_visibleElements","hits","currTop","elTop","elLeft","elRight","elBottom","actElem","unshift","selector","_handleSelectChange","_setValueToInput","_handleOptionClick","virtualOption","_selectOptionElement","_setSelectedStates","M_FormSelect","isMultiple","multiple","_values","_arraysEqual","optionEl","previousSelectedValues","getSelectedValues","_toggleEntryFromArray","_deselectAll","_selectValue","actualSelectedValues","labelEl","wrapper","hideSelect","disabled","selectOptions","ariaMultiSelectable","realOption","_createAndAppendOptionWithIcon","_addOptionToValues","groupId","groupParent","groupChildren","childId","readOnly","ariaReadOnly","ariaRequired","attrs","attributes","attr","ariaExpanded","prepend","dropdownIcon","createElementNS","ariaHidden","userOnOpenEnd","userOnCloseEnd","selectedOption","keyDown","ariaDisabled","span","iconUrl","selected","_deselectValue","_isValueSelected","realValue","_getSelectedOptions","selectedOptions","realOptions","texts","firstDisabledOption","optionIsSelected","cb","_activateOption","ul","edge","draggable","dragTargetWidth","Sidenav","_handleDragTargetDrag","_isCurrentlyFixed","_verticallyScrolling","isDragged","_startDrag","_dragMoveUpdate","totalDeltaX","_xPos","_startingXpos","dragDirection","_width","transformX","transformPrefix","percentOpen","_handleDragTargetRelease","_handleCloseDrag","_handleCloseRelease","_handleCloseTriggerClick","lastWindowWidth","lastWindowHeight","_enableBodyScrolling","_preventBodyScrolling","M_Sidenav","isFixed","_createOverlay","_createDragTarget","_setupClasses","_setupFixed","_sidenavs","dragTarget","passiveIfSupported","sidenavId","sidenavInstance","_time","_initialScrollTop","currentScrollTop","deltaX","velocityX","_removeClasses","_animateSidenavIn","_animateOverlayIn","_animateSidenavOut","_animateOverlayOut","slideOutPercent","endPercent","interval","pauseOnFocus","pauseOnHover","indicatorLabelFunc","Slider","currIndex","_focusCurrent","_handleAutoPauseHover","_hovered","_pause","_handleAutoPauseFocus","_focused","_handleAutoStartHover","eventPause","_handleAutoStartFocus","_handleInterval","activeElem","_slider","newActiveIndex","_slides","pause","newIndex","M_Slider","findIndex","_activeSlide","_setSliderHeight","_sliderId","placeholderBase64","slide","backgroundImage","_setupIndicators","_animateSlide","_removeIndicators","isDirectionIn","dx","dy","arrLi","_caption","nextIndicator","ariaLabel","fromEvent","onShow","swipeable","Tabs","_setTabsAndTabWidth","_tabWidth","_tabsWidth","_indicator","_calcLeftPos","_activeTabLink","_calcRightPos","_handleTabClick","tabLink","tab","_oldContent","_content","hash","_tabLinks","prevIndex","_index","_tabsCarousel","_animateIndicator","M_Tabs","_setupActiveTabLink","_setupSwipeableTabs","_setupNormalTabs","_createIndicator","_teardownSwipeableTabs","_teardownNormalTabs","location","tabsContent","currContent","tabsWrapper","tabContent","activeTabIndex","scrollWidth","updateTabIndicator","leftDelay","rightDelay","select","tabId","TapTarget","_handleTargetClick","_handleOriginClick","_calculatePositioning","_origin","M_TapTarget","dataset","_setup","originEl","waveEl","contentEl","cloneNode","currentElem","parents","originWidth","originHeight","originTop","originLeft","scrollBarWidth","centerX","centerY","isLeft","isRight","isTop","isBottom","isCenterX","tapTargetWidth","tapTargetHeight","tapTargetTop","tapTargetLeft","tapTargetPosition","tapTargetTextWidth","tapTargetTextHeight","tapTargetTextTop","tapTargetTextLeft","tapTargetTextPadding","tapTargetTextAlign","tapTargetWaveWidth","tapTargetWaveHeight","tapTargetWaveTop","tapTargetWaveLeft","tapTargetTextRight","tapTargetTextBottom","verticalAlign","dialRadius","outerRadius","innerRadius","tickRadius","defaultTime","fromNow","twelveHour","vibrate","Timepicker","_handleTimeInputEnterKey","_inputFromTextField","_handleClockClickStart","clockPlateBR","plate","x0","y0","moved","clickPos","_Pos","setHand","_handleDocumentClickMove","_handleDocumentClickEnd","currentView","showView","minutesView","hours","minutes","_handleAmPmClick","btnClicked","amOrPm","_updateAmPmView","view","hoursView","isHours","nextView","hideView","inputHours","inputMinutes","resetClock","toggleViewTimer","drawClockFromTimeInput","hour","getHours","_addLeadingZero","getMinutes","_updateTimeFromInput","clearValue","last","time","M_Timepicker","_clockSetup","_pickerSetup","num","_createSVGEl","digitalClock","navigator","webkitVibrate","_canvas","spanAmPm","footer","_createButton","button","clearButton","confirmationBtnsContainer","cancelButton","doneButton","_amBtn","_pmBtn","_buildHoursView","_buildMinutesView","_buildSVGClock","diameter","svg","g","bearing","hand","bg","$tick","tick","radian","PI","radius","sin","cos","_tick","toUpperCase","self","canvas","cx1","cy1","cx2","cy2","roundBy5","atan2","unit","z","sqrt","inner","vibrateTimer","displayLength","completeCallback","activationPercent","Toast","message","panning","timeRemaining","_toasts","_createContainer","toastElement","_createToast","M_Toast","_setTimer","_onDragStart","_onDragMove","_onDragEnd","_container","_removeContainer","toast","_draggedToast","startingXPos","xPos","activationDistance","wasSwiped","dismiss","dismissAll","toastIndex","toastId","HTMLTemplateElement","node","firstElementChild","counterInterval","marginTop","exitDelay","enterDelay","margin","transitionMovement","Tooltip","isManual","_getAttributeOptions","_updateTooltipContent","_setEnterDelayTimeout","isHovered","isFocused","_setExitDelayTimeout","_handleBlur","M_Tooltip","_appendTooltipEl","tooltipEl","tooltipContentEl","tooltipId","_setTooltipContent","_exitDelayTimeout","_enterDelayTimeout","_positionTooltip","tooltip","origin","tooltipHeight","tooltipWidth","xMovement","yMovement","targetTop","targetLeft","newCoordinates","_repositionWithinScreen","scrollLeft","newX","newY","bounding","edges","checkWithinContainer","attributeOptions","tooltipTextOption","positionOption","docHandleKeydown","docHandleKeyup","docHandleFocus","docHandleBlur","s4","substring","containerRect","containerBottom","scrolledX","scrolledY","canAlign","containerAllowsOverflow","containerWidth","elOffsetRect","scrolledYTopEdge","scrolledYBottomEdge","scrollY","scrollX","func","wait","context","args","result","timeout","previous","later","leading","apply","remaining","arguments","trailing","Waves","renderWaveEffect","targetElement","color","isCentered","animationFrame","animationStart","animationStep","easing","circle","waveColor","stop","cancelAnimationFrame","isCircular","pageX","pageY","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","M","AutoInit","registry","version","opt","Cards"],"sourceRoot":""}