{"version":3,"file":"js/main.ef26ff79.js","mappings":"uBAAIA,ECCAC,EADAC,E,sLCmDG,IAAKC,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAAA,EAAgB,qBAAhBA,EAAAA,EAAgB,eAAhBA,EAAAA,EAAgB,iCAAhBA,EAAAA,EAAgB,mBAAhBA,EAAAA,EAAgB,mBAAhBA,EAAAA,EAAgB,eAAhBA,EAAAA,EAAgB,gBAAhBA,EAAAA,EAAgB,kCAAhBA,EAAAA,EAAgB,kCAAhBA,EAAAA,EAAgB,0BAAhBA,EAAAA,EAAgB,0BAAhBA,EAAAA,EAAgB,0BAAhBA,EAAAA,EAAgB,8BAAhBA,EAAAA,EAAgB,0BAAhBA,EAAAA,EAAgB,8BAAhBA,EAAAA,EAAgB,uBAAhBA,CAAgB,MAoEhBC,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAAA,EAAmB,aAAnBA,EAAAA,EAAmB,aAAnBA,EAAAA,EAAmB,iBAAnBA,EAAAA,EAAmB,aAAnBA,EAAAA,EAAmB,aAAnBA,EAAAA,EAAmB,eAAnBA,EAAAA,EAAmB,aAAnBA,EAAAA,EAAmB,eAAnBA,EAAAA,EAAmB,iBAAnBA,EAAAA,EAAmB,cAAnBA,EAAAA,EAAmB,gBAAnBA,EAAAA,EAAmB,kBAAnBA,EAAAA,EAAmB,cAAnBA,CAAmB,MA2BnBC,EAAkB,SAAlBA,GAAkB,OAAlBA,EAAAA,EAAkB,uBAAlBA,EAAAA,EAAkB,qBAAlBA,CAAkB,MAiJlBC,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAAA,EAAgB,mBAAhBA,EAAAA,EAAgB,mBAAhBA,CAAgB,MAiBhBC,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAAA,EAAgB,mBAAhBA,EAAAA,EAAgB,qBAAhBA,CAAgB,MAuDhBC,EAAkB,SAAlBA,GAAkB,OAAlBA,EAAAA,EAAkB,qBAAlBA,EAAAA,EAAkB,uBAAlBA,EAAAA,EAAkB,iBAAlBA,CAAkB,MAgClBC,EAAQ,SAARA,GAAQ,OAARA,EAAAA,EAAQ,iBAARA,EAAAA,EAAQ,uBAARA,CAAQ,MAsGRC,EAAY,SAAZA,GAAY,OAAZA,EAAAA,EAAY,mBAAZA,EAAAA,EAAY,yBAAZA,CAAY,MAKZC,EAAa,SAAbA,GAAa,OAAbA,EAAAA,EAAa,aAAbA,EAAAA,EAAa,eAAbA,CAAa,MAgEbC,EAAoB,SAApBA,GAAoB,OAApBA,EAAAA,EAAoB,qDAApBA,EAAAA,EAAoB,6DAApBA,EAAAA,EAAoB,iEAApBA,EAAAA,EAAoB,6CAApBA,EAAAA,EAAoB,iCAApBA,EAAAA,EAAoB,2DAApBA,EAAAA,EAAoB,+DAApBA,EAAAA,EAAoB,2BAApBA,EAAAA,EAAoB,+CAApBA,EAAAA,EAAoB,8CAApBA,EAAAA,EAAoB,8CAApBA,EAAAA,EAAoB,gDAApBA,EAAAA,EAAoB,gDAApBA,EAAAA,EAAoB,oDAApBA,EAAAA,EAAoB,oCAApBA,EAAAA,EAAoB,gCAApBA,EAAAA,EAAoB,sDAApBA,EAAAA,EAAoB,8BAApBA,EAAAA,EAAoB,gEAApBA,EAAAA,EAAoB,wDAApBA,EAAAA,EAAoB,gDAApBA,EAAAA,EAAoB,oCAApBA,EAAAA,EAAoB,kCAApBA,EAAAA,EAAoB,8DAApBA,EAAAA,EAAoB,4DAApBA,EAAAA,EAAoB,sCAApBA,EAAAA,EAAoB,gFAApBA,EAAAA,EAAoB,0HAApBA,EAAAA,EAAoB,oDAApBA,EAAAA,EAAoB,gCAApBA,EAAAA,EAAoB,gDAApBA,EAAAA,EAAoB,sCAApBA,EAAAA,EAAoB,oDAApBA,EAAAA,EAAoB,gDAApBA,EAAAA,EAAoB,sCAApBA,EAAAA,EAAoB,gCAApBA,CAAoB,MA+FpBC,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAAA,EAAmB,iBAAnBA,EAAAA,EAAmB,eAAnBA,EAAAA,EAAmB,aAAnBA,CAAmB,MAoCnBC,EAA2B,SAA3BA,GAA2B,OAA3BA,EAAAA,EAA2B,2CAA3BA,EAAAA,EAA2B,yCAA3BA,EAAAA,EAA2B,+BAA3BA,EAAAA,EAA2B,eAA3BA,EAAAA,EAA2B,yBAA3BA,EAAAA,EAA2B,yCAA3BA,CAA2B,MA4E3BC,EAA2B,SAA3BA,GAA2B,OAA3BA,EAAAA,EAA2B,qBAA3BA,EAAAA,EAA2B,2BAA3BA,EAAAA,EAA2B,yBAA3BA,EAAAA,EAA2B,qBAA3BA,EAAAA,EAA2B,mBAA3BA,CAA2B,MC9uBhC,MAAMC,EAAWC,KAAKC,iBAAiBC,kBAAkBH,SAEnDI,EAAcC,GAAeA,EAAKC,cAAcC,QAAQ,IAAK,IAE7DC,EAAcA,KACzB,MACMC,GADuB,IAAIC,MAAOJ,cACFK,MAAM,KAAK,GACjD,OAAO,IAAID,KAAK,GAAGD,kBAAyB,EAGjCG,EAAoBA,IACE,IAAjC,IAAIF,MAAOE,oBAA2B,IAE3BC,EAAiBC,GAC5B,IAAIC,SAASC,GAGQA,IAFDC,OAAOC,QAAQJ,MASxBK,EAAeA,CAC1BC,EACAC,EACAC,KAEA,GAAKD,GAAWC,GAAWF,EAE3B,OACEA,EAAKG,WAAWC,MACbC,GACCA,EAAMC,WAAWC,KAAON,EAAOM,IAAMF,EAAMG,YAAYD,KAAOL,EAAOK,KAGlEhC,EAAckC,IAIrBT,EAAKG,WAAWC,MACbC,GACCA,EAAMG,YAAYD,KAAON,EAAOM,IAAMF,EAAMC,WAAWC,KAAOL,EAAOK,KAGlEhC,EAAcmC,UANvB,CAOA,EAGWC,EAAiBA,CAC5BX,EACAC,EACAC,KAEA,GAAKD,GAAWC,GAAWF,EAE3B,OAAOA,EAAKG,WAAWC,MACpBC,GACEA,EAAMC,WAAWC,KAAON,EAAOM,IAC9BF,EAAMG,YAAYD,KAAOL,EAAOK,IACjCF,EAAMC,WAAWC,KAAOL,EAAOK,IAAMF,EAAMG,YAAYD,KAAON,EAAOM,IACzE,EAGUK,EAAkB3B,IAC7B4B,EAAAA,EAAAA,IAAO,IAAIvB,KAAKL,GAAO,kBAYZ6B,EACXC,GAEAC,OAAOC,KAAKjD,GACVgD,OAAOE,OAAOlD,GAAqBmD,QAAQJ,IAkDlCK,EAAeC,GAC1BC,OAAOC,WAAWF,EAAOlC,QAAQ,IAAK,MAE3BqC,EAAeA,IAC1BR,OAAOS,QAAQ1D,GACZ2D,QAAO,EAAEC,EAAGC,KAAUC,MAAMP,OAAOM,MACnCE,KAAI,EAAEC,EAAQH,MACb,MAAMI,EAAWJ,EAAKK,WAAW9C,QAAQ,WAAY,IACrD,IAAI+C,EAOJ,OALEA,EADEF,EAASG,QAAU,EACNH,EAEAJ,EAAKK,WAAWG,MAAM,EAAG,GAAGC,cAGtC,CACL9B,GAAIwB,EACJO,KAAMV,EACNM,eACD,IAGMK,EAAoBhC,GAE/BiB,IAAepB,MAAMoC,GAAaA,GAAUjC,KAAOA,EAAG0B,aAE3CQ,EAAWA,IAAM5C,OAAO6C,WAAW,sBAAsBC,QAEzDC,EAAQA,CAACC,EAAaC,EAAgB,KACjD,MAAMC,EAAIC,KAAKC,IAAI,GAAIH,GAEvB,OAAOE,KAAKJ,MAAMC,EAAME,GAAKA,CAAC,E,cCxLhC,MAAMG,EAAUC,EAAAA,GAAOC,GAAwB;;;;;YAKlCC,GAAWA,EAAMC,OAASD,EAAMC,OAAS;EAGhDC,GAAgBJ,EAAAA,EAAAA,IAAOK,EAAAA,EAAQ;;;EAiBrC,EAReC,EAAGH,aAChBI,EAAAA,EAAAA,KAACC,EAAAA,EAAI,CAACC,UAAU,iBAAgBC,UAC9BH,EAAAA,EAAAA,KAACR,EAAO,CAACI,OAAQA,EAAOO,UACtBH,EAAAA,EAAAA,KAACH,EAAa,CAACO,KAAK,KAAKC,UAAU,SAASC,QAAQ,gBCfpDC,EAAYd,EAAAA,GAAOC,GAAG;;;EAoE5B,EA1DqBc,EAAGC,UAASC,eAC3BA,IAAcD,GAASE,kBAAkBlC,QACpCuB,EAAAA,EAAAA,KAACD,EAAM,KAIdC,EAAAA,EAAAA,KAACO,EAAS,CAAAJ,UACRH,EAAAA,EAAAA,KAACY,EAAAA,GAAI,CACHC,KAAM,CACJC,OAAQL,GAASM,UAAU3C,KAAK9B,GAASA,EAAK0E,UAC9CC,SAAU,CACR,CACEC,MAAO,UACPL,KAAMJ,GAASM,UAAU3C,KAAK9B,GAAS4C,EAAM5C,EAAKmE,WAClDU,MAAM,EACNC,gBAAiB,UACjBC,YAAa,eAInBC,QAAS,CACPC,QAAS,CACPC,OAAQ,CACNC,SAAS,IAGbC,qBAAqB,EACrBC,OAAQ,CACNC,EAAG,CACDC,KAAM,OACNC,KAAM,CACJC,KAAM,OACNC,eAAgB,CACdC,KAAM,gBAGVC,KAAM,CACJC,MAAO,aAETC,MAAO,CACLD,MAAO,cAGXE,EAAG,CACDH,KAAM,CACJC,MAAO,aAETC,MAAO,CACLD,MAAO,oBCjEVG,EACXC,SAASC,UAAYD,SAASC,SAASC,SAAS,oBAC5CF,SAASG,OACT,2BAIOC,EAAsB,QACtBC,EAAmC,qBAKnCC,GACD,sBADCA,GAED,sBAFCA,GAGL,kBAHKA,GAIH,oBAJGA,GAKD,sBCgFZ,GA3FuBC,CACrBC,EACAC,EACAC,EAAqB,EACrBC,GAAc,KAGd,MAAOC,EAAOC,IAAYC,EAAAA,EAAAA,UAAY,KAC/B3C,EAAW4C,IAAgBD,EAAAA,EAAAA,UAChCL,IAAqB,IAEhBO,EAAUC,IAAeH,EAAAA,EAAAA,UAAiB,KAE3C,MAAEI,EAAK,UAAEC,EAAS,aAAEC,EAAY,KAAEC,GClBdC,EAACC,EAAiBZ,GAAc,KAC1D,MAAOQ,EAAWC,IAAgBN,EAAAA,EAAAA,UAASS,GAE3C,IAAIC,GAEJC,EAAAA,EAAAA,YAAU,KACJF,EAAU,IACZC,EAAWE,aAAY,KACjBP,GAAa,EACfE,KAIEV,GAAegB,SAASC,YAC1BR,EAAaD,EAAY,GAEtBR,GACHS,EAAaD,EAAY,GAC3B,GACC,MAGE,IAAMU,cAAcL,KAC1B,CAACL,IAEJ,MAAME,EAAOA,KACXQ,cAAcL,EAAS,EASzB,MAAO,CACLL,YACAC,eACAF,MATYA,KACZW,cAAcL,GAEdJ,EAAaG,EAAQ,EAOrBF,OACD,EDtBgDC,CAC/CZ,EACAC,GAGImB,GAAeC,EAAAA,EAAAA,QAAO,IAE5BN,EAAAA,EAAAA,YAAU,KAOFf,GAAoC,IAAdS,GANVa,WAChBX,UACMY,IACNf,GAAO,EAIPgB,EACF,GACC,CAACf,IAEJ,MAAM,MAAEgB,EAAK,gBAAEC,GAAoBC,KAE7BJ,EAAaD,UACjB,IAAKxB,IAAa8B,EAEhB,YADAC,QAAQC,MAAM,oBAIhB,MAAM,OAAEC,GAAWL,EAEnBrB,GAAa,GACbE,EAAY,IAEZ,MAAMyB,IAAqBZ,EAAaa,QAExC,IACE,MAAMC,QAAeT,EACnB,GAAGpC,KAAmBS,GAAY8B,IAClC,CAAEG,WAEJ,GAAIG,EAAOC,GAAI,CACb,MAAMC,QAAuBF,EAAOG,OAEhCL,IAAqBZ,EAAaa,SACpC9B,EAASiC,EAEb,MACE,GAAIJ,IAAqBZ,EAAaa,QAAS,CAC7C,MAAMH,QAAcI,EAAOG,OAC3B9B,EAAYuB,GAAOQ,SAAW,GAAGxC,KAEjCK,EAAS,GACX,CAEJ,CAAE,MAAO2B,GACHE,IAAqBZ,EAAaa,UACpC1B,EAAY,IAAIT,GAAY8B,OAAsBE,KAElD3B,EAAS,IAEb,CACI6B,IAAqBZ,EAAaa,SACpC5B,GAAa,GAEfK,EAAaV,EAAmB,EAKlC,OAFAe,EAAAA,EAAAA,YAAU,IAAM,IAAMW,EAAgBa,SAAS,IAExC,CACLhB,aACArB,QACAC,WACA1C,YACA6C,WACAG,YACD,E,eE1FH,MCmEA,GAjE8BX,IAC5B,MAAOlG,EAAI4I,IAASpC,EAAAA,EAAAA,aACbqC,EAAeC,IAAoBtC,EAAAA,EAAAA,UAAiB,KACpD3C,EAAW4C,IAAgBD,EAAAA,EAAAA,WAAkB,IAC7CE,EAAUC,IAAeH,EAAAA,EAAAA,UAAiB,KAE3C,MAAEqB,EAAK,gBAAEC,GAAoBC,KAgDnC,OAFAZ,EAAAA,EAAAA,YAAU,IAAM,IAAMW,EAAgBa,SAAS,IAExC,CACLI,WA/CiBrB,MACjB1D,EACAhE,EACAgI,KAEA,GAAK9B,GAAa8B,EAAlB,CAIAvB,GAAa,GACbqC,EAAiB,IACjBnC,EAAY,IACZiC,EAAM5I,GAEN,IACE,MAAMsI,QAAeT,EACnB,GAAGpC,KAAmBS,GAAY8B,IAClC,CACEgB,OAAQ,SACRC,KAAMjF,EAAOkF,KAAKC,UAAUnF,QAAQoF,IAIxC,GAAId,EAAOC,GACT,IACE,MAAMc,QAA8Bf,EAAOG,OAC3CK,EAAiBO,GAAUX,SAAW,OACxC,CAAE,MAAOtH,GACP0H,EAAiB,OACnB,KACK,CACL,MAAMQ,QAAoBhB,EAAOG,OAEjC9B,EAAY2C,GAAaZ,SAAW,IAAIxC,GAAY8B,KACpDc,EAAiB,GACnB,CACF,CAAE,MAAOZ,GACPvB,EAAY,IAAIT,GAAY8B,OAAsBE,KAClDY,EAAiB,GACnB,CAAE,QACArC,GAAa,EACf,CAjCA,MAFEwB,QAAQC,MAAM,mBAmChB,EAOAlI,KACA6D,YACAgF,gBACAC,mBACApC,WACAC,cACD,EC5DI,IAAK4C,GAAQ,SAARA,GAAQ,OAARA,EAAQ,0BAARA,EAAQ,kBAARA,EAAQ,cAARA,EAAQ,cAARA,CAAQ,MAORC,GAAW,SAAXA,GAAW,OAAXA,EAAW,sBAAXA,EAAW,sBAAXA,EAAW,UAAXA,EAAW,UAAXA,EAAW,YAAXA,EAAW,YAAXA,CAAW,M,eCIhB,MAAMC,IAAcC,EAAAA,EAAAA,eAA4B,CACrDC,UAAU,EACVC,YAAaA,KAAe,EAC5BC,KAAM,GACNC,KAAMhM,EAASiM,WAUJC,GAAeA,EAAG1G,eAC7B,MAAOqG,EAAUC,IAAepD,EAAAA,EAAAA,WAAkB,IAC3CsD,EAAMG,IAAWzD,EAAAA,EAAAA,UAAmB1I,EAASiM,WAC7CF,EAAMK,IAAW1D,EAAAA,EAAAA,UAAS,IAE3B2D,EAAQC,aAAaC,QAAQvE,IAC7B,aAAEwE,EAAY,UAAEC,IAAcC,EAAAA,GAAAA,IAAOL,GAAS,IAcpD,OAZAhD,EAAAA,EAAAA,YAAU,KACSiD,aAAaC,QAAQvE,IAEtBwE,IAAiBC,IAC/BX,GAAY,GAEZM,EAAQI,EAjBD,+DAmBPL,EAAQnM,EAASwM,EAlBV,kEAmBT,GACC,CAACX,EAAUW,EAAcC,KAG1BpH,EAAAA,EAAAA,KAACsG,GAAYgB,SAAQ,CACnBC,MAAO,CACLf,WACAC,cACAC,OACAC,QACAxG,SAEDA,GACoB,ECnC3B,GAxBiByE,KACf,MAAMD,EAAkB,IAAI6C,iBACtB,YAAEf,IAAgBgB,EAAAA,EAAAA,YAAWnB,IAmBnC,MAAO,CAAE5B,MAjBKH,MAAOmD,EAAapG,EAAU,CAAC,KAC3C,MAAM4E,QAAiB/J,OAAOuI,MAAMgD,EAAK,IACpCpG,EACHqG,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAUX,aAAaC,QAAQvE,QASlD,OALwB,MAApBuD,EAAS2B,SACXZ,aAAaa,WAAWnF,GACxB8D,GAAY,IAGPP,CAAQ,EAGDvB,kBAAiB,EC4CnC,GA/D2B5B,IACzB,MAAOlG,EAAI4I,IAASpC,EAAAA,EAAAA,aACbqC,EAAeC,IAAoBtC,EAAAA,EAAAA,UAAiB,KACpD3C,EAAW4C,IAAgBD,EAAAA,EAAAA,WAAkB,IAC7CE,EAAUC,IAAeH,EAAAA,EAAAA,UAAiB,KAE3C,MAAEqB,EAAK,gBAAEC,GAAoBC,KAgDnC,OAFAZ,EAAAA,EAAAA,YAAU,IAAM,IAAMW,EAAgBa,SAAS,IAExC,CACLuC,WA/CiBxD,MACjB1D,EACAhE,EACAgI,KAEA,GAAK9B,GAAa8B,EAAlB,CAIAvB,GAAa,GACbqC,EAAiB,IACjBnC,EAAY,IACZiC,EAAM5I,GAEN,IACE,MAAMsI,QAAeT,EACnB,GAAGpC,KAAmBS,GAAY8B,IAClC,CACEgB,OAAQ,MACRC,KAAMC,KAAKC,UAAUnF,KAIzB,GAAIsE,EAAOC,GACT,IACE,MAAMc,QAA8Bf,EAAOG,OAC3CK,EAAiBO,GAAUX,SAAW,OACxC,CAAE,MAAOtH,GACP0H,EAAiB,OACnB,KACK,CACL,MAAMQ,QAAoBhB,EAAOG,OAEjC9B,EAAY2C,GAAaZ,SAAW,IAAIxC,GAAY8B,KACpDc,EAAiB,GACnB,CACF,CAAE,MAAOZ,GACPvB,EAAY,IAAIT,GAAY8B,OAAsBE,KAClDY,EAAiB,GACnB,CAAE,QACArC,GAAa,EACf,CAjCA,MAFEwB,QAAQC,MAAM,mBAmChB,EAOAlI,KACA6D,YACAgF,gBACAnC,WACD,EC1DGyE,GAA0BC,GAC9B3K,OAAOC,KAAK0K,GAAeC,QACzB,CAACC,EAAKC,KACJ,MAAMb,EAAQU,EAAcG,GACtBC,EAAcxK,WAAW0J,GAM/B,OALK3J,OAAOO,MAAMkK,IAAiC,iBAAVd,EAGvCY,EAAIC,GAAOb,EAFXY,EAAIC,GAAO1K,EAAY6J,GAIlBY,CAAG,GAEZ,CAAC,GAmDL,GAhDyBG,KACvB,MACEnF,MAAOoF,EAAc,UACrB7H,EAAS,SACT6C,EACAiB,WAAYgE,GACV1F,GAAwC,kBAEtC,WACJiF,EACArH,UAAW+H,EACX/C,cAAegD,EACfnF,SAAUoF,GACRC,KAuBJ,MAAO,CACLL,iBACAC,sBACA9H,YACA6C,WACAsF,oBA1B2BhI,IAC3B,MAAMiI,EAAyBd,GAAuBnH,EAAKoH,eAErDc,EAA4BlI,EAAKmI,iBAAiB5K,KACrD6K,IAAe,CACdpM,GAAIoM,EAAgBpM,GACpBoL,cAAeD,GAAuBiB,EAAgBhB,mBAIpDiB,EAAe,CACnBrM,GAAIgE,EAAKhE,GACToL,cAAea,EACfK,SAAUtI,EAAKsI,SACfC,UAAWvI,EAAKuI,UAChBC,wBAAyBN,GAG3BhB,EAAWmB,OAAcjD,EAAW,iBAAiBpF,EAAKhE,KAAK,EAS/D4L,kBACAE,iBACAD,eACD,EChCH,GA9B4BY,KAC1B,MACEnG,MAAOoF,EAAc,UACrB7H,EAAS,SACT6C,EACAiB,WAAYgE,GACV1F,GAAyC,6BAEvC,WACJiF,EACArH,UAAW+H,EACX/C,cAAegD,EACfnF,SAAUoF,GACRC,KAKJ,MAAO,CACLL,iBACAC,sBACAK,oBAN2BhI,GAC3BkH,EAAWlH,OAAMoF,EAAW,4BAA4BpF,EAAKhE,MAM7D6D,YACA6C,WACAkF,kBACAE,iBACAD,eACD,ECkCH,GA7D4B3F,IAC1B,MAAOlG,EAAI4I,IAASpC,EAAAA,EAAAA,aACbqC,EAAeC,IAAoBtC,EAAAA,EAAAA,UAAiB,KACpD3C,EAAW4C,IAAgBD,EAAAA,EAAAA,WAAkB,IAC7CE,EAAUC,IAAeH,EAAAA,EAAAA,UAAiB,KAE3C,MAAEqB,EAAK,gBAAEC,GAAoBC,KA4CnC,OAFAZ,EAAAA,EAAAA,YAAU,IAAM,IAAMW,EAAgBa,SAAS,IAExC,CACL+D,SA3CehF,MAAO1D,EAAShE,EAAagI,KAC5C,GAAK9B,GAAa8B,EAAlB,CAIAvB,GAAa,GACbqC,EAAiB,IACjBnC,EAAY,IACZiC,EAAM5I,GAEN,IACE,MAAMsI,QAAeT,EACnB,GAAGpC,KAAmBS,GAAY8B,IAClC,CACEgB,OAAQ,OACRC,KAAMC,KAAKC,UAAUnF,KAIzB,GAAIsE,EAAOC,GACT,IACE,MAAMc,QAA8Bf,EAAOG,OAC3CK,EAAiBO,GAAUX,SAAW,OACxC,CAAE,MAAOtH,GACP0H,EAAiB,OACnB,KACK,CACL,MAAMQ,QAAoBhB,EAAOG,OAEjC9B,EAAY2C,GAAaZ,SAAW,IAAIxC,GAAY8B,KACpDc,EAAiB,GACnB,CACF,CAAE,MAAOZ,GACPvB,EAAY,IAAIT,GAAY8B,OAAsBE,KAClDY,EAAiB,GACnB,CAAE,QACArC,GAAa,EACf,CAjCA,MAFEwB,QAAQC,MAAM,mBAmChB,EAOAlI,KACA6D,YACAgF,gBACAC,mBACApC,WACAC,cACD,ECxCH,GAtB+BgG,KAC7B,MACErG,MAAOsG,EAAoB,UAC3B/I,EAAS,SACT6C,EAAQ,WACRiB,EAAU,UACVd,GACEZ,GACF,uBACAmD,EACA,IAGF,MAAO,CACLzB,aACAiF,uBACA/I,YACA6C,WACAG,YACD,ECmBH,GAnC2BgG,KACzB,MACEvG,MAAOwG,EACPjJ,UAAWkJ,EACXrG,SAAUsG,EACVrF,WAAYsF,GACVhH,GACF,mCAIAK,MAAO4G,EAAc,UACrBrJ,EAAS,SACT6C,EACAiB,WAAYwF,EAAmB,UAC/BtG,GACEZ,GACF,2CACAmD,EACA,IAGF,MAAO,CACL6D,qBACAH,gBACAC,yBACAC,wBACAG,sBACAD,iBACArJ,YACA6C,WACAG,YACD,EC9BH,GAN0BuG,KACxB,MAAOC,EAAYC,IAAiB9G,EAAAA,EAAAA,UAAS,GAE7C,MAAO,CAAE6G,aAAYC,gBAAe,ECatC,GAf6BC,KAC3B,MACEjH,MAAOkH,EAAc,UACrB3J,EAAS,SACT6C,EAAQ,WACRiB,GACE1B,QAAwCmD,GAAW,GAMvD,MAAO,CAAEoE,iBAAgBC,oBAJG/F,SACnBC,EAAW,UAAU+F,aAGgB7J,YAAW6C,WAAU,ECerE,GAvB4BiH,KAC1B,MAAM,MAAErH,EAAK,UAAEzC,EAAS,SAAE6C,EAAQ,WAAEiB,GAClC1B,GAAoD,kBAEhD,WACJiF,EACArH,UAAW+H,EACX/C,cAAegD,EACfnF,SAAUoF,GACRC,GAAiD,iBAErD,MAAO,CACLzF,QACAzC,YACA6C,WACAiB,aACAuD,aACAU,kBACAC,eACAC,iBACD,ECGU8B,IAAclE,EAAAA,EAAAA,eAA4B,CACrDmE,OAAQ,GACRC,QAAS,GACTC,aAAc,KAEdC,gBAAiB,KACjBC,gBAAiB,KAEjBC,mBAAoB,KACpBC,SAAU,GACVC,OAAQ,GAERC,YAAa,KAEbC,UAAW,KACXC,eAAe,EACfC,aAAc,KAKHC,GAAeA,EAAGnL,eAC7B,MAAOiL,EAAeG,IAAoBlI,EAAAA,EAAAA,WAAkB,IACrDgI,EAAcG,IAAmBnI,EAAAA,EAAAA,UAAmB,KAEpDuH,EAAcC,IAAmBxH,EAAAA,EAAAA,UAAgC,OACjEyH,EAAiBC,IACtB1H,EAAAA,EAAAA,UAAkC,OAGlCF,MAAOuH,EACPhK,UAAW+K,EACXlI,SAAUmI,EACVlH,WAAYmH,GACV7I,GAAgC,UAGlCK,MAAOwH,EACPjK,UAAWkL,EACXrI,SAAUsI,EACVrH,WAAYsH,GACVhJ,GAAiC,WAE/B,SAAEkI,EAAQ,OAAEC,EAAM,YAAEC,EAAW,UAAEC,GdpExBY,MACf,MAAMC,EAAkBtQ,IAClBuQ,GAAqBC,EAAAA,GAAAA,GAAIF,EAAiB,CAAEG,KAAM,KAEjDnB,EAAUE,IAAe7H,EAAAA,EAAAA,UAAiB/H,EAAW0Q,KACrDf,EAAQE,IAAa9H,EAAAA,EAAAA,UAAiB/H,EAAW2Q,IAExD,MAAO,CAAEjB,WAAUE,cAAaD,SAAQE,YAAW,Ec6DEY,GAE/CK,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClBC,KAAMvB,EACNwB,GAAIvB,KAER,CAACD,EAAUC,KAIX9H,MAAOsJ,EACP/L,UAAWgM,EACXnJ,SAAUoJ,EACVnI,WAAYoI,GACV9J,GAAmC,aAAasJ,EAAO7N,cAmC3D,OAjCAyF,EAAAA,EAAAA,YAAU,KACR8H,IACAH,GAAa,GACZ,KAEH3H,EAAAA,EAAAA,YAAU,KACR4I,GAAiB,GAChB,CAAC5B,EAAUC,KAEdjH,EAAAA,EAAAA,YAAU,KACR,MAAMtD,EAAY,CAChB+K,EACAG,EACAc,GACAG,MAAMC,GAAYA,IAEdC,EAAU,CAACrC,EAAQC,EAAS8B,GAAYI,MAC3C1J,IAAWA,EAAM1E,SAGpB8M,EAAiB7K,GAAaqM,EAAQ,GACrC,CAACtB,EAAiBG,EAAkBc,KAEvC1I,EAAAA,EAAAA,YAAU,KACR,MAAMgJ,EAAa,CACjBtB,EACAG,EACAc,GACA3O,QAAQ+G,GAAUA,IAEpByG,EAAgBwB,EAAW,GAC1B,CAACtB,EAAgBG,EAAiBc,KAGnC3M,EAAAA,EAAAA,KAACyK,GAAYnD,SAAQ,CACnBC,MAAO,CACLmD,SACAC,UACA8B,aACA7B,eACAC,kBACAG,WACAC,SACAC,cACAC,YACAC,gBACAC,eACAP,kBACAC,sBACA5K,SAEDA,GACoB,E,cC7I3B,MAAMX,GAAUC,EAAAA,GAAOC,GAAG;;;EAmB1B,GATkBuN,EAAGvM,YAAWgD,gBAC9BwJ,EAAAA,EAAAA,MAAC1N,GAAO,CAAAW,SAAA,CAAC,eACOO,EAA8B,GAAlB,GAAGgD,MACb,IAAdA,GAAmBhD,KACnBV,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CAACO,UAAU,SAASC,QAAQ,UAAUF,KAAK,U,wBCbzD,MAAMZ,GAAUC,EAAAA,GAAOC,GAAG;;;;EAMpByN,IAAoB1N,EAAAA,EAAAA,IAAO2N,GAAAA,EAAKC,QAAQ;;EAYjCC,GAAaA,EACxB1O,OACAsL,aACAC,gBACAoD,oBACAC,iBAEA,MAAOjG,EAAOkG,IAAYpK,EAAAA,EAAAA,UAAS4D,aAAaC,QAAQtI,SAASqH,GAQjE,OANAjC,EAAAA,EAAAA,YAAU,KACJpG,OAAO2J,IAAU,GACnBN,aAAayG,QAAQ9O,EAAM+O,SAASpG,GAAS,IAAK,IAAIhJ,WACxD,GACC,CAACgJ,KAGF2F,EAAAA,EAAAA,MAAC1N,GAAO,CAACU,UAAU,SAAQC,SAAA,EACzBH,EAAAA,EAAAA,KAAA,WACAkN,EAAAA,EAAAA,MAACU,GAAAA,EAAmB,CAACxN,KAAK,KAAKF,UAAU,MAAKC,SAAA,EAC5CH,EAAAA,EAAAA,KAAC4N,GAAAA,EAAoBC,MAAK,CACxBC,SAAyB,IAAf5D,EACV6D,QAASA,IAAM5D,EAAc,MAE/BnK,EAAAA,EAAAA,KAAC4N,GAAAA,EAAoBI,KAAI,CACvBF,SAAyB,IAAf5D,EACV6D,QAASA,IAAM5D,EAAcD,EAAa,MAE5ClK,EAAAA,EAAAA,KAAC4N,GAAAA,EAAoBK,KAAI,CAACC,QAAM,EAAA/N,SAC7BoN,KAEHvN,EAAAA,EAAAA,KAAC4N,GAAAA,EAAoBO,KAAI,CACvBL,SAAU5D,IAAesD,EACzBO,QAASA,IAAM5D,EAAcD,EAAa,MAE5ClK,EAAAA,EAAAA,KAAC4N,GAAAA,EAAoBQ,KAAI,CACvBN,SAAU5D,IAAesD,EACzBO,QAASA,IAAM5D,EAAcqD,SAGjCxN,EAAAA,EAAAA,KAAA,OAAAG,UACEH,EAAAA,EAAAA,KAACmN,GAAiB,CAChBjN,UAAU,mBACVE,KAAK,KACLyB,KAAK,SACL0F,MAAOA,EAEP8G,SAAWC,GAAMb,EAASa,EAAEC,OAAOhH,aAG/B,EC/DR/H,GAAUC,EAAAA,GAAOC,GAAG;;EAIpB8O,GAAW/O,EAAAA,GAAOgP,EAAE;;EAIbC,GAAWjP,EAAAA,GAAOkP,EAAE;;EAuBpBC,GAAiBA,EAC5BlO,YACAgD,YACAmL,SACA9B,UACA5M,WACA2O,mBACAC,iBACAC,WACAC,UACAC,QACAhF,aACAC,gBACAoD,oBACAC,aACA2B,iBACAjP,gBAEAgN,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACE+M,EAAAA,EAAAA,MAAC1N,GAAO,CACNU,UAAW4O,GAAsC,GAAG5O,SAAiBC,SAAA,MAEtD8F,IAAdvC,QAAyCuC,IAAdvF,IAC1BV,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,KAE9CwJ,EAAAA,EAAAA,MAACmC,GAAAA,EAAK,CACJJ,aAAqBhJ,IAAZgJ,GAA+BA,EACxCD,cAAuB/I,IAAb+I,GAAgCA,EAC1CE,WAAiBjJ,IAAViJ,GAA6BA,EACpChP,eAA8B+F,IAAnB8I,EAA+B,YAAcA,EACxD3O,KAAK,KAAID,SAAA,CAER0O,IACC7O,EAAAA,EAAAA,KAAA,SAAAG,UACEH,EAAAA,EAAAA,KAAA,MAAAG,SACG0O,EACE7Q,QAAQsR,GAASA,IACjBlR,KAAI,CAACkR,EAAMC,KACVvP,EAAAA,EAAAA,KAACwO,GAAQ,CAEPgB,MAAO,CACLC,MAAQC,MAAMC,QAAQL,GAAoBA,EAAK,GAAjB,WAC9BnP,SAEAuP,MAAMC,QAAQL,GAAeA,EAAK,GAAZA,GALnBC,SAWhBV,GACC3B,EAAAA,EAAAA,MAAA,SAAA/M,SAAA,CACGA,EACA4M,IACC/M,EAAAA,EAAAA,KAAA,MAAAG,UACEH,EAAAA,EAAAA,KAAA,MAAIE,UAAU,aAAa0P,QAASf,EAAOpQ,OAAO0B,SAAC,kBAOzDA,QAIL+J,GACDC,GACAqD,GACAD,GACA4B,GACEnP,EAAAA,EAAAA,KAACsN,GAAU,CACTpD,WAAYA,EACZC,cAAeA,EACfqD,WAAYA,EACZD,kBAAmBA,EACnB3O,KAAMuQ,IAEN,QCzBR,GA9EqBU,EAAGpP,UAASC,gBAC/B,MAAM,OAAEgK,IAAWjD,EAAAA,EAAAA,YAAWgD,IAE9B,OACEyC,EAAAA,EAAAA,MAAC0B,GAAc,CACbC,OAAQ,CACN,CAAC,QAAS,SACV,UACA,eACA,WACA,QACA,SAEFnO,UAAWA,EACXqM,SAAUtM,GAASE,kBAAkBlC,OAAO0B,SAAA,CAE3CM,GAASE,kBAAkBlC,OACxBgC,GAASE,iBACN3C,QAAQ8R,GAAYA,EAAQC,WAAa,KACzCC,MAAK,CAACC,EAAGC,IAAMA,EAAEH,WAAaE,EAAEF,aAChC3R,KAAK0R,IACJ,MAAMK,EAAezF,EAAOhO,MACzBC,GAAUA,EAAMiC,OAASkR,EAAQM,YACjCD,aAEH,OACEL,IACE5C,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAA,MAAAG,SAAK2P,EAAQM,aACbpQ,EAAAA,EAAAA,KAAA,MAAAG,SACGjB,EAAM4Q,EAAQrP,QAAS0P,GAAcE,QACpCF,MAGJnQ,EAAAA,EAAAA,KAAA,MAAAG,SACGjB,EAAM4Q,EAAQQ,OAAQH,GAAcE,QACnCF,MAGJjD,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,CAAK2P,EAAQS,YAAY,QACzBrD,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,CAAK2P,EAAQU,MAAM,QACnBtD,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,CACGjB,EAAM4Q,EAAQC,WrBlDN,GqBkDmCM,QrBlDnC,GqBoDP,SAjBGP,EAAQM,UAqBlB,IAGP,KACH3P,GAASE,kBAAkBlC,QAC1ByO,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACE+M,EAAAA,EAAAA,MAAA,MAAIsC,MAAO,CAAEiB,UAAW,wBAAyBtQ,SAAA,EAC/CH,EAAAA,EAAAA,KAAA,MAAIE,UAAU,UAAU0P,QAAU7Q,IAAiB,EAAJ,EAAMoB,SAAC,WAGtD+M,EAAAA,EAAAA,MAAA,MAAI0C,QAAU7Q,IAAiB,EAAJ,EAAMoB,SAAA,CAC9BM,GAASsP,WAAWM,QrBnEJ,GqBmE6B,MAC7C5P,GAAS8P,YAAYF,QrBpEL,GqBoE8B,YAGnDnD,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACE+M,EAAAA,EAAAA,MAAA,MAAIhN,UAAU,UAAU0P,QAAU7Q,IAAiB,EAAJ,EAAMoB,SAAA,CAAC,sBAChCpB,KAAc,YAEpCmO,EAAAA,EAAAA,MAAA,MAAI0C,QAAU7Q,IAAiB,EAAJ,EAAMoB,SAAA,CAC9BM,GAASiQ,yBAAyB,OAClCjQ,GAASkQ,4BAA4B,aAI1C,OACW,EC5DrB,GApBsBC,KACpB,MAAM,QAAEnQ,EAAO,UAAEC,EAAS,SAAE6C,EAAQ,UAAEG,GCFjBmN,MACrB,MAAM,SAAE7F,EAAQ,OAAEC,EAAM,aAAEL,EAAY,gBAAEE,IACtCrD,EAAAA,EAAAA,YAAWgD,IAEP2B,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClBC,KAAMvB,EACNwB,GAAIvB,EACJV,SAAUK,GAAc/N,GAAG0B,YAAc,GACzCuS,YAAahG,GAAiBjO,IAAI0B,YAAc,MAEpD,CAACyM,EAAUC,EAAQL,EAAcE,KAIjC3H,MAAO1C,EAAO,UACdC,EAAS,SACT6C,EACAiB,WAAYuM,EAAY,UACxBrN,GACEZ,GACF,WAAWsJ,EAAO7N,kBAClB0H,EACA,GAOF,OAJAjC,EAAAA,EAAAA,YAAU,KACR+M,GAAc,GACb,CAAC/F,EAAUC,EAAQL,EAAcE,IAE7B,CAAErK,UAASC,YAAW6C,WAAUG,YAAW,ED7BEsN,GAEpD,OACE9D,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,MACiB8F,IAAdvC,QAAyCuC,IAAdvF,IAC1BV,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAE7CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzB2J,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAAC6P,GAAY,CAACpP,QAASA,EAASC,UAAWA,KAC3CV,EAAAA,EAAAA,KAACQ,EAAY,CAACC,QAASA,EAASC,UAAWA,SAG9C,E,qCEVP,MAmCA,GAnCgCwQ,EAC9BzI,kBACAC,eACAC,iBACAoF,UACAzN,cAEA4M,EAAAA,EAAAA,MAAA,OAAA/M,SAAA,EACE+M,EAAAA,EAAAA,MAACiE,GAAAA,EAAM,CACL7Q,QAASA,EACTyN,QAASA,EACT7N,UAAWnB,IAAa,QAAU,GAAGoB,SAAA,CACtC,OACM,IACJsI,IACCzI,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CACNsR,GAAG,OACH/Q,UAAU,SACVD,KAAK,KACLuG,KAAK,SACLzG,UAAU,SAGbwI,IAAgB1I,EAAAA,EAAAA,KAACqR,GAAAA,EAAY,CAACnR,UAAU,SACxCyI,IAAkB3I,EAAAA,EAAAA,KAACsR,GAAAA,EAAG,CAACpR,UAAU,YAGnCyI,IACC3I,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCwI,O,yBC9BT,MAAM4I,GAAkB9R,EAAAA,GAAOC,GAAG;;;;EAsClC,GAhC2B8R,EACzBC,aACAvQ,QACAqG,QACA8G,WACAqD,SACAC,gBACAC,iBAEA1E,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACuR,GAAe,CAACrR,UAAWuR,EAAa,cAAgB,GAAGtR,SACzDe,KAEHgM,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAAA1R,SAAA,EACTH,EAAAA,EAAAA,KAAC8R,GAAAA,EAAW,CACVjQ,KAAK,OACLiM,SAAU8D,EACVG,UAAU,UACVxK,MAAOA,IAAoB,IAAXA,EAAeA,EAAQ,GAEvCyK,eAAiB1D,GAAMA,EAAEC,OAAO0D,OAChC5D,SAAUA,IAEXqD,IACC1R,EAAAA,EAAAA,KAACmR,GAAAA,EAAM,CAAC7Q,QAAQ,oBAAoByN,QAAS4D,EAAcxR,SACxDuR,UClCLQ,IAAkBzS,EAAAA,EAAAA,IAAO2N,GAAAA,EAAK+E,MAAM;;;;;;;EAwB1C,GAf4BC,EAC1BlR,QACAqG,QACAkK,aACApD,eAEArO,EAAAA,EAAAA,KAACkS,GAAe,CACdrQ,KAAK,SACLX,MAAOA,EACPmR,QAAS9K,EACTrH,UAAWuR,EAAa,cAAgB,GACxCpD,SAAUA,ICwEd,GAlFyBiE,EAAGC,aAC1B,MAAOC,EAAgBC,IAAqBpP,EAAAA,EAAAA,UAASkP,IAE/C,oBAAE1J,EAAmB,gBAAEJ,EAAe,eAAEE,EAAc,aAAED,GAC5DY,MAEKrB,EAAeyK,IAAoBrP,EAAAA,EAAAA,UAASkP,IAEnDvO,EAAAA,EAAAA,YAAU,KACJ0E,GACF+J,EAAkB,IAAKxK,GACzB,GACC,CAACS,IAEJ,MAAM+I,EAAaxJ,EAAcV,OAASiL,EAAejL,MAEzD,OACE2F,EAAAA,EAAAA,MAACyF,EAAAA,SAAQ,CAAAxS,SAAA,EACP+M,EAAAA,EAAAA,MAACE,GAAAA,EAAKwF,MAAK,CAAC1S,UAAU,OAAO2S,UAAW,GAAG5K,EAAcG,MAAMjI,SAAA,CAC7B,kBAAxB8H,EAAcV,QACpBvH,EAAAA,EAAAA,KAACoS,GAAmB,CAClBlR,MAAO+G,EAAcG,IACrBb,MAAOU,EAAcV,MACrBkK,WAAYA,EACZpD,SAAWC,GACToE,EAAiB,IAAKzK,EAAeV,MAAO+G,EAAEC,OAAO8D,aAI1B,iBAAxBpK,EAAcV,OACU,iBAAxBU,EAAcV,SACrBvH,EAAAA,EAAAA,KAACwR,GAAkB,CACjBC,WAAYA,EACZvQ,MAAO+G,EAAcG,IACrBb,MAAOU,EAAcV,MACrB8G,SAAWC,GACToE,EAAiB,IACZzK,EAEHV,MAAO+G,EAAEC,OAAOhH,QAGpBmK,OAAO,IACPC,cAAeA,IACbe,EAAiB,IACZzK,EAEHV,MAAO,YAMjBvH,EAAAA,EAAAA,KAACkR,GAAuB,CACtB5Q,QAAQ,SACRqI,eAAgBA,EAChBF,gBAAiBA,EACjBC,aAAcA,EACdqF,QAASxJ,UACP,MAAMuO,EAAe,CACnBjW,GAAIoL,EAAcG,KAAO,GACzBb,MAAOU,EAAcV,OAGY,iBAAxBU,EAAcV,QAEvBuL,EAAavL,MAAQ7J,EAAYuK,EAAcV,cAGvBxL,EACxB,gCAAgC+W,EAAajW,SAASiW,EAAavL,WAInEsB,EAAoBiK,EACtB,MA1DS7K,EAAcG,IA6DlB,ECtDf,GApC0B2K,KACxB,MAAM,eAAExK,EAAc,oBAAEC,EAAmB,UAAE9H,EAAS,SAAE6C,GACtD+F,KAMF,OAJAtF,EAAAA,EAAAA,YAAU,KACRwE,GAAqB,GACpB,IAEC9H,GAAkBV,EAAAA,EAAAA,KAACD,EAAM,CAACH,OAAO,UACjC2D,IAAagF,GAEbvI,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCoD,KAML2J,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,OAAMC,SAAA,EACpBH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,iCAAgCC,SAAC,mBAGxDH,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAA9S,UACRH,EAAAA,EAAAA,KAACoN,GAAAA,EAAI,CAAAjN,SACF7C,OAAOS,QAAQwK,GAAgBnK,KAAI,EAAEgK,EAAKH,GAAgBsH,KACzDrC,EAAAA,EAAAA,MAACyF,EAAAA,SAAQ,CAAAxS,SAAA,EACPH,EAAAA,EAAAA,KAACsS,GAAgB,CAACC,OAAQtK,IACzBsH,EAAQ,IAAMjS,OAAOC,KAAKgL,GAAgB9J,SAAUuB,EAAAA,EAAAA,KAAA,WAFxCoI,WAOhB,EC/BL7H,GAAYd,EAAAA,GAAOC,GAAG;;;EAKtBwT,GAAmB3D,IACvB,OAAQA,GACN,KAAK,EACH,MAAO,UACT,KAAK,EACH,MAAO,UACT,KAAK,EACH,MAAO,UACT,QACE,MAAO,UACX,EAGW4D,GAAgBA,KAC3B,MACEC,eAAgBC,EAAa,UAC7B3S,EAAS,SACT6C,EAAQ,UACRG,GC1B0B4P,MAC5B,MACEnQ,MAAOiQ,EAAc,UACrB1S,EAAS,SACT6C,EACAiB,WAAY+O,EAAkB,UAC9B7P,GACEZ,GAAuC,uBAAmBmD,EAAW,IAMzE,OAJAjC,EAAAA,EAAAA,YAAU,KACRuP,GAAoB,GACnB,IAEI,CAAEH,iBAAgB1S,YAAW6C,WAAUG,YAAW,EDcrD4P,GAEJ,OAAI/P,GAEAvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCoD,KAMLvD,EAAAA,EAAAA,KAACC,EAAAA,EAAI,CAAAE,UACH+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAKgT,KAAI,CAAA9S,SAAA,EACR+M,EAAAA,EAAAA,MAAC0B,GAAc,CACbE,iBAAiB,OACjB/B,SAAUsG,GAAeG,kBAAkB/U,OAC3CoQ,OAAQ,CAAC,sBAAuB,aAChCnL,UAAWA,EACXhD,UAAWA,EAAUP,SAAA,CAEpBkT,GAAeG,kBAAkB/U,QAChC4U,EAAcG,iBAAiBpV,KAAKqV,IAClCvG,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEtB,EAAiB4U,EAAKC,eAAe9U,QAChDoB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEsT,EAAKE,yBAFTF,EAAKC,iBAKlBxG,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAC0O,GAAQ,CAACxO,UAAU,UAAU0P,QAAS,EAAEzP,SAAC,8BAG1CH,EAAAA,EAAAA,KAAC0O,GAAQ,CAACkB,QAAS,EAAEzP,SAClBkT,EAAcO,yBALX,cAUV5T,EAAAA,EAAAA,KAAA,SACCqT,GAAe5G,YAAYhO,QAC1B4U,EAAc5G,WAAWrO,KAAKqV,IAC5BvG,EAAAA,EAAAA,MAAC3M,GAAS,CAACL,UAAU,OAAMC,SAAA,EACzBH,EAAAA,EAAAA,KAAA,OAAKE,UAAU,UAASC,SAAEsT,EAAK7U,QAC/BoB,EAAAA,EAAAA,KAACY,EAAAA,GAAI,CACHC,KAAM,CACJC,OAAQ2S,EAAKtQ,MAAM,GAAG0Q,OAAOzV,KAAKmJ,GAAUA,EAAMuM,QAClD7S,SAAUwS,EAAKtQ,MAAM/E,KAAI,CAAC9B,EAAMiT,KAAU,CACxC1O,KAAMvE,EAAKuX,OAAOzV,KAAKmJ,GAAUA,EAAMwM,QACvC3S,gBAAiB8R,GAAgB3D,GACjClO,YAAa6R,GAAgB3D,GAAS,KACtCrO,MAAO5E,EAAK0X,mBAGhB1S,QAAS,CACPI,qBAAqB,EACrBC,OAAQ,CACNC,EAAG,CACDM,KAAM,CACJC,MAAO,aAETC,MAAO,CACLD,MAAO,cAGXE,EAAG,CACDH,KAAM,CACJC,MAAO,aAETC,MAAO,CACLD,MAAO,eAIbZ,QAAS,CACPC,OAAQ,CACNC,SAAS,EACTwS,SAAU,MACVnT,OAAQ,CAAEqB,MAAO,cAEnB+R,QAAS,CACPC,UAAW,CAETjT,MAAQkT,GAAgBA,EAAYC,IAAIhE,QAAQ,WAzC3BoD,EAAK7U,YAkDvC,E,qCE/GX,MAyCA,GAzC+B0V,EAC7BjG,WACA9G,QACAkK,aACA8C,qBACAC,2BAEAxU,EAAAA,EAAAA,KAAA,OAAKE,UAAU,oDAAmDC,UAChEH,EAAAA,EAAAA,KAACyU,GAAAA,EAAM,CACLpG,SAAUA,EACVgE,QAAS9K,EACTmN,aAAa1U,EAAAA,EAAAA,KAAA,UACb2U,eAAe3U,EAAAA,EAAAA,KAAA,UACfJ,OAAQ,GACR6P,MAAO,GACPmF,aAAc,GACdC,eAAgB,GAChBC,QAAQ,UACRC,SAAS,UACTC,mBACEhV,EAAAA,EAAAA,KAAA,OACEE,UAAW,2DACTuR,EAAa,cAAgB,aAC5BtR,SAEFoU,IAGLU,qBACEjV,EAAAA,EAAAA,KAAA,OACEE,UAAW,2DACTuR,EAAa,cAAgB,aAC5BtR,SAEFqU,QCjCLU,GAAgBzV,EAAAA,GAAOC,GAAG;;EAwIhC,GAhIkCyV,EAChC5C,aAEA,MAAOC,EAAgBC,IAAqBpP,EAAAA,EAAAA,UAASkP,IAE/C,WAAExK,EAAU,gBAAEU,EAAe,aAAEC,EAAY,eAAEC,GACjD6B,MAEKvC,EAAeyK,IACpBrP,EAAAA,EAAAA,UAA4CkP,IAEvC6C,EAASC,IAAchS,EAAAA,EAAAA,WAAkB,GAiBhD,OAfAW,EAAAA,EAAAA,YAAU,KACJ0E,GACF+J,EAAkB,IAAKxK,GACzB,GACC,CAACS,KAEJ1E,EAAAA,EAAAA,YAAU,OAEJwO,EAAepJ,WAAanB,EAAcmB,WAC3CoJ,EAAepJ,YAAcnB,EAAcmB,YAE5CiM,GAAW,EACb,GACC,CAACpN,EAAcmB,aAGhB8D,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,OAAMC,SAAA,EACpB+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,iCAAgCC,SAAA,EACrD+M,EAAAA,EAAAA,MAACgI,GAAa,CACZnH,QAASA,IAAMsH,GAAYD,GAC3BlV,UAAU,4BAA2BC,SAAA,EAErC+M,EAAAA,EAAAA,MAAA,OAAA/M,SAAA,CACGoS,EAAO5V,MAAMiC,KAAK,OAAK2T,EAAO+C,OAAO1W,QACjC,IACNwW,GACCpV,EAAAA,EAAAA,KAACuV,GAAAA,EAAS,CAACrV,UAAU,UAErBF,EAAAA,EAAAA,KAACwV,GAAAA,EAAW,CAACtV,UAAU,aAI3BF,EAAAA,EAAAA,KAACsU,GAAsB,CACrB7C,WAAYxJ,EAAcmB,WAAaoJ,EAAepJ,UACtD7B,MAAOU,EAAcmB,UACrBmL,mBAAmB,KACnBC,qBAAqB,MACrBnG,SAAU9J,gBACkBxI,EACxB,yBACEkM,EAAcmB,UAAY,OAAS,mDAKrCsJ,EAAiB,IACZzK,EACHmB,WAAYnB,EAAcmB,WAE9B,OAILgM,IACCpV,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAA9S,UACR+M,EAAAA,EAAAA,MAACE,GAAAA,EAAI,CAAAjN,SAAA,EACHH,EAAAA,EAAAA,KAACoN,GAAAA,EAAKwF,MAAK,CAAC1S,UAAU,OAAMC,UAC1BH,EAAAA,EAAAA,KAACwR,GAAkB,CACjBC,WACExJ,EAAcwN,aAAejD,EAAeiD,YAE9CvU,MAAM,eAENqG,MAAOU,EAAcwN,YACrBpH,SAAWC,GACToE,EAAiB,IACZzK,EAEHwN,YAAanH,EAAEC,OAAOhH,aAK9BvH,EAAAA,EAAAA,KAACoN,GAAAA,EAAKwF,MAAK,CAAC1S,UAAU,OAAMC,UAC1BH,EAAAA,EAAAA,KAACwR,GAAkB,CACjBC,WACExJ,EAAcyN,aAAelD,EAAekD,YAE9CxU,MAAM,eAENqG,MAAOU,EAAcyN,YACrBrH,SAAWC,GACToE,EAAiB,IACZzK,EAEHyN,YAAapH,EAAEC,OAAOhH,aAM9BvH,EAAAA,EAAAA,KAACkR,GAAuB,CACtB5Q,QAAQ,OACRqI,eAAgBA,EAChBF,gBAAiBA,EACjBC,aAAcA,EACdqF,QAASA,KACP,MAAMlN,EAAO,CACX0J,SAAUgI,EAAO+C,OAAOzY,GACxB8Y,QAASpD,EAAO5V,MAAME,GACtBuM,UAAWnB,EAAcmB,UACzBqM,YAAaxN,EAAcwN,YAC3BC,YAAazN,EAAcyN,aAG7B3N,EAAWlH,EAAK,WAMrB,ECnHX,GAtBmC+U,KACjC,MAAM,WAAEpR,EAAU,MAAErB,EAAK,UAAEzC,EAAS,SAAE6C,GAAasS,KAMnD,OAJA7R,EAAAA,EAAAA,YAAU,KACRQ,GAAY,GACX,IAEC9D,GAAkBV,EAAAA,EAAAA,KAACD,EAAM,CAACH,OAAO,UACjC2D,GAAiBvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAG5CvD,EAAAA,EAAAA,KAAAoP,EAAAA,SAAA,CAAAjP,SACGgD,GAAO/E,KAAK9B,IACX0D,EAAAA,EAAAA,KAACmV,GAAyB,CAExB5C,OAAQjW,GADH,GAAGA,EAAKgZ,OAAOzY,MAAMP,EAAKK,MAAME,SAIxC,E,gDCpBA,MAAMiZ,GACXC,QAEsD9P,IAArD8P,EAAgC/M,iBCE7BuI,GAAkB9R,EAAAA,GAAOC,GAAG;;;;EA4BlC,GAtB4BsW,EAC1BvE,aACAvQ,QACAqG,QACA8G,WACA/M,cAEA4L,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACuR,GAAe,CAACrR,UAAWuR,EAAa,cAAgB,GAAGtR,SACzDe,KAEHlB,EAAAA,EAAAA,KAAC6R,GAAAA,EAAU,CAAA1R,UACTH,EAAAA,EAAAA,KAACoN,GAAAA,EAAK6I,OAAM,CAAC1O,MAAOA,EAAO8G,SAAUA,EAASlO,SAC3CmB,EAAQlD,KAAI,CAAC8X,EAAQ3G,KACpBvP,EAAAA,EAAAA,KAAA,UAAoBuH,MAAO2O,EAAO/V,SAC/B+V,GADU3G,YCXjB4G,IAAc1W,EAAAA,EAAAA,IAAO2W,GAAAA,EAAM;;EAI3B5W,GAAUC,EAAAA,GAAOC,GAAG;;;;;EAeb2W,GAAyBA,EACpCN,YACAO,oBACAC,YACAC,eACAC,6BAEA,MAAM,WAAE7Q,GAAe8Q,GAAkB,aAAaX,EAAUlZ,MAE1D8Z,EAAkBA,CAACvO,EAAab,KACpC,MAAMkK,EAAalK,GAAS+O,EAAkBrO,cAAcG,GAEtDwO,EAAc,CAAE/D,UADJ,GAAGzK,KAAO2N,EAAUlZ,KACLqE,MAAOkH,EAAKqJ,cAE7C,OAAIsE,EAAUc,iBAAiBzO,IAE3BpI,EAAAA,EAAAA,KAACgW,GAAmB,IACdY,EACJrP,MAAOA,GAAS,GAChB8G,SAAWC,GAAMkI,EAAapO,EAAKkG,EAAEC,OAAOhH,OAC5CjG,QAAS,CAAC,MAAOyU,EAAUc,iBAAiBzO,MAK7B,kBAAVb,GAEPvH,EAAAA,EAAAA,KAACoS,GAAmB,IACdwE,EACJrP,MAAOA,EACP8G,SAAWC,GAAMkI,EAAapO,EAAKkG,EAAEC,OAAO8D,WAK9C,CAAC,SAAU,UAAU5P,gBAAgB8E,IAErCvH,EAAAA,EAAAA,KAACwR,GAAkB,IACboF,EACJrP,MAAOA,EACP8G,SAAWC,GAAMkI,EAAapO,EAAKkG,EAAEC,OAAOhH,OAC5CmK,OAAQqE,EAAUe,mBAAmBrU,SAAS2F,GAAO,SAAMnC,EAC3D0L,cAAeA,IAAM6E,EAAapO,EAAK,OAKtC,IAAI,EAGb,OACE8E,EAAAA,EAAAA,MAACE,GAAAA,EAAI,CAAAjN,SAAA,CACF2V,GAAoBC,KACnB7I,EAAAA,EAAAA,MAAC1N,GAAO,CAAAW,SAAA,EACNH,EAAAA,EAAAA,KAAC+W,GAAAA,EAAK,CAACC,GAAG,OAAM7W,UvC0CmBtD,EuCzCHkZ,EAAUkB,avC0ClD3Z,OAAOC,KAAK/C,GAAkB8C,OAAOE,OAAOhD,GAAkBiD,QAAQZ,QuCvC9DmD,EAAAA,EAAAA,KAACmW,GAAW,CACVpI,QAASxJ,gBACmBxI,EACxB,gCAAgCga,EAAUnX,kCAI1CgH,GACF,OAKPtI,OAAOS,QAAQgY,EAAU9N,eACvBjK,QACC,EAAEoK,KACAmO,GAAaR,EAAUmB,uBAAuBzU,SAAS2F,KAE1DhK,KAAI,EAAEgK,EAAKb,MACVvH,EAAAA,EAAAA,KAACoN,GAAAA,EAAKwF,MAAK,CAET1S,UAAU,OACV2S,UAAW,GAAGzK,KAAO2N,EAAUlZ,KAAKsD,SAEnCwW,EAAgBvO,EAAKb,IAJjB,GAAGa,KAAO2N,EAAUlZ,QAO9B4Z,IACCzW,EAAAA,EAAAA,KAACmR,GAAAA,EAAM,CACL7Q,QAAQ,YACRF,KAAK,KACLF,UAAU,OACV6N,QAAS0I,EAAuBtW,SAE/BoW,GACCrJ,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACmX,GAAAA,EAAe,CAACjX,UAAU,SAAS,gBAItCgN,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACoX,GAAAA,EAAiB,CAAClX,UAAU,SAAS,oBvCHPrD,KuCSlC,EC/HLqY,GAAgBzV,EAAAA,GAAOC,GAAG;;;EAK1BF,GAAUC,EAAAA,GAAOC,GAAG;;;;EAeb2X,GAA2BA,EACtCtB,YACAQ,YACAE,yBACA9N,iBACAD,eACAD,sBAEAyE,SAAAA,EAAAA,MAACgI,GAAa,CACZnH,QAAS0I,EACTvW,UAAU,4BAA2BC,SAAA,CAEpCoW,GACCvW,EAAAA,EAAAA,KAACuV,GAAAA,EAAS,CAACrV,UAAU,UAErBF,EAAAA,EAAAA,KAACwV,GAAAA,EAAW,CAACtV,UAAU,SAExB4V,GAAoBC,IACnB/V,EAAAA,EAAAA,KAACR,GAAO,CAAAW,UACN+M,EAAAA,EAAAA,MAAA,OAAKhN,UAAU,4BAA2BC,SAAA,CACvC4V,EAAUnX,KAAM,IAChB6J,IACCzI,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CACNsR,GAAG,OACH/Q,UAAU,SACVD,KAAK,KACLuG,KAAK,SACLzG,UAAU,SAGbwI,IAAgB1I,EAAAA,EAAAA,KAACqR,GAAAA,EAAY,CAACnR,UAAU,SACxCyI,IAAkB3I,EAAAA,EAAAA,KAACsR,GAAAA,EAAG,CAACpR,UAAU,cAItC,GAAG6V,EAAUT,OAAO1W,SAASmX,EAAUuB,UAAUxa,YAAY8B,OAC3DmX,EAAUuB,UAAUC,YAAc,IAAM,MACvCxB,EAAUuB,UAAU1a,WAAWgC,SxCuEC/B,EwCtEjCkZ,EAAUyB,QxCuEhBla,OAAOC,KAAK9C,GAAkB6C,OAAOE,OAAO/C,GAAkBgD,QAAQZ,OwCtE7DkZ,EAAU0B,aAAe,GAAK,WxCqEA5a,KwClExC,E,0BCxED,MAAM2C,GAAUC,EAAAA,GAAOC,GAAG;;;;;EAcbgY,GAA4BA,EACvC3B,YACAO,oBACAqB,gBACAC,qBAEA1K,EAAAA,EAAAA,MAAC1N,GAAO,CAACU,UAAU,iCAAgCC,SAAA,EACjDH,EAAAA,EAAAA,KAACsU,GAAsB,CACrB7C,WAAYsE,EAAU5M,UAAYmN,EAAkBnN,SACpD5B,OAAQwO,EAAU5M,SAClBoL,oBAAoBvU,EAAAA,EAAAA,KAAC6X,GAAAA,EAAQ,IAC7BrD,sBAAsBxU,EAAAA,EAAAA,KAAC8X,GAAAA,EAAK,IAC5BzJ,SAAUsJ,KAGZ3X,EAAAA,EAAAA,KAACsU,GAAsB,CACrB7C,WAAYsE,EAAU3M,WAAakN,EAAkBlN,UACrD7B,MAAOwO,EAAU3M,UACjBmL,mBAAmB,KACnBC,qBAAqB,MACrBnG,SAAUuJ,OCoHhB,GA7I2BG,EAAGxF,aAC5B,MAAM,oBAAE1J,EAAmB,gBAAEJ,EAAe,eAAEE,EAAc,aAAED,GAC5DJ,MAEKgO,EAAmB0B,IAAwB3U,EAAAA,EAAAA,UAChD0C,KAAKkS,MAAMlS,KAAKC,UAAUuM,MAErBwD,EAAWmC,IAAgB7U,EAAAA,EAAAA,UAASkP,IACpCgE,EAAW4B,IAAgB9U,EAAAA,EAAAA,WAAkB,IAC7C+U,EAAqBC,IAA0BhV,EAAAA,EAAAA,UAEnD,CAAC,IAEJW,EAAAA,EAAAA,YAAU,KACJ0E,GACFsP,EAAqBjS,KAAKkS,MAAMlS,KAAKC,UAAU+P,IACjD,GACC,CAACrN,EAAc6J,IAElB,MAAMkE,EAAyBA,CAAC5Z,EAAY0Z,KAC1C8B,GAAwBC,IAAc,IACjCA,EACH,CAACzb,GAAK0Z,KACL,EA2BL,OACErJ,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAAoBC,UAAU,OAAMC,SAAA,EACvC+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,iCAAgCC,SAAA,EACrDH,EAAAA,EAAAA,KAACqX,GAAwB,CACvBtB,UAAWA,EACXQ,UAAWA,EACXE,uBAAwBA,IAAM0B,GAAc5B,GAC5C5N,iBAAkBA,EAClBF,gBAAiBA,EACjBC,eAAgBA,KAElB1I,EAAAA,EAAAA,KAAC0X,GAAyB,CACxB3B,UAAWA,EACXO,kBAAmBA,EACnBqB,cAtCkBpT,UACxB,MAAMgU,EAASxC,EAAU5M,SAAW,UAAY,QAIhD,SAH0BpN,EACxB,yBAAyBwc,KAAUxC,EAAUnX,oCAE9B,CACf,MAAM4Z,EAAe,IAAKzC,EAAW5M,UAAW4M,EAAU5M,UAC1D+O,EAAaM,GACb3P,EAAoB,IACf2P,GAEP,GA4BMZ,eAzBmBrT,UACzB,MAAMgU,EAASxC,EAAU3M,UAAY,OAAS,YACpBrN,EACxB,yBAAyBwc,KAAUxC,EAAUnX,oCAG7CsZ,EAAa,IAAKnC,EAAW3M,WAAY2M,EAAU3M,WACrD,OAqBGmN,IACCrJ,EAAAA,EAAAA,MAACjN,EAAAA,EAAKgT,KAAI,CAAA9S,SAAA,EACRH,EAAAA,EAAAA,KAACqW,GAAsB,CACrBN,UAAWA,EACXO,kBAAmBA,EACnBC,UAAW6B,EAAoBrC,EAAUlZ,IACzC4Z,uBAAwBA,IACtBA,EACEV,EAAUlZ,IACTub,EAAoBrC,EAAUlZ,KAGnC2Z,aAAcA,CAACpO,EAAab,IAC1B2Q,GAAcO,IAAI,IACbA,EACHxQ,cAAe,IAAKwQ,EAAKxQ,cAAe,CAACG,GAAMb,SAIpDwO,EAAU/M,iBAAiB5K,KAAI,CAACsa,EAAgBnJ,KAC/CrC,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAAyBC,UAAU,OAAMC,SAAA,EAC5CH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,iCAAgCC,UACrDH,EAAAA,EAAAA,KAACqX,GAAwB,CACvBtB,UAAW2C,EACXnC,UAAW6B,EAAoBM,EAAe7b,IAC9C4Z,uBAAwBA,IACtBA,EACEiC,EAAe7b,IACdub,EAAoBM,EAAe7b,UAK5CmD,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAA9S,UACRH,EAAAA,EAAAA,KAACqW,GAAsB,CACrBN,UAAW2C,EACXpC,kBAAmBA,EAAkBtN,iBAAiBuG,GACtDgH,UAAW6B,EAAoBM,EAAe7b,IAC9C2Z,aAAcA,CAACpO,EAAab,KAC1B,MAAMoR,EAAuB,IACxB5C,EAAU/M,kBAEf2P,EAAqBpJ,GAAOtH,cAAgB,IACvC0Q,EAAqBpJ,GAAOtH,cAC/B,CAACG,GAAMb,GAGT2Q,GAAcO,IAAI,IACbA,EACHzP,iBAAkB,IAAI2P,MACrB,QA9BAD,EAAe7b,OAoC5BmD,EAAAA,EAAAA,KAACkR,GAAuB,CACtB5Q,QAAQ,UACRqI,eAAgBA,EAChBF,gBAAiBA,EACjBC,aAAcA,EACdqF,QAASA,IACPlF,EAAoB,IACfkN,WAhFJA,EAAUlZ,GAsFd,ECzGX,GAxC4B+b,KAC1B,MAAM,eAAErQ,EAAc,oBAAEC,EAAmB,UAAE9H,EAAS,SAAE6C,GACtD+E,MACKuQ,EAAWC,IAAgBzV,EAAAA,EAAAA,YAMlC,OAJAW,EAAAA,EAAAA,YAAU,KACRwE,GAAqB,GACpB,IAEC9H,GAAkBV,EAAAA,EAAAA,KAACD,EAAM,CAACH,OAAO,UAEjC2D,GAEAvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCoD,KAMLvD,EAAAA,EAAAA,KAAAoP,EAAAA,SAAA,CAAAjP,UACEH,EAAAA,EAAAA,KAAC+Y,EAAAA,EAAI,CAACF,UAAWA,EAAWG,SAAWC,GAAMH,EAAaG,GAAK,IAAI9Y,SAChEoI,EAAenK,KAAI,CAAC8a,EAAoB3J,KACvCvP,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CACFC,MAAOF,EAAmBG,MAE1BC,SAAUJ,EAAmBG,MAAMlZ,UAEjC0Y,IAAcK,EAAmBG,QAC/BR,GAAuB,IAAVtJ,IACf2J,EAAmBzM,WAAWrO,KAAKmU,IACjCvS,EAAAA,EAAAA,KAAC+X,GAAkB,CAAmBxF,OAAQA,GAArBA,EAAO3T,SAN/Bsa,EAAmBG,YAW7B,ECqEP,GApG2BE,KACzB,MAAM,MACJC,EAAK,UACL9Y,EAAS,SACT6C,EAAQ,WACRkW,EAAU,UACVC,EAAS,eACTC,EAAc,WACdC,EAAU,iBACVC,EAAgB,WAChBC,GClBiBC,MACnB,MACE5W,MAAOqW,EAAK,UACZ9Y,EAAS,SACT6C,EACAiB,WAAYiV,GACV3W,GAA+B,SAE7B,SACJyG,EACA1M,GAAIid,EACJpZ,UAAWkZ,EACXlU,cAAeiU,EACfpW,SAAUsW,GACRG,KAOJ,MAAO,CACLR,QACA9Y,YACA6C,WACAkW,aACAC,UAVgBnV,gBACVgF,EAAS1I,EAAMA,EAAKhE,GAAI,QAAQgE,EAAKhE,MAC3C4c,GAAY,EASZG,aACAE,aACAH,iBACAE,mBACD,EDZGI,IACE,KAAEvT,EAAI,KAAEC,EAAI,YAAEF,IAAgBgB,EAAAA,EAAAA,YAAWnB,IAM/C,OAJAtC,EAAAA,EAAAA,YAAU,KACRyV,GAAY,GACX,IAEC/Y,GAAkBV,EAAAA,EAAAA,KAACD,EAAM,IACzBwD,GAEAvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCoD,KAKL2J,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAAC4O,GAAc,CACbC,OAAQ,CAAC,KAAM,OAAQ,OAAQ,SAAU,WACzC9B,SAAS,EAAM5M,SAEdqZ,EAAMpb,KAAK8b,IACVhN,SAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAA,MAAAG,SAAK+Z,EAAWrd,MAChBmD,EAAAA,EAAAA,KAAA,MAAAG,SAAK+Z,EAAWC,SAChBna,EAAAA,EAAAA,KAAA,MAAAG,U5CwGiBtD,E4CxGCqd,EAAWvT,K5CyGvCrJ,OAAOC,KAAK5C,GAAU2C,OAAOE,OAAO7C,GAAU8C,QAAQZ,Q4CxG5CmD,EAAAA,EAAAA,KAAA,MAAAG,SAAK+Z,EAAWE,UAAY,QAAU,UACtClN,EAAAA,EAAAA,MAAA,MAAIsC,MAAO,CAAEC,MAAO,SAAUtP,SAAA,CAC3BuG,IAASwT,EAAWC,OAASxT,IAAShM,EAAS0f,QAC9CnN,EAAAA,EAAAA,MAACiE,GAAAA,EAAM,CACL7Q,QAAQ,SACRF,KAAK,KACLF,UAAU,4BACV6N,QAASA,IACP2L,EAAU,CACR7c,GAAIqd,EAAWrd,GACfud,WAAYF,EAAWE,YAE1Bja,SAAA,CAEA+Z,EAAWE,UAAY,UAAY,QACnCN,IAAeI,EAAWrd,IAAM+c,IAC/B5Z,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CACNsR,GAAG,OACH/Q,UAAU,SACVD,KAAK,KACLuG,KAAK,SACLzG,UAAU,SAGb4Z,IAAeI,EAAWrd,IAAM8c,IAC/B3Z,EAAAA,EAAAA,KAACqR,GAAAA,EAAY,CAACnR,UAAU,SAEzB4Z,IAAeI,EAAWrd,IAAMgd,IAC/B7Z,EAAAA,EAAAA,KAACsR,GAAAA,EAAG,CAACpR,UAAU,YAIpBwG,IAASwT,EAAWC,QACnBna,EAAAA,EAAAA,KAACmR,GAAAA,EAAM,CACL7Q,QAAQ,UACRF,KAAK,KACLF,UAAU,4BACV6N,QAASA,KACP9G,aAAaa,WAAWnF,GACxB8D,GAAY,EAAM,EAClBtG,SACH,gBA7CE+Z,EAAWrd,I5C2GDA,K4CxDpB,MAEF8c,IACC3Z,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,UAAUJ,UAAU,OAAMC,SACtCwZ,IAGJE,IACC7Z,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAASJ,UAAU,OAAMC,SACrC0Z,MAGJ,EEpG+C,IAEjDS,GAAQ,SAARA,GAAQ,OAARA,EAAQ,UAARA,EAAQ,YAARA,EAAQ,4BAARA,EAAQ,uBAARA,EAAQ,cAARA,EAAQ,cAARA,CAAQ,EAARA,IAAQ,IASb,MA2DA,GA3D4BC,KAC1B,MAAMC,GAAWC,EAAAA,EAAAA,OACX,SAAE1X,IAAa2X,EAAAA,EAAAA,OAEdtS,EAAKuS,IAAUtX,EAAAA,EAAAA,UACP,mBAAbN,EAAgC,GAAGA,KAAYuX,GAASM,QAAU7X,GAGpE,OACEmK,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACE+M,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACHzY,QAAQ,QACRJ,UAAU,sBACV2Y,UAAWzQ,EACX4Q,SAAWC,IACJA,IAEL0B,EAAO1B,GACPuB,EAASvB,GAAE,EACX9Y,SAAA,EAEFH,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CACFG,SAAU,kBAAkBgB,GAASM,QACrCxB,MAAOkB,GAASM,OACXN,GAASM,QAEhB5a,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CACFG,SAAU,kBAAkBgB,GAASO,eACrCzB,MAAOkB,GAASO,cACXP,GAASO,eAEhB7a,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CACFG,SAAU,kBAAkBgB,GAASQ,MACrC1B,MAAOkB,GAASQ,KACXR,GAASQ,MAEhB9a,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CACFG,SAAU,kBAAkBgB,GAASS,OACrC3B,MAAOkB,GAASS,MACXT,GAASS,OAEhB/a,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CACFG,SAAU,kBAAkBgB,GAASU,QACrC5B,MAAOkB,GAASU,OACXV,GAASU,WAGlB9N,EAAAA,EAAAA,MAAC+N,EAAAA,GAAM,CAAA9a,SAAA,EACLH,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAAC3L,OAAK,EAAC4L,SAASnb,EAAAA,EAAAA,KAAC4Y,GAAmB,OAC1C5Y,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,QAAQD,SAASnb,EAAAA,EAAAA,KAAC4Y,GAAmB,OACjD5Y,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,UAAUD,SAASnb,EAAAA,EAAAA,KAAC4V,GAA0B,OAC1D5V,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,MAAMD,SAASnb,EAAAA,EAAAA,KAAC+S,GAAiB,OAC7C/S,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,OAAOD,SAASnb,EAAAA,EAAAA,KAACmT,GAAa,OAC1CnT,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,QAAQD,SAASnb,EAAAA,EAAAA,KAACuZ,GAAkB,WAEjD,E,gDCxCP,MAAM8B,IAAuB5b,EAAAA,EAAAA,IAAOoS,GAAAA,EAAWyJ,KAAK;;;;;;EAQ9CC,IAAuB9b,EAAAA,EAAAA,IAAO+b,GAAAA,EAASC,OAAO;;EAI9CC,IAAcjc,EAAAA,EAAAA,IAAO0R,GAAAA,EAAO;;;;;;;EAS5BwK,IAAelc,EAAAA,EAAAA,IAAO0R,GAAAA,EAAO;;EAI7ByK,GAAkBA,CACtBrf,EACAC,EACAF,KAEA,IAAKA,IAASA,EAAKG,WAAY,MAAO,GAEtC,MAAMof,EAActf,GAAUC,EAE9B,OAAKqf,EAEEvf,EAAKG,WACT2B,KAAKzB,GACAA,EAAMG,YAAYD,KAAOgf,EAAYhf,GAAWF,EAAMC,WACtDD,EAAMC,WAAWC,KAAOgf,EAAYhf,GAAWF,EAAMG,iBAAzD,IAEDkB,QAAQ8d,GAAcA,IAPAxf,EAAKyf,eAOK,EAG/BC,GAAWA,CAACC,EAAmBC,KACnC,OAAQD,GACN,IAAK,aACH,OAAOC,EAAOC,WAChB,IAAK,eACH,OAAOD,EAAOE,aAEhB,QACE,OAAOF,EAAOG,UAClB,EAGIC,GAAiBA,CACrBJ,EACAK,KAEA,MAAMC,EAAgBR,GAAS,aAAcE,EAAOO,MAC9CC,EAAgBV,GAAS,aAAcE,EAAOS,MAC9CC,EAAYJ,EAAgBE,EAClC,OAAIH,IAAc1hB,EAAcmC,KACvB4f,GAAa,KAASJ,EAAgBA,EAAgB,KAExDI,GAAa,KAASF,EAAgBA,EAAgB,IAAM,EACnE,IAEGG,GAAM,SAANA,GAAM,OAANA,EAAAA,EAAM,mBAANA,EAAAA,EAAM,iCAANA,EAAAA,EAAM,6BAANA,EAAAA,EAAM,mBAANA,EAAAA,EAAM,mBAANA,EAAAA,EAAM,iBAANA,EAAAA,EAAM,2BAANA,EAAAA,EAAM,mBAANA,CAAM,EAANA,IAAM,IAeX,MA+dA,GA/dqBC,EAAGC,kBACtB,MAAM,SACJje,EAAQ,cACR4G,EAAa,UACbhF,EAAS,SACT6C,EAAQ,kBACRyZ,EAAiB,OACjBd,EAAM,gBACNe,EAAe,eACfC,EAAc,YACdC,EAAW,uBACXC,EAAsB,2BACtBC,EAA0B,0BAC1BC,EAAyB,kBACzBC,GC3HgBC,MAClB,MACEjU,SAAUzK,EAAQ,UAClB4B,EAAS,cACTgF,EAAa,SACbnC,GACEyW,GAA6B,SAG/B7W,MAAO+Y,EACP9Y,SAAUqa,EACV/c,UAAWuc,EACX1Z,SAAU2Z,EAAc,WACxB1Y,GACE1B,QAAkCmD,GAAW,IAsB/C9C,MAAOoa,EACP7c,UAAW2c,EACX9Z,SAAU+Z,EACV9Y,WAAY4Y,GACVta,GAAwC,kBAE5C,MAAO,CACLhE,WACA4G,gBACAhF,YACA6C,WACAyZ,kBA/BwBA,CACxBU,EACAnT,EACA5M,KAEA,MAAMyO,EAAS,IAAIE,gBAAgB,CACjC/B,SAAUA,EAAShM,WACnBmf,YAAaA,EAAYnf,WACzBZ,OAAQA,EAAOY,aAGjBiG,EAAW,eAAe4H,EAAO7N,aAAa,EAqB9C2d,SACAe,kBACAC,iBACAC,YArBkBA,KAElBM,GAAW,EAoBXL,yBACAG,oBACAF,6BACAC,4BACD,EDoEGE,IAEE,eACJnT,EAAc,oBACdC,EACA5J,UAAWid,GACTC,MAEJ5Z,EAAAA,EAAAA,YAAU,KACRoZ,GAAwB,GACvB,IAEH,MAAO9H,EAAQuI,IAAaxa,EAAAA,EAAAA,aACrBya,EAAeC,IAAoB1a,EAAAA,EAAAA,aAEnC9G,EAAQyhB,IAAa3a,EAAAA,EAAAA,aACrB7G,EAAQyhB,IAAa5a,EAAAA,EAAAA,aAErB1F,EAAQugB,IAAa7a,EAAAA,EAAAA,UAAiB,MACtCmN,EAAO2N,IAAY9a,EAAAA,EAAAA,UAAiB,MAEpC+a,EAAYC,IAAiBhb,EAAAA,EAAAA,UAAwB,GAE5D,GAAIga,EAA4B,OAAOrd,EAAAA,EAAAA,KAACD,EAAM,CAACH,OAAO,UACtD,GAAI0d,EACF,OACEtd,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCmd,IAKP,MAAM7Z,EAAS6a,IACRA,EAAW7b,SAASoa,GAAO0B,SAASP,OAAU/X,GAC9CqY,EAAW7b,SAASoa,GAAO2B,SAASP,OAAUhY,GAC9CqY,EAAW7b,SAASoa,GAAO4B,aAAaJ,EAAc,GACtDC,EAAW7b,SAASoa,GAAO6B,gBAAgBX,OAAiB9X,GAC5DqY,EAAW7b,SAASoa,GAAO8B,SAASd,OAAU5X,GAC9CqY,EAAW7b,SAASoa,GAAO+B,SAASV,EAAU,KAC9CI,EAAW7b,SAASoa,GAAOgC,QAAQV,EAAS,KAC5CG,EAAW7b,SAASoa,GAAOgC,QAAQ1B,GAAa,EAGvD,OACEjQ,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACC,EAAAA,EAAI,CAACC,UAAU,OAAMC,UACpBH,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,eAAcC,UACjCH,EAAAA,EAAAA,KAAC8e,GAAAA,EAAG,CAAA3e,UACF+M,EAAAA,EAAAA,MAAC6R,GAAAA,EAAG,CAACC,GAAI,EAAE7e,SAAA,EACT+M,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SACjBpB,IAA0B,KAAb,cAEjBmO,EAAAA,EAAAA,MAACsO,GAAAA,EAAQ,CAAArb,SAAA,EACPH,EAAAA,EAAAA,KAACub,GAAoB,CAACjb,QAAQ,oBAAmBH,SAC9CmV,GAAQ1W,QAGXoB,EAAAA,EAAAA,KAACwb,GAAAA,EAASyD,KAAI,CAAA9e,SACXod,EAAmBnf,KAAK8X,IACvBlW,EAAAA,EAAAA,KAACwb,GAAAA,EAASvN,KAAI,CAEZF,QAASA,KACPgQ,EAAiB7H,GACjB2H,EAAU3H,EAAOZ,QACjB7R,EAAM,CACJoZ,GAAO6B,cACP7B,GAAO8B,OACP9B,GAAO4B,YACP,EACFte,SAED+V,EAAOZ,OAAO1W,MAXVsX,EAAOZ,OAAOzY,eAkB7BqQ,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,UACtB+M,EAAAA,EAAAA,MAACsO,GAAAA,EAAQ,CAAArb,SAAA,EACPH,EAAAA,EAAAA,KAACub,GAAoB,CACnBjb,QAAQ,oBACRwN,UAAWwH,EAAOnV,SAEjB5D,GAAQqC,QAGXoB,EAAAA,EAAAA,KAACwb,GAAAA,EAASyD,KAAI,CAAA9e,SACXyb,QAAgB3V,EAAWzJ,EAAQshB,IAAgB1f,KACjDzB,GACCA,IACEqD,EAAAA,EAAAA,KAACwb,GAAAA,EAASvN,KAAI,CAEZF,QAASA,KACPiQ,EAAUrhB,GACV8G,EAAM,CACJoZ,GAAO6B,cACP7B,GAAO8B,OACP9B,GAAO0B,OACP1B,GAAO4B,YACP,EACFte,SAEDxD,EAAMiC,MAXFjC,EAAMiC,aAiBtBrC,GAAUC,IACTwD,EAAAA,EAAAA,KAACmR,GAAAA,EAAM,CACL7Q,QAAQ,oBACRyN,QAASA,KACP,MAAMmR,EAAa3iB,EAEnByhB,EAAUxhB,GACVyhB,EAAUiB,EAAW,EACrB/e,UAEFH,EAAAA,EAAAA,KAACmf,GAAAA,EAAW,UAIlBjS,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,SACtB+M,EAAAA,EAAAA,MAACsO,GAAAA,EAAQ,CAAArb,SAAA,EACPH,EAAAA,EAAAA,KAACub,GAAoB,CACnBjb,QAAQ,oBACRwN,UAAWwH,EAAOnV,SAEjB3D,GAAQoC,QAGXoB,EAAAA,EAAAA,KAACwb,GAAAA,EAASyD,KAAI,CAAA9e,SACXyb,GAAgBrf,OAAQ0J,EAAW6X,IAAgB1f,KACjDzB,GACCA,IACEqD,EAAAA,EAAAA,KAACwb,GAAAA,EAASvN,KAAI,CAEZF,QAASA,KACPkQ,EAAUthB,GACV8G,EAAM,CACJoZ,GAAO6B,cACP7B,GAAO8B,OACP9B,GAAO0B,OACP1B,GAAO2B,OACP3B,GAAO4B,YACP,EACFte,SAEDxD,EAAMiC,MAZFjC,EAAMiC,aAkBtBrC,GAAUC,IACTwD,EAAAA,EAAAA,KAACmR,GAAAA,EAAM,CACL7Q,QAAQ,oBACRyN,QAASA,KACP,MAAMmR,EAAa3iB,EAEnByhB,EAAUxhB,GACVyhB,EAAUiB,EAAW,EACrB/e,UAEFH,EAAAA,EAAAA,KAACmf,GAAAA,EAAW,UAIlBjS,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAClB5D,GAAUC,EACTH,EAAayhB,EAAevhB,EAAQC,KACpC3B,EAAckC,KACZmQ,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,eAAcC,SAAA,CAC1BpB,IAAsB,GAAT,OACdvC,GAAQoC,SAGXsO,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,eAAcC,SAAA,CAC1BpB,IAAuB,GAAV,QACdxC,GAAQqC,QAGVG,IAGH,IAFA,YAKJiB,EAAAA,EAAAA,KAAC8R,GAAAA,EAAW,CACVjQ,KAAK,OACLkQ,UAAU,UACVxK,MAAO5J,EACP0Q,SAAWC,GAAM4P,EAAU5P,EAAEC,OAAOhH,OACpCuG,UAAWvR,KAEb2Q,EAAAA,EAAAA,MAACiE,GAAAA,EAAM,CACL7Q,QAAQ,oBACRyN,QAASA,KACP,MAAM2P,EAAczgB,EAClB6gB,EACAvhB,EACAC,GAGGkhB,GAAgBpI,GAErB0H,EACEU,EAAY7gB,GACZyY,EAAOzY,GACPa,EAAYC,GACb,EAEHmQ,UACGvR,IAAWC,GAAqB,KAAXmB,GAA4B,MAAXA,EACxCwC,SAAA,CACF,cACa,IACX8c,IACCjd,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CACNsR,GAAG,OACH/Q,UAAU,SACVD,KAAK,KACLuG,KAAK,eAIXuG,EAAAA,EAAAA,MAACiE,GAAAA,EAAM,CACL7Q,QAAQ,oBACRyN,QAASxJ,UACP,IAAKhI,IAAWC,IAAW8Y,EAAQ,aAE7BhL,EAAoBgL,GAAQzY,IAElC,MAAM4D,EAAU4J,EAAe3N,MAC5B4Y,GAAWA,EAAO3Y,MAAME,KAAON,EAAOM,MACtC4D,QAGDA,GACApE,EAAayhB,EAAevhB,EAAQC,KAClC3B,EAAckC,MAGhB0D,GAAoBjE,EAAOgU,OAGzB/P,GACFyd,EAAUzd,EAAQlC,WACpB,EAEFuP,UAAWvR,IAAWC,EAAO2D,SAAA,CAE5B9D,EAAayhB,EAAevhB,EAAQC,KACrC3B,EAAckC,IACV,OACA,MAAO,IACV4gB,IACC3d,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CACNsR,GAAG,OACH/Q,UAAU,SACVD,KAAK,KACLuG,KAAK,kBAMbuG,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,WACtBH,EAAAA,EAAAA,KAAC8R,GAAAA,EAAW,CACVjQ,KAAK,OACLkQ,UAAU,UACVxK,MAAOiJ,EACPnC,SAAWC,GAAM6P,EAAS7P,EAAEC,OAAOhH,OACnCuG,UAAWvR,IAAWC,IAEvB0f,GAAQO,MAAQP,GAAQS,OACvB3c,EAAAA,EAAAA,KAAC0b,GAAW,CACVpb,QAAQ,oBACRJ,UAAYnB,IAAsB,GAAT,OACzBgP,QAASA,KACP,IAAK+P,EAAe,OAEpB,MAAMvB,EAAYlgB,EAChByhB,EACAvhB,EACAC,GAGF2hB,EAAS7B,GAAeJ,EAAQK,GAAYhe,WAAW,EACvD4B,SAED5D,GACDC,GACAH,EAAayhB,EAAevhB,EAAQC,KAClC3B,EAAcmC,MACdkQ,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,eAAcC,SAAA,CAAC,IAC3Bmc,GAAeJ,EAAQrhB,EAAcmC,MAAMqT,QAAQ,OAGvDnD,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,eAAcC,SAAA,CAAC,IAC3Bmc,GAAeJ,EAAQrhB,EAAckC,KAAKsT,QAAQ,QAK3D6L,GAAQO,MACPP,GAAQS,MACR,CAAC,aAAc,eAAgB,aAAave,KACzC6d,IACCjc,EAAAA,EAAAA,KAAC0b,GAAW,CAEVpb,QAAQ,oBACRJ,UAAYnB,IAAsB,GAAT,OACzBgP,QAASA,KACP,IAAK+P,EAAe,OAEpB,MAAMvB,EAAYlgB,EAChByhB,EACAvhB,EACAC,GAGE+f,IAAc1hB,EAAckC,IAC9BohB,EACEnC,GAASC,EAAWC,EAAOO,MAAMle,YAE1Bge,IAAc1hB,EAAcmC,MACrCmhB,EACEnC,GAASC,EAAWC,EAAOS,MAAMpe,WAErC,EACA4B,SAED5D,GACDC,GACAH,EAAayhB,EAAevhB,EAAQC,KAClC3B,EAAckC,KACdmQ,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,eAAcC,SAAA,CAC3B8b,EAAU,GACVD,GAASC,EAAWC,EAAOO,MAAMpM,QAAQ,OAG5CnD,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,eAAcC,SAAA,CAC3B8b,EAAU,GACVD,GAASC,EAAWC,EAAOS,MAAMtM,QAAQ,OAlCzC4L,SAyCf/O,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAClB5D,GAAUC,EACTH,EAAayhB,EAAevhB,EAAQC,KACpC3B,EAAckC,KACZmQ,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,eAAcC,SAAA,CAC1BpB,IAAuB,GAAV,QACdxC,GAAQqC,SAGXsO,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,eAAcC,SAAA,CAC3B,IACCpB,IAAsB,GAAT,OACdvC,GAAQoC,QAGVG,IAGH,IAFA,YAKJiB,EAAAA,EAAAA,KAAC8R,GAAAA,EAAW,CACVvK,MACa,MAAX5J,GAA4B,MAAV6S,GACb9S,EAAYC,GAAUD,EAAY8S,IAAQH,Q5C9fpC,G4CigBP,IAENvC,UAAU,QAGdZ,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,YACtBH,EAAAA,EAAAA,KAAC8R,GAAAA,EAAW,CACVvK,MAAO6W,GAAc,GACrB/P,SAAWC,GACT+P,EAAczgB,OAAO+P,SAASW,EAAEC,OAAOhH,QAEzCuG,UAA0B,IAAhBsQ,KAEZpe,EAAAA,EAAAA,KAAC6R,GAAAA,EAAWyJ,KAAI,CAAAnb,SAAC,eACjBH,EAAAA,EAAAA,KAAC6R,GAAAA,EAAWuN,SAAQ,CAClB/M,SAAyB,IAAhB+L,EACT/P,SAAUA,IAAMgQ,EAA6B,IAAfD,EAAmB,GAAK,kBAOlElR,EAAAA,EAAAA,MAAA,OAAKhN,UAAU,qCAAoCC,SAAA,EAEjD+M,EAAAA,EAAAA,MAACyO,GAAY,CACXzb,UAAU,YACVI,QAAQ,UACRwN,UAAWvR,IAAWC,IAAWmB,IAAW6S,GAAS9P,EACrDqN,QAASxJ,UACP,IAAK+Q,IAAW/Y,IAAWC,EAAQ,OAEnC,MAAM+f,EAAYlgB,EAAayhB,EAAevhB,EAAQC,GAEhDkhB,EAAczgB,EAAe6gB,EAAevhB,EAAQC,GAE1D,IAAK+f,IAAcmB,EAAa,OAEhC,MAAM2B,EAA4B,CAChCC,0BAA0C,IAAhBlB,EAAoB,KAAOA,EACrD7T,SAAU+K,EAAOzY,GACjB6gB,YAAaA,EAAY7gB,GACzB0f,YACA5e,OAAQD,EAAYC,GACpB6S,MAAwB,iBAAVA,EAAqB9S,EAAY8S,GAASA,GAG1D,UACQ1R,EAASugB,OAAcpZ,EAAW,QAExC8W,U/C7gBL,IAAI9gB,SAASC,GAAYqjB,WAAWrjB,E+C+gBnB,OACZ6gB,GACF,CAAE,MAAO,GACT5c,SAAA,CACH,WACU,IACRO,IACCV,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CAACsR,GAAG,OAAO/Q,UAAU,SAASD,KAAK,KAAKuG,KAAK,eAGzD3G,EAAAA,EAAAA,KAAC2b,GAAY,CACXzb,UAAU,YACVI,QAAQ,SACRyN,QAASA,IAAMtK,EAAM,IAAItD,SAC1B,aAKFuF,IAAiB1F,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,UAASH,SAAEuF,IAC3CnC,IAAYvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,IACrC2Z,IAAkBld,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAE+c,MAC3C,EEhlBDsC,GAAU/f,EAAAA,GAAOwQ,CAAuB;WAClCtQ,GAAWA,EAAM8f,QAAU,oBAAsB;qBACvC9f,GAAWA,EAAM8f,QAAU,YAAc;YAClD9f,GAAWA,EAAM8f,QAAU,UAAY;;;aAGtC9f,GAAWA,EAAM8f,QAAU,UAAY;;EAUxCC,GAAiBA,EAC5BC,QACAxf,WACAyf,wBAEA5f,EAAAA,EAAAA,KAACwf,GAAO,CACNC,UAAWE,EAAMlhB,OACjBohB,KAAuB,IAAjBF,EAAMlhB,OAAekhB,EAAM,QAAK1Z,EACtC8H,QAAS4R,EAAMlhB,OAAS,EAAI,IAAMmhB,GAAkB,QAAQ3Z,EAC5DsI,OAAO,SACPuR,IAAI,aAAY3f,SAEfA,I,eC3BL,MAAM4f,GAAWtgB,EAAAA,GAAOugB,EAAE;;;EAKpBC,GAAWxgB,EAAAA,GAAOygB,EAAE;;;;;EAabC,GAAaA,EACxBR,QACAS,iBACAR,wBAEA1S,EAAAA,EAAAA,MAACmT,GAAAA,EAAK,CAACC,KAAMF,EAAgBG,OAAQA,IAAMX,GAAkB,GAAOzf,SAAA,EAClEH,EAAAA,EAAAA,KAACqgB,GAAAA,EAAMrN,OAAM,CAACwN,aAAW,EAACtgB,UAAU,cACpCF,EAAAA,EAAAA,KAACqgB,GAAAA,EAAMpN,KAAI,CAAA9S,UACTH,EAAAA,EAAAA,KAAC+f,GAAQ,CAAA5f,SACNwf,EAAMvhB,KAAKqiB,IACVzgB,EAAAA,EAAAA,KAACigB,GAAQ,CAAA9f,UACPH,EAAAA,EAAAA,KAAA,KAAGuO,OAAO,SAASuR,IAAI,aAAaD,KAAMY,EAAKtgB,SAC5CsgB,KAFUA,YC+HzB,GAhJsBC,KACpB,MAAM,QAAE/V,EAAO,OAAED,IAAWjD,EAAAA,EAAAA,YAAWgD,KACjC,aACJkW,EAAY,UACZjgB,EAAS,SACT6C,EAAQ,eACRqd,EAAc,SACdC,EAAQ,aACRC,EAAY,gBACZC,EAAe,eACfC,EAAc,UACdtd,EAAS,WACTwG,EAAU,cACVC,GCjBoB8W,MACtB,MAAM,WAAE/W,EAAU,cAAEC,GAAkB+W,KAEhC9U,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClB6U,SACEla,aAAaC,QAAQrE,KAAsC,KAC7DqH,WAAYA,EAAW3L,cAE3B,CAAC2L,KAID/G,MAAOwd,EAAY,UACnBjgB,EAAS,SACT6C,EACAiB,WAAY4c,EAAiB,UAC7B1d,GACEZ,GACF,QAAQsJ,EAAO7N,kBACf0H,EACA,IAGFjC,EAAAA,EAAAA,YAAU,KACRod,GAAmB,GAClB,CAAClX,IAEJ,MAAM,WACJnC,EACAlL,GAAIgkB,EACJngB,UAAWqgB,EACXrb,cAAeob,EACfvd,SAAUyd,GACRpY,KAKJ,MAAO,CACLwY,oBACAT,eACAjgB,YACA6C,WACAqd,eARsB/jB,GACtBkL,EAAW,KAAMlL,EAAI,eAAeA,KAQpCgkB,WACAC,eACAC,kBACAC,iBACAtd,YACAwG,aACAC,gBACD,EDnCG8W,IACGb,EAAgBR,IAAqBvc,EAAAA,EAAAA,WAAS,GAErD,OACE6J,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAE3CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzB2J,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAAC4O,GAAc,CACblO,UAAWA,EACXmO,OAAQ,CACN,cACA,SACA,WACA,SACA,kBACA,OACA,MACA,iBACA,aACA,OACA,CAAC,UAAW,UAEd9B,SAAU4T,GAAcxd,OAAO1E,OAC/ByL,WAAYA,EACZC,cAAeA,EACfqD,WAAYmT,EAAanT,WACzBD,kBAAmBoT,EAAazW,WAChCiF,eAAgBtM,GAAkC1C,SAEjDwgB,GAAcxd,OAAO/E,KAAKU,IACzB,MAAMuiB,EAAa1W,EAAQjO,MACxB4Y,GAAWA,EAAOzY,KAAOiC,EAASyL,YAClC3L,KAEG0iB,EAAiB5W,EAAOhO,MAC3BC,GAAUA,EAAME,KAAOiC,EAASyiB,gBAChC3iB,KAEG4iB,EAAkB9W,EAAOhO,MAC5BC,GAAUA,EAAME,KAAOiC,EAAS2iB,iBAChC7iB,KAEG8iB,EAAe5jB,IAAepB,MACjCilB,GAAO/jB,OAAO+jB,EAAG9kB,MAAQiC,EAAS8iB,cAClCpjB,aAEH,OACE0O,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEjD,EAAe4B,EAASkC,YACnChB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAErB,EAAS+iB,aACpB3U,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,CACNuhB,EAAa,KAAGL,MAEnBnU,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,CAAErB,EAASgjB,aAAa,QACjC5U,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,CACNrB,EAASijB,eAAe,IAAEP,MAE7BtU,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,EACLrB,EAASkjB,WAAa,GAAG3R,QhDpFhB,GgDoF0C,IAC3B,IAAzBvR,EAASmjB,YACNX,EACAE,MAENtU,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,EACLrB,EAASojB,gBAAkB,GAAG7R,QhD1FrB,GgD0F+C,IAChC,IAAzBvR,EAASmjB,YACNT,EACAF,MAENthB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAErB,EAASqjB,eAAe9R,QAAQ,MAC3CrQ,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAErB,EAASsjB,WAAW/R,QAAQ,MACvCrQ,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,UACPH,EAAAA,EAAAA,KAAC0f,GAAc,CACbC,MAAO7gB,EAAS6gB,MAChBC,kBAAmBA,EAAkBzf,SAEpCrB,EAAS+C,OAASjH,EAAaynB,OAC5B,SACA,cAGRriB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,UACLrB,EAASwjB,aACTxjB,EAAS8iB,aAAevnB,EAAiBkoB,OACvCrV,EAAAA,EAAAA,MAACiE,GAAAA,EAAM,CACL7Q,QAAQ,UACRF,KAAK,KACL2N,QAASA,IAAM6S,EAAe9hB,EAASjC,IAAIsD,SAAA,CAC5C,SACQ,IACN0gB,IAAa/hB,EAASjC,IAAMkkB,IAC3B/gB,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CACNsR,GAAG,OACH/Q,UAAU,SACVD,KAAK,KACLuG,KAAK,iBAMjB3G,EAAAA,EAAAA,KAACmgB,GAAU,CACTR,MAAO7gB,EAAS6gB,MAChBS,eAAgBA,EAChBR,kBAAmBA,MAzDd9gB,EAASjC,GA2Db,MAIVikB,IACC9gB,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,UAASH,SACtC2gB,IAGJE,IACChhB,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrC6gB,SAKR,E,eEnJA,MAAMwB,GAAcA,EAAGzU,cAC5B/N,EAAAA,EAAAA,KAAA,OAAK+N,QAASA,EAAQ5N,UACpBH,EAAAA,EAAAA,KAACyiB,GAAAA,EAAc,MCQbC,IAAuBjjB,EAAAA,EAAAA,IAAOmP,GAAe;;;;;;;;;;;;;;;;;;;EA0B7C+T,GAAiBA,EAAGhmB,QAAOgO,cAC/BuC,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAA,MAAAG,SAAKxD,EAAMiC,OACV+L,EAAQvM,KAAKkX,IACZ,MAAM,QAAE7U,GACN6U,EAAO5K,OAAOhO,MACXkmB,GAAgBjmB,GAAOE,KAAO+lB,EAAYjmB,MAAME,MAC9C,CAAC,EAER,OAAI4D,SACKT,EAAAA,EAAAA,KAAA,MAAAG,SAA4C,KAAnC,GAAGxD,EAAME,MAAMyY,EAAOA,OAAOzY,OAI7CqQ,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,CACsB,IAAnBM,GAASoiB,MACN,EACA3jB,EAAMuB,GAASoiB,OAAS,EAAGlmB,EAAMwT,cAAcE,QAC7C1T,EAAMwT,cAEX1P,GAASqiB,OAASriB,GAASoiB,MACxB,KACA,KAAK3jB,EAAMuB,GAASqiB,MAAQ,EAAGnmB,EAAMwT,cAAcE,QACjD1T,EAAMwT,mBATL,GAAGxT,EAAME,MAAMyY,EAAOA,OAAOzY,KAWjC,MAxBF,GAAGF,EAAME,MAAMF,EAAMiC,QAmC1BmkB,GAA2BA,EAC/B1J,QACA2J,2BAEAhjB,EAAAA,EAAAA,KAAC0iB,GAAoB,CACnB3V,SAAS,EACT8B,OAAQ,CACN,EAAC7O,EAAAA,EAAAA,KAACwiB,GAAW,CAAezU,QAASiV,GAAnB,WAA6C,WAC5D3J,EAAM1O,QAAQvM,KAAK9B,GAASA,EAAKgZ,OAAO1W,QAC3CuB,SAEDkZ,EAAM3O,OAAOtM,KAAI,EAAGzB,YACnBqD,EAAAA,EAAAA,KAAC2iB,GAAc,CAEbhmB,MAAOA,EACPgO,QAAS0O,EAAM1O,SAFV,GAAGhO,EAAME,MAAMF,EAAMiC,YA6DlC,GA7CuBqkB,EACrBxZ,uBACAuZ,uBACAtiB,YACA6C,WACAG,gBAEA,MAAOwf,EAASC,IAAc9f,EAAAA,EAAAA,YAM9B,OAJAW,EAAAA,EAAAA,YAAU,KACRgf,GAAsB,GACrB,KAGD9V,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,MACiB8F,IAAdvC,QAAyCuC,IAAdvF,IAC1BV,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAG7CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzB2J,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACIsJ,EAAqBhL,SAAUuB,EAAAA,EAAAA,KAACD,EAAM,CAACH,OAAO,WAEhDI,EAAAA,EAAAA,KAAC+Y,EAAAA,EAAI,CACHzY,QAAQ,QACRuY,UAAWqK,EACXlK,SAAWC,GAAMkK,EAAWlK,QAAKhT,GAAW9F,SAE3CsJ,EAAqBrL,KAAKib,IACzBrZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAUD,EAAMza,KAAMwa,MAAOC,EAAMza,KAAKuB,UAC3CH,EAAAA,EAAAA,KAAC+iB,GAAwB,CACvB1J,MAAOA,EACP2J,qBAAsBA,KAHyB3J,EAAMza,eAUhE,EC5HP,GAnBuBwkB,KACrB,MAAM,qBAAE3Z,EAAoB,UAAE/I,EAAS,SAAE6C,EAAQ,WAAEiB,EAAU,UAAEd,GAC7D2f,KAEF,OACEnW,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACijB,GAAc,CACbxZ,qBAAsBA,EACtB/I,UAAWA,EACXsiB,qBAAsBxe,EACtBjB,SAAUA,EACVG,UAAWA,KAEb1D,EAAAA,EAAAA,KAAC8c,GAAY,CAACC,YAAavY,KAC3BxE,EAAAA,EAAAA,KAAC0gB,GAAa,MACb,E,qCCRP,MAAMlhB,GAAUC,EAAAA,GAAOC,GAAG;;;EAKpBwS,IAAkBzS,EAAAA,EAAAA,IAAO2N,GAAAA,EAAK+E,MAAM;;;;;;;;;;;;;;EAgBpCmR,IAAmB7jB,EAAAA,EAAAA,IAAOQ,EAAAA,EAAK+S,OAAO;;;EAKtCuQ,GAAoBC,IACxB,OAAQA,GACN,KAAKpd,GAASqd,YACZ,MAAO,aACT,KAAKrd,GAASsd,QACZ,MAAO,YACT,KAAKtd,GAASud,MACZ,MAAO,eACT,KAAKvd,GAASwd,MACZ,MAAO,cACT,QACE,MAAO,GACX,EAmJF,GAhJ4BC,KAC1B,MAAM,KACJC,EAAI,UACJpjB,EAAS,SACT6C,EAAQ,UACRG,EAAS,WACTwG,EAAU,cACVC,EAAa,WACb4Z,EAAU,OACVC,EAAM,UACNC,EAAS,QACTC,EAAO,WACPC,GhDxCgBC,MAClB,MAAM,SAAEpZ,EAAQ,OAAEC,IAAWxD,EAAAA,EAAAA,YAAWgD,KAElC,WAAEP,EAAU,cAAEC,GAAkB+W,MAC/B8C,EAAQC,IAAa5gB,EAAAA,EAAAA,UAA0B,CACpD+C,GAASud,MACTvd,GAASwd,MACTxd,GAASsd,WAGJQ,EAASC,IAAc9gB,EAAAA,EAAAA,UAA6B,CACzDgD,GAAYge,OACZhe,GAAYie,OACZje,GAAYke,IACZle,GAAYme,IACZne,GAAYoe,KACZpe,GAAYqe,OAGRtY,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClBC,KAAMvB,EACNwB,GAAIvB,EACJkW,SAAUla,aAAaC,QAAQrE,KAAkC,OACjEqH,WAAYA,EAAW3L,WACvBomB,WAAYX,EAAOY,KAAK,MAAQxe,GAASwd,MACzCiB,aAAcX,EAAQU,KAAK,MAAQve,GAAYge,UAEnD,CAACrZ,EAAUC,EAAQf,EAAY8Z,EAAQE,KAIvC/gB,MAAO2gB,EAAI,UACXpjB,EAAS,SACT6C,EACAiB,WAAYsgB,EAAS,UACrBphB,GACEZ,GACF,OAAOsJ,EAAO7N,kBACd0H,EACA,IACA,IAGML,WAAYme,EAAYrjB,UAAWqkB,GACzCrO,GAA4B,OAQ9B,OANA1S,EAAAA,EAAAA,YAAU,KACH+gB,GACHD,GACF,GACC,CAAC9Z,EAAUC,EAAQf,EAAY6a,EAAqBf,EAAQE,IAExD,CACLJ,OACApjB,YACA6C,WACAG,YACAwG,aACAC,gBACA4Z,aACAgB,sBACAf,SACAC,YACAC,UACAC,aACD,EgD1BGa,GAkBJ,OACE9X,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACE+M,EAAAA,EAAAA,MAAC1N,GAAO,CAAAW,SAAA,EACN+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,qBAAoBC,SAAA,EAClC+M,EAAAA,EAAAA,MAACoW,GAAgB,CAAAnjB,SAAA,EACfH,EAAAA,EAAAA,KAAA,OAAKE,UAAU,4BAA2BC,SAAC,YAC3C+M,EAAAA,EAAAA,MAAA,OAAKhN,UAAU,4BAA2BC,SAAA,EACxCH,EAAAA,EAAAA,KAACilB,GAAAA,EAAQ,CACPlX,QAASA,IAAMkW,EAAU3mB,OAAOE,OAAO4I,KACvClG,UAAU,OACVsP,MAAO,CAAE0V,OAAQ,cAEnBllB,EAAAA,EAAAA,KAACmlB,GAAAA,EAAI,CACHpX,QAASA,IAAMkW,EAAU,IACzB/jB,UAAU,OACVsP,MAAO,CAAE0V,OAAQ,oBAIvBllB,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,WAAUC,UAC7BH,EAAAA,EAAAA,KAAA,OAAKE,UAAU,sCAAqCC,SACjD7C,OAAOE,OAAO4I,IAAUhI,KAAKolB,IAC5BxjB,EAAAA,EAAAA,KAACkS,GAAe,CAEdrQ,KAAK,WACLX,MAAOsiB,EACP3mB,GAAI2mB,EACJnR,QAAS2R,EAAOvhB,SAAS+gB,GACzBnV,SAAUA,IA5CCmV,KACzBS,GAAWmB,GACTA,EAAW3iB,SAAS+gB,GAChB4B,EAAWpnB,QAAQqnB,GAAQA,IAAQ7B,IACnC,IAAI4B,EAAY5B,IACrB,EAuC6B8B,CAAkB9B,IAL7BA,aAYftW,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,qBAAoBC,SAAA,EAClC+M,EAAAA,EAAAA,MAACoW,GAAgB,CAAAnjB,SAAA,EACfH,EAAAA,EAAAA,KAAA,OAAAG,SAAK,aACL+M,EAAAA,EAAAA,MAAA,OAAKhN,UAAU,4BAA2BC,SAAA,EACxCH,EAAAA,EAAAA,KAACilB,GAAAA,EAAQ,CACPlX,QAASA,IAAMoW,EAAW7mB,OAAOE,OAAO6I,KACxCnG,UAAU,OACVsP,MAAO,CAAE0V,OAAQ,cAEnBllB,EAAAA,EAAAA,KAACmlB,GAAAA,EAAI,CACHpX,QAASA,IAAMoW,EAAW,IAC1BjkB,UAAU,OACVsP,MAAO,CAAE0V,OAAQ,oBAIvBllB,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,WAAUC,UAC7BH,EAAAA,EAAAA,KAAA,OAAKE,UAAU,sCAAqCC,SACjD7C,OAAOE,OAAO6I,IAAajI,KAAKmnB,IAC/BvlB,EAAAA,EAAAA,KAACkS,GAAe,CAEdrQ,KAAK,WACLX,MAAOqkB,EACP1oB,GAAI0oB,EACJlT,QAAS6R,EAAQzhB,SAAS8iB,GAC1BlX,SAAUA,IApEEkX,KAC1BpB,GAAYqB,GACVA,EAAY/iB,SAAS8iB,GACjBC,EAAYxnB,QAAQynB,GAAQA,IAAQF,IACpC,IAAIC,EAAaD,IACtB,EA+D6BG,CAAmBH,IAL9BA,gBAajBvlB,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAE3CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzBvD,EAAAA,EAAAA,KAAC4O,GAAc,CACblO,UAAWA,EACXmO,OAAQ,CACN,EACE3B,EAAAA,EAAAA,MAAA,OAAiBhN,UAAU,qBAAoBC,SAAA,CAAC,YAE9CH,EAAAA,EAAAA,KAAC2lB,GAAAA,EAAM,CAAC5X,QAASA,IAAMgW,IAAc7jB,UAAU,WAFxC,SAIT,SAEF,CAAC,SAAU,QACX,CAAC,QAAS,QACV,CAAC,gBAAiB,UAEpB6M,SAAU+W,EAAK3gB,OAAO1E,OACtByL,WAAYA,EACZC,cAAeA,EACfqD,WAAYsW,EAAKtW,WACjBD,kBAAmBuW,EAAK5Z,WACxBiF,eAAgBtM,GAA8B1C,SAE7C2jB,EAAK3gB,OAAO/E,KAAI,CAACwnB,EAAKrW,KACrBrC,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAA,MAAAG,SAAKjD,EAAe0oB,EAAI5kB,YACxBhB,EAAAA,EAAAA,KAAA,MAAAG,SAAKylB,EAAIL,UACTvlB,EAAAA,EAAAA,KAAA,MACEE,UAAW,GAAGqjB,GAAiBqC,EAAIpC,SACnCzV,QAASA,IAAM8X,MAAMD,EAAIE,WAAW3lB,SAEnCylB,EAAIpC,SAEPxjB,EAAAA,EAAAA,KAAA,MAAAG,SAAKylB,EAAIrgB,YATFgK,SAcd,EC3KDwW,GAA8BC,IAClC,MAAMC,EAAS,CACb,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAKF,OAAOA,GAFQroB,OAAOooB,GAAmB,GAAKC,EAAOxnB,OAEjC,EAGhB8B,GAAYd,EAAAA,GAAOC,GAAG;;;;EA2F5B,GArF8BwmB,KAC5B,MAAM,qBAAEC,EAAoB,UAAEzlB,EAAS,SAAE6C,GC1CP6iB,MAClC,MAAM,SAAEpb,EAAQ,OAAEC,EAAM,gBAAEH,IAAoBrD,EAAAA,EAAAA,YAAWgD,IAEnD2B,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClBC,KAAMvB,EACNwB,GAAIvB,EACJ6F,YAAahG,GAAiBjO,IAAI0B,YAAc,MAEpD,CAACyM,EAAUC,EAAQH,KAInB3H,MAAOgjB,EAAoB,UAC3BzlB,EAAS,SACT6C,EACAiB,WAAY6hB,GACVvjB,GACF,yBAAyBsJ,EAAO7N,cAOlC,OAJAyF,EAAAA,EAAAA,YAAU,KACRqiB,GAAgB,GACf,CAACrb,EAAUC,EAAQH,IAEf,CACLqb,uBACAzlB,YACA6C,WACD,EDaC+iB,GAEF,GAAI/iB,EACF,OACEvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCoD,IAKP,MAAMgjB,GAAQla,EAAAA,EAAAA,UACZ,IACE8Z,GAAsB/nB,KAAKooB,GAAUA,EAAMxlB,QAAQvF,QAAQ,QAAS,OACtE,CAAC0qB,IAGH,GAAIzlB,EACF,OAAOV,EAAAA,EAAAA,KAACD,EAAM,CAACH,OAAO,UAGxB,MAAM6mB,EAAqCN,EA1DtCje,QACH,CAACC,EAAK7L,KACC6L,EAAI7L,EAAK0pB,mBACZ7d,EAAI7L,EAAK0pB,iBAAmB,IAE9B7d,EAAI7L,EAAK0pB,iBAAiBU,KAAKpqB,GACxB6L,IAET,CAAC,GAoDH,OACEnI,EAAAA,EAAAA,KAAAoP,EAAAA,SAAA,CAAAjP,UACEH,EAAAA,EAAAA,KAACO,GAAS,CAAAJ,UACRH,EAAAA,EAAAA,KAACY,EAAAA,GAAI,CACHC,KAAM,CACJC,OAAQylB,EACRtlB,SAAU3D,OAAOC,KAAKkpB,GAAaroB,KAAK4nB,IACtC,MAAMW,EAAaJ,EAAMnoB,KAAK7C,IAC5B,MAAMqrB,EAASH,EAAYT,GAAiBtpB,MACzCJ,GAASA,EAAK0E,QAAQvF,QAAQ,QAAS,MAAQF,IAElD,OAAOqrB,EAASA,EAAOC,sBAAwB,IAAI,IAErD,MAAO,CACL3lB,MAAO9D,EAAgBQ,OAAOooB,IAC9BnlB,KAAM8lB,EACNxlB,MAAM,EACNC,gBAAiB2kB,GAA2BC,GAC5Cc,UAAU,EACX,KAGLxlB,QAAS,CACPC,QAAS,CACPC,OAAQ,CACNC,SAAS,IAGbC,qBAAqB,EACrBC,OAAQ,CACNC,EAAG,CACDC,KAAM,OACNC,KAAM,CACJC,KAAM,OACNC,eAAgB,CACdC,KAAM,gBAGVC,KAAM,CACJC,MAAO,aAETC,MAAO,CACLD,MAAO,cAGXE,EAAG,CACDH,KAAM,CACJC,MAAO,aAETC,MAAO,CACLD,MAAO,qBAOlB,EEtHP,GAPmB4kB,KACjB7Z,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACkmB,GAAqB,KACtBlmB,EAAAA,EAAAA,KAAC6jB,GAAS,O,eCEd,MAAMmD,IAAavnB,EAAAA,EAAAA,IAAOQ,EAAAA,EAAK;;;;;;;;;;EAYzBgnB,GAAcxnB,EAAAA,GAAOC,GAAG;;;;;;;;EAUxBwnB,GAAeznB,EAAAA,GAAOC,GAAG;;;;;;EAYlBynB,GAAgBA,EAAG7qB,WAC9B0D,EAAAA,EAAAA,KAACgnB,GAAU,CACTI,OAAO,QACPlnB,UAAU,2CAA0CC,UAEpD+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,iBAAgBC,SAAA,EACnCH,EAAAA,EAAAA,KAACinB,GAAW,CAAA9mB,UACVH,EAAAA,EAAAA,KAAA,QAAME,UAAU,iDAAgDC,SAC7D7D,EAAK+qB,mBAGVrnB,EAAAA,EAAAA,KAACknB,GAAY,CAAChnB,UAAU,YAAWC,UACjCH,EAAAA,EAAAA,KAAC4O,GAAc,CACbI,UAAU,EACVC,SAAS,EACTC,OAAO,EACPJ,iBAAiB,OACjBC,eAAe,oBACfF,OAAQ,CACN,CAAC,QAAS,SACV,CAAC,WAAY,OACb,CAAC,UAAW,SACZ,CAAC,oBAAqB,SACtB,CAAC,kBAAmB,SACpB,CAAC,iBAAkB,UAErB9B,SAAS,EAAM5M,UAEdmnB,EAAAA,GAAAA,MAAKhrB,EAAKoO,QAAQtM,KAAI,CAACzB,EAAO4S,KAC7BrC,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAExD,EAAMyT,aACjBpQ,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEtB,EAAiBlC,EAAM+W,eAAe9U,QACjDoB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE/C,EAAgBT,EAAMqpB,oBACjC9Y,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,CAAExD,EAAM4qB,qBAAqBlX,QAAQ,GAAG,QACjDrQ,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAExD,EAAM6qB,gBAAgBnX,QAAQ,MACzCrQ,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAExD,EAAM8qB,kBANVlY,cCjERmY,GAAoBA,KAC/B,MAAM,MAAEvkB,EAAK,UAAEzC,EAAS,SAAE6C,GCFMokB,MAChC,MAAM,MAAExkB,EAAK,UAAEzC,EAAS,SAAE6C,EAAQ,WAAEiB,GAAe1B,GAEjD,yBAMF,OAJAkB,EAAAA,EAAAA,YAAU,KACRQ,GAAY,GACX,IAEI,CAAErB,QAAOzC,YAAW6C,WAAU,EDPEokB,GAEvC,OAAIpkB,GAEAvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCoD,IAKH7C,GACKV,EAAAA,EAAAA,KAACD,EAAM,CAACH,OAAO,WAItBI,EAAAA,EAAAA,KAAAoP,EAAAA,SAAA,CAAAjP,SACGgD,EACEnF,QAAQ1B,GAASA,EAAKoO,OAAOjM,SAC7BL,KAAI,CAAC9B,EAAMiT,KACVvP,EAAAA,EAAAA,KAACmnB,GAAa,CAAa7qB,KAAMA,GAAbiT,MAEvB,E,eElBP,MAAMqY,GAAqBA,CAAC/f,EAAiBggB,KAC3C,MAAMC,EACJ,IAAIlsB,KAAKisB,GAAaE,UAAYjsB,IAAsB,KAASF,KAAKosB,MACxE,OAAOngB,EAAUigB,EAAW,KAAO,IAAO,GAAG,EAGzCG,GAAsB1sB,IAC1B2sB,EAAAA,GAAAA,GAAetqB,OAAO,IAAIhC,KAAKL,IAASO,IAAqB,IAAIF,MACjE,OAEIusB,GAAaA,EACjBC,cAIA,MAAMC,EAAgBT,GACpBQ,GAASC,cACTD,EAAQE,SAEJC,EAAiBX,GACrBQ,GAASG,eACTH,EAAQE,SAEJE,EAAkBJ,EAAQzrB,MAAM8rB,aAClCL,EAAQM,kBAAkBrY,QAAQ,GAClC+X,EAAQM,kBAAkBrY,QAAQ+X,EAAQzrB,MAAMwT,cAEpD,OACEjD,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEioB,EAAQxpB,QACnBoB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEioB,EAAQzrB,MAAMiC,QACzBoB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE/C,EAAgBgrB,EAAQpC,oBACnChmB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEioB,EAAQO,4BACnB3oB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEqoB,KACXtb,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,CACNkoB,EAAc,KACdD,EAAQQ,0CAEX1b,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,CACNooB,EAAe,KACfH,EAAQS,2CAEX7oB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SACN8nB,GAAmBG,EAAQU,6BAE9B9oB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE8nB,GAAmBG,EAAQE,YACtCtoB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SACNioB,EAAQ3H,OACPzgB,EAAAA,EAAAA,KAAA,KAAG6f,KAAMuI,EAAQ3H,KAAMlS,OAAO,SAASuR,IAAI,aAAY3f,SAAC,aAKzD,EAyDT,GArDuB4oB,KACrB,MAAM,oBACJ/e,EAAmB,eACnBD,EAAc,UACdrJ,EAAS,SACT6C,EAAQ,UACRG,GACEslB,MAEJhlB,EAAAA,EAAAA,YAAU,KACRgG,GAAqB,GACpB,IAEH,MAAMif,GAAuB5c,EAAAA,EAAAA,UAC3B,IACEtC,GAAgBiG,MAAK,CAACC,EAAGC,IACvBD,EAAEtT,MAAMiC,KAAKsqB,cAAchZ,EAAEvT,MAAMiC,SAChC,IACP,CAACmL,IAGH,OACEmD,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAE3CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzBvD,EAAAA,EAAAA,KAAC4O,GAAc,CACbC,OAAQ,CACN,OACA,QACA,UACA,WACA,WACA,SACA,UACA,CAAC,iBAAkB,SACnB,CAAC,eAAgB,SACjB,QAEF9B,SAAUkc,EAAqBxqB,OAC/BiC,UAAWA,EAAUP,SAEpB8oB,EAAqB7qB,KAAI,CAACgqB,EAAS7Y,KAClCvP,EAAAA,EAAAA,KAACmoB,GAAU,CAAaC,QAASA,GAAhB7Y,SAItB,ECxGP,GAToB4Z,KAEhBjc,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAAC+oB,GAAc,KACf/oB,EAAAA,EAAAA,KAAC0nB,GAAiB,OCqGxB,GArGyB0B,KACvB,MAAM,iBACJC,EAAgB,SAChB9lB,EAAQ,UACR7C,EAAS,UACTgD,EAAS,sBACT4lB,GCPwBC,MAC1B,MAAM,SAAEve,EAAQ,OAAEC,IAAWxD,EAAAA,EAAAA,YAAWgD,IAElC2B,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClBC,KAAMvB,EACNwB,GAAIvB,KAER,CAACD,EAAUC,KAIX9H,MAAOkmB,EAAgB,UACvB3oB,EAAS,SACT6C,EACAiB,WAAY8kB,EAAqB,UACjC5lB,GACEZ,GACF,yBAAyBsJ,EAAO7N,kBAChC0H,EACA,GAOF,OAJAjC,EAAAA,EAAAA,YAAU,KACRslB,GAAuB,GACtB,CAACte,EAAUC,IAEP,CACLoe,mBACA3oB,YACA6C,WACAG,YACA4lB,wBACD,ED1BGC,GAEEC,EAAgBH,EAAiBnhB,QACrC,CAACuhB,EAAaC,IAAiBD,EAAcC,EAAaC,YAC1D,GAGIC,EAAYP,EAAiBnhB,QACjC,CAACuhB,EAAaC,IAAiBD,GAAeC,EAAaG,QAAU,IACrE,GAGIC,EAAYT,EAAiBnhB,QACjC,CAACuhB,EAAaC,IAAiBD,EAAcC,EAAaK,iBAC1D,GAGF,OACE7c,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAE3CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzBvD,EAAAA,EAAAA,KAAAoP,EAAAA,SAAA,CAAAjP,UACE+M,EAAAA,EAAAA,MAAC0B,GAAc,CACbC,OAAQ,EACN3B,EAAAA,EAAAA,MAAA,OAAmBhN,UAAU,4BAA2BC,SAAA,CAAC,SAEvDH,EAAAA,EAAAA,KAACwiB,GAAW,CAACzU,QAASub,MAFd,SAIV,SACA,SACA,aACA,OACA,WACA,oBACAtrB,QAAQuJ,GAAUA,IACpBwF,SAAUsc,EAAiB5qB,OAC3BiC,UAAWA,EAAUP,SAAA,CAEpBkpB,EAAiBjrB,KAAK4rB,IACrB9c,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE6pB,EAAgB3C,iBAC3BrnB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE6pB,EAAgBL,cAC3B3pB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE6pB,EAAgBH,UAC3B3c,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,EACPH,EAAAA,EAAAA,KAAA,QAAME,UAAU,eAAcC,SAC3B6pB,EAAgBL,WACfK,EAAgBC,qBACb,OAEPjqB,EAAAA,EAAAA,KAAA,QAAME,UAAU,cAAaC,SAC1B6pB,EAAgBC,qBACZ,KAEP/c,EAAAA,EAAAA,MAAA,QAAA/M,SAAA,CAAM,KAGD,KACE6pB,EAAgBL,WACfK,EAAgBC,oBACpBD,EAAgBL,YAChBtZ,QAAQ,GAAG,YAIjBrQ,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE6pB,EAAgBE,oBAC3BlqB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SACN6pB,EAAgBD,gBAAgB1Z,QAAQ,MAE3CrQ,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SACN6pB,EAAgBG,+BAA+B9Z,QAAQ,OA9BnD2Z,EAAgB3C,iBAkC1BgC,EAAiB5qB,QAChByO,EAAAA,EAAAA,MAAA,MAAIsC,MAAO,CAAEiB,UAAW,wBAAyBtQ,SAAA,EAC/CH,EAAAA,EAAAA,KAAA,MAAIE,UAAU,UAASC,SAAC,WACxBH,EAAAA,EAAAA,KAAA,MAAAG,SAAKqpB,KACLxpB,EAAAA,EAAAA,KAAA,MAAAG,SAAKypB,EAAUvZ,QAAQ,MACvBrQ,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,MAAAG,SAAK2pB,EAAUzZ,QAAQ,MACvBrQ,EAAAA,EAAAA,KAAA,MAAAG,UAAM2pB,EAAYN,GAAenZ,QAAQ,QAEzC,YAIT,EE9CP,GA9CuB+Z,KACrB,MAAM,aACJC,EAAY,UACZ3pB,EAAS,SACT6C,EAAQ,UACRG,EAAS,WACTwG,EAAU,cACVC,GCVoBmgB,MACtB,MAAM,SAAEtf,EAAQ,OAAEC,IAAWxD,EAAAA,EAAAA,YAAWgD,KAElC,WAAEP,EAAU,cAAEC,GAAkB+W,KAEhC9U,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClBC,KAAMvB,EACNwB,GAAIvB,EACJkW,SACEla,aAAaC,QAAQrE,KAAsC,OAC7DqH,WAAYA,EAAW3L,cAE3B,CAACyM,EAAUC,EAAQf,KAInB/G,MAAOknB,EAAY,UACnB3pB,EAAS,SACT6C,EACAiB,WAAY+lB,EAAiB,UAC7B7mB,GACEZ,GACF,YAAYsJ,EAAO7N,kBACnB0H,EACA,GACA,GAOF,OAJAjC,EAAAA,EAAAA,YAAU,KACRumB,GAAmB,GAClB,CAACvf,EAAUC,EAAQf,IAEf,CACLmgB,eACA3pB,YACA6C,WACAG,YACAwG,aACAC,gBACD,ED9BGqgB,GAEJ,OACEtd,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAE3CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzBvD,EAAAA,EAAAA,KAAC4O,GAAc,CACblO,UAAWA,EACXmO,OAAQ,CACN,CAAC,UAAW,UACX9P,KAAc,CAAC,OAAQ,SACxB,CAAC,OAAQ,UAEXgO,SAAUsd,GAAclnB,OAAO1E,OAC/ByL,WAAYA,EACZC,cAAeA,EACfqD,WAAY6c,EAAa7c,WACzBD,kBAAmB8c,EAAangB,WAChCiF,eAAgBtM,GAAkC1C,SAEjDkqB,GAAclnB,OAAO/E,KAAI,CAACqsB,EAAUlb,KACnCrC,SAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAA,MAAAG,SAAKjD,EAAeutB,EAASzpB,YAC3BjC,MACAiB,EAAAA,EAAAA,KAAA,MAAAG,UnEkF6BtD,EmElFK4tB,EAAS5oB,KnEmFzDvE,OAAOC,KAAKzC,GACVwC,OAAOE,OAAO1C,GAAsB2C,QAAQZ,QmElFlCmD,EAAAA,EAAAA,KAAA,MAAAG,SAAKsqB,EAASC,SALPnb,GnEqFwB1S,KmE9ElC,QAGJ,EEnDDwS,GAAQ5P,EAAAA,GAAOkrB,KAAK;;;;;;EAQpBC,GAAKnrB,EAAAA,GAAOgP,EAAE;;EAIdoc,GAAKprB,EAAAA,GAAOkP,EAAE;;EAQPmc,GAAYA,EAAGxlB,WAC1B,MAAOzE,EAAMkqB,IAAW1nB,EAAAA,EAAAA,UAAS,KAC1BsE,EAASqjB,IAAc3nB,EAAAA,EAAAA,UAAS,IA0BvC,OAxBAW,EAAAA,EAAAA,YAAU,KACR,IACE,MAAMinB,EAAallB,KAAKkS,MAAM3S,GAE9B,IAAKoK,MAAMC,QAAQsb,GACjB,MAAM,IAAItH,MAAM,8BAIlBoH,EAAQE,GAGR,MAAMC,EAAa,IAAIC,IACvBF,EAAWG,SAAS9uB,IAClBgB,OAAOC,KAAKjB,GAAM8uB,SAAShjB,GAAQ8iB,EAAWhf,IAAI9D,IAAK,IAGzD4iB,EAAWtb,MAAMnD,KAAK2e,GACxB,CAAE,MAAOnmB,GACPgmB,EAAQ,IACRC,EAAW,GACb,IACC,CAAC1lB,IAEgB,IAAhBzE,EAAKpC,QACAuB,EAAAA,EAAAA,KAAA,KAAAG,SAAG,wCAIV+M,EAAAA,EAAAA,MAACmC,GAAK,CAAAlP,SAAA,EACJH,EAAAA,EAAAA,KAAA,SAAAG,UACEH,EAAAA,EAAAA,KAAA,MAAAG,SACGwH,EAAQvJ,KAAI,CAACyQ,EAAQU,KACpBvP,EAAAA,EAAAA,KAAC4qB,GAAE,CAAAzqB,SAAc0O,GAARU,UAIfvP,EAAAA,EAAAA,KAAA,SAAAG,SACGU,EAAKzC,KAAI,CAAC9B,EAAM+uB,KACfrrB,EAAAA,EAAAA,KAAA,MAAAG,SACGwH,EAAQvJ,KAAI,CAACyQ,EAAQyc,KACpBtrB,EAAAA,EAAAA,KAAC6qB,GAAE,CAAA1qB,SAAkB7D,EAAKuS,IAAjByc,MAFJD,SAOP,EC1DCE,GAAYA,EACvB1qB,OACA2qB,gBACAC,uBAEAve,EAAAA,EAAAA,MAACmT,GAAAA,EAAK,CAACC,KAAMkL,EAAejL,OAAQA,IAAMkL,GAAiB,GAAOtrB,SAAA,EAChEH,EAAAA,EAAAA,KAACqgB,GAAAA,EAAMrN,OAAM,CAACwN,aAAW,EAACtgB,UAAU,cACpCF,EAAAA,EAAAA,KAACqgB,GAAAA,EAAMpN,KAAI,CAAA9S,SACRU,EAAKzC,KAAI,CAAC9B,EAAMiT,KACfrC,SAAAA,EAAAA,MAAA,OAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAA,QAAAG,UtEiHRtD,EsEjH+CP,EAAKuF,KtEmHpDvE,OAAOC,KAAKvC,GACVsC,OAAOE,OAAOxC,GAA6ByC,QAAQZ,OsEnH5CP,EAAKuF,OAAS7G,EAA4B0wB,oBACzC1rB,EAAAA,EAAAA,KAAA,OAAAG,SAAM4F,KAAKC,UAAUD,KAAKkS,MAAM3b,EAAKuE,WAAOoF,EAAW,KAGxD3J,EAAKuF,OAAS7G,EAA4B0wB,oBACzC1rB,EAAAA,EAAAA,KAAC8qB,GAAS,CAACxlB,KAAMhJ,EAAKuE,OAEvB0O,EAAQ,EAAI1O,EAAKpC,SAAUuB,EAAAA,EAAAA,KAAA,WATpBuP,GtEkHhB1S,KsEvGK,SCrBD8uB,GAAclsB,EAAAA,GAAOC,GAAG;;;;;;;;EAUjBksB,GAAkBA,EAAGC,kBAChC,MAAOzL,EAAgBR,IAAqBvc,EAAAA,EAAAA,WAAS,IAC9CmoB,EAAeC,IAAoBpoB,EAAAA,EAAAA,WAAS,GAEnD,OACE6J,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACE+M,EAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,UACP+M,EAAAA,EAAAA,MAACwS,GAAc,CACbC,MAAOkM,EAAYlM,MACnBC,kBAAmBA,EAAkBzf,SAAA,CAEpC0rB,EAAY/sB,SAASN,aAAa,KAAGqtB,EAAYvW,OAAO1W,WAG7DoB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,UvEiFiBtD,EuEjFGgvB,EAAYtP,UvEkF/Cjf,OAAOC,KAAK1C,GAAeyC,OAAOE,OAAO3C,GAAe4C,QAAQZ,QuEjF1DmD,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,UACP+M,EAAAA,EAAAA,MAACye,GAAW,CAAC5d,QAASA,IAAM0d,GAAiB,GAAMtrB,SAAA,CAChD0rB,EAAYvU,UAAUxa,YAAY8B,KAClCitB,EAAYvU,UAAUC,YAAc,IAAM,IAC1CsU,EAAYvU,UAAU1a,WAAWgC,WAGtCsO,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,CACN0rB,EAAYC,OAAO,IAAED,EAAYluB,WAEpCuP,EAAAA,EAAAA,MAACwB,GAAQ,CAAAvO,SAAA,CAAE0rB,EAAYhkB,OAAO,QAC9B7H,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0rB,EAAYzP,gBACvBpc,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0rB,EAAY1J,iBACvBniB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0rB,EAAYzJ,aACvBpiB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0rB,EAAYxP,WAAa,QAxB7BwP,EAAYE,gBA0BrB/rB,EAAAA,EAAAA,KAACurB,GAAS,CACR1qB,KAAMgrB,EAAYG,eAClBR,cAAeA,EACfC,iBAAkBA,KAEpBzrB,EAAAA,EAAAA,KAACmgB,GAAU,CACTR,MAAOkM,EAAYlM,MACnBS,eAAgBA,EAChBR,kBAAmBA,OvEwDO/iB,KuEtD3B,ECzCDmqB,IAAavnB,EAAAA,EAAAA,IAAOQ,EAAAA,EAA0C;;;;;;;;;4BASvCN,GApBDssB,KAC1B,OAAQA,GACN,KAAKlxB,EAAoBmxB,IACvB,MAAO,cACT,KAAKnxB,EAAoBoxB,KACvB,MAAO,eACT,KAAKpxB,EAAoBqxB,MACvB,MAAO,eACX,EAYqCC,CAAmB1sB,EAAMssB;;EAI1DhF,GAAcxnB,EAAAA,GAAOC,GAA6B;eACzC,EAAG4sB,mBACE,EAAfA,GAAoB,IAAM,QAAU;;;;;;;EASnCpF,GAAeznB,EAAAA,GAAOC,GAAG;;;;;;EAYlB6sB,GAAYA,EAAGC,YAC1B,MAAQ/c,MAAOgd,GC5DKC,MACpB,MAAOC,EAAYC,IAAiBvpB,EAAAA,EAAAA,UAGjC,CACDoM,MAAOtT,OAAO0wB,WACdjtB,OAAQzD,OAAO2wB,cAejB,OAZA9oB,EAAAA,EAAAA,YAAU,KACR,MAAM+oB,EAAeA,KACnBH,EAAc,CACZnd,MAAOtT,OAAO0wB,WACdjtB,OAAQzD,OAAO2wB,aACf,EAIJ,OAFA3wB,OAAO6wB,iBAAiB,SAAUD,GAE3B,IAAM5wB,OAAO8wB,oBAAoB,SAAUF,EAAa,GAC9D,IAEIJ,CAAU,EDuCcD,GAE/B,OACE1sB,EAAAA,EAAAA,KAACgnB,GAAU,CACTiF,WAAYO,EAAMP,WAClB7E,OAAO,QACPlnB,UAAU,2CAA0CC,UAEpD+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAKgT,KAAI,CACR/S,UAAW,sBACRusB,GAAe,GAAK,IAAM,GAAK,aAC/BtsB,SAAA,EAEH+M,EAAAA,EAAAA,MAAC+Z,GAAW,CAACqF,aAAcG,EAAatsB,SAAA,EACtCH,EAAAA,EAAAA,KAAA,QAAAG,SAAOjD,EAAesvB,EAAMxrB,YAC5BkM,EAAAA,EAAAA,MAAA,QAAMhN,UAAU,oCAAmCC,SAAA,CAAC,IAEjDqsB,EAAMnF,cAAc,QAEvBna,EAAAA,EAAAA,MAAA,MAAIhN,UAAU,OAAMC,SAAA,CAAC,KAEnB+M,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CAACC,GAAG,OAAO0T,KAAK,QAAOvqB,SAAA,CAC1BqsB,EAAMU,iBAAmB3yB,EAAmB4yB,SACzC,KACA,KAAM,OACJ,KAERntB,EAAAA,EAAAA,KAAC+W,GAAAA,EAAK,CAACC,GAAG,OAAO0T,KAAK,QAAOvqB,SAC1BqsB,EAAMY,iBACD,KAERlgB,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CAACC,GAAG,OAAO0T,KAAK,QAAOvqB,SAAA,CAC1BqsB,EAAM3C,OAAO,OACR,KAER3c,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CAACC,GAAG,OAAO0T,KAAK,QAAOvqB,SAAA,CAC1BqsB,EAAMa,0BAA0B,OAElCb,EAAMc,mBACLpgB,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,CAAE,KAEAH,EAAAA,EAAAA,KAAC+W,GAAAA,EAAK,CAACC,GAAG,OAAO0T,KAAK,QAAOvqB,SAAC,WAKhCqsB,EAAMe,uBACNrgB,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,CAAE,KAEAH,EAAAA,EAAAA,KAAC+W,GAAAA,EAAK,CAACC,GAAG,OAAO0T,KAAK,QAAOvqB,SAAC,cAMpC+M,EAAAA,EAAAA,MAAA,MAAIhN,UAAU,OAAMC,SAAA,EAClB+M,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CACJC,GAAIwV,EAAMgB,iBAAmB,UAAY,SACzC9C,KAAK,QAAOvqB,SAAA,CAEXqsB,EAAMiB,oBAAoBpd,QrErHV,GqEqHmC,OAC9C,KAERnD,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CAACC,GAAG,OAAO0T,KAAK,QAAQxqB,UAAU,wBAAuBC,SAAA,CAC5DqsB,EAAMkB,wBAAwB,OACzB,KAERxgB,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CACJC,GAAIwV,EAAMmB,yBAA2B,UAAY,SACjDjD,KAAK,QAAOvqB,SAAA,CAEXqsB,EAAMoB,oBAAoB,OACrB,WAIZ5tB,EAAAA,EAAAA,KAACknB,GAAY,CAAA/mB,UACXH,EAAAA,EAAAA,KAAC4O,GAAc,CACbI,UAAU,EACVC,SAAS,EACTC,OAAO,EACPJ,iBAAiB,OACjBC,eAAe,oBACfF,OAAQ,CACN,CAAC,SAAU,SACX,CAAC,OAAQ,QACT,CAAC,OAAQ,SACT,CAAC,SAAU,SACX,CAAC,SAAU,QACX,CAAC,UAAW,SACZ,CAAC,WAAY,SACb,CAAC,OAAQ,SACT,CAAC,cAAe,UAElB9B,SAAS,EAAM5M,SAEdqsB,EAAMqB,aAAazvB,KAAKytB,IACvB7rB,EAAAA,EAAAA,KAAC4rB,GAAe,CAEdC,YAAaA,GADRA,EAAYE,yBAOhB,EErHjB,GAzCyB+B,EAAGC,gBAC1B7gB,EAAAA,EAAAA,MAAC4R,GAAAA,EAAG,CAAC5e,UAAU,WAAUC,SAAA,EACvBH,EAAAA,EAAAA,KAAC+e,GAAAA,EAAG,CAACiP,GAAI,EAAGC,GAAI,EAAE9tB,UAChB+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,sCAAqCC,SAAA,EACnDH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,cAAaC,SAAC,sBACrCH,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,YAAWC,UAC9BH,EAAAA,EAAAA,KAAA,MAAIE,UAAU,aAAYC,SAAE4tB,EAAUpE,qBAI5C3pB,EAAAA,EAAAA,KAAC+e,GAAAA,EAAG,CAACiP,GAAI,EAAGC,GAAI,EAAE9tB,UAChB+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,sCAAqCC,SAAA,EACnDH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,cAAaC,SAAC,YACrCH,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,YAAWC,UAC9B+M,EAAAA,EAAAA,MAAA,MAAIhN,UAAU,aAAYC,SAAA,CACvB4tB,EAAUlE,OAAOxZ,QvEnBC,GuEmBwB,eAKnDrQ,EAAAA,EAAAA,KAAC+e,GAAAA,EAAG,CAACiP,GAAI,EAAGC,GAAI,EAAE9tB,UAChB+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,sCAAqCC,SAAA,EACnDH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,cAAaC,SAAC,wBACrCH,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,YAAWC,UAC9B+M,EAAAA,EAAAA,MAAA,MAAIhN,UAAU,aAAYC,SAAA,CACvB4tB,EAAUG,mBAAmB,MAAIH,EAAUI,6BAKpDnuB,EAAAA,EAAAA,KAAC+e,GAAAA,EAAG,CAACiP,GAAI,EAAGC,GAAI,EAAE9tB,UAChB+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,sCAAqCC,SAAA,EACnDH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,cAAaC,SAAC,sBACrCH,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,YAAWC,UAC9B+M,EAAAA,EAAAA,MAAA,MAAIhN,UAAU,aAAYC,SAAA,CAAE4tB,EAAUK,mBAAmB,iBCInE,GAtCqBC,KACnB,MAAM,UACJN,EAAS,UACTrtB,EAAS,SACT6C,EAAQ,WACR2G,EAAU,cACVC,EAAa,UACbzG,GCRiB4qB,MACnB,MAAM,SAAEtjB,EAAQ,OAAEC,EAAM,aAAEL,EAAY,gBAAEE,IACtCrD,EAAAA,EAAAA,YAAWgD,KAEP,WAAEP,EAAU,cAAEC,GAAkB+W,KAEhC9U,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClBC,KAAMvB,EACNwB,GAAIvB,EACJV,SAAUK,GAAc/N,GAAG0B,YAAc,GACzCuS,YAAahG,GAAiBjO,IAAI0B,YAAc,GAChD4iB,SACEla,aAAaC,QAAQrE,KAAoC,OAC3DqH,WAAYA,EAAW3L,cAE3B,CAACyM,EAAUC,EAAQL,EAAcE,EAAiBZ,KAIlD/G,MAAO4qB,EAAS,UAChBrtB,EAAS,SACT6C,EACAiB,WAAY+pB,EAAW,UACvB7qB,GACEZ,GACF,SAASsJ,EAAO7N,kBAChB0H,EACA,IAOF,OAJAjC,EAAAA,EAAAA,YAAU,KACRuqB,GAAa,GACZ,CAACvjB,EAAUC,EAAQL,EAAcE,EAAiBZ,IAE9C,CACL6jB,YACArtB,YACA6C,WACA2G,aACAC,gBACAzG,YACD,EDlCG4qB,GAEJ,OACEphB,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAC3CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzB2J,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,CACG4tB,GAAWS,YAAYrrB,MAAM1E,QAC5BuB,EAAAA,EAAAA,KAAC8tB,GAAgB,CAACC,UAAWA,IAC3B,KACHA,GAAWS,YAAYrrB,MAAM/E,KAAI,CAACouB,EAAOjd,KACxCvP,EAAAA,EAAAA,KAACusB,GAAS,CAAaC,MAAOA,GAAdjd,KAEjBwe,GAAWS,YAAYrrB,MAAM1E,QAC5BuB,EAAAA,EAAAA,KAACsN,GAAU,CACTpD,WAAYA,EACZC,cAAeA,EACfqD,WAAYugB,EAAUS,WAAWhhB,WACjCD,kBAAmBwgB,EAAUS,WAAWtkB,WACxCtL,KAAMiE,KAEN,UAGP,E,0DExCP,MAAM4rB,IAAoBhvB,EAAAA,EAAAA,IAAO0R,GAAAA,EAAO;;EAI3Bud,GAAaA,EACxB3gB,UACA6D,iBAKA5R,EAAAA,EAAAA,KAACyuB,GAAiB,CAChBnuB,QAAQ,oBACRyN,QAASA,EACTD,SAAU8D,EAAWzR,UAErBH,EAAAA,EAAAA,KAAC2uB,GAAAA,EAAc,MCObtT,IAAuB5b,EAAAA,EAAAA,IAAOoS,GAAAA,EAAWyJ,KAAK;;EAI9CK,IAAelc,EAAAA,EAAAA,IAAO0R,GAAAA,EAAO;;EAEjC,IAEG0L,GAAM,SAANA,GAAM,OAANA,EAAAA,EAAM,qBAANA,EAAAA,EAAM,qBAANA,EAAAA,EAAM,mBAANA,EAAAA,EAAM,qBAANA,EAAAA,EAAM,uBAANA,CAAM,EAANA,IAAM,IAQX,MAAM+R,GAAkBA,CACtBC,EACAzG,EACA0G,EACAC,EACApyB,KAEA,IAAKyrB,IAAY0G,IAAmBC,EAAe,MAAO,GAE1D,MAAMC,EAAc5xB,EAAgBgrB,EAAQ6G,mBAEtCC,EAAiBA,CACrBrnB,EACAggB,KAEA,MAAMC,EACJ,IAAIlsB,KAAKisB,GAAe,GAAGE,UAAYjsB,IAAsB,KAC7DF,KAAKosB,MACP,OAAKngB,EACEigB,EAAW,KAAc,KADZ,IACuB,EAGvCqH,EAAWN,EAASnyB,MACvB0yB,GACCzyB,EAAM0yB,YAAYxyB,KAAOuyB,EAAGzyB,MAAME,IAClCiyB,EAAepb,eAAiB0b,EAAGxN,YACnCwG,EAAQ6G,oBAAsBG,EAAGH,oBAG/BK,EAAuBJ,EAC3BC,GAAUI,iBACVJ,GAAU7G,SAGNkH,EAAUX,EAASnyB,MACtB0yB,GACCzyB,EAAM8yB,kBAAkB5yB,KAAOuyB,EAAGzyB,MAAME,IACxCkyB,EAAcrb,eAAiB0b,EAAGxN,YAClCwG,EAAQ6G,oBAAsBG,EAAGH,oBAQrC,MAAO,GAAGD,MAAuBM,SALLJ,EAC1BM,GAASnH,cACTmH,GAASlH,YAGgFF,EAAQsH,OAAOtH,EAAQuH,SAAS/wB,MAAM,EAwcnI,GAhcqBgxB,KACnB,MAAM,SACJC,EACAnvB,UAAWovB,EACXpqB,cAAeqqB,EACfxsB,SAAUysB,EAAgB,uBAC1BC,EAAsB,kBACtBC,EAAiB,2BACjBC,EAA0B,0BAC1BC,GClGgBC,MAClB,MAAM,SAAE9mB,EAAQ,UAAE7I,EAAS,cAAEgF,EAAa,SAAEnC,GAC1CyW,MAOA7W,MAAO+sB,EACPxvB,UAAWyvB,EACX5sB,SAAU6sB,EACV5rB,WAAYyrB,GACVntB,GAA8C,wBAElD,MAAO,CACL+sB,SAZetrB,UACfgF,EAAS1I,OAAMoF,EAAW,aAAa,EAYvCP,gBACAhF,YACA6C,WACA0sB,yBACAC,oBACAC,6BACAC,4BACD,ED2EGC,IAEE,eACJhmB,EAAc,oBACdC,EACA5J,UAAWid,GACTC,MAEE,mBACJ9T,EAAkB,cAClBH,EAAa,uBACbC,EAAsB,sBACtBC,GACEmf,MAEGsH,EAASC,IAAcltB,EAAAA,EAAAA,aACvBmtB,EAASC,IAAcptB,EAAAA,EAAAA,aACvB9G,EAAQyhB,IAAa3a,EAAAA,EAAAA,aACrBqtB,EAASC,IAActtB,EAAAA,EAAAA,UAAiB,MACxCutB,EAAUC,IACfxtB,EAAAA,EAAAA,YA8BF,IA5BAW,EAAAA,EAAAA,YAAU,KACRisB,IACAnmB,GAAoB,GACnB,KAEH9F,EAAAA,EAAAA,YAAU,KACR,GAAIssB,GAAWE,GAAWj0B,EAAQ,CAChC,MAAMu0B,EAAWC,EAAWT,EAASE,EAASj0B,GAE1Cu0B,EAASryB,OACXoyB,EAAYC,EAAS,KAErB9S,OAAU/X,GACV0qB,EAAW,IACXE,OAAY5qB,GAEhB,IACC,CAACqqB,EAASE,EAASj0B,KAEtByH,EAAAA,EAAAA,YAAU,KACR,MAAMvD,EAAU4J,EAAe3N,MAC5B4Y,GAAWA,EAAO3Y,MAAME,KAAON,GAAQ8yB,aAAaxyB,KAEnD4D,GACFkwB,EAAWlwB,EAAQA,QAAQlC,WAC7B,GACC,CAAC8L,IAEAT,GAA0BumB,EAC5B,OAAOnwB,EAAAA,EAAAA,KAACD,EAAM,CAACH,OAAO,UAGxB,GACEwwB,GACAvmB,IACCqmB,IACAvmB,EAED,OACE3J,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SACrCiwB,GAA6BvmB,IAKpC,MAAMmnB,EAA0BA,CAC9BC,EACAC,IAEAC,KACEjB,EAAkBlyB,QACf6xB,GACCA,EAASuB,kBAAkBv0B,KAAOq0B,GAAmBr0B,IACrDgzB,EAASwB,aAAax0B,KAAOo0B,GAAcp0B,MAE/C,CAACoT,EAAGC,IACFD,EAAEwf,iBAAiB5yB,KAAOqT,EAAEuf,iBAAiB5yB,IAC7CoT,EAAEof,YAAYxyB,KAAOqT,EAAEmf,YAAYxyB,KAGnCk0B,EAAaA,CACjBM,EACAD,EACAz0B,KAEA,MAAM20B,EAAsB,IACvBC,KACDrB,EACGlyB,QACE6xB,GACCA,EAASwB,aAAax0B,KAAOw0B,GAAcx0B,IAC3CgzB,EAASuB,kBAAkBv0B,KAAOu0B,GAAmBv0B,IACrDgzB,EAASR,YAAYxyB,KAAOF,GAAO0yB,YAAYxyB,IAC/CgzB,EAASJ,iBAAiB5yB,KAAOF,GAAO8yB,kBAAkB5yB,KAE7DuB,KAAKyxB,GAAaA,EAAS7J,kBAC9B,OAIE6I,EAAWllB,EAAc3L,QAC5BoqB,GACCA,EAAQzrB,MAAME,KAAOF,EAAM0yB,YAAYxyB,IACvCurB,EAAQxG,aAAeyP,EAAa3d,eAGxC,OAAO4d,EACJlzB,KAAKozB,GAAO3C,EAASnyB,MAAM0yB,GAAOA,EAAGH,oBAAsBuC,EAAG30B,OAC9DmB,QAAQoxB,GAAOA,IACfpf,MACC,CAACC,EAAGC,KAAOD,GAAGyf,KAAO,IAAMxf,GAAGwf,KAAO,IACtC,EAGCjsB,EAAQA,CAAC6a,EAAuB,MAC/BA,EAAW7b,SAASoa,GAAO4U,UAAUlB,OAAWtqB,GAChDqY,EAAW7b,SAASoa,GAAO6U,UAAUjB,OAAWxqB,GAChDqY,EAAW7b,SAASoa,GAAO0B,SAASP,OAAU/X,GAC9CqY,EAAW7b,SAASoa,GAAO8U,UAAUhB,EAAW,KAChDrS,EAAW7b,SAASoa,GAAO+U,WAAWf,OAAY5qB,EAAU,EA4C7D4rB,EAAyBA,KACzBrB,GAASD,EAAW,IAAKC,IACzBF,GAASG,EAAW,IAAKH,GAAU,EAGnCwB,EACJxB,GACAE,KACEQ,EAAwBV,EAASE,GAAS/xB,UAC1CuyB,EAAwBR,EAASF,GAAS7xB,OAE9C,OACEyO,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACE+M,EAAAA,EAAAA,MAAC4R,GAAAA,EAAG,CAACiT,GAAI,GAAG5xB,SAAA,EACVH,EAAAA,EAAAA,KAAC+e,GAAAA,EAAG,CAACkP,GAAI,EAAG/tB,UAAU,UAASC,UAC7B+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,OAAMC,SAAA,EACpBH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAA7S,SAAC,cACb+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,eAAcC,SAAA,EACjC+M,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,YACtB+M,EAAAA,EAAAA,MAACE,GAAAA,EAAK6I,OAAM,CACV,aAAW,mBACX5H,SAAWC,IACT,MAAM0jB,EAAiB9B,EACpB9xB,KAAKyxB,GAAaA,EAASwB,eAC3B30B,MACE4Y,GAAWA,EAAOzY,GAAG0B,aAAe+P,EAAEC,OAAOhH,QAE9CyqB,GAtDMA,KAC1B,MAAMC,EAAoBV,KACxBrB,EACGlyB,QAAQ6xB,GAAaA,EAASwB,aAAax0B,KAAOm1B,EAAen1B,KACjEuB,KAAKyxB,GAAaA,EAASuB,oBAC9B,MAGIc,EAAaD,EAAkB,GAI/BE,EAFiBnB,EAAwBgB,EAAgBE,GAE3BrlB,MACjCgjB,GAAatzB,GAAQ8yB,YAAYxyB,KAAOgzB,EAASR,YAAYxyB,KAI9D4G,EADE0uB,EACI,CAACtV,GAAO4U,QAAS5U,GAAO6U,QAAS7U,GAAO0B,QAExC,CAAC1B,GAAO4U,QAAS5U,GAAO6U,UAGhCnB,EAAWyB,GACXvB,EAAWyB,EAAW,EAgCJE,CAAmBJ,EACrB,EAEFzqB,MAAO+oB,GAASzzB,IAAM,GACtBqD,UAAU,aAAYC,SAAA,EAEtBH,EAAAA,EAAAA,KAAA,UAAQuH,MAAM,KACbgqB,KACCrB,EAAkB9xB,KAAKyxB,GAAaA,EAASwB,eAC7C,MACAjzB,KAAKkX,IACLtV,EAAAA,EAAAA,KAAA,UAAwBuH,MAAO+N,EAAOzY,GAAGsD,SACtCmV,EAAO1W,MADG0W,EAAOzY,UAKxBmD,EAAAA,EAAAA,KAAC0uB,GAAU,CACT3gB,QAAS8jB,EACTjgB,YAAa0e,IAAYE,IAAYsB,QAGzC5kB,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,WACtB+M,EAAAA,EAAAA,MAACE,GAAAA,EAAK6I,OAAM,CACV5H,SAAWC,IACT,IAAKgiB,IAAYE,EACf,OAGF,MAAM6B,EAAmBrB,EACvBV,EACAE,GACA9zB,MACCmzB,GACCA,EAASR,YAAYxyB,GAAG0B,aAAe+P,EAAEC,OAAOhH,QAGhD8qB,IACFrU,EAAU,CACRqR,YAAagD,EAAiBhD,YAC9BI,iBAAkB4C,EAAiB5C,mBAErCkB,EAAW,KACb,EAEFppB,MAAOhL,EAASA,EAAO8yB,YAAYxyB,GAAK,GACxCiR,UAAWwiB,IAAYE,EACvBtwB,UAAU,aAAYC,SAAA,EAEtBH,EAAAA,EAAAA,KAAA,UAAQuH,MAAM,KAAa,IAC1B+oB,GACCE,GACAQ,EAAwBV,EAASE,GAASpyB,KACvCyxB,IACC3iB,EAAAA,EAAAA,MAAA,UAEE3F,MAAOsoB,EAASR,YAAYxyB,GAAGsD,SAAA,CAE9B0vB,EAASR,YAAYzwB,KACrBixB,EAASR,YAAYzwB,OACtBixB,EAASJ,kBAAkB7wB,KACvB,OAAOixB,EAASJ,kBAAkB7wB,OAClC,KAPCixB,EAASR,YAAYxyB,aActCqQ,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,YACtBH,EAAAA,EAAAA,KAAC8R,GAAAA,EAAW,CACVjQ,KAAK,OACLkQ,UAAU,UACVxK,MAAOmpB,EACP5iB,UAAWvR,EACX8R,SAAWC,GAAMqiB,EAAWriB,EAAEC,OAAOhH,MAAM9L,QAAQ,IAAK,SAE1DyR,EAAAA,EAAAA,MAACiE,GAAAA,EAAM,CACL7Q,QAAQ,oBACRyN,QAASxJ,UACH+rB,GAASzzB,IACXyN,EAAoBgmB,GAASzzB,GAC/B,EAEFiR,UAAWvR,EAAO4D,SAAA,CACnB,MACK,IACHwd,IACC3d,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CACNsR,GAAG,OACH/Q,UAAU,SACVD,KAAK,KACLuG,KAAK,kBAKbuG,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,aACtB+M,EAAAA,EAAAA,MAACE,GAAAA,EAAK6I,OAAM,CACV5H,SAAWC,IACT,IAAKgiB,IAAYE,IAAYj0B,EAC3B,OAGF,MAAM+1B,EAAkBvB,EACtBT,EACAE,EACAj0B,GACAG,MACC0rB,GACCA,EAAQ6G,kBAAkB1wB,aAAe+P,EAAEC,OAAOhH,QAGlD+qB,GACFzB,EAAYyB,EACd,EAEF/qB,MAAOqpB,GAAU3B,mBAAqB,GACtCnhB,UAAWwiB,IAAYE,IAAYj0B,EACnC2D,UAAU,aAAYC,SAAA,EAEtBH,EAAAA,EAAAA,KAAA,UAAQuH,MAAM,KAAa,IAC1B+oB,GACCE,GACAj0B,GACAw0B,EAAWT,EAASE,EAASj0B,GAAQ6B,KAAKgqB,IACxCpoB,EAAAA,EAAAA,KAAA,UAEEuH,MAAO6gB,EAAQ6G,kBAAkB9uB,SAEhCyuB,GACCjlB,EACAye,EACAkI,EACAE,EACAj0B,IARG6rB,EAAQ6G,oCAiB7BjvB,EAAAA,EAAAA,KAAC+e,GAAAA,EAAG,CAACkP,GAAI,EAAG/tB,UAAU,UAASC,UAC7B+M,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,OAAMC,SAAA,EACpBH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,iCAAgCC,SAAC,aAGxDH,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,eAAcC,UACjC+M,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAKF,UAAU,OAAMC,SAAA,EACpCH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,YACtB+M,EAAAA,EAAAA,MAACE,GAAAA,EAAK6I,OAAM,CACV5H,SAAWC,IACT,IAAKgiB,EAAS,OAEd,MAAM0B,EAAiB9B,EACpBlyB,QACE6xB,GAAaA,EAASwB,aAAax0B,KAAOyzB,EAAQzzB,KAEpDuB,KAAKyxB,GAAaA,EAASuB,oBAC3B10B,MACE4Y,GAAWA,EAAOzY,GAAG0B,aAAe+P,EAAEC,OAAOhH,QAGlD,GAAIyqB,EAAgB,CAClB,MAAMO,EAAqBvB,EACzBV,EACA0B,GACAnlB,MACClQ,GACCJ,GAAQ8yB,YAAYxyB,KAAOF,EAAM0yB,YAAYxyB,KAGjD4G,EAAM,CACJoZ,GAAO4U,QACP5U,GAAO6U,WACHa,EAAqB,CAAC1V,GAAO0B,QAAU,KAG7CkS,EAAWuB,EACb,GAEFzqB,MAAOipB,GAAS3zB,IAAM,GACtBiR,UAAWwiB,EACXpwB,UAAU,aAAYC,SAAA,EAEtBH,EAAAA,EAAAA,KAAA,UAAQuH,MAAM,KACbgqB,KACCrB,EACGlyB,QACE6xB,GAAaA,EAASwB,aAAax0B,KAAOyzB,GAASzzB,KAErDuB,KAAKyxB,GAAaA,EAASuB,oBAC9B,MACAhzB,KAAKkX,IACLtV,EAAAA,EAAAA,KAAA,UAAwBuH,MAAO+N,EAAOzY,GAAGsD,SACtCmV,EAAO1W,MADG0W,EAAOzY,UAKxBmD,EAAAA,EAAAA,KAAC0uB,GAAU,CACT3gB,QAAS8jB,EACTjgB,YAAa0e,IAAYE,IAAYsB,kBAOjD5kB,EAAAA,EAAAA,MAAA,OAAKhN,UAAU,qCAAoCC,SAAA,EACjD+M,EAAAA,EAAAA,MAACyO,GAAY,CACXzb,UAAU,YACVI,QAAQ,UACRwN,WAEI8iB,GACAlzB,EAAYgzB,GAAW,GACvBA,EAAQ70B,MAAM,KAAK4C,OAAS,GAAK,GAGrCsP,QArSgBykB,KACtB,KAAKlC,GAAYE,GAAYj0B,GAAWq0B,GAAU,OAElD,MAAM6B,EAAa,CACjBC,eAAgBpC,EAAQzzB,GACxB81B,oBAAqBnC,EAAQ3zB,GAC7B+1B,cAAer2B,EAAO8yB,YAAYxyB,GAClCg2B,mBAAoBt2B,GAAQkzB,kBAAkB5yB,IAAM,KACpDc,OAAQD,EAAYgzB,GACpBzB,kBAAmB2B,EAAS3B,mBAG9BY,EAAS,CAAEiD,YAAa,CAACL,IAAc,EAyRRtyB,SAAA,CAC1B,WACU,IACR2vB,IACC9vB,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CAACsR,GAAG,OAAO/Q,UAAU,SAASD,KAAK,KAAKuG,KAAK,eAGzD3G,EAAAA,EAAAA,KAAC2b,GAAY,CACXzb,UAAU,YACVI,QAAQ,SACRyN,QAASA,IAAMtK,IAAQtD,SACxB,aAIF4vB,IAAkB/vB,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,UAASH,SAAE4vB,IAC5CC,IAAoBhwB,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAE6vB,MAC7C,EE5gBD+C,GAAsBlD,GAC1BA,EAASL,QAAQwD,WAAa/3B,EAA4Bg4B,WAC1DpD,EAASmD,WAAa/3B,EAA4Bg4B,UA0HpD,GAxHsBC,KACpB,MAAM,aACJC,EAAY,UACZzyB,EAAS,SACT6C,EAAQ,eACR6vB,EAAc,SACdC,EAAQ,gBACR5qB,EAAe,eACfE,EAAc,aACdD,EAAY,UACZhF,EAAS,WACTwG,EAAU,cACVC,GCpBoBmpB,MACtB,MAAM,WAAEppB,EAAU,cAAEC,GAAkB+W,KAEhC9U,GAASC,EAAAA,EAAAA,UACb,IACE,IAAIC,gBAAgB,CAClB6U,SACEla,aAAaC,QAAQrE,KAAsC,KAC7DqH,WAAYA,EAAW3L,cAE3B,CAAC2L,KAID/G,MAAOgwB,EAAY,UACnBzyB,EAAS,SACT6C,EACAiB,WAAY+uB,EAAiB,UAC7B7vB,GACEZ,GACF,cAAcsJ,EAAO7N,kBACrB0H,EACA,IAGFjC,EAAAA,EAAAA,YAAU,KACRuvB,GAAmB,GAClB,CAACrpB,IAEJ,MAAM,WACJnC,EACAlL,GAAIw2B,EACJ3yB,UAAW+H,EACX/C,cAAegD,EACfnF,SAAUoF,GACRC,KAKJ,MAAO,CACL2qB,oBACAJ,eACAzyB,YACA6C,WACA6vB,eARsBvyB,GACtBkH,EAAWlH,EAAMA,EAAKhE,GAAI,cAAcgE,EAAKhE,MAQ7Cw2B,WACA5qB,kBACAE,iBACAD,eACAhF,YACAwG,aACAC,gBACD,EDhCGmpB,GAEJ,OACEpmB,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACiN,GAAS,CAACvM,UAAWA,EAAWgD,UAAWA,IAC3CH,GACCvD,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAEoD,KAEzB2J,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAAC4O,GAAc,CACblO,UAAWA,EACXmO,OAAQ,CACN,cACA,SACA,QACA,SACA,SACA,cACA,UACA,QACA,SACA,CAAC,UAAW,UAEd9B,SAAUomB,GAAchwB,OAAO1E,OAC/ByL,WAAYA,EACZC,cAAeA,EACfqD,WAAY2lB,EAAa3lB,WACzBD,kBAAmB4lB,EAAajpB,WAChCiF,eAAgBtM,GAAkC1C,SAEjDgzB,GAAchwB,OAAO/E,KAAKyxB,IACzB3iB,SAAAA,EAAAA,MAAA,MAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAEjD,EAAe2yB,EAAS7uB,YACnChB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0vB,EAAShO,aACpB7hB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0vB,EAASlzB,MAAMiC,QAC1BoB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0vB,EAASlyB,UACpBqC,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0vB,EAASva,OAAO1W,QAC3BoB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SAAE0vB,EAASL,QAAQnO,cAC5BrhB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SACN/C,EAAgByyB,EAASZ,sBAE5BjvB,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,SACN0vB,EAAS2D,cAAcnjB,Q7EtEX,M6EwEfrQ,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,UACPH,EAAAA,EAAAA,KAAA,KACE6f,KAAMgQ,EAASpP,MAAQ,GACvBlS,OAAO,SACPuR,IAAI,aAAY3f,UhFkEQtD,EgF/DtByC,KAAKm0B,IACH5D,EAASL,QAAQwD,UACf/3B,EAA4By4B,WAC9B7D,EAASmD,UACP/3B,EAA4By4B,YhF4DpDp2B,OAAOC,KAAKtC,GACVqC,OAAOE,OAAOvC,GAA6BwC,QAAQZ,UgFxDvCmD,EAAAA,EAAAA,KAAC0O,GAAQ,CAAAvO,UACL4yB,GAAmBlD,KACnB3iB,EAAAA,EAAAA,MAACiE,GAAAA,EAAM,CACL7Q,QAAQ,UACRF,KAAK,KACL2N,QAASA,IACPqlB,EAAe,CACbv2B,GAAIgzB,EAAShzB,GACb82B,mBACE14B,EAA4Bg4B,UAC9BW,gBACE34B,EAA4Bg4B,YAEjC9yB,SAAA,CACF,WACU,IACRkzB,IAAaxD,EAAShzB,IAAM4L,IAC3BzI,EAAAA,EAAAA,KAACF,EAAAA,EAAO,CACNsR,GAAG,OACH/Q,UAAU,SACVD,KAAK,KACLuG,KAAK,kBAlDRkpB,EAAShzB,IhFmFYA,KgF1B/B,MAGF6L,IACC1I,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,UAASH,SAAC,SAI3CwI,IACCuE,EAAAA,EAAAA,MAAC+D,EAAAA,EAAK,CAAC/Q,UAAU,OAAOI,QAAQ,SAAQH,SAAA,CAAC,MACnCkzB,EAAS,IAAE1qB,UAKtB,EEhHP,GAnBuBkrB,KACrB,MAAM,qBAAEpqB,EAAoB,UAAE/I,EAAS,SAAE6C,EAAQ,WAAEiB,EAAU,UAAEd,GAC7D2f,KAEF,OACEnW,EAAAA,EAAAA,MAAAkC,EAAAA,SAAA,CAAAjP,SAAA,EACEH,EAAAA,EAAAA,KAACijB,GAAc,CACbxZ,qBAAsBA,EACtB/F,UAAWA,EACXhD,UAAWA,EACXsiB,qBAAsBxe,EACtBjB,SAAUA,KAEZvD,EAAAA,EAAAA,KAAC4vB,GAAY,KACb5vB,EAAAA,EAAAA,KAACkzB,GAAa,MACb,EC0CP,GAhDgBY,KACd,MAAMtZ,GAAWC,EAAAA,EAAAA,OACX,SAAE1X,IAAa2X,EAAAA,EAAAA,OAEdtS,EAAKuS,IAAUtX,EAAAA,EAAAA,UAAiBN,GAEvC,OACEmK,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,yBAAwBC,SAAA,EACtCH,EAAAA,EAAAA,KAACC,EAAAA,EAAK+S,OAAM,CAAC9S,UAAU,eAAcC,UACnC+M,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACHlc,GAAG,OACHyD,QAAQ,QACRuY,UAAWzQ,EACX4Q,SAAWC,IACJA,IAEL0B,EAAO1B,GACPuB,EAASvB,GAAE,EACX9Y,SAAA,EAEFH,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,IAAIF,MAAM,aACxBpZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,UAAUF,MAAM,YAC9BpZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,QAAQF,MAAM,UAC5BpZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,YAAYF,MAAM,cAChCpZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,iBAAiBF,MAAM,YACrCpZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,eAAeF,MAAM,iBACnCpZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,YAAYF,MAAM,cAChCpZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,YAAYF,MAAM,cAChCpZ,EAAAA,EAAAA,KAACmZ,EAAAA,EAAG,CAACG,SAAS,SAASF,MAAM,gBAGjCpZ,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,aAAYC,UAC/B+M,EAAAA,EAAAA,MAAC+N,EAAAA,GAAM,CAAA9a,SAAA,EACLH,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,GAAGD,SAASnb,EAAAA,EAAAA,KAAC4Q,GAAa,OACtC5Q,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,SAASD,SAASnb,EAAAA,EAAAA,KAACquB,GAAY,OAC3CruB,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,OAAOD,SAASnb,EAAAA,EAAAA,KAAC+mB,GAAU,OACvC/mB,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,WAAWD,SAASnb,EAAAA,EAAAA,KAACoqB,GAAc,OAC/CpqB,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,kBAAkBD,SAASnb,EAAAA,EAAAA,KAACua,GAAmB,OAC3Dva,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,cAAcD,SAASnb,EAAAA,EAAAA,KAAC+zB,GAAiB,OACrD/zB,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,WAAWD,SAASnb,EAAAA,EAAAA,KAAC6zB,GAAc,OAC/C7zB,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,WAAWD,SAASnb,EAAAA,EAAAA,KAACojB,GAAc,OAC/CpjB,EAAAA,EAAAA,KAACkb,EAAAA,GAAK,CAACE,KAAK,QAAQD,SAASnb,EAAAA,EAAAA,KAACmpB,GAAW,aAGxC,E,wIC7BX,MAAM9N,IAAuB5b,EAAAA,EAAAA,IAAOoS,GAAAA,EAAWyJ,KAAK;;EAI9C0Y,IAAoBv0B,EAAAA,EAAAA,IAAOw0B,GAAAA,EAAY;;;EAKvCC,GAAmBA,CAAChzB,EAAeqL,EAAYC,KAAc,CACjEtL,QACAizB,iBAAiBC,EAAAA,GAAAA,IAAc7nB,EAAMrR,GACrCm5B,cAAe7nB,GAAK4nB,EAAAA,GAAAA,IAAc5nB,EAAItR,IAAYo5B,EAAAA,GAAAA,GAAQ54B,IAAe,KAG9D64B,GAAc,CACzBL,GAAiB,mBAAmBM,EAAAA,GAAAA,GAAW,IAAI54B,KAAQ,KAC3Ds4B,GAAiB,mBAAmBM,EAAAA,GAAAA,GAAW,IAAI54B,KAAQ,KAC3Ds4B,GAAiB,aAAaO,EAAAA,GAAAA,GAAS,IAAI74B,KAAQ,IACnDs4B,GAAiB,gBAAgBO,EAAAA,GAAAA,GAAS,IAAI74B,KAAQ,IACtDs4B,GAAiB,gBAAgBO,EAAAA,GAAAA,GAAS,IAAI74B,KAAQ,IACtDs4B,GAAiB,iBAAiBO,EAAAA,GAAAA,GAAS,IAAI74B,KAAQ,KACvDs4B,GAAiB,QAASx4B,KAC1Bw4B,GAAiB,aAAaQ,EAAAA,GAAAA,GAAQh5B,IAAe,GAAIA,KACzDw4B,GAAiB,iBAAiBO,EAAAA,GAAAA,GAAS,IAAI74B,KAAQ,KACvDs4B,GAAiB,eAAeO,EAAAA,GAAAA,GAAS,IAAI74B,KAAQ,KACrDs4B,GAAiB,eAAeO,EAAAA,GAAAA,GAAS,IAAI74B,KAAQ,MACrDs4B,GACE,aACAS,EAAAA,GAAAA,GAAYj5B,IAAe,CAAEk5B,aAAc,KAC3CC,EAAAA,GAAAA,GAAUn5B,IAAe,CAAEk5B,aAAc,KAE3CV,GACE,iBACAQ,EAAAA,GAAAA,IAAQC,EAAAA,GAAAA,GAAYj5B,IAAe,CAAEk5B,aAAc,IAAM,IACzDF,EAAAA,GAAAA,IAAQG,EAAAA,GAAAA,GAAUn5B,IAAe,CAAEk5B,aAAc,IAAM,IAEzDV,GACE,cACAY,EAAAA,GAAAA,GAAa,IAAIl5B,OACjBm5B,EAAAA,GAAAA,GAAW,IAAIn5B,OAEjBs4B,GACE,kBACAc,EAAAA,GAAAA,IAAUF,EAAAA,GAAAA,GAAap5B,KAAgB,IACvCq5B,EAAAA,GAAAA,IAAWC,EAAAA,GAAAA,GAAUt5B,IAAe,KAEtCw4B,GAAiB,cAAcc,EAAAA,GAAAA,GAAU,IAAIp5B,KAAQ,IACrDs4B,GAAiB,WAAY,IAAIt4B,KAAK,yBAU3Bq5B,GAAoBA,EAC/B/zB,QACAI,UACA0X,WACAkc,oBAEAhoB,EAAAA,EAAAA,MAACsO,GAAAA,EAAQ,CAACtb,UAAU,YAAWC,SAAA,EAC7BH,EAAAA,EAAAA,KAACwb,GAAAA,EAASC,OAAM,CAACvb,UAAU,OAAOI,QAAQ,YAAYF,KAAK,KAAID,SAC5D+0B,GAAiBh0B,KAEpBlB,EAAAA,EAAAA,KAACwb,GAAAA,EAASyD,KAAI,CAAA9e,SACXmB,GAASlD,KAAK8X,IACblW,EAAAA,EAAAA,KAACwb,GAAAA,EAASvN,KAAI,CAEZF,QAASA,IAAMiL,EAAS9C,EAAO3O,OAAOpH,SAErC+V,EAAOhV,OAHHgV,EAAOhV,cAUhBi0B,GAA0B,cAEnBC,GAAeA,KAC1B,MAAM,SACJpqB,EAAQ,YACRE,EAAW,OACXD,EAAM,UACNE,EAAS,QACTR,EAAO,aACPC,EAAY,gBACZC,EAAe,WACf4B,EAAU,gBACV3B,EAAe,mBACfC,IACEtD,EAAAA,EAAAA,YAAWgD,KAER4qB,EAAgBC,IAAqBjyB,EAAAA,EAAAA,UAAiB2H,IACtDuqB,EAAcC,IAAmBnyB,EAAAA,EAAAA,UAAiB4H,IAClDwqB,EAAuBC,IAA4BryB,EAAAA,EAAAA,UACxD8xB,IAqBF,OAlBAnxB,EAAAA,EAAAA,YAAU,KACRsxB,EAAkBtqB,GAClBwqB,EAAgBvqB,EAAO,GACtB,CAACD,EAAUC,KAgBZiC,EAAAA,EAAAA,MAACjN,EAAAA,EAAKgT,KAAI,CAAC/S,UAAU,aAAYC,SAAA,EAC/B+M,EAAAA,EAAAA,MAAC8mB,GAAiB,CAAA7zB,SAAA,EAChBH,EAAAA,EAAAA,KAACi1B,GAAiB,CAChB/zB,MAAOu0B,EACPn0B,QAASizB,GAAYn2B,KAAK8X,IAAM,CAC9BhV,MAAOgV,EAAOhV,MACdqG,MAAO2O,MAET8C,SAAW9C,IACThL,EACE5P,GAAWq6B,EAAAA,GAAAA,GAAsBzf,EAAOie,mBAE1ChpB,EAAU7P,GAAWq6B,EAAAA,GAAAA,GAAsBzf,EAAOme,iBAClDqB,EAAyBxf,EAAOhV,MAAM,KAI1ClB,EAAAA,EAAAA,KAACi1B,GAAiB,CAChB/zB,MAAM,SACNI,QAASqJ,GAASvM,KAAKkX,IAAM,CAC3BpU,MAAOoU,EAAO1W,KACd2I,MAAO+N,MAET4f,cAAetqB,GAAchM,KAC7Boa,SAAUnO,KAGZ7K,EAAAA,EAAAA,KAACi1B,GAAiB,CAChB/zB,MAAM,YACNI,QAASmL,GAAYrO,KAAK2X,IAAS,CACjC7U,MAAO6U,EAAUnX,MAAQ,GACzB2I,MAAOwO,MAETmf,cAAepqB,GAAiBlM,MAAQ,GACxCoa,SAAUjO,QAIdmC,EAAAA,EAAAA,MAAC4R,GAAAA,EAAG,CAACiT,GAAI,GAAG5xB,SAAA,EACVH,EAAAA,EAAAA,KAAC+e,GAAAA,EAAG,CAACkP,GAAI,EAAGjP,GAAI,EAAG9e,UAAU,OAAMC,UACjC+M,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAID,SAAA,EACnBH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,UACtBH,EAAAA,EAAAA,KAACoN,GAAAA,EAAKC,QAAO,CACXxL,KAAK,iBACL0F,MAAO8tB,EACPhnB,SAAWC,GAAMgnB,EAAkBhnB,EAAEC,OAAOhH,OAC5CquB,IAAKt6B,EAAW,IAAIM,cAI1BoE,EAAAA,EAAAA,KAAC+e,GAAAA,EAAG,CAACkP,GAAI,EAAGjP,GAAI,EAAG9e,UAAU,OAAMC,UACjC+M,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAACzR,KAAK,KAAID,SAAA,EACnBH,EAAAA,EAAAA,KAACqb,GAAoB,CAAAlb,SAAC,QACtBH,EAAAA,EAAAA,KAACoN,GAAAA,EAAKC,QAAO,CACXxL,KAAK,iBACL0F,MAAOguB,EACPlnB,SAAWC,GAAMknB,EAAgBlnB,EAAEC,OAAOhH,kBAKlDvH,EAAAA,EAAAA,KAAC8e,GAAAA,EAAG,CAAA3e,UACF+M,EAAAA,EAAAA,MAAC6R,GAAAA,EAAG,CAAA5e,SAAA,EACFH,EAAAA,EAAAA,KAACmR,GAAAA,EAAM,CAAC/Q,KAAK,KAAKE,QAAQ,UAAUyN,QA7ElB8nB,KACxB3qB,EAAYmqB,GACZlqB,EAAUoqB,GACVG,EAAyBP,GAAwB,EA0EoBh1B,SAAC,WAGhEH,EAAAA,EAAAA,KAACmR,GAAAA,EAAM,CACL/Q,KAAK,KACLE,QAAQ,SACRJ,UAAU,OACV6N,QA9EgB+nB,KACxB5qB,EAAY5P,EAAW,IAAIM,OAC3BuP,EAAU7P,EAAW,IAAIM,OACzBiP,EAAgB,MAChBE,EAAmB,KAAK,EA0EW5K,SAC5B,iBAKK,E,eCrNhB,MAAMmjB,IAAmB7jB,EAAAA,EAAAA,IAAOQ,EAAAA,EAAK+S,OAAO;;EAItC+iB,GAAet2B,EAAAA,GAAOC,GAAG;;;;EAMzBs2B,IAAcv2B,EAAAA,EAAAA,IAAOsX,GAAAA,EAAM;;;EAK3Bkf,GAAYx2B,EAAAA,GAAOy2B,IAAI;;;EAKvBC,IAAY12B,EAAAA,EAAAA,IAAO22B,GAAAA,EAA+B;WAC5Cz2B,GAAUA,EAAM02B;;;;;EAOtBC,GAAiBC,IACrB,OAAQA,GACN,IAAK,gBACH,MAAO,aACT,IAAK,QACH,MAAO,YACT,IAAK,OACH,MAAO,MACT,IAAK,eACH,MAAO,SAET,QACE,MAAO,OACX,EAsHF,GA9GmBC,EAAGC,YAAWC,mBAC/B,MAAM,iBAAEC,GC3DoBC,MAC5B,MACEzzB,MAAOwzB,EAAgB,UACvBj2B,EAAS,SACT6C,EACAiB,WAAYqyB,EAAuB,UACnCnzB,GACEZ,GACF,2BACAmD,EACA,GAOF,OAJAjC,EAAAA,EAAAA,YAAU,KACR6yB,GAAyB,GACxB,IAEI,CACLF,mBACAj2B,YACA6C,WACAG,YACD,EDqC4BkzB,IACvB,UAAEE,GE5DUC,MAClB,MACE5zB,MAAO2zB,EAAS,UAChBp2B,EAAS,SACT6C,EACAiB,WAAYwyB,EAAa,UACzBtzB,GACEZ,GAAmC,gBAAYmD,EAAW,GAM9D,OAJAjC,EAAAA,EAAAA,YAAU,KACRgzB,GAAe,GACd,IAEI,CACLF,YACAp2B,YACA6C,WACAG,YACD,EF0CqBqzB,IAChB,aAAEE,GG7DYC,MACpB,MACE/zB,MAAO8zB,EAAY,UACnBv2B,EAAS,SACT6C,EACAiB,WAAY2yB,EAAe,UAC3BzzB,GACEZ,GAAqC,mBAAemD,EAAW,IAMnE,OAJAjC,EAAAA,EAAAA,YAAU,KACRmzB,GAAiB,GAChB,IAEI,CACLF,eACAv2B,YACA6C,WACAG,YACD,EH2CwBwzB,IACnB,kBAAEE,GI9DmBC,MAC3B,MACEl0B,MAAOi0B,EAAiB,UACxB12B,EAAS,SACT6C,EACAiB,WAAY8yB,EAAiB,UAC7B5zB,GACEZ,GAA0C,yBAM9C,OAJAkB,EAAAA,EAAAA,YAAU,KACRszB,GAAmB,GAClB,IAEI,CACLF,oBACA12B,YACA6C,WACAG,YACD,EJ4C6B2zB,GAE9B,OACEnqB,EAAAA,EAAAA,MAACoW,GAAgB,CACfpjB,UAAU,4DACV6N,QAASA,KACH0oB,EACFxvB,aAAaa,WAAWlF,GAExBqE,aAAayG,QAAQ9K,EAAkC,KAEzD8zB,GAAcD,EAAU,EACxBt2B,SAAA,EAEFH,EAAAA,EAAAA,KAAC+1B,GAAY,CAAChoB,QAAUO,GAAMA,EAAEipB,kBAAkBp3B,UAChD+M,EAAAA,EAAAA,MAAA,OAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAAA,OAAAG,SACG82B,EAAa74B,KAAKo5B,IACjBx3B,EAAAA,EAAAA,KAAC+W,GAAAA,EAAK,CAEJC,GAAIwgB,EAAWC,SAAW,UAAY,UACtCv3B,UAAU,OAAMC,SAEfq3B,EAAWE,kBAJPF,EAAWE,uBAQtBxqB,EAAAA,EAAAA,MAAA,OAAA/M,SAAA,EACE+M,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CAAY7W,UAAU,OAAO8W,GAAG,OAAM7W,SAAA,CAAC,KACxCi3B,GAAmBO,UAAUpwB,MAAO,KACvCvH,EAAAA,EAAAA,KAACm2B,GAAS,CACRE,OAAQC,GACNc,GAAmBO,UAAUC,0BAJxB,SAQX1qB,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CAAiB7W,UAAU,OAAO8W,GAAG,OAAM7W,SAAA,CAAC,KAC7Ci3B,GAAmBS,WAAWtwB,MAAO,KACxCvH,EAAAA,EAAAA,KAACm2B,GAAS,CACRE,OAAQC,GACNc,GAAmBS,WAAWD,0BAJzB,cAQX1qB,EAAAA,EAAAA,MAAC6J,GAAAA,EAAK,CAAW7W,UAAU,OAAO8W,GAAG,OAAM7W,SAAA,CAAC,KACvCi3B,GAAmBpP,KAAKzgB,OAC3BvH,EAAAA,EAAAA,KAACm2B,GAAS,CACRE,OAAQC,GACNc,GAAmBpP,KAAK4P,0BAJnB,WASb53B,EAAAA,EAAAA,KAAA,OAAAG,SACG22B,EAAU14B,KAAK05B,IACd5qB,EAAAA,EAAAA,MAAC8oB,GAAW,CAEVhf,GAAG,OACH9W,UAAU,OAAMC,SAAA,EAEhBH,EAAAA,EAAAA,KAAA,QAAAG,SAAO/C,EAAgB06B,EAAS9R,oBAChC9Y,EAAAA,EAAAA,MAAA,QAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAACi2B,GAAS,CAAA91B,SAAC,MAAa,IAAE23B,EAASC,yBAErC7qB,EAAAA,EAAAA,MAAA,QAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAACi2B,GAAS,CAAA91B,SAAC,MAAc,IACxB23B,EAASE,gCAEZ9qB,EAAAA,EAAAA,MAAA,QAAA/M,SAAA,EACEH,EAAAA,EAAAA,KAACi2B,GAAS,CAAA91B,SAAC,MAAa,IAAE23B,EAASG,yBAbhCH,EAAS9R,sBAkBpBhmB,EAAAA,EAAAA,KAAA,OAAAG,SACGw2B,EAAiBv4B,KAAKqV,IACrB,IAAIykB,EAEJ,OAAQzkB,EAAK5L,QACX,KAAKnN,EAAmBy9B,QACtBD,EAAc,UACd,MACF,KAAKx9B,EAAmB09B,SACtBF,EAAc,UACd,MACF,KAAKx9B,EAAmBipB,MACxB,QACEuU,EAAc,SAIlB,OACEl4B,EAAAA,EAAAA,KAAC+W,GAAAA,EAAK,CAAiBC,GAAIkhB,EAAah4B,UAAU,OAAMC,UrFlDtEk4B,EqFmDkC5kB,EAAK5R,KrFjDvCvE,OAAOC,KAAK/C,GACV8C,OAAOE,OAAOhD,GAAkBiD,QAAQ46B,MqF+ChB5kB,EAAK5R,MrFlD/Bw2B,KqFoDsB,OAIdr4B,EAAAA,EAAAA,KAAA,eAGHy2B,GAAYz2B,EAAAA,EAAAA,KAACwV,GAAAA,EAAW,KAAMxV,EAAAA,EAAAA,KAACuV,GAAAA,EAAS,MACxB,EKlKV+iB,GAAaA,KACxB,MAAO7B,EAAWC,IAAgBrzB,EAAAA,EAAAA,YAC9B4D,aAAaC,QAAQtE,IAGzB,OACEsK,EAAAA,EAAAA,MAACjN,EAAAA,EAAI,CAACC,UAAU,YAAWC,SAAA,EACzBH,EAAAA,EAAAA,KAACw2B,GAAU,CAACC,UAAWA,EAAWC,aAAcA,KAE9CD,IAAaz2B,EAAAA,EAAAA,KAACo1B,GAAY,MACvB,ECTLmD,IAAkB94B,EAAAA,EAAAA,IAAOc,EAAAA,EAAU;;EAInCi4B,GAAmB/4B,EAAAA,GAAOC,GAAG;;;;;EAO7BG,IAAgBJ,EAAAA,EAAAA,IAAOK,EAAAA,EAAQ;;;EAmCrC,GA9BkB24B,KAChB,MAAM,cAAErtB,EAAa,aAAEC,IAAiB5D,EAAAA,EAAAA,YAAWgD,IAEnD,OAAIW,GAEApL,EAAAA,EAAAA,KAACw4B,GAAgB,CAAAr4B,UACfH,EAAAA,EAAAA,KAACH,GAAa,CAACO,KAAK,KAAKC,UAAU,SAASC,QAAQ,cAKtD+K,EAAa5M,QAEbyO,EAAAA,EAAAA,MAAC+D,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAA,EACrBH,EAAAA,EAAAA,KAACiR,EAAAA,EAAMynB,QAAO,CAAAv4B,SAAC,iBACdkL,EAAajN,KAAK2G,IACjB/E,EAAAA,EAAAA,KAAA,KAAAG,SAAgB4E,GAARA,SAOdmI,EAAAA,EAAAA,MAACqrB,GAAe,CAACI,OAAK,EAACz4B,UAAU,aAAYC,SAAA,EAC3CH,EAAAA,EAAAA,KAACs4B,GAAU,KACXt4B,EAAAA,EAAAA,KAAC8zB,GAAO,MACQ,EClChB9M,IAAavnB,EAAAA,EAAAA,IAAOQ,EAAAA,EAAK;;;;;;;EASzBob,IAAuB5b,EAAAA,EAAAA,IAAOoS,GAAAA,EAAWyJ,KAAK;;EA0EpD,GAtEcsd,KACZ,MAAO7zB,EAAO8zB,IAAYx1B,EAAAA,EAAAA,UAAS,KAC5B8W,EAAO2e,IAAYz1B,EAAAA,EAAAA,UAAS,KAC5B01B,EAAUC,IAAe31B,EAAAA,EAAAA,UAAS,KAEnC,MAAEqB,GAAUE,MACZ,YAAE6B,IAAgBgB,EAAAA,EAAAA,YAAWnB,IAuBnC,OACEtG,EAAAA,EAAAA,KAACgnB,GAAU,CAAA7mB,UACTH,EAAAA,EAAAA,KAACC,EAAAA,EAAKgT,KAAI,CAAA9S,UACR+M,EAAAA,EAAAA,MAACE,GAAAA,EAAI,CAAC6rB,SAxBI10B,UACd+J,EAAE4qB,iBAEF,MAAMhzB,QAAiBxB,EAAM,GAAGpC,UAAyB,CACvDuD,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CAAE+yB,WAAU5e,YAGnC,IAAKjU,EAASd,GAAI,CAChB,MAAML,QAAcmB,EAASZ,OAG7B,YADAuzB,EAAS9zB,GAAOQ,SAAW,cAE7B,CAEA,MAAM,MAAEyB,SAAiBd,EAASZ,OAClC2B,aAAayG,QAAQ/K,EAAqBqE,GAC1C6xB,EAAS,IACTpyB,GAAY,EAAK,EAMWtG,SAAA,EACtB+M,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAAC3R,UAAU,OAAMC,SAAA,EAC1BH,EAAAA,EAAAA,KAACqb,GAAoB,CAACxe,GAAG,eAAcsD,SAAC,WACxCH,EAAAA,EAAAA,KAAC8R,GAAAA,EAAW,CACVjQ,KAAK,QACL,aAAW,QACXwM,SAAWC,GAAMwqB,EAASxqB,EAAEC,OAAOhH,OACnC4xB,UAAQ,QAGZjsB,EAAAA,EAAAA,MAAC2E,GAAAA,EAAU,CAAC3R,UAAU,OAAMC,SAAA,EAC1BH,EAAAA,EAAAA,KAACqb,GAAoB,CAACxe,GAAG,eAAcsD,SAAC,cAGxCH,EAAAA,EAAAA,KAAC8R,GAAAA,EAAW,CACVsnB,UAAW,GACXD,UAAQ,EACRt3B,KAAK,WACL,aAAW,WACXwM,SAAWC,GAAM0qB,EAAY1qB,EAAEC,OAAOhH,aAG1CvH,EAAAA,EAAAA,KAAA,OAAKE,UAAU,eAAcC,UAC3BH,EAAAA,EAAAA,KAACmR,GAAAA,EAAM,CACL7Q,QAAQ,UACRuB,KAAK,SACLiM,SAAuB,KAAbirB,GAA6B,KAAV5e,EAAaha,SAC3C,YAIF4E,GAAQ/E,EAAAA,EAAAA,KAACiR,EAAAA,EAAK,CAAC3Q,QAAQ,SAAQH,SAAE4E,IAAiB,WAG5C,EC5EjB,GAZY+V,KACV,MAAM,SAAEtU,IAAaiB,EAAAA,EAAAA,YAAWnB,IAEhC,OAAOE,GACLxG,EAAAA,EAAAA,KAACsL,GAAY,CAAAnL,UACXH,EAAAA,EAAAA,KAACy4B,GAAS,OAGZz4B,EAAAA,EAAAA,KAAC44B,GAAK,GACP,ECEHS,EAAAA,GAAQC,SACNC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,MACGC,EAAAA,IAGL,MAAMC,GAAQA,KACZ75B,EAAAA,EAAAA,KAAC85B,EAAAA,GAAU,CAAA35B,UACTH,EAAAA,EAAAA,KAAC6G,GAAY,CAAA1G,UACXH,EAAAA,EAAAA,KAAC8a,GAAG,SAKGif,EAAAA,EAAAA,GAAW71B,SAAS81B,eAAe,SAC3CC,QAAOj6B,EAAAA,EAAAA,KAAC65B,GAAK,I,GCnCdK,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBn0B,IAAjBo0B,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CACjDv9B,GAAIu9B,EACJI,QAAQ,EACRF,QAAS,CAAC,GAUX,OANAG,EAAoBL,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG3EI,EAAOC,QAAS,EAGTD,EAAOD,OACf,CAGAH,EAAoBQ,EAAIF,ElG5BpBvgC,EAAW,GACfigC,EAAoBS,EAAI,CAACz1B,EAAQ01B,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIhhC,EAASuE,OAAQy8B,IAAK,CACrCL,EAAW3gC,EAASghC,GAAG,GACvBJ,EAAK5gC,EAASghC,GAAG,GACjBH,EAAW7gC,EAASghC,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASp8B,OAAQ28B,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaz9B,OAAOC,KAAK48B,EAAoBS,GAAGS,OAAOjzB,GAAS+xB,EAAoBS,EAAExyB,GAAKyyB,EAASO,MAC9IP,EAASS,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbjhC,EAASohC,OAAOJ,IAAK,GACrB,IAAIK,EAAIT,SACE70B,IAANs1B,IAAiBp2B,EAASo2B,EAC/B,CACD,CACA,OAAOp2B,CArBP,CAJC41B,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIhhC,EAASuE,OAAQy8B,EAAI,GAAKhhC,EAASghC,EAAI,GAAG,GAAKH,EAAUG,IAAKhhC,EAASghC,GAAKhhC,EAASghC,EAAI,GACrGhhC,EAASghC,GAAK,CAACL,EAAUC,EAAIC,EAuBjB,EmG3BdZ,EAAoBqB,EAAKjB,IACxB,IAAIkB,EAASlB,GAAUA,EAAOmB,WAC7B,IAAOnB,EAAiB,QACxB,IAAM,EAEP,OADAJ,EAAoBwB,EAAEF,EAAQ,CAAExrB,EAAGwrB,IAC5BA,CAAM,ElGNVrhC,EAAWkD,OAAOs+B,eAAkBC,GAASv+B,OAAOs+B,eAAeC,GAASA,GAASA,EAAa,UAQtG1B,EAAoB2B,EAAI,SAASv0B,EAAOw0B,GAEvC,GADU,EAAPA,IAAUx0B,EAAQy0B,KAAKz0B,IAChB,EAAPw0B,EAAU,OAAOx0B,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPw0B,GAAax0B,EAAMm0B,WAAY,OAAOn0B,EAC1C,GAAW,GAAPw0B,GAAoC,mBAAfx0B,EAAM00B,KAAqB,OAAO10B,CAC5D,CACA,IAAI20B,EAAK5+B,OAAO6+B,OAAO,MACvBhC,EAAoBoB,EAAEW,GACtB,IAAIE,EAAM,CAAC,EACXjiC,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI8K,EAAiB,EAAP62B,GAAYx0B,EAAyB,iBAAXrC,KAAyB/K,EAAesD,QAAQyH,GAAUA,EAAU9K,EAAS8K,GACxH5H,OAAO++B,oBAAoBn3B,GAASkmB,SAAShjB,GAASg0B,EAAIh0B,GAAO,IAAOb,EAAMa,KAI/E,OAFAg0B,EAAa,QAAI,IAAM,EACvBjC,EAAoBwB,EAAEO,EAAIE,GACnBF,CACR,EmGxBA/B,EAAoBwB,EAAI,CAACrB,EAASgC,KACjC,IAAI,IAAIl0B,KAAOk0B,EACXnC,EAAoBoC,EAAED,EAAYl0B,KAAS+xB,EAAoBoC,EAAEjC,EAASlyB,IAC5E9K,OAAOk/B,eAAelC,EAASlyB,EAAK,CAAEq0B,YAAY,EAAMC,IAAKJ,EAAWl0B,IAE1E,ECND+xB,EAAoBwC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOZ,MAAQ,IAAIa,SAAS,cAAb,EAChB,CAAE,MAAOvuB,GACR,GAAsB,iBAAXnS,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBg+B,EAAoBoC,EAAI,CAACV,EAAKiB,IAAUx/B,OAAOy/B,UAAUC,eAAetC,KAAKmB,EAAKiB,GCClF3C,EAAoBoB,EAAKjB,IACH,oBAAX2C,QAA0BA,OAAOC,aAC1C5/B,OAAOk/B,eAAelC,EAAS2C,OAAOC,YAAa,CAAE31B,MAAO,WAE7DjK,OAAOk/B,eAAelC,EAAS,aAAc,CAAE/yB,OAAO,GAAO,ECL9D4yB,EAAoBgD,IAAO5C,IAC1BA,EAAO6C,MAAQ,GACV7C,EAAOp6B,WAAUo6B,EAAOp6B,SAAW,IACjCo6B,G,MCER,IAAI8C,EAAkB,CACrB,IAAK,GAaNlD,EAAoBS,EAAEQ,EAAKkC,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4B38B,KACvD,IAKIu5B,EAAUkD,EALVzC,EAAWh6B,EAAK,GAChB48B,EAAc58B,EAAK,GACnB68B,EAAU78B,EAAK,GAGIq6B,EAAI,EAC3B,GAAGL,EAAShuB,MAAMhQ,GAAgC,IAAxBwgC,EAAgBxgC,KAAa,CACtD,IAAIu9B,KAAYqD,EACZtD,EAAoBoC,EAAEkB,EAAarD,KACrCD,EAAoBQ,EAAEP,GAAYqD,EAAYrD,IAGhD,GAAGsD,EAAS,IAAIv4B,EAASu4B,EAAQvD,EAClC,CAEA,IADGqD,GAA4BA,EAA2B38B,GACrDq6B,EAAIL,EAASp8B,OAAQy8B,IACzBoC,EAAUzC,EAASK,GAChBf,EAAoBoC,EAAEc,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOnD,EAAoBS,EAAEz1B,EAAO,EAGjCw4B,EAAqBC,KAAmB,aAAIA,KAAmB,cAAK,GACxED,EAAmBvS,QAAQmS,EAAqBM,KAAK,KAAM,IAC3DF,EAAmBjX,KAAO6W,EAAqBM,KAAK,KAAMF,EAAmBjX,KAAKmX,KAAKF,G,KClDvFxD,EAAoB2D,QAAK73B,ECGzB,IAAI83B,EAAsB5D,EAAoBS,OAAE30B,EAAW,CAAC,IAAI,IAAI,IAAI,GAAG,MAAM,IAAOk0B,EAAoB,QAC5G4D,EAAsB5D,EAAoBS,EAAEmD,E","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///./types/Api.ts","webpack:///./utils/index.ts","webpack:///./components/misc/Loader.tsx","webpack:///./components/balance/BalanceChart.tsx","webpack:///./constants/index.ts","webpack:///./hooks/useBaseGetHook.ts","webpack:///./hooks/useCountdownHook.ts","webpack:///./hooks/useDatesHook.ts","webpack:///./hooks/useBaseDeleteHook.ts","webpack:///./hooks/useLogsHook.ts","webpack:///./context/Auth.tsx","webpack:///./hooks/useFetchHook.ts","webpack:///./hooks/useBasePutHook.ts","webpack:///./hooks/useConfigurationHook.ts","webpack:///./hooks/useAppConfigurationHook.ts","webpack:///./hooks/useBasePostHook.ts","webpack:///./hooks/useCurrentBalancesHook.ts","webpack:///./hooks/useGatewayInfoHook.ts","webpack:///./hooks/usePaginationHook.ts","webpack:///./hooks/useWalletBalanceHook.ts","webpack:///./hooks/useBalanceCheckHook.ts","webpack:///./context/Data.tsx","webpack:///./components/misc/Countdown.tsx","webpack:///./components/misc/Pagination.tsx","webpack:///./components/misc/TableContainer.tsx","webpack:///./components/balance/BalanceTable.tsx","webpack:///./components/balance/BalanceViewer.tsx","webpack:///./hooks/useBalanceHook.ts","webpack:///./components/configuration/ConfigurationFormBottom.tsx","webpack:///./components/misc/ConfigurationInput.tsx","webpack:///./components/misc/ConfigurationSwitch.tsx","webpack:///./components/configuration/AppConfiguration.tsx","webpack:///./components/configuration/AppConfigurations.tsx","webpack:///./components/configuration/ArbitrageInfo.tsx","webpack:///./hooks/useArbitrageEventHook.ts","webpack:///./components/misc/ConfigurationTurnOnOff.tsx","webpack:///./components/configuration/BalanceCheckConfiguration.tsx","webpack:///./components/configuration/BalanceCheckConfigurations.tsx","webpack:///./components/configuration/configUtils.ts","webpack:///./components/misc/ConfigurationSelect.tsx","webpack:///./components/configuration/TradeConfigurationBody.tsx","webpack:///./components/configuration/TradeConfigurationHeader.tsx","webpack:///./components/configuration/TradeConfigurationToggles.tsx","webpack:///./components/configuration/TradeConfiguration.tsx","webpack:///./components/configuration/TradeConfigurations.tsx","webpack:///./components/configuration/UsersConfiguration.tsx","webpack:///./hooks/useUsersHook.ts","webpack:///./components/configuration/ConfigurationViewer.tsx","webpack:///./components/exchange/ExchangeCard.tsx","webpack:///./hooks/useExchangeHook.ts","webpack:///./components/misc/LinkMaybeModal.tsx","webpack:///./components/misc/LinksModal.tsx","webpack:///./components/exchange/ExchangeTable.tsx","webpack:///./hooks/useExchangeListHook.ts","webpack:///./components/RefreshIcon.tsx","webpack:///./components/balance/BalanceCurrent.tsx","webpack:///./components/exchange/ExchangeViewer.tsx","webpack:///./components/logs/LogsTable.tsx","webpack:///./components/logs/RecentTradeStoreChart.tsx","webpack:///./hooks/useRecentTradeStoreDataHook.ts","webpack:///./components/logs/LogsViewer.tsx","webpack:///./components/other/AllowanceItem.tsx","webpack:///./components/other/AllowanceResponse.tsx","webpack:///./hooks/useArbitrageAllowanceHook.ts","webpack:///./components/other/GatewaysStatus.tsx","webpack:///./components/other/OtherViewer.tsx","webpack:///./components/performance/PerformanceViewer.tsx","webpack:///./hooks/usePerformanceStoreHook.ts","webpack:///./components/timeline/TimelineViewer.tsx","webpack:///./hooks/useTimelineHook.ts","webpack:///./components/misc/DataTable.tsx","webpack:///./components/misc/DataModal.tsx","webpack:///./components/trades/TransactionItem.tsx","webpack:///./components/trades/TradeItem.tsx","webpack:///./hooks/useWindowSizeHook.ts","webpack:///./components/trades/TradesStatistics.tsx","webpack:///./components/trades/TradesViewer.tsx","webpack:///./hooks/useTradeDataHook.ts","webpack:///./components/misc/SwapButton.tsx","webpack:///./components/transfer/TransferCard.tsx","webpack:///./hooks/useTransferHook.ts","webpack:///./components/transfer/TransferTable.tsx","webpack:///./hooks/useTransferListHook.ts","webpack:///./components/transfer/TransferViewer.tsx","webpack:///./components/TabsNav.tsx","webpack:///./components/settings/DataSettings.tsx","webpack:///./components/settings/InfoBadges.tsx","webpack:///./hooks/useInstanceTypeStatusHook.ts","webpack:///./hooks/useGasPriceHook.ts","webpack:///./hooks/useUserStatusHook.ts","webpack:///./hooks/useFearAndGreedIndexHook.ts","webpack:///./components/settings/PageHeader.tsx","webpack:///./components/Dashboard.tsx","webpack:///./components/Login.tsx","webpack:///./components/App.tsx","webpack:///./index.tsx","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","//----------------------\n// \n// Generated using the NSwag toolchain v14.3.0.0 (NJsonSchema v11.2.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\n\n\nexport interface ApplicationConfiguration {\n botRunning: ApplicationConfigurationItemOfBoolean | null;\n capitalGuardActive: ApplicationConfigurationItemOfBoolean | null;\n capitalGuardPercentageLost: ApplicationConfigurationItemOfDecimal | null;\n}\n\nexport interface ApplicationConfigurationItemOfBoolean {\n key: string | null;\n value: boolean;\n updated: string;\n}\n\nexport interface ApplicationConfigurationItemOfDecimal {\n key: string | null;\n value: number;\n updated: string;\n}\n\nexport interface ApplicationConfigurationRequest {\n id: string;\n value: any;\n}\n\nexport interface KeyValueResponse {\n id: number;\n name: string | null;\n}\n\nexport interface ArbitrageEventResponse {\n activeArbitrageCount: number;\n activeWebSockets: ExchangeActiveWebSocketItem[];\n arbitrages: ArbitrageItem[];\n}\n\nexport interface ExchangeActiveWebSocketItem {\n exchangeType: ExchangeTypeEnum;\n activeWebSocketCount: number;\n}\n\nexport enum ExchangeTypeEnum {\n Binance = 1,\n Swop = 2,\n WavesExchange = 3,\n Kucoin = 4,\n Kraken = 5,\n Gate = 9,\n Mexc = 10,\n PancakeSwapV2 = 12,\n PancakeSwapV3 = 13,\n UniswapV2 = 15,\n UniswapV3 = 16,\n Quickswap = 18,\n SushiswapV2 = 20,\n CamelotV3 = 22,\n AerodromeV2 = 24,\n Unknown = 999,\n}\n\nexport interface ArbitrageItem {\n name: string;\n type: ArbitrageTypeEnum;\n items: ArbitrageExchangeItem[];\n}\n\nexport enum ArbitrageTypeEnum {\n GenericDeterministic = 3,\n GenericTriangularDeterministic = 4,\n BidAskQuote = 5,\n}\n\nexport interface ArbitrageExchangeItem {\n exchangeType: ExchangeTypeEnum;\n assetPairText: string;\n events: ArbitrageEvent[];\n}\n\nexport interface ArbitrageEvent {\n runId: number;\n count: number;\n}\n\nexport interface ArbitragePerformanceResponse {\n arbitrageName: string;\n tradeCount: number;\n negativeTradeCount: number;\n failedTradeCount: number;\n profitInDollars: number;\n averageProfitInDollarsPerTrade: number;\n volume: number;\n}\n\nexport interface AllowanceResponse {\n arbitrageName: string;\n assets: AllowanceAsset[];\n}\n\nexport interface AllowanceAsset {\n exchangeType: ExchangeTypeEnum;\n networkPlatform: NetworkPlatformEnum;\n liquidityPoolVersion: LiquidityPoolVersionEnum;\n walletAddress: string;\n assetName: string;\n routerAddress: string;\n allowanceAmount: number;\n allowanceDollarValue: number;\n}\n\nexport enum NetworkPlatformEnum {\n BTC = 1,\n ETH = 2,\n WAVES = 3,\n BSC = 4,\n TRX = 5,\n WEST = 6,\n LTC = 7,\n ALGO = 8,\n MATIC = 9,\n VET = 10,\n BASE = 11,\n UNIT0 = 12,\n ARB = 13,\n}\n\nexport enum LiquidityPoolVersionEnum {\n V2 = 1,\n V3 = 2,\n}\n\nexport interface ArbitrageProfitabilityResponse {\n tradeDirectionId: TradeDirectionEnum;\n profitabilityInPercent: number;\n created: string;\n}\n\nexport enum TradeDirectionEnum {\n Straight = 1,\n Reverse = 2,\n}\n\nexport interface ArbitrageProfitabilityRequest {\n id: number;\n from: string;\n to: string;\n}\n\nexport interface ArbitrageCurrentProfitabilityResponse {\n straightProfitabilityItem: ArbitrageProfitabilityResponse | null;\n reverseProfitabilityItem: ArbitrageProfitabilityResponse | null;\n isAnomaly: boolean;\n}\n\nexport interface ArbitrageProfitabilityNotificationResponse {\n tradeDirection: TradeDirectionEnum;\n profitabilityInPercent: number;\n isEnabled: boolean;\n}\n\nexport interface ArbitrageProfitabilityNotificationRequest {\n id: number;\n tradeDirection: TradeDirectionEnum;\n profitabilityInPercent: number;\n isEnabled: boolean;\n}\n\nexport interface AssetResponse {\n id: string;\n name: string;\n decimals: number;\n textDecimals: number;\n price: number;\n isStableCoin: boolean;\n}\n\nexport interface AssetPairResponse {\n id: number;\n amountAsset: AssetResponse;\n priceAsset: AssetResponse;\n isEqualized: boolean;\n}\n\nexport interface BalanceResponse {\n balanceSummaries: BalanceSummaryResponse[];\n balances: BalanceItemResponse[];\n totalInUsd: number;\n percentageStableCoinPart: number;\n percentageNonStableCoinPart: number;\n changeInUsd: number;\n}\n\nexport interface BalanceSummaryResponse {\n assetName: string;\n isStableCoin: boolean;\n price: number;\n balance: number;\n totalInUsd: number;\n change: number;\n changeInUsd: number;\n}\n\nexport interface BalanceItemResponse {\n balance: number;\n created: string;\n}\n\nexport interface CurrentBalanceGroupResponse {\n name: string;\n wallets: CurrentBalanceWalletResponse[];\n assets: CurrentBalanceAssetResponse[];\n}\n\nexport interface CurrentBalanceWalletResponse {\n wallet: WalletResponse;\n assets: CurrentBalanceAssetResponse[];\n}\n\nexport interface WalletResponse {\n id: number;\n name: string;\n address: string;\n exchangeType: ExchangeTypeEnum;\n networkPlatform: NetworkPlatformEnum | null;\n priority: number;\n}\n\nexport interface CurrentBalanceAssetResponse {\n asset: AssetResponse;\n balance: BalanceDto;\n}\n\nexport interface BalanceDto {\n assetId: string | null;\n total: number;\n free: number;\n locked: number;\n freeze: number;\n unConfirmFreeze: number;\n withdrawing: number;\n}\n\nexport interface BalanceCheckConfigurationResponse {\n wallet: WalletResponse;\n asset: AssetResponse;\n isEnabled: boolean;\n minQuantity: number | null;\n maxQuantity: number | null;\n}\n\nexport interface BalanceCheckConfigurationRequest {\n walletId: number;\n assetId: string;\n isEnabled: boolean;\n minQuantity: number | null;\n maxQuantity: number | null;\n}\n\nexport interface ConfigurationResponse {\n group: string;\n arbitrages: ArbitrageResponse[];\n}\n\nexport interface BaseArbitrageConfigurationResponse {\n configuration: any;\n highPriorityProperties: string[];\n restrictedFields: { [key: string]: string[]; };\n negativeProperties: string[];\n}\n\nexport interface ArbitrageResponse extends BaseArbitrageConfigurationResponse {\n id: number;\n name: string;\n arbitrageType: ArbitrageTypeEnum;\n instanceType: InstanceTypeEnum;\n isPaused: boolean;\n isEnabled: boolean;\n assetPairWallets: ArbitrageAssetPairWalletResponse[];\n usedAssets: AssetResponse[];\n usedWallets: WalletResponse[];\n}\n\nexport enum InstanceTypeEnum {\n Phobos = 1,\n Deimos = 2,\n}\n\nexport interface ArbitrageAssetPairWalletResponse extends BaseArbitrageConfigurationResponse {\n id: number;\n eventTrigger: boolean;\n assetPair: AssetPairResponse;\n wallet: WalletResponse;\n feeType: FeeAssetTypeEnum;\n order: OrderEnum;\n serviceType: ExchangeServiceTypeEnum;\n usedAssets: AssetResponse[];\n link: string | null;\n}\n\nexport enum FeeAssetTypeEnum {\n Static = 1,\n Percent = 2,\n}\n\nexport enum OrderEnum {\n Unknown = 1,\n First = 2,\n Second = 3,\n Third = 4,\n}\n\nexport enum ExchangeServiceTypeEnum {\n Exchange = 1,\n LiquidityPool = 2,\n}\n\nexport interface ConfigurationRequest {\n id: number;\n configuration: any;\n isPaused: boolean;\n isEnabled: boolean;\n assetPairConfigurations: AssetPairConfigurationRequest[];\n}\n\nexport interface AssetPairConfigurationRequest {\n id: number;\n configuration: any;\n}\n\nexport interface GasPriceResponse {\n networkPlatform: NetworkPlatformEnum;\n targetProbability: TargetProbabilityEnum;\n baseFeePerGas: number;\n roundedBaseFeePerGas: string;\n maxPriorityFeePerGas: number;\n roundedMaxPriorityFeePerGas: string;\n maxFeePerGas: number;\n roundedMaxFeePerGas: string;\n updated: string;\n}\n\nexport enum TargetProbabilityEnum {\n Moderate = 70,\n ModerateHigh = 80,\n High = 90,\n VeryHigh = 95,\n AlmostCertain = 99,\n}\n\nexport interface InstanceTypeStatusResponse {\n type: InstanceTypeEnum;\n status: InstanceTypeStatus;\n}\n\nexport enum InstanceTypeStatus {\n Running = 0,\n Inactive = 1,\n Error = 2,\n}\n\nexport interface PaginationResponseOfLogResponse {\n items: LogResponse[];\n totalCount: number;\n pageNumber: number;\n pageSize: number;\n totalPages: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport interface LogResponse {\n source: string;\n message: string;\n level: string;\n exception: string | null;\n created: string | null;\n}\n\nexport interface LoginResponse {\n login: string;\n token: string;\n role: RoleEnum;\n validFrom: string;\n validTo: string;\n}\n\nexport enum RoleEnum {\n Owner = 1,\n Operator = 2,\n}\n\nexport interface LoginRequest {\n login: string;\n password: string;\n}\n\nexport interface FearAndGreedIndexResponse {\n now: FearAndGreedData;\n yesterday: FearAndGreedData;\n lastWeek: FearAndGreedData;\n}\n\nexport interface FearAndGreedData {\n value: number;\n value_classification: string;\n}\n\nexport interface MarketDataResponse {\n asset: MarketDataAssetResponse;\n tickers: MarketDataTickerResponse[];\n}\n\nexport interface MarketDataAssetResponse {\n name: string;\n symbol: string;\n}\n\nexport interface MarketDataTickerResponse {\n baseAsset: MarketDataAssetResponse;\n baseId: string;\n targetAsset: MarketDataAssetResponse;\n targetId: string;\n exchange: MarketDataExchangeResponse;\n bidAskSpreadPercentage: number | null;\n volume: number | null;\n convertedVolume: number | null;\n isAnomaly: boolean;\n isStale: boolean;\n tradeUrl: string | null;\n trustScore: string | null;\n type: string;\n}\n\nexport interface MarketDataExchangeResponse {\n name: string;\n image: string;\n trustScore: number | null;\n trustScoreRank: number | null;\n}\n\nexport interface BlockHeightResponse {\n blockHeight: number;\n}\n\nexport interface BackupRateResponse {\n backupRate: string;\n}\n\nexport interface RecentTradeStoreDataResponse {\n exchangeType: ExchangeTypeEnum;\n networkPlatform: NetworkPlatformEnum;\n isStableCoinPair: boolean;\n waitTimeInMiliseconds: number;\n created: string;\n}\n\nexport interface PaginationResponseOfSwapResponse {\n items: SwapResponse[];\n totalCount: number;\n pageNumber: number;\n pageSize: number;\n totalPages: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport interface SwapResponse {\n id: number;\n type: SwapTypeEnum;\n exchangeId: ExchangeTypeEnum;\n walletId: number;\n amountAssetId: string;\n priceAssetId: string;\n orderSideId: OrderSideEnum;\n expectedAmount: number;\n expectedPrice: number;\n orderId: string;\n links: string[];\n filledStatus: number;\n realPrice: number | null;\n acquiredAmount: number | null;\n payAmount: number | null;\n isCancelled: boolean;\n created: string;\n createdBy: string;\n updated: string | null;\n}\n\nexport enum SwapTypeEnum {\n Manual = 1,\n Automatic = 2,\n}\n\nexport enum OrderSideEnum {\n Buy = 1,\n Sell = 2,\n}\n\nexport interface SwapWhitelistResponse {\n wallet: WalletResponse;\n assetPairs: AssetPairResponse[];\n availableAssets: AssetResponse[];\n}\n\nexport interface SwapPriceResponse {\n asks: PriceResponse;\n bids: PriceResponse;\n}\n\nexport interface PriceResponse {\n firstPrice: number;\n averagePrice: number;\n lastPrice: number;\n}\n\nexport interface SwapPricesRequest {\n walletId: number;\n assetPairId: number;\n amount: number;\n}\n\nexport interface BaseMessage {\n message: string;\n}\n\nexport interface SwapRequest {\n cancellableTimeInSeconds: number | null;\n walletId: number;\n assetPairId: number;\n orderSide: OrderSideEnum;\n amount: number;\n price: number;\n}\n\nexport interface PaginationResponseOfTimelineResponse {\n items: TimelineResponse[];\n totalCount: number;\n pageNumber: number;\n pageSize: number;\n totalPages: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport interface TimelineResponse {\n severity: SeverityTypeEnum | null;\n type: NotificationTypeEnum;\n text: string;\n created: string;\n}\n\nexport enum SeverityTypeEnum {\n Low = 1,\n High = 2,\n Critical = 3,\n}\n\nexport enum NotificationTypeEnum {\n ArbitrageRemainingTrade = 1,\n ArbitrageProfitabilityCheck = 2,\n ArbitrageProfitabilityAdviser = 3,\n ProfitabilityUrgent = 4,\n Profitability = 5,\n ProfitabilityStoreAgeCheck = 6,\n ProfitabilityStoreRunIdCheck = 7,\n BotRunning = 8,\n KucoinWebSocketCheck = 9,\n DepositStatusUpdate = 10,\n GatewayStatusChange = 11,\n RecentFatalException = 12,\n RecentErrorException = 13,\n PriceSynchronizerCheck = 14,\n LastTradeCheck = 15,\n DAppIdsCheck = 16,\n WavesExchangeLargeOrder = 17,\n RecentTrade = 18,\n ArbitrageConfigurationChange = 19,\n ExchangeIsNotUsableCheck = 20,\n BalanceDecreaseCheck = 21,\n ManualExchange = 22,\n SmartExchange = 23,\n ArbitrageNotificationChange = 24,\n ManualExchangeFilledChange = 25,\n UnfinishedTrade = 26,\n LargeSwapNeutrinoToWavesNotification = 27,\n WavesExchangeNoLiquidityArbitrageBalanceCheckNotification = 28,\n RatesAreNotUsableCheck = 29,\n FeeTypeCheck = 30,\n InstanceRunningCheck = 31,\n FeeAssetMissing = 32,\n ChainAddressNonceCheck = 33,\n WithdrawStatusUpdate = 34,\n HighTradeVolume = 35,\n BalanceCheck = 36,\n}\n\nexport interface PaginationResponseOfTradeResponse {\n items: TradeResponse[];\n totalCount: number;\n pageNumber: number;\n pageSize: number;\n totalPages: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport interface TradeResponse {\n tradeCount: number;\n volume: number;\n straightTradeCount: number;\n reverseTradeCount: number;\n averageTradeProfit: number;\n pagination: PaginationResponseOfTradeItemResponse;\n}\n\nexport interface PaginationResponseOfTradeItemResponse {\n items: TradeItemResponse[];\n totalCount: number;\n pageNumber: number;\n pageSize: number;\n totalPages: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport interface TradeItemResponse {\n arbitrageName: string;\n sourceExchange: string;\n tradeDirection: TradeDirectionEnum;\n arbitrageType: ArbitrageTypeEnum;\n tradeResult: TradeResultEnum;\n isMultiplierUsed: boolean;\n configuredProfitInPercent: number;\n expectedProfitInPercent: number;\n realProfitInPercent: number;\n isExpectedProfitRealized: boolean;\n isProfitRealized: boolean;\n realProfitInDollars: number;\n volume: number;\n evaluation: TradeEvaluationEnum;\n isQuantityConsistent: boolean;\n created: string;\n transactions: TradeItemTransactionResponse[];\n}\n\nexport enum TradeResultEnum {\n Finished = 1,\n Partial = 2,\n Unfinished = 3,\n Error = 4,\n}\n\nexport enum TradeEvaluationEnum {\n Great = 0,\n Good = 1,\n Bad = 2,\n}\n\nexport interface TradeItemTransactionResponse {\n transactionId: string;\n orderSide: OrderSideEnum;\n averagePrice: number;\n lastPrice: number | null;\n expectedPrice: number;\n realPrice: number;\n amount: number;\n filled: number;\n status: number;\n volume: number;\n assetPair: AssetPairResponse;\n wallet: WalletResponse;\n exchange: ExchangeResponse;\n order: OrderEnum;\n additionalData: TradeItemTransactionAdditionalDataResponse[];\n links: string[];\n}\n\nexport interface ExchangeResponse {\n id: ExchangeTypeEnum;\n name: string;\n abbreviation: string;\n}\n\nexport interface TradeItemTransactionAdditionalDataResponse {\n type: TradeAdditionalDataTypeEnum;\n data: string;\n}\n\nexport enum TradeAdditionalDataTypeEnum {\n AmountAssetBalance = 1,\n PriceAssetBalance = 2,\n SqrtPriceX96 = 3,\n Tick = 4,\n Liquidity = 5,\n OrderBookSnapshot = 6,\n}\n\nexport interface TradeDetailResponse {\n assetPairs: string;\n profitInDollarsSum: number;\n profitInPercentAvg: number;\n tradeCount: number;\n}\n\nexport interface UserResponse {\n id: number;\n login: string;\n role: RoleEnum;\n isBlocked: boolean;\n}\n\nexport interface UserRequest {\n id: number;\n isBlocked: boolean;\n}\n\nexport interface UserStatusResponse {\n userAbbreviation: string;\n isActive: boolean;\n}\n\nexport interface BalanceWalletResponse extends WalletResponse {\n balances: CurrentBalanceItemResponse[];\n}\n\nexport interface CurrentBalanceItemResponse extends BalanceDto {\n reserved: number;\n freeWithReserved: number;\n}\n\nexport interface WalletBalanceResponse {\n asset: AssetResponse;\n balance: number;\n floorRoundedBalance: number;\n}\n\nexport interface PaginationResponseOfWithdrawalResponse {\n items: WithdrawalResponse[];\n totalCount: number;\n pageNumber: number;\n pageSize: number;\n totalPages: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n}\n\nexport interface WithdrawalResponse {\n id: number;\n groupId: string;\n transactionId: string | null;\n link: string | null;\n asset: AssetResponse;\n amount: number;\n wallet: WalletResponse;\n statusId: WithdrawalDepositStatusEnum | null;\n networkPlatformId: NetworkPlatformEnum;\n blockHeight: number | null;\n fee: number | null;\n feeInDollars: number | null;\n created: string;\n createdBy: string;\n deposit: DepositResponse;\n}\n\nexport enum WithdrawalDepositStatusEnum {\n Started = 1,\n Processing = 2,\n Completed = 3,\n Unknown = 4,\n OnHold = 5,\n}\n\nexport interface DepositResponse {\n assetId: string;\n assetName: string;\n walletId: number;\n walletName: string;\n statusId: WithdrawalDepositStatusEnum | null;\n}\n\nexport interface WithdrawalWhitelistResponse {\n sourceAsset: AssetResponse;\n destinationAsset: AssetResponse;\n networkPlatform: NetworkPlatformResponse;\n sourceWallet: WalletResponse;\n destinationWallet: WalletResponse;\n}\n\nexport interface NetworkPlatformResponse {\n id: NetworkPlatformEnum;\n name: string;\n}\n\nexport interface WithdrawalRequests {\n withdrawals: WithdrawalRequest[];\n}\n\nexport interface WithdrawalRequest {\n sourceWalletId: number;\n destinationWalletId: number;\n sourceAssetId: string;\n destinationAssetId: string | null;\n amount: number;\n networkPlatformId: NetworkPlatformEnum;\n}\n\nexport interface UpdateWithdrawalRequest {\n id: number;\n withdrawalStatusId: WithdrawalDepositStatusEnum;\n depositStatusId: WithdrawalDepositStatusEnum;\n}\n\nexport interface WithdrawalDepositGatewayDetailResponse {\n asset: AssetResponse;\n exchangeId: ExchangeTypeEnum;\n fee: number | null;\n feeAsset: AssetResponse;\n networkPlatformId: NetworkPlatformEnum;\n depositStatus: boolean | null;\n withdrawalStatus: boolean | null;\n updated: string | null;\n}\n\nexport interface WithdrawalDepositGatewayScanResponse {\n exchangeType: ExchangeTypeEnum;\n exchangeTypeAbbreviation: string;\n networkPlatform: NetworkPlatformEnum;\n name: string | null;\n asset: AssetResponse;\n gatewayAssetId: string;\n address: string;\n link: string;\n availableQuantity: number;\n availableQuantityUpdated: string;\n transactionInCountProcessedInLastHour: number;\n transactionOutCountProcessedInLastHour: number;\n withdrawStatus: boolean;\n depositStatus: boolean;\n updated: string;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}","import { format } from \"date-fns\";\n\nimport {\n ArbitrageTypeEnum,\n AssetPairResponse,\n AssetResponse,\n ExchangeTypeEnum,\n FeeAssetTypeEnum,\n InstanceTypeEnum,\n InstanceTypeStatusResponse,\n NetworkPlatformEnum,\n NetworkPlatformResponse,\n NotificationTypeEnum,\n OrderSideEnum,\n RoleEnum,\n SeverityTypeEnum,\n SwapWhitelistResponse,\n TradeAdditionalDataTypeEnum,\n TradeDirectionEnum,\n WalletResponse,\n WithdrawalDepositStatusEnum,\n} from \"../types/Api\";\n\nexport const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\nexport const getIsoDate = (date: Date) => date.toISOString().replace(\"Z\", \"\");\n\nexport const getTodayUTC = () => {\n const currentDateISOString = new Date().toISOString();\n const datePart = currentDateISOString.split(\"T\")[0];\n return new Date(`${datePart}T00:00:00.000Z`);\n};\n\nexport const getTimezoneOffset = () =>\n new Date().getTimezoneOffset() * 60 * 1000;\n\nexport const confirmDialog = (description: string) =>\n new Promise((resolve) => {\n const confirmed = window.confirm(description);\n\n return confirmed ? resolve(true) : resolve(false);\n });\n\nexport const sleep = (ms: number) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n\nexport const getOrderSide = (\n item?: SwapWhitelistResponse,\n assetA?: AssetResponse,\n assetB?: AssetResponse,\n): OrderSideEnum | undefined => {\n if (!assetA || !assetB || !item) return;\n\n if (\n item.assetPairs.find(\n (asset) =>\n asset.priceAsset.id === assetA.id && asset.amountAsset.id === assetB.id,\n )\n ) {\n return OrderSideEnum.Buy;\n }\n\n if (\n item.assetPairs.find(\n (asset) =>\n asset.amountAsset.id === assetA.id && asset.priceAsset.id === assetB.id,\n )\n ) {\n return OrderSideEnum.Sell;\n }\n};\n\nexport const getAssetPairId = (\n item?: SwapWhitelistResponse,\n assetA?: AssetResponse,\n assetB?: AssetResponse,\n): AssetPairResponse | undefined => {\n if (!assetA || !assetB || !item) return;\n\n return item.assetPairs.find(\n (asset) =>\n (asset.priceAsset.id === assetA.id &&\n asset.amountAsset.id === assetB.id) ||\n (asset.priceAsset.id === assetB.id && asset.amountAsset.id === assetA.id),\n );\n};\n\nexport const formatDateTime = (date: Date | string) =>\n format(new Date(date), \"dd/MM HH:mm:ss\");\n\nexport const findWalletById = (\n wallets: WalletResponse[],\n walletToFindById: WalletResponse[\"id\"],\n) => wallets.find((wallet) => wallet.id === walletToFindById);\n\nexport const findWalletByName = (\n wallets: WalletResponse[],\n walletToFindByName: WalletResponse[\"name\"],\n) => wallets.find((wallet) => wallet.name === walletToFindByName);\n\nexport const findNetworkById = (\n networkToFindById: NetworkPlatformResponse[\"id\"],\n) =>\n Object.keys(NetworkPlatformEnum)[\n Object.values(NetworkPlatformEnum).indexOf(networkToFindById)\n ];\n\nexport const findInstanceById = (\n instanceToFindById: InstanceTypeStatusResponse[\"type\"],\n) =>\n Object.keys(InstanceTypeEnum)[\n Object.values(InstanceTypeEnum).indexOf(instanceToFindById)\n ];\n\nexport const findTradeDirectionById = (id: TradeDirectionEnum) =>\n Object.keys(TradeDirectionEnum)[\n Object.values(TradeDirectionEnum).indexOf(id)\n ];\n\nexport const findOrderSideById = (id: OrderSideEnum) =>\n Object.keys(OrderSideEnum)[Object.values(OrderSideEnum).indexOf(id)];\n\nexport const findArbitrageTypeNameById = (id: ArbitrageTypeEnum) =>\n Object.keys(ArbitrageTypeEnum)[Object.values(ArbitrageTypeEnum).indexOf(id)];\n\nexport const findTimelineSeverityNameById = (id: SeverityTypeEnum) =>\n Object.keys(SeverityTypeEnum)[Object.values(SeverityTypeEnum).indexOf(id)];\n\nexport const findNotificationTypeNameById = (id: NotificationTypeEnum) =>\n Object.keys(NotificationTypeEnum)[\n Object.values(NotificationTypeEnum).indexOf(id)\n ];\n\nexport const findInstanceTypeTypeNameById = (id: InstanceTypeEnum) =>\n Object.keys(InstanceTypeEnum)[Object.values(InstanceTypeEnum).indexOf(id)];\n\nexport const findTradeAdditionalDataTypeById = (\n id: TradeAdditionalDataTypeEnum,\n) =>\n Object.keys(TradeAdditionalDataTypeEnum)[\n Object.values(TradeAdditionalDataTypeEnum).indexOf(id)\n ];\n\nexport const findFeeAssetTypeNameById = (id: FeeAssetTypeEnum) =>\n Object.keys(FeeAssetTypeEnum)[Object.values(FeeAssetTypeEnum).indexOf(id)];\n\nexport const findWithdrawalDepositStatus = (id: WithdrawalDepositStatusEnum) =>\n Object.keys(WithdrawalDepositStatusEnum)[\n Object.values(WithdrawalDepositStatusEnum).indexOf(id)\n ];\n\nexport const findRoleById = (id: RoleEnum) =>\n Object.keys(RoleEnum)[Object.values(RoleEnum).indexOf(id)];\n\nexport const parseAmount = (amount: string) =>\n Number.parseFloat(amount.replace(\",\", \".\"));\n\nexport const getExchanges = () =>\n Object.entries(ExchangeTypeEnum)\n .filter(([_, word]) => isNaN(Number(word)))\n .map(([number, word]) => {\n const capitals = word.toString().replace(/[^A-Z]+/g, \"\");\n let abbreviation;\n if (capitals.length >= 2) {\n abbreviation = capitals;\n } else {\n abbreviation = word.toString().slice(0, 2).toUpperCase();\n }\n\n return {\n id: number as unknown as ExchangeTypeEnum,\n name: word,\n abbreviation,\n };\n });\n\nexport const findExchangeById = (id: ExchangeTypeEnum) =>\n //@ts-ignore\n getExchanges().find((exchange) => exchange?.id === id.toString());\n\nexport const isMobile = () => window.matchMedia(\"(max-width: 500px)\").matches;\n\nexport const floor = (num: number, decimalPlaces = 0) => {\n const p = Math.pow(10, decimalPlaces);\n\n return Math.floor(num * p) / p;\n};\n","import { Card, Spinner } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\nconst Wrapper = styled.div<{ height?: string }>`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: ${(props) => (props.height ? props.height : \"120px\")};\n`;\n\nconst StyledSpinner = styled(Spinner)`\n width: 60px;\n height: 60px;\n`;\n\ntype LoaderProps = {\n height?: string;\n};\n\nconst Loader = ({ height }: LoaderProps) => (\n \n \n \n \n \n);\n\nexport default Loader;\n","import { Line } from \"react-chartjs-2\";\nimport { styled } from \"styled-components\";\n\nimport type { BalanceResponse } from \"../../types/Api\";\nimport { floor } from \"../../utils\";\nimport Loader from \"../misc/Loader\";\n\nconst Container = styled.div`\n min-height: 600px;\n margin-top: 1rem;\n`;\n\ntype BalanceChartProps = {\n balance?: BalanceResponse;\n isLoading: boolean;\n};\n\nconst BalanceChart = ({ balance, isLoading }: BalanceChartProps) => {\n if (isLoading && !balance?.balanceSummaries?.length) {\n return ;\n }\n\n return (\n \n item.created),\n datasets: [\n {\n label: \"Balance\",\n data: balance?.balances?.map((item) => floor(item.balance)),\n fill: false,\n backgroundColor: \"#ff0039\",\n borderColor: \"#ff003933\",\n },\n ],\n }}\n options={{\n plugins: {\n legend: {\n display: false,\n },\n },\n maintainAspectRatio: false,\n scales: {\n x: {\n type: \"time\",\n time: {\n unit: \"hour\",\n displayFormats: {\n hour: \"dd/MM HH:MM\",\n },\n },\n grid: {\n color: \"#ffffff4d\",\n },\n ticks: {\n color: \"#ffffff99\",\n },\n },\n y: {\n grid: {\n color: \"#ffffff4d\",\n },\n ticks: {\n color: \"#ffffff99\",\n },\n },\n },\n }}\n />\n \n );\n};\n\nexport default BalanceChart;\n","export const BACKEND_API_URL =\n location.hostname && location.hostname.includes(\"tradewardens.com\")\n ? location.origin\n : \"https://tradewardens.com\";\n\nexport const DOLLAR_DECIMALS = 2;\n\nexport const LOCAL_STORAGE_TOKEN = \"token\";\nexport const LOCAL_STORAGE_SETTINGS_COLLAPSED = \"settings-collapsed\";\nexport const LOCAL_STORAGE_PROFITABILITY_STORES = \"profitability-stores\";\n\nexport const ITERATION_QUANTITY = 20;\n\nexport const LOCAL_STORAGE_PAGINATION = {\n transfer: \"transfer-pagination\",\n exchange: \"exchange-pagination\",\n logs: \"logs-pagination\",\n trades: \"trades-pagination\",\n timeline: \"timeline-pagination\",\n};\n","import { useEffect, useRef, useState } from \"react\";\n\nimport { useCountdown } from \"./useCountdownHook\";\nimport { BACKEND_API_URL } from \"../constants\";\n\nimport { useFetch } from \".\";\n\nconst useBaseGetHook = (\n pathname?: string,\n isLoadingFallback?: boolean,\n refreshDataTimeout = 0,\n onFocusOnly = true,\n) => {\n // @ts-ignore most of the time it is used as array, never used if value was not previously assigned\n const [items, setItems] = useState([]);\n const [isLoading, setIsLoading] = useState(\n isLoadingFallback ?? true,\n );\n const [hasError, setHasError] = useState(\"\");\n\n const { reset, countdown, setCountdown, stop } = useCountdown(\n refreshDataTimeout,\n onFocusOnly,\n );\n\n const requestIdRef = useRef(0);\n\n useEffect(() => {\n const fetchData = async () => {\n stop();\n await fetchItems();\n reset();\n };\n\n if (!!refreshDataTimeout && countdown === 0) {\n fetchData();\n }\n }, [countdown]);\n\n const { fetch, abortController } = useFetch();\n\n const fetchItems = async (pathnameFallback?: string) => {\n if (!pathname && !pathnameFallback) {\n console.error(\"Missing pathname\");\n return;\n }\n\n const { signal } = abortController;\n\n setIsLoading(true);\n setHasError(\"\");\n\n const currentRequestId = ++requestIdRef.current;\n\n try {\n const result = await fetch(\n `${BACKEND_API_URL}/${pathname || pathnameFallback}`,\n { signal },\n );\n if (result.ok) {\n const parsedItems: T = await result.json();\n\n if (currentRequestId === requestIdRef.current) {\n setItems(parsedItems);\n }\n } else {\n if (currentRequestId === requestIdRef.current) {\n const error = await result.json();\n setHasError(error?.message || `${pathname}`);\n // @ts-ignore\n setItems([]);\n }\n }\n } catch (error) {\n if (currentRequestId === requestIdRef.current) {\n setHasError(`/${pathname || pathnameFallback} - ${error}`);\n // @ts-ignore\n setItems([]);\n }\n }\n if (currentRequestId === requestIdRef.current) {\n setIsLoading(false);\n }\n setCountdown(refreshDataTimeout);\n };\n\n useEffect(() => () => abortController.abort(), []);\n\n return {\n fetchItems,\n items,\n setItems,\n isLoading,\n hasError,\n countdown,\n };\n};\n\nexport default useBaseGetHook;\n","import { useEffect, useState } from \"react\";\n\nexport const useCountdown = (seconds: number, onFocusOnly = true) => {\n const [countdown, setCountdown] = useState(seconds);\n\n let interval: NodeJS.Timer;\n\n useEffect(() => {\n if (seconds > 0) {\n interval = setInterval(() => {\n if (countdown <= 0) {\n stop();\n return;\n }\n\n if (onFocusOnly && document.hasFocus()) {\n setCountdown(countdown - 1);\n }\n if (!onFocusOnly) {\n setCountdown(countdown - 1);\n }\n }, 1000);\n }\n\n return () => clearInterval(interval);\n }, [countdown]);\n\n const stop = () => {\n clearInterval(interval);\n };\n\n const reset = () => {\n clearInterval(interval);\n\n setCountdown(seconds);\n };\n\n return {\n countdown,\n setCountdown,\n reset,\n stop,\n };\n};\n","import { add } from \"date-fns\";\nimport { useState } from \"react\";\n\nimport { getIsoDate, getTodayUTC } from \"../utils\";\n\nconst useDates = () => {\n const startOfTodayUTC = getTodayUTC();\n const startOfTomorrowUTC = add(startOfTodayUTC, { days: 1 });\n\n const [fromDate, setFromDate] = useState(getIsoDate(startOfTodayUTC));\n const [toDate, setToDate] = useState(getIsoDate(startOfTomorrowUTC));\n\n return { fromDate, setFromDate, toDate, setToDate };\n};\n\nexport default useDates;\n","import { useEffect, useState } from \"react\";\n\nimport { BACKEND_API_URL } from \"../constants\";\nimport { BaseMessage } from \"../types/Api\";\n\nimport { useFetch } from \".\";\n\nconst useBaseDeleteHook = (pathname?: string) => {\n const [id, setId] = useState();\n const [isLoadingDone, setIsLoadingDone] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [hasError, setHasError] = useState(\"\");\n\n const { fetch, abortController } = useFetch();\n\n const deleteItem = async (\n data?: T,\n id?: number,\n pathnameFallback?: string,\n ) => {\n if (!pathname && !pathnameFallback) {\n console.error(\"Missing pathname\");\n return;\n }\n setIsLoading(true);\n setIsLoadingDone(\"\");\n setHasError(\"\");\n setId(id);\n\n try {\n const result = await fetch(\n `${BACKEND_API_URL}/${pathname || pathnameFallback}`,\n {\n method: \"DELETE\",\n body: data ? JSON.stringify(data) : undefined,\n },\n );\n\n if (result.ok) {\n try {\n const response: BaseMessage = await result.json();\n setIsLoadingDone(response?.message || \"Done\");\n } catch (_) {\n setIsLoadingDone(\"Done\");\n }\n } else {\n const parsedError = await result.json();\n\n setHasError(parsedError?.message || `/${pathname || pathnameFallback}`);\n setIsLoadingDone(\"\");\n }\n } catch (error) {\n setHasError(`/${pathname || pathnameFallback} - ${error}`);\n setIsLoadingDone(\"\");\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => () => abortController.abort(), []);\n\n return {\n deleteItem,\n id,\n isLoading,\n isLoadingDone,\n setIsLoadingDone,\n hasError,\n setHasError,\n };\n};\n\nexport default useBaseDeleteHook;\n","import { useContext, useEffect, useMemo, useState } from \"react\";\n\nimport useBaseDeleteHook from \"./useBaseDeleteHook\";\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { LOCAL_STORAGE_PAGINATION } from \"../constants\";\nimport { DataContext } from \"../context/Data\";\nimport { usePagination } from \"../hooks\";\nimport { PaginationResponseOfLogResponse } from \"../types/Api\";\n\nexport enum LogLevel {\n Information = \"Information\",\n Warning = \"Warning\",\n Error = \"Error\",\n Fatal = \"Fatal\",\n}\n\nexport enum SourceLevel {\n Deimos = \"Bot - Deimos\",\n Phobos = \"Bot - Phobos\",\n Job = \"Job\",\n Web = \"Web\",\n Tool = \"Tool\",\n Test = \"Test\",\n}\n\nconst useLogsHook = () => {\n const { fromDate, toDate } = useContext(DataContext);\n\n const { pageNumber, setPageNumber } = usePagination();\n const [levels, setLevels] = useState>([\n LogLevel.Error,\n LogLevel.Fatal,\n LogLevel.Warning,\n ]);\n\n const [sources, setSources] = useState>([\n SourceLevel.Deimos,\n SourceLevel.Phobos,\n SourceLevel.Job,\n SourceLevel.Web,\n SourceLevel.Tool,\n SourceLevel.Test,\n ]);\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n from: fromDate,\n to: toDate,\n pageSize: localStorage.getItem(LOCAL_STORAGE_PAGINATION.logs) || \"1000\",\n pageNumber: pageNumber.toString(),\n eventTypes: levels.join(\",\") || LogLevel.Fatal,\n eventSources: sources.join(\",\") || SourceLevel.Deimos,\n }),\n [fromDate, toDate, pageNumber, levels, sources],\n );\n\n const {\n items: logs,\n isLoading,\n hasError,\n fetchItems: fetchLogs,\n countdown,\n } = useBaseGetHook(\n `log?${params.toString()}`,\n undefined,\n 10,\n false,\n );\n\n const { deleteItem: deleteLogs, isLoading: deleteLogsIsLoading } =\n useBaseDeleteHook(\"log\");\n\n useEffect(() => {\n if (!deleteLogsIsLoading) {\n fetchLogs();\n }\n }, [fromDate, toDate, pageNumber, deleteLogsIsLoading, levels, sources]);\n\n return {\n logs,\n isLoading,\n hasError,\n countdown,\n pageNumber,\n setPageNumber,\n deleteLogs,\n deleteLogsIsLoading,\n levels,\n setLevels,\n sources,\n setSources,\n };\n};\n\nexport default useLogsHook;\n","import {\n Dispatch,\n ReactNode,\n SetStateAction,\n createContext,\n useEffect,\n useState,\n} from \"react\";\nimport { useJwt } from \"react-jwt\";\n\nimport { LOCAL_STORAGE_TOKEN } from \"../constants\";\nimport { RoleEnum } from \"../types/Api\";\n\ntype IAuthContext = {\n isLogged: boolean;\n setIsLogged: Dispatch>;\n user: string;\n role: RoleEnum;\n};\n\nexport const AuthContext = createContext({\n isLogged: false,\n setIsLogged: () => undefined,\n user: \"\",\n role: RoleEnum.Operator,\n});\n\ntype AuthProviderProps = {\n children: ReactNode;\n};\n\nconst USER = \"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name\";\nconst ROLE = \"http://schemas.microsoft.com/ws/2008/06/identity/claims/role\";\n\nexport const AuthProvider = ({ children }: AuthProviderProps) => {\n const [isLogged, setIsLogged] = useState(false);\n const [role, setRole] = useState(RoleEnum.Operator);\n const [user, setUser] = useState(\"\");\n\n const token = localStorage.getItem(LOCAL_STORAGE_TOKEN);\n const { decodedToken, isExpired } = useJwt(token || \"\");\n\n useEffect(() => {\n const newToken = localStorage.getItem(LOCAL_STORAGE_TOKEN);\n\n if (newToken && decodedToken && !isExpired) {\n setIsLogged(true);\n // @ts-ignore\n setUser(decodedToken[USER]);\n // @ts-ignore\n setRole(RoleEnum[decodedToken[ROLE]]);\n }\n }, [isLogged, decodedToken, isExpired]);\n\n return (\n \n {children}\n \n );\n};\n","import { useContext } from \"react\";\n\nimport { LOCAL_STORAGE_TOKEN } from \"../constants\";\nimport { AuthContext } from \"../context/Auth\";\n\nconst useFetch = () => {\n const abortController = new AbortController();\n const { setIsLogged } = useContext(AuthContext);\n\n const fetch = async (url: string, options = {}) => {\n const response = await window.fetch(url, {\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${localStorage.getItem(LOCAL_STORAGE_TOKEN)}`,\n },\n });\n\n if (response.status === 401) {\n localStorage.removeItem(LOCAL_STORAGE_TOKEN);\n setIsLogged(false);\n }\n\n return response;\n };\n\n return { fetch, abortController };\n};\n\nexport default useFetch;\n","import { useEffect, useState } from \"react\";\n\nimport { BACKEND_API_URL } from \"../constants\";\nimport { BaseMessage } from \"../types/Api\";\n\nimport { useFetch } from \".\";\n\nconst useBasePutHook = (pathname?: string) => {\n const [id, setId] = useState();\n const [isLoadingDone, setIsLoadingDone] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [hasError, setHasError] = useState(\"\");\n\n const { fetch, abortController } = useFetch();\n\n const updateItem = async (\n data: T,\n id?: number,\n pathnameFallback?: string,\n ) => {\n if (!pathname && !pathnameFallback) {\n console.error(\"Missing pathname\");\n return;\n }\n setIsLoading(true);\n setIsLoadingDone(\"\");\n setHasError(\"\");\n setId(id);\n\n try {\n const result = await fetch(\n `${BACKEND_API_URL}/${pathname || pathnameFallback}`,\n {\n method: \"PUT\",\n body: JSON.stringify(data),\n },\n );\n\n if (result.ok) {\n try {\n const response: BaseMessage = await result.json();\n setIsLoadingDone(response?.message || \"Done\");\n } catch (_) {\n setIsLoadingDone(\"Done\");\n }\n } else {\n const parsedError = await result.json();\n\n setHasError(parsedError?.message || `/${pathname || pathnameFallback}`);\n setIsLoadingDone(\"\");\n }\n } catch (error) {\n setHasError(`/${pathname || pathnameFallback} - ${error}`);\n setIsLoadingDone(\"\");\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => () => abortController.abort(), []);\n\n return {\n updateItem,\n id,\n isLoading,\n isLoadingDone,\n hasError,\n };\n};\n\nexport default useBasePutHook;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport useBasePutHook from \"./useBasePutHook\";\nimport {\n ArbitrageResponse,\n ConfigurationRequest,\n ConfigurationResponse,\n} from \"../types/Api\";\nimport { parseAmount } from \"../utils\";\n\nconst formatDataBeforeUpdate = (configuration: Record) =>\n Object.keys(configuration).reduce(\n (acc, key) => {\n const value = configuration[key];\n const parsedValue = parseFloat(value);\n if (!Number.isNaN(parsedValue) && typeof value === \"string\") {\n acc[key] = parseAmount(value);\n } else {\n acc[key] = value;\n }\n return acc;\n },\n {} as Record,\n );\n\nconst useConfiguration = () => {\n const {\n items: configurations,\n isLoading,\n hasError,\n fetchItems: fetchConfigurations,\n } = useBaseGetHook(\"configuration\");\n\n const {\n updateItem,\n isLoading: updateIsLoading,\n isLoadingDone: updateIsDone,\n hasError: updateHasError,\n } = useBasePutHook();\n\n const updateConfiguration = (data: ArbitrageResponse) => {\n const formattedConfiguration = formatDataBeforeUpdate(data.configuration);\n\n const formattedAssetPairWallets = data.assetPairWallets.map(\n (assetPairWallet) => ({\n id: assetPairWallet.id,\n configuration: formatDataBeforeUpdate(assetPairWallet.configuration),\n }),\n );\n\n const dataToUpdate = {\n id: data.id,\n configuration: formattedConfiguration,\n isPaused: data.isPaused,\n isEnabled: data.isEnabled,\n assetPairConfigurations: formattedAssetPairWallets,\n };\n\n updateItem(dataToUpdate, undefined, `configuration/${data.id}`);\n };\n\n return {\n configurations,\n fetchConfigurations,\n isLoading,\n hasError,\n updateConfiguration,\n updateIsLoading,\n updateHasError,\n updateIsDone,\n };\n};\n\nexport default useConfiguration;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport useBasePutHook from \"./useBasePutHook\";\nimport {\n ApplicationConfiguration,\n ApplicationConfigurationRequest,\n} from \"../types/Api\";\n\nconst useAppConfiguration = () => {\n const {\n items: configurations,\n isLoading,\n hasError,\n fetchItems: fetchConfigurations,\n } = useBaseGetHook(\"applicationConfiguration\");\n\n const {\n updateItem,\n isLoading: updateIsLoading,\n isLoadingDone: updateIsDone,\n hasError: updateHasError,\n } = useBasePutHook();\n\n const updateConfiguration = (data: ApplicationConfigurationRequest) =>\n updateItem(data, undefined, `applicationConfiguration/${data.id}`);\n\n return {\n configurations,\n fetchConfigurations,\n updateConfiguration,\n isLoading,\n hasError,\n updateIsLoading,\n updateHasError,\n updateIsDone,\n };\n};\n\nexport default useAppConfiguration;\n","import { useEffect, useState } from \"react\";\n\nimport { BACKEND_API_URL } from \"../constants\";\nimport { BaseMessage } from \"../types/Api\";\n\nimport { useFetch } from \".\";\n\nconst useBasePostHook = (pathname?: string) => {\n const [id, setId] = useState();\n const [isLoadingDone, setIsLoadingDone] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [hasError, setHasError] = useState(\"\");\n\n const { fetch, abortController } = useFetch();\n\n const postItem = async (data: T, id?: number, pathnameFallback?: string) => {\n if (!pathname && !pathnameFallback) {\n console.error(\"Missing pathname\");\n return;\n }\n setIsLoading(true);\n setIsLoadingDone(\"\");\n setHasError(\"\");\n setId(id);\n\n try {\n const result = await fetch(\n `${BACKEND_API_URL}/${pathname || pathnameFallback}`,\n {\n method: \"POST\",\n body: JSON.stringify(data),\n },\n );\n\n if (result.ok) {\n try {\n const response: BaseMessage = await result.json();\n setIsLoadingDone(response?.message || \"Done\");\n } catch (_) {\n setIsLoadingDone(\"Done\");\n }\n } else {\n const parsedError = await result.json();\n\n setHasError(parsedError?.message || `/${pathname || pathnameFallback}`);\n setIsLoadingDone(\"\");\n }\n } catch (error) {\n setHasError(`/${pathname || pathnameFallback} - ${error}`);\n setIsLoadingDone(\"\");\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => () => abortController.abort(), []);\n\n return {\n postItem,\n id,\n isLoading,\n isLoadingDone,\n setIsLoadingDone,\n hasError,\n setHasError,\n };\n};\n\nexport default useBasePostHook;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport type { CurrentBalanceGroupResponse } from \"../types/Api\";\n\nconst useCurrentBalancesHook = () => {\n const {\n items: currentBalanceGroups,\n isLoading,\n hasError,\n fetchItems,\n countdown,\n } = useBaseGetHook(\n `balance/current`,\n undefined,\n 10,\n );\n\n return {\n fetchItems,\n currentBalanceGroups,\n isLoading,\n hasError,\n countdown,\n };\n};\n\nexport default useCurrentBalancesHook;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport type {\n WithdrawalDepositGatewayDetailResponse,\n WithdrawalDepositGatewayScanResponse,\n} from \"../types/Api\";\n\nconst useGatewayInfoHook = () => {\n const {\n items: gatewayStatus,\n isLoading: gatewayStatusIsLoading,\n hasError: gatewayStatusHasError,\n fetchItems: fetchGatewayStatus,\n } = useBaseGetHook(\n \"withdrawalDepositGatewayDetail\",\n );\n\n const {\n items: gatewayDetails,\n isLoading,\n hasError,\n fetchItems: fetchGatewayDetails,\n countdown,\n } = useBaseGetHook(\n \"withdrawalDepositGatewayDetail/scan\",\n undefined,\n 10,\n );\n\n return {\n fetchGatewayStatus,\n gatewayStatus,\n gatewayStatusIsLoading,\n gatewayStatusHasError,\n fetchGatewayDetails,\n gatewayDetails,\n isLoading,\n hasError,\n countdown,\n };\n};\n\nexport default useGatewayInfoHook;\n","import { useState } from \"react\";\n\nconst usePaginationHook = () => {\n const [pageNumber, setPageNumber] = useState(1);\n\n return { pageNumber, setPageNumber };\n};\n\nexport default usePaginationHook;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport { WalletBalanceResponse } from \"../types/Api\";\n\nconst useWalletBalanceHook = () => {\n const {\n items: walletBalances,\n isLoading,\n hasError,\n fetchItems,\n } = useBaseGetHook(undefined, false);\n\n const fetchWalletBalances = async (walletId: number) => {\n return fetchItems(`wallet/${walletId}/balance`);\n };\n\n return { walletBalances, fetchWalletBalances, isLoading, hasError };\n};\n\nexport default useWalletBalanceHook;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport useBasePutHook from \"./useBasePutHook\";\nimport {\n BalanceCheckConfigurationRequest,\n BalanceCheckConfigurationResponse,\n} from \"../types/Api\";\n\nconst useBalanceCheckHook = () => {\n const { items, isLoading, hasError, fetchItems } =\n useBaseGetHook(\"balance/check\");\n\n const {\n updateItem,\n isLoading: updateIsLoading,\n isLoadingDone: updateIsDone,\n hasError: updateHasError,\n } = useBasePutHook(\"balance/check\");\n\n return {\n items,\n isLoading,\n hasError,\n fetchItems,\n updateItem,\n updateIsLoading,\n updateIsDone,\n updateHasError,\n };\n};\n\nexport default useBalanceCheckHook;\n","import {\n Dispatch,\n ReactNode,\n SetStateAction,\n createContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nimport { useDates } from \"../hooks\";\nimport useBaseGetHook from \"../hooks/useBaseGetHook\";\nimport { AssetResponse, KeyValueResponse, WalletResponse } from \"../types/Api\";\n\ntype IDataContext = {\n assets: AssetResponse[];\n wallets: WalletResponse[];\n arbitrages: KeyValueResponse[];\n chosenWallet: WalletResponse | null;\n setChosenWallet: Dispatch>;\n chosenArbitrage: KeyValueResponse | null;\n setChosenArbitrage: Dispatch>;\n fromDate: string;\n setFromDate: Dispatch>;\n toDate: string;\n setToDate: Dispatch>;\n dataIsLoading: boolean;\n dataHasError: string[];\n};\n\nexport const DataContext = createContext({\n assets: [],\n wallets: [],\n chosenWallet: null,\n // @ts-ignore\n setChosenWallet: null,\n chosenArbitrage: null,\n // @ts-ignore\n setChosenArbitrage: null,\n fromDate: \"\",\n toDate: \"\",\n // @ts-ignore\n setFromDate: null,\n // @ts-ignore\n setToDate: null,\n dataIsLoading: true,\n dataHasError: [],\n});\n\ntype DataProviderProps = { children: ReactNode };\n\nexport const DataProvider = ({ children }: DataProviderProps) => {\n const [dataIsLoading, setDataIsLoading] = useState(true);\n const [dataHasError, setDataHasError] = useState([]);\n\n const [chosenWallet, setChosenWallet] = useState(null);\n const [chosenArbitrage, setChosenArbitrage] =\n useState(null);\n\n const {\n items: assets,\n isLoading: assetsIsLoading,\n hasError: assetsHasError,\n fetchItems: fetchAssets,\n } = useBaseGetHook(\"asset\");\n\n const {\n items: wallets,\n isLoading: walletsIsLoading,\n hasError: walletsHasError,\n fetchItems: fetchWallets,\n } = useBaseGetHook(\"wallet\");\n\n const { fromDate, toDate, setFromDate, setToDate } = useDates();\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n from: fromDate,\n to: toDate,\n }),\n [fromDate, toDate],\n );\n\n const {\n items: arbitrages,\n isLoading: arbitragesIsLoading,\n hasError: arbitragesHasError,\n fetchItems: fetchArbitrages,\n } = useBaseGetHook(`arbitrage?${params.toString()}`);\n\n useEffect(() => {\n fetchWallets();\n fetchAssets();\n }, []);\n\n useEffect(() => {\n fetchArbitrages();\n }, [fromDate, toDate]);\n\n useEffect(() => {\n const isLoading = [\n assetsIsLoading,\n walletsIsLoading,\n arbitragesIsLoading,\n ].some((loading) => loading);\n\n const isEmpty = [assets, wallets, arbitrages].some(\n (items) => !items.length,\n );\n\n setDataIsLoading(isLoading && isEmpty);\n }, [assetsIsLoading, walletsIsLoading, arbitragesIsLoading]);\n\n useEffect(() => {\n const errorsList = [\n assetsHasError,\n walletsHasError,\n arbitragesHasError,\n ].filter((error) => error);\n\n setDataHasError(errorsList);\n }, [assetsHasError, walletsHasError, arbitragesHasError]);\n\n return (\n \n {children}\n \n );\n};\n","import { Spinner } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\nconst Wrapper = styled.div`\n height: 30px;\n font-style: italic;\n`;\n\ntype CountdownProps = {\n isLoading: boolean;\n countdown: number;\n};\n\nconst Countdown = ({ isLoading, countdown }: CountdownProps) => (\n \n Refreshing: {!isLoading ? `${countdown}s` : \"\"}\n {(countdown === 0 || isLoading) && (\n \n )}\n \n);\n\nexport default Countdown;\n","import { useEffect, useState } from \"react\";\nimport { Form, Pagination as PaginationBootstrap } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\nconst Wrapper = styled.div`\n height: 31px;\n display: flex;\n justify-content: space-between;\n`;\n\nconst StyledFormControl = styled(Form.Control)`\n width: 70px;\n`;\n\ntype PaginationProps = {\n name: string;\n pageNumber: number;\n currentPageNumber: number;\n totalPages: number;\n setPageNumber: (pageNumber: number) => void;\n};\n\nexport const Pagination = ({\n name,\n pageNumber,\n setPageNumber,\n currentPageNumber,\n totalPages,\n}: PaginationProps) => {\n const [value, setValue] = useState(localStorage.getItem(name) || undefined);\n\n useEffect(() => {\n if (Number(value) >= 1) {\n localStorage.setItem(name, parseInt(value || \"1\", 10).toString());\n }\n }, [value]);\n\n return (\n \n
\n \n setPageNumber(1)}\n />\n setPageNumber(pageNumber - 1)}\n />\n \n {currentPageNumber}\n \n setPageNumber(pageNumber + 1)}\n />\n setPageNumber(totalPages)}\n />\n \n
\n setValue(e.target.value)}\n />\n
\n \n );\n};\n","import { ReactNode } from \"react\";\nimport { Table } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\n\nimport Countdown from \"./Countdown\";\nimport { Pagination } from \"./Pagination\";\n\nconst Wrapper = styled.div`\n overflow-x: scroll;\n`;\n\nconst StyledTh = styled.th`\n white-space: nowrap;\n`;\n\nexport const StyledTd = styled.td`\n white-space: nowrap;\n`;\n\ntype TableProps = {\n isLoading?: boolean;\n countdown?: number;\n isEmpty: boolean;\n header?: any[];\n children: ReactNode;\n wrapperClassName?: string;\n tableClassName?: string;\n bordered?: boolean;\n striped?: boolean;\n hover?: boolean;\n pageNumber?: number;\n currentPageNumber?: number;\n totalPages?: number;\n setPageNumber?: (pageNumber: number) => void;\n paginationName?: string;\n className?: string;\n};\n\nexport const TableContainer = ({\n isLoading,\n countdown,\n header,\n isEmpty,\n children,\n wrapperClassName,\n tableClassName,\n bordered,\n striped,\n hover,\n pageNumber,\n setPageNumber,\n currentPageNumber,\n totalPages,\n paginationName,\n className,\n}: TableProps) => (\n <>\n \n {countdown !== undefined && isLoading !== undefined && (\n \n )}\n \n {header && (\n \n \n {header\n .filter((head) => head)\n .map((head, index) => (\n \n {!Array.isArray(head) ? head : head[0]}\n \n ))}\n \n \n )}\n {header ? (\n \n {children}\n {isEmpty && (\n \n \n Empty...\n \n \n )}\n \n ) : (\n children\n )}\n \n \n {pageNumber &&\n setPageNumber &&\n totalPages &&\n currentPageNumber &&\n paginationName ? (\n \n ) : null}\n \n);\n","import { useContext } from \"react\";\n\nimport { DOLLAR_DECIMALS } from \"../../constants\";\nimport { DataContext } from \"../../context/Data\";\nimport { BalanceResponse } from \"../../types/Api\";\nimport { floor, isMobile } from \"../../utils\";\nimport { TableContainer } from \"../misc/TableContainer\";\n\ntype BalanceTableProps = {\n balance?: BalanceResponse;\n isLoading: boolean;\n};\n\nconst BalanceTable = ({ balance, isLoading }: BalanceTableProps) => {\n const { assets } = useContext(DataContext);\n\n return (\n \n {balance?.balanceSummaries?.length\n ? balance?.balanceSummaries\n .filter((summary) => summary.totalInUsd > 0.1)\n .sort((a, b) => b.totalInUsd - a.totalInUsd)\n .map((summary) => {\n const textDecimals = assets.find(\n (asset) => asset.name === summary.assetName,\n )!.textDecimals;\n\n return (\n summary && (\n \n {summary.assetName}\n \n {floor(summary.balance, textDecimals).toFixed(\n textDecimals,\n )}\n \n \n {floor(summary.change, textDecimals).toFixed(\n textDecimals,\n )}\n \n {summary.changeInUsd}$\n {summary.price}$\n \n {floor(summary.totalInUsd, DOLLAR_DECIMALS).toFixed(\n DOLLAR_DECIMALS,\n )}\n $\n \n \n )\n );\n })\n : null}\n {balance?.balanceSummaries?.length ? (\n <>\n \n \n Total\n \n \n {balance?.totalInUsd.toFixed(DOLLAR_DECIMALS)}$ (\n {balance?.changeInUsd.toFixed(DOLLAR_DECIMALS)}$)\n \n \n \n \n Stable / Volatile {!isMobile() && \"ratio\"}\n \n \n {balance?.percentageStableCoinPart}% / \n {balance?.percentageNonStableCoinPart}%\n \n \n \n ) : null}\n \n );\n};\n\nexport default BalanceTable;\n","import { Alert } from \"react-bootstrap\";\n\nimport BalanceChart from \"./BalanceChart\";\nimport BalanceTable from \"./BalanceTable\";\nimport { useBalance } from \"../../hooks\";\nimport Countdown from \"../misc/Countdown\";\n\nconst BalanceViewer = () => {\n const { balance, isLoading, hasError, countdown } = useBalance();\n\n return (\n <>\n {countdown !== undefined && isLoading !== undefined && (\n \n )}\n {hasError ? (\n {hasError}\n ) : (\n <>\n \n \n \n )}\n \n );\n};\n\nexport default BalanceViewer;\n","import { useContext, useEffect, useMemo } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { DataContext } from \"../context/Data\";\nimport { BalanceResponse } from \"../types/Api\";\n\nconst useBalanceHook = () => {\n const { fromDate, toDate, chosenWallet, chosenArbitrage } =\n useContext(DataContext);\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n from: fromDate,\n to: toDate,\n walletId: chosenWallet?.id.toString() || \"\",\n arbitrageId: chosenArbitrage?.id?.toString() || \"\",\n }),\n [fromDate, toDate, chosenWallet, chosenArbitrage],\n );\n\n const {\n items: balance,\n isLoading,\n hasError,\n fetchItems: fetchBalance,\n countdown,\n } = useBaseGetHook(\n `balance?${params.toString()}`,\n undefined,\n 5,\n );\n\n useEffect(() => {\n fetchBalance();\n }, [fromDate, toDate, chosenWallet, chosenArbitrage]);\n\n return { balance, isLoading, hasError, countdown };\n};\n\nexport default useBalanceHook;\n","import { Alert, Button, Spinner } from \"react-bootstrap\";\nimport { Check2Circle, XLg } from \"react-bootstrap-icons\";\n\nimport { isMobile } from \"../../utils\";\n\ntype ConfigurationFormBottomProps = {\n updateIsLoading?: boolean;\n updateIsDone?: string;\n updateHasError?: string;\n onClick: () => void;\n variant: \"danger\" | \"warning\" | \"info\" | \"success\";\n};\n\nconst ConfigurationFormBottom = ({\n updateIsLoading,\n updateIsDone,\n updateHasError,\n onClick,\n variant,\n}: ConfigurationFormBottomProps) => (\n
\n \n Save{\" \"}\n {updateIsLoading && (\n \n )}\n {updateIsDone && }\n {updateHasError && }\n \n\n {updateHasError && (\n \n {updateHasError}\n \n )}\n
\n);\n\nexport default ConfigurationFormBottom;\n","import { Button, FormControl, InputGroup } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\ntype ConfigurationInputProps = {\n isModified?: boolean;\n label: string;\n onChange?: (e: React.ChangeEvent) => void;\n value: string | number;\n button?: string;\n buttonOnClick?: () => void;\n isDisabled?: boolean;\n};\n\nconst StyledFormLabel = styled.div`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst ConfigurationInput = ({\n isModified,\n label,\n value,\n onChange,\n button,\n buttonOnClick,\n isDisabled,\n}: ConfigurationInputProps) => (\n <>\n \n {label}\n \n \n e.target.blur()}\n onChange={onChange}\n />\n {button && (\n \n )}\n \n \n);\n\nexport default ConfigurationInput;\n","import { Form } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\ntype ConfigurationSwitchProps = {\n label: string;\n value: boolean;\n isModified: boolean;\n onChange: (e: React.ChangeEvent) => void;\n};\n\nconst StyledFormCheck = styled(Form.Check)`\n & label {\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n\nconst ConfigurationSwitch = ({\n label,\n value,\n isModified,\n onChange,\n}: ConfigurationSwitchProps) => (\n \n);\n\nexport default ConfigurationSwitch;\n","import { Fragment, useEffect, useState } from \"react\";\nimport { Form } from \"react-bootstrap\";\n\nimport ConfigurationFormBottom from \"./ConfigurationFormBottom\";\nimport { useAppConfiguration } from \"../../hooks\";\nimport type {\n ApplicationConfigurationItemOfBoolean,\n ApplicationConfigurationItemOfDecimal,\n} from \"../../types/Api\";\nimport { confirmDialog, parseAmount } from \"../../utils\";\nimport ConfigurationInput from \"../misc/ConfigurationInput\";\nimport ConfigurationSwitch from \"../misc/ConfigurationSwitch\";\n\ntype AppConfigurationProps = {\n config:\n | ApplicationConfigurationItemOfBoolean\n | ApplicationConfigurationItemOfDecimal;\n};\n\nconst AppConfiguration = ({ config }: AppConfigurationProps) => {\n const [previousConfig, setPreviousConfig] = useState(config);\n\n const { updateConfiguration, updateIsLoading, updateHasError, updateIsDone } =\n useAppConfiguration();\n\n const [configuration, setConfiguration] = useState(config);\n\n useEffect(() => {\n if (updateIsDone) {\n setPreviousConfig({ ...configuration });\n }\n }, [updateIsDone]);\n\n const isModified = configuration.value != previousConfig.value;\n\n return (\n \n \n {typeof configuration.value === \"boolean\" && (\n \n setConfiguration({ ...configuration, value: e.target.checked })\n }\n />\n )}\n {(typeof configuration.value === \"number\" ||\n typeof configuration.value === \"string\") && (\n \n setConfiguration({\n ...configuration,\n // @ts-ignore\n value: e.target.value,\n })\n }\n button=\"-\"\n buttonOnClick={() =>\n setConfiguration({\n ...configuration,\n // @ts-ignore\n value: \"-\",\n })\n }\n />\n )}\n \n {\n const updateConfig = {\n id: configuration.key || \"\",\n value: configuration.value,\n };\n\n if (typeof configuration.value === \"string\") {\n // @ts-ignore\n updateConfig.value = parseAmount(configuration.value);\n }\n\n const isConfirmed = await confirmDialog(\n `Do you really want to change ${updateConfig.id} to ${updateConfig.value}?`,\n );\n\n if (isConfirmed) {\n updateConfiguration(updateConfig);\n }\n }}\n />\n \n );\n};\n\nexport default AppConfiguration;\n","import { Fragment, useEffect } from \"react\";\nimport { Alert, Card, Form } from \"react-bootstrap\";\n\nimport AppConfiguration from \"./AppConfiguration\";\nimport { useAppConfiguration } from \"../../hooks\";\nimport Loader from \"../misc/Loader\";\n\nconst AppConfigurations = () => {\n const { configurations, fetchConfigurations, isLoading, hasError } =\n useAppConfiguration();\n\n useEffect(() => {\n fetchConfigurations();\n }, []);\n\n if (isLoading) return ;\n if (hasError || !configurations) {\n return (\n \n {hasError}\n \n );\n }\n\n return (\n \n \n Configuration\n \n \n
\n {Object.entries(configurations).map(([key, configuration], index) => (\n \n \n {index + 1 !== Object.keys(configurations).length &&
}\n
\n ))}\n
\n
\n
\n );\n};\n\nexport default AppConfigurations;\n","import { Alert, Card } from \"react-bootstrap\";\nimport { Line } from \"react-chartjs-2\";\nimport { styled } from \"styled-components\";\n\nimport useArbitrageEventHook from \"../../hooks/useArbitrageEventHook\";\nimport { findExchangeById } from \"../../utils\";\nimport { StyledTd, TableContainer } from \"../misc/TableContainer\";\n\nconst Container = styled.div`\n height: 600px;\n margin-top: 1rem;\n`;\n\nconst getColorByIndex = (index: number) => {\n switch (index) {\n case 0:\n return \"#FF6666\"; // Lighter Red\n case 1:\n return \"#6699FF\"; // Lighter Blue\n case 2:\n return \"#66FF66\"; // Lighter Green\n default:\n return \"#FFFFFF\"; // Or you could return a default color like '#FFFFFF' for white\n }\n};\n\nexport const ArbitrageInfo = () => {\n const {\n arbitrageEvent: arbitrageInfo,\n isLoading,\n hasError,\n countdown,\n } = useArbitrageEventHook();\n\n if (hasError) {\n return (\n \n {hasError}\n \n );\n }\n\n return (\n \n \n \n {arbitrageInfo?.activeWebSockets?.length &&\n arbitrageInfo.activeWebSockets.map((info) => (\n \n {findExchangeById(info.exchangeType)?.name}\n {info.activeWebSocketCount}\n \n ))}\n \n \n Total running arbitrages\n \n \n {arbitrageInfo.activeArbitrageCount}\n \n \n \n\n
\n {arbitrageInfo?.arbitrages?.length &&\n arbitrageInfo.arbitrages.map((info) => (\n \n
{info.name}
\n value.runId),\n datasets: info.items.map((item, index) => ({\n data: item.events.map((value) => value.count),\n backgroundColor: getColorByIndex(index),\n borderColor: getColorByIndex(index) + \"33\",\n label: item.assetPairText,\n })),\n }}\n options={{\n maintainAspectRatio: false,\n scales: {\n x: {\n grid: {\n color: \"#ffffff4d\",\n },\n ticks: {\n color: \"#ffffff99\",\n },\n },\n y: {\n grid: {\n color: \"#ffffff4d\",\n },\n ticks: {\n color: \"#ffffff99\",\n },\n },\n },\n plugins: {\n legend: {\n display: true,\n position: \"top\",\n labels: { color: \"#ffffff99\" },\n },\n tooltip: {\n callbacks: {\n // @ts-ignore\n label: (tooltipItem) => tooltipItem.raw.toFixed(4),\n },\n },\n },\n }}\n />\n
\n ))}\n
\n
\n );\n};\n","import { useEffect } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { ArbitrageEventResponse } from \"../types/Api\";\n\nconst useArbitrageEventHook = () => {\n const {\n items: arbitrageEvent,\n isLoading,\n hasError,\n fetchItems: fetchArbitrageInfo,\n countdown,\n } = useBaseGetHook(`arbitrage/event`, undefined, 15);\n\n useEffect(() => {\n fetchArbitrageInfo();\n }, []);\n\n return { arbitrageEvent, isLoading, hasError, countdown };\n};\n\nexport default useArbitrageEventHook;\n","import { ReactNode } from \"react\";\nimport Switch from \"react-switch\";\n\ntype ConfigurationTurnOnOffProps = {\n onChange: () => void;\n value: boolean;\n isModified?: boolean;\n checkedHandleLabel: string | ReactNode;\n uncheckedHandleLabel: string | ReactNode;\n};\n\nconst ConfigurationTurnOnOff = ({\n onChange,\n value,\n isModified,\n checkedHandleLabel,\n uncheckedHandleLabel,\n}: ConfigurationTurnOnOffProps) => (\n
\n }\n uncheckedIcon={
}\n height={20}\n width={40}\n borderRadius={10}\n handleDiameter={26}\n onColor=\"#00bc8c\"\n offColor=\"#eb3939\"\n checkedHandleIcon={\n \n {checkedHandleLabel}\n
\n }\n uncheckedHandleIcon={\n \n {uncheckedHandleLabel}\n
\n }\n />\n
\n);\n\nexport default ConfigurationTurnOnOff;\n","import { useEffect, useState } from \"react\";\nimport { Card, Form } from \"react-bootstrap\";\nimport { ChevronDown, ChevronUp } from \"react-bootstrap-icons\";\nimport { styled } from \"styled-components\";\n\nimport ConfigurationFormBottom from \"./ConfigurationFormBottom\";\nimport useBalanceCheckHook from \"../../hooks/useBalanceCheckHook\";\nimport { BalanceCheckConfigurationResponse } from \"../../types/Api\";\nimport { confirmDialog } from \"../../utils\";\nimport ConfigurationInput from \"../misc/ConfigurationInput\";\nimport ConfigurationTurnOnOff from \"../misc/ConfigurationTurnOnOff\";\n\nconst StyledHeading = styled.div`\n cursor: pointer;\n`;\n\ntype BalanceCheckConfigurationProps = {\n config: BalanceCheckConfigurationResponse;\n};\n\nconst BalanceCheckConfiguration = ({\n config,\n}: BalanceCheckConfigurationProps) => {\n const [previousConfig, setPreviousConfig] = useState(config);\n\n const { updateItem, updateIsLoading, updateIsDone, updateHasError } =\n useBalanceCheckHook();\n\n const [configuration, setConfiguration] =\n useState(config);\n\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n if (updateIsDone) {\n setPreviousConfig({ ...configuration });\n }\n }, [updateIsDone]);\n\n useEffect(() => {\n if (\n (!previousConfig.isEnabled && configuration.isEnabled) ||\n (previousConfig.isEnabled && !configuration.isEnabled)\n ) {\n setVisible(true);\n }\n }, [configuration.isEnabled]);\n\n return (\n \n \n setVisible(!visible)}\n className=\"d-flex align-items-center\"\n >\n
\n {config.asset.name} on {config.wallet.name}\n
{\" \"}\n {visible ? (\n \n ) : (\n \n )}\n \n\n {\n const isConfirmed = await confirmDialog(\n `Do you really want to ${\n configuration.isEnabled ? \"stop\" : \"run\"\n } balance check? Confirm with save button.`,\n );\n\n if (isConfirmed) {\n setConfiguration({\n ...configuration,\n isEnabled: !configuration.isEnabled,\n });\n }\n }}\n />\n
\n {visible && (\n \n
\n \n \n setConfiguration({\n ...configuration,\n // @ts-ignore\n minQuantity: e.target.value,\n })\n }\n />\n \n \n \n setConfiguration({\n ...configuration,\n // @ts-ignore\n maxQuantity: e.target.value,\n })\n }\n />\n \n\n {\n const data = {\n walletId: config.wallet.id,\n assetId: config.asset.id,\n isEnabled: configuration.isEnabled,\n minQuantity: configuration.minQuantity,\n maxQuantity: configuration.maxQuantity,\n };\n\n updateItem(data);\n }}\n />\n \n
\n )}\n
\n );\n};\n\nexport default BalanceCheckConfiguration;\n","import { useEffect } from \"react\";\nimport { Alert } from \"react-bootstrap\";\n\nimport BalanceCheckConfiguration from \"./BalanceCheckConfiguration\";\nimport { useBalanceCheck } from \"../../hooks\";\nimport Loader from \"../misc/Loader\";\n\nconst BalanceCheckConfigurations = () => {\n const { fetchItems, items, isLoading, hasError } = useBalanceCheck();\n\n useEffect(() => {\n fetchItems();\n }, []);\n\n if (isLoading) return ;\n if (hasError) return {hasError};\n\n return (\n <>\n {items?.map((item) => (\n \n ))}\n \n );\n};\n\nexport default BalanceCheckConfigurations;\n","import {\n ArbitrageAssetPairWalletResponse,\n ArbitrageResponse,\n} from \"../../types/Api\";\n\nexport const isArbitrageResponse = (\n arbitrage: ArbitrageResponse | ArbitrageAssetPairWalletResponse,\n): arbitrage is ArbitrageResponse =>\n (arbitrage as ArbitrageResponse).assetPairWallets !== undefined;\n","import { Form, InputGroup } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\ntype ConfigurationSelectProps = {\n isModified?: boolean;\n label: string;\n onChange?: (e: React.ChangeEvent) => void;\n value: string | number;\n options: string[];\n};\n\nconst StyledFormLabel = styled.div`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nconst ConfigurationSelect = ({\n isModified,\n label,\n value,\n onChange,\n options,\n}: ConfigurationSelectProps) => (\n <>\n \n {label}\n \n \n \n {options.map((option, index) => (\n \n ))}\n \n \n \n);\nexport default ConfigurationSelect;\n","import { Badge, Button, Form } from \"react-bootstrap\";\nimport {\n ChevronDoubleDown,\n ChevronDoubleUp,\n Trash,\n} from \"react-bootstrap-icons\";\nimport { styled } from \"styled-components\";\n\nimport { isArbitrageResponse } from \"./configUtils\";\nimport useBaseDeleteHook from \"../../hooks/useBaseDeleteHook\";\nimport {\n ArbitrageAssetPairWalletResponse,\n ArbitrageResponse,\n} from \"../../types/Api\";\nimport { confirmDialog, findInstanceTypeTypeNameById } from \"../../utils\";\nimport ConfigurationInput from \"../misc/ConfigurationInput\";\nimport ConfigurationSelect from \"../misc/ConfigurationSelect\";\nimport ConfigurationSwitch from \"../misc/ConfigurationSwitch\";\n\nconst StyledTrash = styled(Trash)`\n cursor: pointer;\n`;\n\nconst Wrapper = styled.div`\n margin-bottom: 10px;\n display: flex;\n gap: 10px;\n align-items: center;\n`;\n\ninterface TradeConfigurationBodyProps {\n arbitrage: ArbitrageResponse | ArbitrageAssetPairWalletResponse;\n previousArbitrage: ArbitrageResponse | ArbitrageAssetPairWalletResponse;\n isVisible: boolean;\n setConfigKey: (key: string, value: any) => void;\n handleVisibilityChange?: () => void;\n}\n\nexport const TradeConfigurationBody = ({\n arbitrage,\n previousArbitrage,\n isVisible,\n setConfigKey,\n handleVisibilityChange,\n}: TradeConfigurationBodyProps) => {\n const { deleteItem } = useBaseDeleteHook(`arbitrage/${arbitrage.id}`);\n\n const renderFormGroup = (key: string, value: any) => {\n const isModified = value != previousArbitrage.configuration[key];\n const controlId = `${key}_${arbitrage.id}`;\n const commonProps = { controlId, label: key, isModified };\n\n if (arbitrage.restrictedFields[key]) {\n return (\n setConfigKey(key, e.target.value)}\n options={[\"\", ...arbitrage.restrictedFields[key]]}\n />\n );\n }\n\n if (typeof value === \"boolean\") {\n return (\n setConfigKey(key, e.target.checked)}\n />\n );\n }\n\n if ([\"number\", \"string\"].includes(typeof value)) {\n return (\n setConfigKey(key, e.target.value)}\n button={arbitrage.negativeProperties.includes(key) ? \"-\" : undefined}\n buttonOnClick={() => setConfigKey(key, \"-\")}\n />\n );\n }\n\n return null;\n };\n\n return (\n
\n {isArbitrageResponse(arbitrage) && (\n \n \n {findInstanceTypeTypeNameById(arbitrage.instanceType)}\n \n\n {\n const isConfirmed = await confirmDialog(\n `Do you really want to delete ${arbitrage.name}? Confirm with OK button.`,\n );\n\n if (isConfirmed) {\n deleteItem();\n }\n }}\n />\n \n )}\n {Object.entries(arbitrage.configuration)\n .filter(\n ([key]) =>\n isVisible || arbitrage.highPriorityProperties.includes(key),\n )\n .map(([key, value]) => (\n \n {renderFormGroup(key, value)}\n \n ))}\n {handleVisibilityChange && (\n \n {isVisible ? (\n <>\n \n Show less\n \n ) : (\n <>\n \n Show more\n \n )}\n \n )}\n \n );\n};\n","import { Spinner } from \"react-bootstrap\";\nimport {\n Check2Circle,\n ChevronDown,\n ChevronUp,\n XLg,\n} from \"react-bootstrap-icons\";\nimport { styled } from \"styled-components\";\n\nimport { isArbitrageResponse } from \"./configUtils\";\nimport {\n ArbitrageAssetPairWalletResponse,\n ArbitrageResponse,\n} from \"../../types/Api\";\nimport { findFeeAssetTypeNameById } from \"../../utils\";\n\nconst StyledHeading = styled.div`\n cursor: pointer;\n width: 100%;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n margin-left: 4px;\n align-items: center;\n`;\n\ninterface TradeConfigurationHeaderProps {\n arbitrage: ArbitrageResponse | ArbitrageAssetPairWalletResponse;\n isVisible: boolean;\n handleVisibilityChange: () => void;\n updateHasError?: boolean;\n updateIsLoading?: boolean;\n updateIsDone?: boolean;\n}\n\nexport const TradeConfigurationHeader = ({\n arbitrage,\n isVisible,\n handleVisibilityChange,\n updateHasError,\n updateIsDone,\n updateIsLoading,\n}: TradeConfigurationHeaderProps) => (\n \n {isVisible ? (\n \n ) : (\n \n )}\n {isArbitrageResponse(arbitrage) ? (\n \n
\n {arbitrage.name}{\" \"}\n {updateIsLoading && (\n \n )}\n {updateIsDone && }\n {updateHasError && }\n
\n
\n ) : (\n `${arbitrage.wallet.name}: ${arbitrage.assetPair.amountAsset.name}${\n arbitrage.assetPair.isEqualized ? \"⌿\" : \"/\"\n }${arbitrage.assetPair.priceAsset.name} (${findFeeAssetTypeNameById(\n arbitrage.feeType,\n )})${arbitrage.eventTrigger ? \"\" : \" 🛑\"}`\n )}\n \n);\n","import { Pause, PlayFill } from \"react-bootstrap-icons\";\nimport { styled } from \"styled-components\";\n\nimport { ArbitrageResponse } from \"../../types/Api\";\nimport ConfigurationTurnOnOff from \"../misc/ConfigurationTurnOnOff\";\n\nconst Wrapper = styled.div`\n gap: 6px;\n @media (max-width: 500px) {\n flex-direction: column;\n }\n`;\n\ninterface TradeConfigurationTogglesProps {\n arbitrage: ArbitrageResponse;\n previousArbitrage: ArbitrageResponse;\n onPauseToggle: () => Promise;\n onEnableToggle: () => Promise;\n}\n\nexport const TradeConfigurationToggles = ({\n arbitrage,\n previousArbitrage,\n onPauseToggle,\n onEnableToggle,\n}: TradeConfigurationTogglesProps) => (\n \n }\n uncheckedHandleLabel={}\n onChange={onPauseToggle}\n />\n\n \n \n);\n","import { useEffect, useState } from \"react\";\nimport { Card } from \"react-bootstrap\";\n\nimport ConfigurationFormBottom from \"./ConfigurationFormBottom\";\nimport { TradeConfigurationBody } from \"./TradeConfigurationBody\";\nimport { TradeConfigurationHeader } from \"./TradeConfigurationHeader\";\nimport { TradeConfigurationToggles } from \"./TradeConfigurationToggles\";\nimport { useConfiguration } from \"../../hooks\";\nimport type { ArbitrageResponse } from \"../../types/Api\";\nimport { confirmDialog } from \"../../utils\";\n\ninterface TradeConfigurationProps {\n config: ArbitrageResponse;\n}\n\nconst TradeConfiguration = ({ config }: TradeConfigurationProps) => {\n const { updateConfiguration, updateIsLoading, updateHasError, updateIsDone } =\n useConfiguration();\n\n const [previousArbitrage, setPreviousArbitrage] = useState(\n JSON.parse(JSON.stringify(config)),\n );\n const [arbitrage, setArbitrage] = useState(config);\n const [isVisible, setIsVisible] = useState(false);\n const [allFieldsVisibility, setAllFieldsVisibility] = useState<{\n [key: number]: boolean;\n }>({});\n\n useEffect(() => {\n if (updateIsDone) {\n setPreviousArbitrage(JSON.parse(JSON.stringify(arbitrage)));\n }\n }, [updateIsDone, config]);\n\n const handleVisibilityChange = (id: number, isVisible: boolean) => {\n setAllFieldsVisibility((prevVisibility) => ({\n ...prevVisibility,\n [id]: isVisible,\n }));\n };\n\n const handlePauseToggle = async () => {\n const action = arbitrage.isPaused ? \"unpause\" : \"pause\";\n const isConfirmed = await confirmDialog(\n `Do you really want to ${action} ${arbitrage.name}? It is paused by OK button.`,\n );\n if (isConfirmed) {\n const newArbitrage = { ...arbitrage, isPaused: !arbitrage.isPaused };\n setArbitrage(newArbitrage);\n updateConfiguration({\n ...newArbitrage,\n });\n }\n };\n\n const handleEnableToggle = async () => {\n const action = arbitrage.isEnabled ? \"stop\" : \"run\";\n const isConfirmed = await confirmDialog(\n `Do you really want to ${action} ${arbitrage.name}? Confirm with save button.`,\n );\n if (isConfirmed) {\n setArbitrage({ ...arbitrage, isEnabled: !arbitrage.isEnabled });\n }\n };\n\n return (\n \n \n setIsVisible(!isVisible)}\n updateHasError={!!updateHasError}\n updateIsLoading={updateIsLoading}\n updateIsDone={!!updateIsDone}\n />\n \n \n {isVisible && (\n \n \n handleVisibilityChange(\n arbitrage.id,\n !allFieldsVisibility[arbitrage.id],\n )\n }\n setConfigKey={(key: string, value: any) =>\n setArbitrage((prev) => ({\n ...prev,\n configuration: { ...prev.configuration, [key]: value },\n }))\n }\n />\n {arbitrage.assetPairWallets.map((assetArbitrage, index) => (\n \n \n \n handleVisibilityChange(\n assetArbitrage.id,\n !allFieldsVisibility[assetArbitrage.id],\n )\n }\n />\n \n \n {\n const assetPairWalletsCopy = [\n ...arbitrage.assetPairWallets,\n ];\n assetPairWalletsCopy[index].configuration = {\n ...assetPairWalletsCopy[index].configuration,\n [key]: value,\n };\n\n setArbitrage((prev) => ({\n ...prev,\n assetPairWallets: [...assetPairWalletsCopy],\n }));\n }}\n />\n \n \n ))}\n \n updateConfiguration({\n ...arbitrage,\n })\n }\n />\n \n )}\n \n );\n};\n\nexport default TradeConfiguration;\n","import { useEffect, useState } from \"react\";\nimport { Alert, Tab, Tabs } from \"react-bootstrap\";\n\nimport TradeConfiguration from \"./TradeConfiguration\";\nimport { useConfiguration } from \"../../hooks\";\nimport Loader from \"../misc/Loader\";\n\nconst TradeConfigurations = () => {\n const { configurations, fetchConfigurations, isLoading, hasError } =\n useConfiguration();\n const [activeKey, setActiveKey] = useState();\n\n useEffect(() => {\n fetchConfigurations();\n }, []);\n\n if (isLoading) return ;\n\n if (hasError) {\n return (\n \n {hasError}\n \n );\n }\n\n return (\n <>\n setActiveKey(k || \"\")}>\n {configurations.map((configurationItems, index) => (\n \n {(activeKey === configurationItems.group ||\n (!activeKey && index === 0)) &&\n configurationItems.arbitrages.map((config) => (\n \n ))}\n \n ))}\n \n \n );\n};\n\nexport default TradeConfigurations;\n","import { useContext, useEffect } from \"react\";\nimport { Alert, Button, Spinner } from \"react-bootstrap\";\nimport { Check2Circle, XLg } from \"react-bootstrap-icons\";\n\nimport { LOCAL_STORAGE_TOKEN } from \"../../constants\";\nimport { AuthContext } from \"../../context/Auth\";\nimport { useUsers } from \"../../hooks\";\nimport { RoleEnum } from \"../../types/Api\";\nimport { findRoleById } from \"../../utils\";\nimport Loader from \"../misc/Loader\";\nimport { TableContainer } from \"../misc/TableContainer\";\n\nconst UsersConfiguration = () => {\n const {\n users,\n isLoading,\n hasError,\n fetchUsers,\n blockUser,\n isBlockingDone,\n isBlocking,\n hasBlockingError,\n blockingId,\n } = useUsers();\n const { user, role, setIsLogged } = useContext(AuthContext);\n\n useEffect(() => {\n fetchUsers();\n }, []);\n\n if (isLoading) return ;\n if (hasError)\n return (\n \n {hasError}\n \n );\n\n return (\n <>\n \n {users.map((userConfig) => (\n \n {userConfig.id}\n {userConfig.login}\n {findRoleById(userConfig.role)}\n {userConfig.isBlocked ? \"False\" : \"True\"}\n \n {user !== userConfig.login && role === RoleEnum.Owner && (\n \n blockUser({\n id: userConfig.id,\n isBlocked: !userConfig.isBlocked,\n })\n }\n >\n {userConfig.isBlocked ? \"Unblock\" : \"Block\"}\n {blockingId === userConfig.id && isBlocking && (\n \n )}\n {blockingId === userConfig.id && isBlockingDone && (\n \n )}\n {blockingId === userConfig.id && hasBlockingError && (\n \n )}\n \n )}\n {user === userConfig.login && (\n {\n localStorage.removeItem(LOCAL_STORAGE_TOKEN);\n setIsLogged(false);\n }}\n >\n Logout\n \n )}\n \n \n ))}\n \n {isBlockingDone && (\n \n {isBlockingDone}\n \n )}\n {hasBlockingError && (\n \n {hasBlockingError}\n \n )}\n \n );\n};\n\nexport default UsersConfiguration;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport useBasePostHook from \"./useBasePostHook\";\nimport type { UserRequest, UserResponse } from \"../types/Api\";\n\nconst useUsersHook = () => {\n const {\n items: users,\n isLoading,\n hasError,\n fetchItems: fetchUsers,\n } = useBaseGetHook(\"user\");\n\n const {\n postItem,\n id: blockingId,\n isLoading: isBlocking,\n isLoadingDone: isBlockingDone,\n hasError: hasBlockingError,\n } = useBasePostHook();\n\n const blockUser = async (data: UserRequest) => {\n await postItem(data, data.id, `user/${data.id}`);\n fetchUsers();\n };\n\n return {\n users,\n isLoading,\n hasError,\n fetchUsers,\n blockUser,\n isBlocking,\n blockingId,\n isBlockingDone,\n hasBlockingError,\n };\n};\n\nexport default useUsersHook;\n","import { useState } from \"react\";\nimport { Tab, Tabs } from \"react-bootstrap\";\nimport { Route, Routes, useLocation, useNavigate } from \"react-router-dom\";\n\nimport AppConfigurations from \"./AppConfigurations\";\nimport { ArbitrageInfo } from \"./ArbitrageInfo\";\nimport BalanceCheckConfigurations from \"./BalanceCheckConfigurations\";\nimport TradeConfigurations from \"./TradeConfigurations\";\nimport UsersConfiguration from \"./UsersConfiguration\";\n\nenum TabsName {\n App = \"App\",\n Info = \"Info\",\n Notification = \"Notification\",\n BalanceCheck = \"Balance\",\n Trade = \"Trade\",\n Users = \"Users\",\n}\n\nconst ConfigurationViewer = () => {\n const navigate = useNavigate();\n const { pathname } = useLocation();\n\n const [key, setKey] = useState(\n pathname === \"/configuration\" ? `${pathname}/${TabsName.Trade}` : pathname,\n );\n\n return (\n <>\n {\n if (!k) return;\n\n setKey(k);\n navigate(k);\n }}\n >\n \n \n \n \n \n \n \n } />\n } />\n } />\n } />\n } />\n } />\n \n \n );\n};\n\nexport default ConfigurationViewer;\n","import { useEffect, useState } from \"react\";\nimport {\n Alert,\n Button,\n Card,\n Col,\n Dropdown,\n FormControl,\n InputGroup,\n Row,\n Spinner,\n} from \"react-bootstrap\";\nimport { ArrowDownUp } from \"react-bootstrap-icons\";\nimport { styled } from \"styled-components\";\n\nimport { DOLLAR_DECIMALS } from \"../../constants\";\nimport { useExchange, useWalletBalance } from \"../../hooks\";\nimport {\n AssetResponse,\n OrderSideEnum,\n SwapPriceResponse,\n SwapRequest,\n SwapWhitelistResponse,\n WalletResponse,\n} from \"../../types/Api\";\nimport {\n getAssetPairId,\n getOrderSide,\n isMobile,\n parseAmount,\n sleep,\n} from \"../../utils\";\nimport Loader from \"../misc/Loader\";\n\nconst StyledInputGroupText = styled(InputGroup.Text)`\n font-weight: bold;\n width: 3.6rem;\n @media (min-width: 500px) {\n width: 7rem;\n }\n`;\n\nconst StyledDropdownToggle = styled(Dropdown.Toggle)`\n min-width: 50px;\n`;\n\nconst PriceButton = styled(Button)`\n text-transform: capitalize;\n @media (max-width: 500px) {\n padding-left: 0.2rem !important;\n padding-right: 0.2rem !important;\n font-size: 0.8rem !important;\n }\n`;\n\nconst BottomButton = styled(Button)`\n width: 140px;\n`;\n\nconst getAssetOptions = (\n assetA?: AssetResponse,\n assetB?: AssetResponse,\n item?: SwapWhitelistResponse,\n) => {\n if (!item || !item.assetPairs) return [];\n\n const chosenAsset = assetA || assetB;\n\n if (!chosenAsset) return item.availableAssets;\n\n return item.assetPairs\n .map((asset) => {\n if (asset.amountAsset.id === chosenAsset.id) return asset.priceAsset;\n if (asset.priceAsset.id === chosenAsset.id) return asset.amountAsset;\n })\n .filter((itemAsset) => itemAsset);\n};\n\nconst getPrice = (priceType: string, prices: SwapPriceResponse[\"asks\"]) => {\n switch (priceType) {\n case \"firstPrice\":\n return prices.firstPrice;\n case \"averagePrice\":\n return prices.averagePrice;\n case \"lastPrice\":\n default:\n return prices.lastPrice;\n }\n};\n\nconst getPriceBidAsk = (\n prices: SwapPriceResponse,\n orderSide: OrderSideEnum,\n) => {\n const firstPriceAsk = getPrice(\"firstPrice\", prices.asks);\n const firstPriceBid = getPrice(\"firstPrice\", prices.bids);\n const deviation = firstPriceAsk - firstPriceBid;\n if (orderSide === OrderSideEnum.Sell) {\n return deviation <= 0.0001 ? firstPriceAsk : firstPriceAsk - 0.0001;\n }\n return deviation <= 0.0001 ? firstPriceBid : firstPriceBid + 0.0001;\n};\n\nenum Setter {\n Wallet,\n WhitelistItem,\n AssetPairId,\n AssetA,\n AssetB,\n Price,\n CancelTime,\n Amount,\n}\n\ntype ExchangeCardProps = {\n refreshData: () => void;\n};\n\nconst ExchangeCard = ({ refreshData }: ExchangeCardProps) => {\n const {\n exchange,\n isLoadingDone,\n isLoading,\n hasError,\n getExchangePrices,\n prices,\n pricesIsLoading,\n pricesHasError,\n resetPrices,\n fetchExchangeWhitelist,\n exchangeWhitelistIsLoading,\n exchangeWhitelistHasError,\n exchangeWhitelist,\n } = useExchange();\n\n const {\n walletBalances,\n fetchWalletBalances,\n isLoading: walletBalancesIsLoading,\n } = useWalletBalance();\n\n useEffect(() => {\n fetchExchangeWhitelist();\n }, []);\n\n const [wallet, setWallet] = useState();\n const [whitelistItem, setWhitelistItem] = useState();\n\n const [assetA, setAssetA] = useState();\n const [assetB, setAssetB] = useState();\n\n const [amount, setAmount] = useState(\"0\");\n const [price, setPrice] = useState(\"0\");\n\n const [cancelTime, setCancelTime] = useState(5);\n\n if (exchangeWhitelistIsLoading) return ;\n if (exchangeWhitelistHasError) {\n return (\n \n {exchangeWhitelistHasError}\n \n );\n }\n\n const reset = (keepStates: Setter[]) => {\n if (!keepStates.includes(Setter.AssetA)) setAssetA(undefined);\n if (!keepStates.includes(Setter.AssetB)) setAssetB(undefined);\n if (!keepStates.includes(Setter.CancelTime)) setCancelTime(5);\n if (!keepStates.includes(Setter.WhitelistItem)) setWhitelistItem(undefined);\n if (!keepStates.includes(Setter.Wallet)) setWallet(undefined);\n if (!keepStates.includes(Setter.Amount)) setAmount(\"0\");\n if (!keepStates.includes(Setter.Price)) setPrice(\"0\");\n if (!keepStates.includes(Setter.Price)) resetPrices();\n };\n\n return (\n <>\n \n \n \n \n \n \n {!isMobile() ? \"Exchange\" : \"Ex\"}\n \n \n \n {wallet?.name}\n \n\n \n {exchangeWhitelist!.map((option) => (\n {\n setWhitelistItem(option);\n setWallet(option.wallet);\n reset([\n Setter.WhitelistItem,\n Setter.Wallet,\n Setter.CancelTime,\n ]);\n }}\n >\n {option.wallet.name}\n \n ))}\n \n \n \n\n \n Sell\n \n \n {assetA?.name}\n \n\n \n {getAssetOptions(undefined, assetB, whitelistItem)?.map(\n (asset) =>\n asset && (\n {\n setAssetA(asset);\n reset([\n Setter.WhitelistItem,\n Setter.Wallet,\n Setter.AssetA,\n Setter.CancelTime,\n ]);\n }}\n >\n {asset.name}\n \n ),\n )}\n \n \n {assetA && assetB && (\n {\n const tempAssetA = assetA;\n\n setAssetA(assetB);\n setAssetB(tempAssetA);\n }}\n >\n \n \n )}\n \n \n Buy\n \n \n {assetB?.name}\n \n\n \n {getAssetOptions(assetA, undefined, whitelistItem)?.map(\n (asset) =>\n asset && (\n {\n setAssetB(asset);\n reset([\n Setter.WhitelistItem,\n Setter.Wallet,\n Setter.AssetA,\n Setter.AssetB,\n Setter.CancelTime,\n ]);\n }}\n >\n {asset.name}\n \n ),\n )}\n \n \n {assetA && assetB && (\n {\n const tempAssetA = assetA;\n\n setAssetA(assetB);\n setAssetB(tempAssetA);\n }}\n >\n \n \n )}\n \n \n \n {assetA && assetB ? (\n getOrderSide(whitelistItem, assetA, assetB) ===\n OrderSideEnum.Buy ? (\n \n {!isMobile() ? \"Buy \" : \"\"}\n {assetB?.name}\n \n ) : (\n \n {!isMobile() ? \"Sell \" : \"\"}\n {assetA?.name}\n \n )\n ) : !isMobile() ? (\n \"Amount\"\n ) : (\n \"Σ\"\n )}\n \n setAmount(e.target.value)}\n disabled={!assetA}\n />\n {\n const assetPairId = getAssetPairId(\n whitelistItem,\n assetA,\n assetB,\n );\n\n if (!assetPairId || !wallet) return;\n\n getExchangePrices(\n assetPairId.id,\n wallet.id,\n parseAmount(amount),\n );\n }}\n disabled={\n !assetA || !assetB || amount === \"\" || amount === \"0\"\n }\n >\n Quote price{\" \"}\n {pricesIsLoading && (\n \n )}\n \n {\n if (!assetA || !assetB || !wallet) return;\n\n await fetchWalletBalances(wallet?.id);\n\n const balance = walletBalances.find(\n (wallet) => wallet.asset.id === assetA.id,\n )?.balance;\n\n if (\n balance &&\n getOrderSide(whitelistItem, assetA, assetB) ===\n OrderSideEnum.Buy\n ) {\n // @ts-ignore\n balance = balance / assetB.price;\n }\n\n if (balance) {\n setAmount(balance.toString());\n }\n }}\n disabled={!assetA || !assetB}\n >\n {getOrderSide(whitelistItem, assetA, assetB) ===\n OrderSideEnum.Buy\n ? \"~Max\"\n : \"Max\"}{\" \"}\n {walletBalancesIsLoading && (\n \n )}\n \n \n\n \n Price\n setPrice(e.target.value)}\n disabled={!assetA || !assetB}\n />\n {prices?.asks && prices?.bids && (\n {\n if (!whitelistItem) return;\n\n const orderSide = getOrderSide(\n whitelistItem,\n assetA,\n assetB,\n );\n\n setPrice(getPriceBidAsk(prices, orderSide!).toString());\n }}\n >\n {assetA &&\n assetB &&\n getOrderSide(whitelistItem, assetA, assetB) ===\n OrderSideEnum.Sell ? (\n \n F{getPriceBidAsk(prices, OrderSideEnum.Sell).toFixed(4)}\n \n ) : (\n \n F{getPriceBidAsk(prices, OrderSideEnum.Buy).toFixed(4)}\n \n )}\n \n )}\n {prices?.asks &&\n prices?.bids &&\n [\"firstPrice\", \"averagePrice\", \"lastPrice\"].map(\n (priceType) => (\n {\n if (!whitelistItem) return;\n\n const orderSide = getOrderSide(\n whitelistItem,\n assetA,\n assetB,\n );\n\n if (orderSide === OrderSideEnum.Buy) {\n setPrice(\n getPrice(priceType, prices.asks).toString(),\n );\n } else if (orderSide === OrderSideEnum.Sell) {\n setPrice(\n getPrice(priceType, prices.bids).toString(),\n );\n }\n }}\n >\n {assetA &&\n assetB &&\n getOrderSide(whitelistItem, assetA, assetB) ===\n OrderSideEnum.Buy ? (\n \n {priceType[0]}\n {getPrice(priceType, prices.asks).toFixed(4)}\n \n ) : (\n \n {priceType[0]}\n {getPrice(priceType, prices.bids).toFixed(4)}\n \n )}\n \n ),\n )}\n \n \n \n {assetA && assetB ? (\n getOrderSide(whitelistItem, assetA, assetB) ===\n OrderSideEnum.Buy ? (\n \n {!isMobile() ? \"Sell \" : \"\"}\n {assetA?.name}\n \n ) : (\n \n {\" \"}\n {!isMobile() ? \"Buy \" : \"\"}\n {assetB?.name}\n \n )\n ) : !isMobile() ? (\n \"Amount\"\n ) : (\n \"Σ\"\n )}\n \n \n \n \n Expire\n \n setCancelTime(Number.parseInt(e.target.value))\n }\n disabled={cancelTime === -1}\n />\n Unlimited\n setCancelTime(cancelTime !== 5 ? 5 : -1)}\n />\n \n \n \n \n \n
\n {/* @ts-ignore */}\n {\n if (!wallet || !assetA || !assetB) return;\n\n const orderSide = getOrderSide(whitelistItem, assetA, assetB);\n\n const assetPairId = getAssetPairId(whitelistItem, assetA, assetB);\n\n if (!orderSide || !assetPairId) return;\n\n const exchangeData: SwapRequest = {\n cancellableTimeInSeconds: cancelTime === -1 ? null : cancelTime,\n walletId: wallet.id,\n assetPairId: assetPairId.id,\n orderSide,\n amount: parseAmount(amount),\n price: typeof price === \"string\" ? parseAmount(price) : price,\n };\n\n try {\n await exchange(exchangeData, undefined, \"swap\");\n\n refreshData();\n\n await sleep(5000);\n refreshData();\n } catch {}\n }}\n >\n Exchange{\" \"}\n {isLoading && (\n \n )}\n \n reset([])}\n >\n Reset\n \n
\n\n {isLoadingDone && {isLoadingDone}}\n {hasError && {hasError}}\n {pricesHasError && {pricesHasError}}\n \n );\n};\n\nexport default ExchangeCard;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport useBasePostHook from \"./useBasePostHook\";\nimport type {\n SwapPriceResponse,\n SwapPricesRequest,\n SwapRequest,\n SwapWhitelistResponse,\n} from \"../types/Api\";\n\nconst useExchange = () => {\n const {\n postItem: exchange,\n isLoading,\n isLoadingDone,\n hasError,\n } = useBasePostHook(\"swap\");\n\n const {\n items: prices,\n setItems: setPrices,\n isLoading: pricesIsLoading,\n hasError: pricesHasError,\n fetchItems,\n } = useBaseGetHook(undefined, false);\n\n const getExchangePrices = (\n assetPairId: SwapPricesRequest[\"assetPairId\"],\n walletId: SwapPricesRequest[\"walletId\"],\n amount: SwapPricesRequest[\"amount\"],\n ) => {\n const params = new URLSearchParams({\n walletId: walletId.toString(),\n assetPairId: assetPairId.toString(),\n amount: amount.toString(),\n });\n\n fetchItems(`swap/prices?${params.toString()}`);\n };\n\n const resetPrices = () => {\n // @ts-ignore\n setPrices();\n };\n\n const {\n items: exchangeWhitelist,\n isLoading: exchangeWhitelistIsLoading,\n hasError: exchangeWhitelistHasError,\n fetchItems: fetchExchangeWhitelist,\n } = useBaseGetHook(\"swap/whitelist\");\n\n return {\n exchange,\n isLoadingDone,\n isLoading,\n hasError,\n getExchangePrices,\n prices,\n pricesIsLoading,\n pricesHasError,\n resetPrices,\n fetchExchangeWhitelist,\n exchangeWhitelist,\n exchangeWhitelistIsLoading,\n exchangeWhitelistHasError,\n };\n};\n\nexport default useExchange;\n","import { styled } from \"styled-components\";\nconst StyledA = styled.a<{ $isLink: boolean }>`\n color: ${(props) => (props.$isLink ? \"var(--bs-success)\" : \"inherit\")};\n text-decoration: ${(props) => (props.$isLink ? \"underline\" : \"none\")};\n cursor: ${(props) => (props.$isLink ? \"pointer\" : \"inherit\")};\n\n &:hover {\n color: ${(props) => (props.$isLink ? \"#009670\" : \"inherit\")};\n }\n`;\n\ninterface LinkMaybeModalProps {\n links: string[];\n children: React.ReactNode;\n setShowLinksModal: React.Dispatch>;\n}\n\nexport const LinkMaybeModal = ({\n links,\n children,\n setShowLinksModal,\n}: LinkMaybeModalProps) => (\n 1 ? () => setShowLinksModal(true) : undefined}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {children}\n \n);\n","import { Modal } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\nconst StyledUl = styled.ul`\n list-style: decimal;\n list-style-position: inside;\n`;\n\nconst StyledLi = styled.li`\n width: auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\ninterface LinksModalProps {\n links: string[];\n showLinksModal: boolean;\n setShowLinksModal: React.Dispatch>;\n}\n\nexport const LinksModal = ({\n links,\n showLinksModal,\n setShowLinksModal,\n}: LinksModalProps) => (\n setShowLinksModal(false)}>\n \n \n \n {links.map((link) => (\n \n \n {link}\n \n \n ))}\n \n \n \n);\n","import { useContext, useState } from \"react\";\nimport { Alert, Button, Spinner } from \"react-bootstrap\";\n\nimport { DOLLAR_DECIMALS, LOCAL_STORAGE_PAGINATION } from \"../../constants\";\nimport { DataContext } from \"../../context/Data\";\nimport { useExchangeList } from \"../../hooks\";\nimport { ExchangeTypeEnum, SwapTypeEnum } from \"../../types/Api\";\nimport { formatDateTime, getExchanges } from \"../../utils\";\nimport Countdown from \"../misc/Countdown\";\nimport { LinkMaybeModal } from \"../misc/LinkMaybeModal\";\nimport { LinksModal } from \"../misc/LinksModal\";\nimport { StyledTd, TableContainer } from \"../misc/TableContainer\";\n\nconst ExchangeTable = () => {\n const { wallets, assets } = useContext(DataContext);\n const {\n exchangeList,\n isLoading,\n hasError,\n cancelExchange,\n cancelId,\n cancelIsDone,\n cancelIsLoading,\n cancelHasError,\n countdown,\n pageNumber,\n setPageNumber,\n } = useExchangeList();\n const [showLinksModal, setShowLinksModal] = useState(false);\n\n return (\n <>\n \n\n {hasError ? (\n {hasError}\n ) : (\n <>\n \n {exchangeList?.items?.map((exchange) => {\n const walletName = wallets.find(\n (wallet) => wallet.id === exchange.walletId,\n )?.name;\n\n const priceAssetName = assets.find(\n (asset) => asset.id === exchange.priceAssetId,\n )?.name;\n\n const amountAssetName = assets.find(\n (asset) => asset.id === exchange.amountAssetId,\n )?.name;\n\n const exchangeName = getExchanges().find(\n (ex) => Number(ex.id) === exchange.exchangeId,\n )?.abbreviation;\n\n return (\n \n {formatDateTime(exchange.created)}\n {exchange.createdBy}\n \n {exchangeName}: {walletName}\n \n {exchange.filledStatus}%\n \n {exchange.expectedAmount} {amountAssetName}\n \n \n {(exchange.payAmount || 0).toFixed(DOLLAR_DECIMALS)}{\" \"}\n {exchange.orderSideId === 1\n ? priceAssetName\n : amountAssetName}\n \n \n {(exchange.acquiredAmount || 0).toFixed(DOLLAR_DECIMALS)}{\" \"}\n {exchange.orderSideId === 1\n ? amountAssetName\n : priceAssetName}\n \n {exchange.expectedPrice?.toFixed(5)}\n {exchange.realPrice?.toFixed(5)}\n \n \n {exchange.type === SwapTypeEnum.Manual\n ? \"Manual\"\n : \"Top-up\"}\n \n \n \n {!exchange.isCancelled &&\n exchange.exchangeId !== ExchangeTypeEnum.Swop && (\n cancelExchange(exchange.id)}\n >\n Cancel{\" \"}\n {cancelId === exchange.id && cancelIsLoading && (\n \n )}\n \n )}\n \n \n \n );\n })}\n \n {cancelIsDone && (\n \n {cancelIsDone}\n \n )}\n {cancelHasError && (\n \n {cancelHasError}\n \n )}\n \n )}\n \n );\n};\n\nexport default ExchangeTable;\n","import { useEffect, useMemo } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport useBasePutHook from \"./useBasePutHook\";\nimport { LOCAL_STORAGE_PAGINATION } from \"../constants\";\nimport { PaginationResponseOfSwapResponse } from \"../types/Api\";\n\nimport { usePagination } from \".\";\n\nconst useExchangeList = () => {\n const { pageNumber, setPageNumber } = usePagination();\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n pageSize:\n localStorage.getItem(LOCAL_STORAGE_PAGINATION.exchange) || \"20\",\n pageNumber: pageNumber.toString(),\n }),\n [pageNumber],\n );\n\n const {\n items: exchangeList,\n isLoading,\n hasError,\n fetchItems: fetchExchangeList,\n countdown,\n } = useBaseGetHook(\n `swap?${params.toString()}`,\n undefined,\n 3,\n );\n\n useEffect(() => {\n fetchExchangeList();\n }, [pageNumber]);\n\n const {\n updateItem,\n id: cancelId,\n isLoading: cancelIsLoading,\n isLoadingDone: cancelIsDone,\n hasError: cancelHasError,\n } = useBasePutHook();\n\n const cancelExchange = (id: number) =>\n updateItem(null, id, `swap/cancel/${id}`);\n\n return {\n fetchExchangeList,\n exchangeList,\n isLoading,\n hasError,\n cancelExchange,\n cancelId,\n cancelIsDone,\n cancelIsLoading,\n cancelHasError,\n countdown,\n pageNumber,\n setPageNumber,\n };\n};\n\nexport default useExchangeList;\n","import { ArrowClockwise } from \"react-bootstrap-icons\";\n\ninterface RefreshIconProps {\n onClick: () => void | Promise;\n}\n\nexport const RefreshIcon = ({ onClick }: RefreshIconProps) => (\n
\n \n
\n);\n","import { useEffect, useState } from \"react\";\nimport { Alert, Tab, Tabs } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\n\nimport useBaseGetHook from \"../../hooks/useBaseGetHook\";\nimport type {\n AssetResponse,\n CurrentBalanceGroupResponse,\n CurrentBalanceWalletResponse,\n} from \"../../types/Api\";\nimport { floor } from \"../../utils\";\nimport Countdown from \"../misc/Countdown\";\nimport Loader from \"../misc/Loader\";\nimport { TableContainer } from \"../misc/TableContainer\";\nimport { RefreshIcon } from \"../RefreshIcon\";\n\nconst StyledTableContainer = styled(TableContainer)`\n th:first-child,\n td:first-child {\n position: sticky;\n left: 0;\n background-color: #2e2e2e;\n z-index: 2;\n }\n\n td,\n th {\n box-shadow: 0px -1px 0 0 #444444;\n }\n\n table {\n border-collapse: separate;\n border-spacing: 0;\n border-bottom: 1px solid #444444;\n }\n`;\n\ntype WalletAssetRowProps = {\n asset: AssetResponse;\n wallets: CurrentBalanceWalletResponse[];\n};\n\nconst WalletAssetRow = ({ asset, wallets }: WalletAssetRowProps) => (\n \n {asset.name}\n {wallets.map((wallet) => {\n const { balance } =\n wallet.assets.find(\n (walletAsset) => asset?.id === walletAsset.asset.id,\n ) || {};\n\n if (balance === null || balance === undefined) {\n return -;\n }\n\n return (\n \n {balance?.total === 0\n ? 0\n : floor(balance?.total || 0, asset.textDecimals).toFixed(\n asset.textDecimals,\n )}\n {balance?.free === balance?.total\n ? null\n : ` (${floor(balance?.free || 0, asset.textDecimals).toFixed(\n asset.textDecimals,\n )})`}\n \n );\n })}\n \n);\n\ntype BalanceCurrentTabContentProps = {\n group: CurrentBalanceGroupResponse;\n fetchCurrentBalances: () => void;\n};\n\nconst BalanceCurrentTabContent = ({\n group,\n fetchCurrentBalances,\n}: BalanceCurrentTabContentProps) => (\n , \"90px\"],\n ...group.wallets.map((item) => item.wallet.name),\n ]}\n >\n {group.assets.map(({ asset }) => (\n \n ))}\n \n);\n\ntype BalanceCurrentProps = {\n currentBalanceGroups: CurrentBalanceGroupResponse[];\n fetchCurrentBalances: ReturnType[\"fetchItems\"];\n isLoading: boolean;\n hasError: string;\n countdown: number;\n};\n\nconst BalanceCurrent = ({\n currentBalanceGroups,\n fetchCurrentBalances,\n isLoading,\n hasError,\n countdown,\n}: BalanceCurrentProps) => {\n const [groupId, setGroupId] = useState();\n\n useEffect(() => {\n fetchCurrentBalances();\n }, []);\n\n return (\n <>\n {countdown !== undefined && isLoading !== undefined && (\n \n )}\n\n {hasError ? (\n {hasError}\n ) : (\n <>\n {!currentBalanceGroups.length && }\n\n setGroupId(k || undefined)}\n >\n {currentBalanceGroups.map((group) => (\n \n \n \n ))}\n \n \n )}\n \n );\n};\n\nexport default BalanceCurrent;\n","import ExchangeCard from \"./ExchangeCard\";\nimport ExchangeTable from \"./ExchangeTable\";\nimport { useCurrentBalances } from \"../../hooks\";\nimport BalanceCurrent from \"../balance/BalanceCurrent\";\n\nconst ExchangeViewer = () => {\n const { currentBalanceGroups, isLoading, hasError, fetchItems, countdown } =\n useCurrentBalances();\n\n return (\n <>\n \n \n \n \n );\n};\n\nexport default ExchangeViewer;\n","import { Alert, Card, Form } from \"react-bootstrap\";\nimport { Grid, GridFill, Trash2 } from \"react-bootstrap-icons\";\nimport styled from \"styled-components\";\n\nimport { LOCAL_STORAGE_PAGINATION } from \"../../constants\";\nimport { useLogs } from \"../../hooks\";\nimport { LogLevel, SourceLevel } from \"../../hooks/useLogsHook\";\nimport { LogResponse } from \"../../types/Api\";\nimport { formatDateTime } from \"../../utils\";\nimport Countdown from \"../misc/Countdown\";\nimport { TableContainer } from \"../misc/TableContainer\";\n\nconst Wrapper = styled.div`\n display: flex;\n gap: 10px;\n`;\n\nconst StyledFormCheck = styled(Form.Check)`\n white-space: nowrap;\n &:not(:last-of-type) {\n padding-right: 21px;\n }\n padding-top: 8px;\n padding-bottom: 8px;\n margin: 0;\n user-select: none;\n\n label {\n padding: 10px;\n margin: -10px;\n }\n`;\n\nconst StyledCardHeader = styled(Card.Header)`\n display: flex;\n justify-content: space-between;\n`;\n\nconst getLogLevelColor = (level: LogResponse[\"level\"]): string => {\n switch (level) {\n case LogLevel.Information:\n return \"text-muted\";\n case LogLevel.Warning:\n return \"text-info\";\n case LogLevel.Error:\n return \"text-warning\";\n case LogLevel.Fatal:\n return \"text-danger\";\n default:\n return \"\";\n }\n};\n\nconst LogsTable: React.FC = () => {\n const {\n logs,\n isLoading,\n hasError,\n countdown,\n pageNumber,\n setPageNumber,\n deleteLogs,\n levels,\n setLevels,\n sources,\n setSources,\n } = useLogs();\n\n const handleLevelToggle = (level: LogLevel) => {\n setLevels((prevLevels) =>\n prevLevels.includes(level)\n ? prevLevels.filter((lvl) => lvl !== level)\n : [...prevLevels, level],\n );\n };\n\n const handleSourceToggle = (source: SourceLevel) => {\n setSources((prevSources) =>\n prevSources.includes(source)\n ? prevSources.filter((src) => src !== source)\n : [...prevSources, source],\n );\n };\n\n return (\n <>\n \n \n \n
Levels
\n
\n setLevels(Object.values(LogLevel))}\n className=\"mx-2\"\n style={{ cursor: \"pointer\" }}\n />\n setLevels([])}\n className=\"mx-2\"\n style={{ cursor: \"pointer\" }}\n />\n
\n
\n \n
\n {Object.values(LogLevel).map((level) => (\n handleLevelToggle(level)}\n />\n ))}\n
\n
\n
\n\n \n \n
Sources
\n
\n setSources(Object.values(SourceLevel))}\n className=\"mx-2\"\n style={{ cursor: \"pointer\" }}\n />\n setSources([])}\n className=\"mx-2\"\n style={{ cursor: \"pointer\" }}\n />\n
\n
\n \n
\n {Object.values(SourceLevel).map((source) => (\n handleSourceToggle(source)}\n />\n ))}\n
\n
\n
\n
\n\n \n\n {hasError ? (\n {hasError}\n ) : (\n \n Created \n deleteLogs()} className=\"mb-1\" />\n ,\n \"130px\",\n ],\n [\"Source\", \"65px\"],\n [\"Level\", \"70px\"],\n [\"Error message\", \"600px\"],\n ]}\n isEmpty={!logs.items?.length}\n pageNumber={pageNumber}\n setPageNumber={setPageNumber}\n totalPages={logs.totalPages}\n currentPageNumber={logs.pageNumber}\n paginationName={LOCAL_STORAGE_PAGINATION.logs}\n >\n {logs.items?.map((log, index) => (\n \n {formatDateTime(log.created!)}\n {log.source}\n alert(log.exception)}\n >\n {log.level}\n \n {log.message}\n \n ))}\n \n )}\n \n );\n};\n\nexport default LogsTable;\n","import { useMemo } from \"react\";\nimport { Alert } from \"react-bootstrap\";\nimport { Line } from \"react-chartjs-2\";\nimport { styled } from \"styled-components\";\n\nimport { useRecentTradeStoreData } from \"../../hooks\";\nimport { RecentTradeStoreDataResponse } from \"../../types/Api\";\nimport { findNetworkById } from \"../../utils\";\nimport Loader from \"../misc/Loader\";\n\nconst groupByNetworkPlatform = (data: RecentTradeStoreDataResponse[]) =>\n data.reduce(\n (acc, item) => {\n if (!acc[item.networkPlatform]) {\n acc[item.networkPlatform] = [];\n }\n acc[item.networkPlatform].push(item);\n return acc;\n },\n {} as Record,\n );\n\nconst getColorForNetworkPlatform = (networkPlatform: string) => {\n const colors = [\n \"#FF5733\",\n \"#33FF57\",\n \"#3357FF\",\n \"#FF33F6\",\n \"#F6FF33\",\n \"#33FFF6\",\n \"#FF8333\",\n \"#8333FF\",\n \"#3FF833\",\n \"#F833FF\",\n ];\n\n const index = (Number(networkPlatform) - 1) % colors.length;\n\n return colors[index];\n};\n\nconst Container = styled.div`\n min-height: 420px;\n margin-top: 16px;\n margin-bottom: 16px;\n`;\n\nconst RecentTradeStoreChart = () => {\n const { recentTradeStoreData, isLoading, hasError } =\n useRecentTradeStoreData();\n\n if (hasError) {\n return (\n \n {hasError}\n \n );\n }\n\n const dates = useMemo(\n () =>\n recentTradeStoreData?.map((store) => store.created.replace(/\\.\\d+/, \"\")),\n [recentTradeStoreData],\n );\n\n if (isLoading) {\n return ;\n }\n\n const groupedData = groupByNetworkPlatform(recentTradeStoreData);\n\n return (\n <>\n \n {\n const dataByDate = dates.map((date) => {\n const record = groupedData[networkPlatform].find(\n (item) => item.created.replace(/\\.\\d+/, \"\") === date,\n );\n return record ? record.waitTimeInMiliseconds : null;\n });\n return {\n label: findNetworkById(Number(networkPlatform)),\n data: dataByDate,\n fill: false,\n backgroundColor: getColorForNetworkPlatform(networkPlatform),\n showLine: false,\n };\n }),\n }}\n options={{\n plugins: {\n legend: {\n display: true,\n },\n },\n maintainAspectRatio: false,\n scales: {\n x: {\n type: \"time\",\n time: {\n unit: \"hour\",\n displayFormats: {\n hour: \"dd/MM HH:MM\",\n },\n },\n grid: {\n color: \"#ffffff4d\",\n },\n ticks: {\n color: \"#ffffff99\",\n },\n },\n y: {\n grid: {\n color: \"#ffffff4d\",\n },\n ticks: {\n color: \"#ffffff99\",\n },\n },\n },\n }}\n />\n \n \n );\n};\n\nexport default RecentTradeStoreChart;\n","import { useContext, useEffect, useMemo } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { DataContext } from \"../context/Data\";\nimport type { RecentTradeStoreDataResponse } from \"../types/Api\";\n\nconst useRecentTradeStoreDataHook = () => {\n const { fromDate, toDate, chosenArbitrage } = useContext(DataContext);\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n from: fromDate,\n to: toDate,\n arbitrageId: chosenArbitrage?.id?.toString() || \"\",\n }),\n [fromDate, toDate, chosenArbitrage],\n );\n\n const {\n items: recentTradeStoreData,\n isLoading,\n hasError,\n fetchItems: fetchDataStore,\n } = useBaseGetHook(\n `recentTradeStore/data?${params.toString()}`,\n );\n\n useEffect(() => {\n fetchDataStore();\n }, [fromDate, toDate, chosenArbitrage]);\n\n return {\n recentTradeStoreData,\n isLoading,\n hasError,\n };\n};\n\nexport default useRecentTradeStoreDataHook;\n","import LogsTable from \"./LogsTable\";\nimport RecentTradeStoreChart from \"./RecentTradeStoreChart\";\n\nconst LogsViewer = () => (\n <>\n \n \n \n);\n\nexport default LogsViewer;\n","import { uniq } from \"lodash\";\nimport { Card } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\n\nimport { AllowanceResponse } from \"../../types/Api\";\nimport { findExchangeById, findNetworkById } from \"../../utils\";\nimport { StyledTd, TableContainer } from \"../misc/TableContainer\";\n\nconst StyledCard = styled(Card)`\n overflow: hidden;\n &:after {\n content: \"\";\n position: absolute;\n margin: -8px;\n width: 16px;\n height: 16px;\n transform: rotate(45deg);\n }\n`;\n\nconst InfoWrapper = styled.div`\n min-width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-evenly;\n text-align: center;\n margin-bottom: 2px;\n`;\n\nconst TableWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n flex-direction: column;\n overflow-x: scroll;\n`;\n\ntype AllowanceItemProps = {\n item: AllowanceResponse;\n};\n\nexport const AllowanceItem = ({ item }: AllowanceItemProps) => (\n \n \n \n \n {item.arbitrageName}\n \n \n \n \n {uniq(item.assets).map((asset, index) => (\n \n {asset.assetName}\n {findExchangeById(asset.exchangeType)?.name}\n {findNetworkById(asset.networkPlatform)}\n {asset.allowanceDollarValue.toFixed(0)}$\n {asset.allowanceAmount.toFixed(0)}\n {asset.routerAddress}\n \n ))}\n \n \n \n \n);\n","import { Alert } from \"react-bootstrap\";\n\nimport { AllowanceItem } from \"./AllowanceItem\";\nimport { useArbitrageAllowanceHook } from \"../../hooks\";\nimport Loader from \"../misc/Loader\";\n\nexport const AllowanceResponse = () => {\n const { items, isLoading, hasError } = useArbitrageAllowanceHook();\n\n if (hasError) {\n return (\n \n {hasError}\n \n );\n }\n\n if (isLoading) {\n return ;\n }\n\n return (\n <>\n {items\n .filter((item) => item.assets.length)\n .map((item, index) => (\n \n ))}\n \n );\n};\n","import { useEffect } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { AllowanceResponse } from \"../types/Api\";\n\nconst useArbitrageAllowanceHook = () => {\n const { items, isLoading, hasError, fetchItems } = useBaseGetHook<\n AllowanceResponse[]\n >(\"/arbitrage/allowance \");\n\n useEffect(() => {\n fetchItems();\n }, []);\n\n return { items, isLoading, hasError };\n};\n\nexport default useArbitrageAllowanceHook;\n","import { formatDistance } from \"date-fns\";\nimport { useEffect, useMemo } from \"react\";\nimport { Alert } from \"react-bootstrap\";\n\nimport { useGatewayInfo } from \"../../hooks\";\nimport { WithdrawalDepositGatewayScanResponse } from \"../../types/Api\";\nimport { findNetworkById, getTimezoneOffset } from \"../../utils\";\nimport Countdown from \"../misc/Countdown\";\nimport { StyledTd, TableContainer } from \"../misc/TableContainer\";\n\nconst getStatusIndicator = (status: boolean, updatedTime: string) => {\n const isRecent =\n new Date(updatedTime).getTime() - getTimezoneOffset() + 180000 < Date.now();\n return status ? (isRecent ? \"⚠️\" : \"✅\") : \"❌\";\n};\n\nconst formatDateDistance = (date: string) =>\n formatDistance(Number(new Date(date)) - getTimezoneOffset(), new Date()) +\n \" ago\";\n\nconst GatewayRow = ({\n gateway,\n}: {\n gateway: WithdrawalDepositGatewayScanResponse;\n}) => {\n const depositStatus = getStatusIndicator(\n gateway?.depositStatus,\n gateway.updated,\n );\n const withdrawStatus = getStatusIndicator(\n gateway?.withdrawStatus,\n gateway.updated,\n );\n const quantityDisplay = gateway.asset.isStableCoin\n ? gateway.availableQuantity.toFixed(0)\n : gateway.availableQuantity.toFixed(gateway.asset.textDecimals);\n\n return (\n \n {gateway.name}\n {gateway.asset.name}\n {findNetworkById(gateway.networkPlatform)}\n {gateway.exchangeTypeAbbreviation}\n {quantityDisplay}\n \n {depositStatus}  \n {gateway.transactionInCountProcessedInLastHour}\n \n \n {withdrawStatus}  \n {gateway.transactionOutCountProcessedInLastHour}\n \n \n {formatDateDistance(gateway.availableQuantityUpdated)}\n \n {formatDateDistance(gateway.updated)}\n \n {gateway.link && (\n \n Link\n \n )}\n \n \n );\n};\n\nconst GatewaysStatus = () => {\n const {\n fetchGatewayDetails,\n gatewayDetails,\n isLoading,\n hasError,\n countdown,\n } = useGatewayInfo();\n\n useEffect(() => {\n fetchGatewayDetails();\n }, []);\n\n const sortedGatewayDetails = useMemo(\n () =>\n gatewayDetails?.sort((a, b) =>\n a.asset.name.localeCompare(b.asset.name),\n ) || [],\n [gatewayDetails],\n );\n\n return (\n <>\n \n\n {hasError ? (\n {hasError}\n ) : (\n \n {sortedGatewayDetails.map((gateway, index) => (\n \n ))}\n \n )}\n \n );\n};\n\nexport default GatewaysStatus;\n","import { AllowanceResponse } from \"./AllowanceResponse\";\nimport GatewaysStatus from \"./GatewaysStatus\";\n\nconst OtherViewer = () => {\n return (\n <>\n \n \n \n );\n};\n\nexport default OtherViewer;\n","import { Alert } from \"react-bootstrap\";\n\nimport { usePerformanceStore } from \"../../hooks\";\nimport Countdown from \"../misc/Countdown\";\nimport { StyledTd, TableContainer } from \"../misc/TableContainer\";\nimport { RefreshIcon } from \"../RefreshIcon\";\n\nconst PriceStoreViewer = () => {\n const {\n performanceStore,\n hasError,\n isLoading,\n countdown,\n fetchPerformanceStore,\n } = usePerformanceStore();\n\n const tradeCountSum = performanceStore.reduce(\n (accumulator, currentValue) => accumulator + currentValue.tradeCount,\n 0,\n );\n\n const volumeSum = performanceStore.reduce(\n (accumulator, currentValue) => accumulator + (currentValue.volume || 0),\n 0,\n );\n\n const profitSum = performanceStore.reduce(\n (accumulator, currentValue) => accumulator + currentValue.profitInDollars,\n 0,\n );\n\n return (\n <>\n \n\n {hasError ? (\n {hasError}\n ) : (\n <>\n \n Name \n \n ,\n \"Trades\",\n \"Volume\",\n \"+ / - (+%)\",\n \"Fail\",\n \"Profit $\",\n \"Ø profit / trade\",\n ].filter((value) => value)}\n isEmpty={!performanceStore.length}\n isLoading={isLoading}\n >\n {performanceStore.map((performanceInfo) => (\n \n {performanceInfo.arbitrageName}\n {performanceInfo.tradeCount}\n {performanceInfo.volume}\n \n \n {performanceInfo.tradeCount -\n performanceInfo.negativeTradeCount}\n \n  / \n \n {performanceInfo.negativeTradeCount}\n \n  \n \n (\n {(\n (100 *\n (performanceInfo.tradeCount -\n performanceInfo.negativeTradeCount)) /\n performanceInfo.tradeCount\n ).toFixed(2)}\n %)\n \n \n {performanceInfo.failedTradeCount}\n \n {performanceInfo.profitInDollars.toFixed(2)}\n \n \n {performanceInfo.averageProfitInDollarsPerTrade.toFixed(2)}\n \n \n ))}\n {performanceStore.length ? (\n \n Total\n {tradeCountSum}\n {volumeSum.toFixed(2)}\n \n \n {profitSum.toFixed(2)}\n {(profitSum / tradeCountSum).toFixed(2)}\n \n ) : null}\n \n \n )}\n \n );\n};\n\nexport default PriceStoreViewer;\n","import { useContext, useEffect, useMemo } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { DataContext } from \"../context/Data\";\nimport { ArbitragePerformanceResponse } from \"../types/Api\";\n\nconst usePerformanceStore = () => {\n const { fromDate, toDate } = useContext(DataContext);\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n from: fromDate,\n to: toDate,\n }),\n [fromDate, toDate],\n );\n\n const {\n items: performanceStore,\n isLoading,\n hasError,\n fetchItems: fetchPerformanceStore,\n countdown,\n } = useBaseGetHook(\n `arbitrage/performance?${params.toString()}`,\n undefined,\n 5,\n );\n\n useEffect(() => {\n fetchPerformanceStore();\n }, [fromDate, toDate]);\n\n return {\n performanceStore,\n isLoading,\n hasError,\n countdown,\n fetchPerformanceStore,\n };\n};\n\nexport default usePerformanceStore;\n","import { Alert } from \"react-bootstrap\";\n\nimport { LOCAL_STORAGE_PAGINATION } from \"../../constants\";\nimport { useTimeline } from \"../../hooks\";\nimport {\n findNotificationTypeNameById,\n formatDateTime,\n isMobile,\n} from \"../../utils\";\nimport Countdown from \"../misc/Countdown\";\nimport { TableContainer } from \"../misc/TableContainer\";\n\nconst TimelineViewer = () => {\n const {\n timelineData,\n isLoading,\n hasError,\n countdown,\n pageNumber,\n setPageNumber,\n } = useTimeline();\n\n return (\n <>\n \n\n {hasError ? (\n {hasError}\n ) : (\n \n {timelineData?.items?.map((timeline, index) => (\n \n {formatDateTime(timeline.created!)}\n {!isMobile() && (\n {findNotificationTypeNameById(timeline.type)}\n )}\n {timeline.text}\n \n ))}\n \n )}\n \n );\n};\n\nexport default TimelineViewer;\n","import { useContext, useEffect, useMemo } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { LOCAL_STORAGE_PAGINATION } from \"../constants\";\nimport { DataContext } from \"../context/Data\";\nimport { PaginationResponseOfTimelineResponse } from \"../types/Api\";\n\nimport { usePagination } from \".\";\n\nconst useTimelineHook = () => {\n const { fromDate, toDate } = useContext(DataContext);\n\n const { pageNumber, setPageNumber } = usePagination();\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n from: fromDate,\n to: toDate,\n pageSize:\n localStorage.getItem(LOCAL_STORAGE_PAGINATION.timeline) || \"1000\",\n pageNumber: pageNumber.toString(),\n }),\n [fromDate, toDate, pageNumber],\n );\n\n const {\n items: timelineData,\n isLoading,\n hasError,\n fetchItems: fetchTimelineData,\n countdown,\n } = useBaseGetHook(\n `timeline?${params.toString()}`,\n undefined,\n 5,\n false,\n );\n\n useEffect(() => {\n fetchTimelineData();\n }, [fromDate, toDate, pageNumber]);\n\n return {\n timelineData,\n isLoading,\n hasError,\n countdown,\n pageNumber,\n setPageNumber,\n };\n};\n\nexport default useTimelineHook;\n","import { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nconst Table = styled.table`\n min-width: 50%;\n border-collapse: collapse;\n * {\n border-width: 1px;\n }\n`;\n\nconst Th = styled.th`\n padding: 5px;\n`;\n\nconst Td = styled.td`\n padding: 5px;\n`;\n\ninterface DataTableProps {\n json: string;\n}\n\nexport const DataTable = ({ json }: DataTableProps) => {\n const [data, setData] = useState([]);\n const [headers, setHeaders] = useState([]);\n\n useEffect(() => {\n try {\n const parsedData = JSON.parse(json);\n\n if (!Array.isArray(parsedData)) {\n throw new Error(\"JSON data is not an array.\");\n }\n\n // @ts-expect-error\n setData(parsedData);\n\n // Extract unique keys from all objects for table headers\n const uniqueKeys = new Set();\n parsedData.forEach((item) => {\n Object.keys(item).forEach((key) => uniqueKeys.add(key));\n });\n // @ts-expect-error\n setHeaders(Array.from(uniqueKeys));\n } catch (error) {\n setData([]);\n setHeaders([]);\n }\n }, [json]);\n\n if (data.length === 0) {\n return

No data available or invalid JSON.

;\n }\n\n return (\n \n \n \n {headers.map((header, index) => (\n \n ))}\n \n \n \n {data.map((item, rowIndex) => (\n \n {headers.map((header, cellIndex) => (\n \n ))}\n \n ))}\n \n
{header}
{item[header]}
\n );\n};\n","import { Modal } from \"react-bootstrap\";\n\nimport { DataTable } from \"./DataTable\";\nimport {\n TradeAdditionalDataTypeEnum,\n TradeItemTransactionAdditionalDataResponse,\n} from \"../../types/Api\";\nimport { findTradeAdditionalDataTypeById } from \"../../utils\";\n\ninterface DataModalProps {\n data: TradeItemTransactionAdditionalDataResponse[];\n showDataModal: boolean;\n setShowDataModal: React.Dispatch>;\n}\n\nexport const DataModal = ({\n data,\n showDataModal,\n setShowDataModal,\n}: DataModalProps) => (\n setShowDataModal(false)}>\n \n \n {data.map((item, index) => (\n
\n {findTradeAdditionalDataTypeById(item.type)}\n {item.type !== TradeAdditionalDataTypeEnum.OrderBookSnapshot && (\n
{JSON.stringify(JSON.parse(item.data), undefined, 2)}
\n )}\n\n {item.type === TradeAdditionalDataTypeEnum.OrderBookSnapshot && (\n \n )}\n {index + 1 < data.length &&
}\n
\n ))}\n
\n
\n);\n","import { useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { TradeItemTransactionResponse } from \"../../types/Api\";\nimport { findOrderSideById } from \"../../utils\";\nimport { DataModal } from \"../misc/DataModal\";\nimport { LinkMaybeModal } from \"../misc/LinkMaybeModal\";\nimport { LinksModal } from \"../misc/LinksModal\";\nimport { StyledTd } from \"../misc/TableContainer\";\n\ntype TransactionItemProps = {\n transaction: TradeItemTransactionResponse;\n};\n\nconst LinkWrapper = styled.div`\n color: var(--bs-success);\n text-decoration: underline;\n cursor: pointer;\n\n &:hover {\n color: #009670;\n }\n`;\n\nexport const TransactionItem = ({ transaction }: TransactionItemProps) => {\n const [showLinksModal, setShowLinksModal] = useState(false);\n const [showDataModal, setShowDataModal] = useState(false);\n\n return (\n <>\n \n \n \n {transaction.exchange.abbreviation}: {transaction.wallet.name}\n \n \n {findOrderSideById(transaction.orderSide)}\n \n setShowDataModal(true)}>\n {transaction.assetPair.amountAsset.name}\n {transaction.assetPair.isEqualized ? \"⌿\" : \"/\"}\n {transaction.assetPair.priceAsset.name}\n \n \n \n {transaction.filled}/{transaction.amount}\n \n {transaction.status}%\n {transaction.averagePrice}\n {transaction.expectedPrice}\n {transaction.realPrice}\n {transaction.lastPrice || \"-\"}\n \n \n \n \n );\n};\n","import { Badge, Card } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\n\nimport { TransactionItem } from \"./TransactionItem\";\nimport { DOLLAR_DECIMALS } from \"../../constants\";\nimport { useWindowSize } from \"../../hooks\";\nimport {\n TradeDirectionEnum,\n TradeEvaluationEnum,\n TradeItemResponse,\n} from \"../../types/Api\";\nimport { formatDateTime } from \"../../utils\";\nimport { TableContainer } from \"../misc/TableContainer\";\n\nconst getEvaluationColor = (evaluation: TradeEvaluationEnum) => {\n switch (evaluation) {\n case TradeEvaluationEnum.Bad:\n return \"--bs-danger\";\n case TradeEvaluationEnum.Good:\n return \"--bs-warning\";\n case TradeEvaluationEnum.Great:\n return \"--bs-success\";\n }\n};\n\nconst StyledCard = styled(Card)<{ evaluation: TradeEvaluationEnum }>`\n overflow: hidden;\n &:after {\n content: \"\";\n position: absolute;\n margin: -8px;\n width: 16px;\n height: 16px;\n transform: rotate(45deg);\n background-color: var(${(props) => getEvaluationColor(props.evaluation)});\n }\n`;\n\nconst InfoWrapper = styled.div<{ $windowWidth: number }>`\n min-width: ${({ $windowWidth }) =>\n ($windowWidth | 0) > 920 ? \"250px\" : \"100%\"};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-evenly;\n text-align: center;\n margin-bottom: 2px;\n`;\n\nconst TableWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n flex-direction: column;\n overflow-x: scroll;\n`;\n\ntype TradeItemProps = {\n trade: TradeItemResponse;\n};\n\nexport const TradeItem = ({ trade }: TradeItemProps) => {\n const { width: windowWidth } = useWindowSize();\n\n return (\n \n 920 ? \"\" : \"flex-wrap\"\n }`}\n >\n \n {formatDateTime(trade.created)}\n \n  \n {trade.arbitrageName} \n \n
\n  \n \n {trade.tradeDirection === TradeDirectionEnum.Straight\n ? \"➡️\"\n : \"⬅️\"}{\" \"}\n \n  \n \n {trade.sourceExchange}\n \n  \n \n {trade.volume}$\n \n  \n \n {trade.configuredProfitInPercent}%\n \n {trade.isMultiplierUsed && (\n <>\n  \n \n 🔥\n \n \n )}\n {!trade.isQuantityConsistent && (\n <>\n  \n \n ⚠️\n \n \n )}\n
\n
\n \n {trade.realProfitInDollars.toFixed(DOLLAR_DECIMALS)}$\n \n  \n \n {trade.expectedProfitInPercent}%\n \n  \n \n {trade.realProfitInPercent}%\n \n  \n
\n
\n \n \n {trade.transactions.map((transaction) => (\n \n ))}\n \n \n \n \n );\n};\n","import { useEffect, useState } from \"react\";\n\nconst useWindowSize = () => {\n const [windowSize, setWindowSize] = useState<{\n width?: number;\n height?: number;\n }>({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n\n useEffect(() => {\n const handleResize = () => {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n window.addEventListener(\"resize\", handleResize);\n\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n\n return windowSize;\n};\n\nexport default useWindowSize;\n","import { Card, Col, Row } from \"react-bootstrap\";\n\nimport { DOLLAR_DECIMALS } from \"../../constants\";\nimport type { TradeResponse } from \"../../types/Api\";\n\ntype TradesStatisticsProps = {\n tradeData: TradeResponse;\n};\n\nconst TradesStatistics = ({ tradeData }: TradesStatisticsProps) => (\n \n \n \n Number of trades\n \n

{tradeData.tradeCount}

\n
\n
\n \n \n \n Volume\n \n

\n {tradeData.volume.toFixed(DOLLAR_DECIMALS)}$\n

\n
\n
\n \n \n \n Straight / Reverse\n \n

\n {tradeData.straightTradeCount} / {tradeData.reverseTradeCount}\n

\n
\n
\n \n \n \n Ø profit / trade\n \n

{tradeData.averageTradeProfit}$

\n
\n
\n \n
\n);\n\nexport default TradesStatistics;\n","import { Alert } from \"react-bootstrap\";\n\nimport { TradeItem } from \"./TradeItem\";\nimport TradesStatistics from \"./TradesStatistics\";\nimport { LOCAL_STORAGE_PAGINATION } from \"../../constants\";\nimport { useTradeData } from \"../../hooks\";\nimport Countdown from \"../misc/Countdown\";\nimport { Pagination } from \"../misc/Pagination\";\n\nconst TradesViewer = () => {\n const {\n tradeData,\n isLoading,\n hasError,\n pageNumber,\n setPageNumber,\n countdown,\n } = useTradeData();\n\n return (\n <>\n \n {hasError ? (\n {hasError}\n ) : (\n <>\n {tradeData?.pagination?.items.length ? (\n \n ) : null}\n {tradeData?.pagination?.items.map((trade, index) => (\n \n ))}\n {tradeData?.pagination?.items.length ? (\n \n ) : null}\n \n )}\n \n );\n};\n\nexport default TradesViewer;\n","import { useContext, useEffect, useMemo } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { LOCAL_STORAGE_PAGINATION } from \"../constants\";\nimport { DataContext } from \"../context/Data\";\nimport { usePagination } from \"../hooks\";\nimport type { TradeResponse } from \"../types/Api\";\n\nconst useTradeData = () => {\n const { fromDate, toDate, chosenWallet, chosenArbitrage } =\n useContext(DataContext);\n\n const { pageNumber, setPageNumber } = usePagination();\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n from: fromDate,\n to: toDate,\n walletId: chosenWallet?.id.toString() || \"\",\n arbitrageId: chosenArbitrage?.id?.toString() || \"\",\n pageSize:\n localStorage.getItem(LOCAL_STORAGE_PAGINATION.trades) || \"1000\",\n pageNumber: pageNumber.toString(),\n }),\n [fromDate, toDate, chosenWallet, chosenArbitrage, pageNumber],\n );\n\n const {\n items: tradeData,\n isLoading,\n hasError,\n fetchItems: fetchTrades,\n countdown,\n } = useBaseGetHook(\n `trade?${params.toString()}`,\n undefined,\n 10,\n );\n\n useEffect(() => {\n fetchTrades();\n }, [fromDate, toDate, chosenWallet, chosenArbitrage, pageNumber]);\n\n return {\n tradeData,\n isLoading,\n hasError,\n pageNumber,\n setPageNumber,\n countdown,\n };\n};\n\nexport default useTradeData;\n","import { Button } from \"react-bootstrap\";\nimport { ArrowLeftRight } from \"react-bootstrap-icons\";\nimport { styled } from \"styled-components\";\nconst SwapButtonWrapper = styled(Button)`\n width: 40px;\n`;\n\nexport const SwapButton = ({\n onClick,\n isDisabled,\n}: {\n onClick: () => void;\n isDisabled?: boolean;\n}) => (\n \n \n \n);\n","import uniqBy from \"lodash/uniqBy\";\nimport uniqWith from \"lodash/uniqWith\";\nimport { useEffect, useState } from \"react\";\nimport {\n Alert,\n Button,\n Card,\n Col,\n Form,\n FormControl,\n InputGroup,\n Row,\n Spinner,\n} from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\n\nimport { useGatewayInfo, useTransfer, useWalletBalance } from \"../../hooks\";\nimport type {\n AssetResponse,\n WalletResponse,\n WithdrawalDepositGatewayDetailResponse,\n} from \"../../types/Api\";\nimport { findNetworkById, getTimezoneOffset, parseAmount } from \"../../utils\";\nimport Loader from \"../misc/Loader\";\nimport { SwapButton } from \"../misc/SwapButton\";\n\nconst StyledInputGroupText = styled(InputGroup.Text)`\n width: 5rem;\n`;\n\nconst BottomButton = styled(Button)`\n width: 140px;\n`;\n\nenum Setter {\n WalletA,\n WalletB,\n AssetA,\n AmountA,\n NetworkA,\n}\n\nconst getGatewayLabel = (\n gateways: WithdrawalDepositGatewayDetailResponse[],\n gateway: WithdrawalDepositGatewayDetailResponse,\n withdrawWallet: WalletResponse,\n depositWallet: WalletResponse,\n asset: AssetDirected,\n) => {\n if (!gateway || !withdrawWallet || !depositWallet) return \"\";\n\n const networkName = findNetworkById(gateway.networkPlatformId);\n\n const statusToSymbol = (\n status?: boolean | null,\n updatedTime?: string | null,\n ) => {\n const isRecent =\n new Date(updatedTime || 0).getTime() - getTimezoneOffset() + 180000 <\n Date.now();\n if (!status) return \"\\u{1F534}\";\n return isRecent ? \"\\u{1F7E0}\" : \"\\u{1F7E2}\";\n };\n\n const withdraw = gateways.find(\n (gt) =>\n asset.sourceAsset.id === gt.asset.id &&\n withdrawWallet.exchangeType === gt.exchangeId &&\n gateway.networkPlatformId === gt.networkPlatformId,\n );\n\n const withdrawStatusSymbol = statusToSymbol(\n withdraw?.withdrawalStatus,\n withdraw?.updated,\n );\n\n const deposit = gateways.find(\n (gt) =>\n asset.destinationAsset?.id === gt.asset.id &&\n depositWallet.exchangeType === gt.exchangeId &&\n gateway.networkPlatformId === gt.networkPlatformId,\n );\n\n const depositStatusSymbol = statusToSymbol(\n deposit?.depositStatus,\n deposit?.updated,\n );\n\n return `${networkName} \\u{2B06}${withdrawStatusSymbol} => \\u{2B07}${depositStatusSymbol} ${gateway.fee} ${gateway.feeAsset.name}`;\n};\n\ntype AssetDirected = {\n sourceAsset: AssetResponse;\n destinationAsset: AssetResponse | null;\n};\n\nconst TransferCard = () => {\n const {\n transfer,\n isLoading: transferIsLoading,\n isLoadingDone: transferIsDone,\n hasError: transferHasError,\n fetchTransferWhitelist,\n transferWhitelist,\n transferWhitelistIsLoading,\n transferWhitelistHasError,\n } = useTransfer();\n\n const {\n walletBalances,\n fetchWalletBalances,\n isLoading: walletBalancesIsLoading,\n } = useWalletBalance();\n\n const {\n fetchGatewayStatus,\n gatewayStatus,\n gatewayStatusIsLoading,\n gatewayStatusHasError,\n } = useGatewayInfo();\n\n const [walletA, setWalletA] = useState();\n const [walletB, setWalletB] = useState();\n const [assetA, setAssetA] = useState();\n const [amountA, setAmountA] = useState(\"0\");\n const [networkA, setNetworkA] =\n useState();\n\n useEffect(() => {\n fetchTransferWhitelist();\n fetchGatewayStatus();\n }, []);\n\n useEffect(() => {\n if (walletA && walletB && assetA) {\n const networks = getNetwork(walletA, walletB, assetA);\n\n if (networks.length) {\n setNetworkA(networks[0]);\n } else {\n setAssetA(undefined);\n setAmountA(\"\");\n setNetworkA(undefined);\n }\n }\n }, [walletA, walletB, assetA]);\n\n useEffect(() => {\n const balance = walletBalances.find(\n (wallet) => wallet.asset.id === assetA?.sourceAsset?.id,\n );\n if (balance) {\n setAmountA(balance.balance.toString());\n }\n }, [walletBalances]);\n\n if (gatewayStatusIsLoading || transferWhitelistIsLoading) {\n return ;\n }\n\n if (\n transferWhitelistHasError ||\n gatewayStatusHasError ||\n !transferWhitelist ||\n !gatewayStatus\n ) {\n return (\n \n {transferWhitelistHasError || gatewayStatusHasError}\n \n );\n }\n\n const getWhitelistedTransfers = (\n walletSource: WalletResponse,\n walletDestination: WalletResponse,\n ) =>\n uniqWith(\n transferWhitelist.filter(\n (transfer) =>\n transfer.destinationWallet.id === walletDestination?.id &&\n transfer.sourceWallet.id === walletSource?.id,\n ),\n (a, b) =>\n a.destinationAsset.id === b.destinationAsset.id &&\n a.sourceAsset.id === b.sourceAsset.id,\n );\n\n const getNetwork = (\n sourceWallet: WalletResponse,\n destinationWallet: WalletResponse,\n asset: AssetDirected,\n ) => {\n const whitelistedGateways = [\n ...uniqBy(\n transferWhitelist\n .filter(\n (transfer) =>\n transfer.sourceWallet.id === sourceWallet?.id &&\n transfer.destinationWallet.id === destinationWallet?.id &&\n transfer.sourceAsset.id === asset?.sourceAsset.id &&\n transfer.destinationAsset.id === asset?.destinationAsset?.id,\n )\n .map((transfer) => transfer.networkPlatform),\n \"id\",\n ),\n ];\n\n const gateways = gatewayStatus.filter(\n (gateway) =>\n gateway.asset.id === asset.sourceAsset.id &&\n gateway.exchangeId === sourceWallet.exchangeType,\n );\n\n return whitelistedGateways\n .map((wg) => gateways.find((gt) => gt.networkPlatformId === wg.id))\n .filter((gt) => gt)\n .sort(\n (a, b) => (a?.fee || 0) - (b?.fee || 0),\n ) as WithdrawalDepositGatewayDetailResponse[];\n };\n\n const reset = (keepStates: Setter[] = []) => {\n if (!keepStates.includes(Setter.WalletA)) setWalletA(undefined);\n if (!keepStates.includes(Setter.WalletB)) setWalletB(undefined);\n if (!keepStates.includes(Setter.AssetA)) setAssetA(undefined);\n if (!keepStates.includes(Setter.AmountA)) setAmountA(\"0\");\n if (!keepStates.includes(Setter.NetworkA)) setNetworkA(undefined);\n };\n\n const performWithdraw = () => {\n if (!walletA || !walletB || !assetA || !networkA) return;\n\n const withdrawal = {\n sourceWalletId: walletA.id,\n destinationWalletId: walletB.id,\n sourceAssetId: assetA.sourceAsset.id,\n destinationAssetId: assetA?.destinationAsset?.id || null,\n amount: parseAmount(amountA),\n networkPlatformId: networkA.networkPlatformId,\n };\n\n transfer({ withdrawals: [withdrawal] });\n };\n\n const handleWalletChange = (selectedWallet: WalletResponse) => {\n const potentialWalletBs = uniqBy(\n transferWhitelist\n .filter((transfer) => transfer.sourceWallet.id === selectedWallet.id)\n .map((transfer) => transfer.destinationWallet),\n \"id\",\n );\n\n const newWalletB = potentialWalletBs[0];\n\n const transferAssets = getWhitelistedTransfers(selectedWallet, newWalletB);\n\n const isAssetValid = transferAssets.some(\n (transfer) => assetA?.sourceAsset.id === transfer.sourceAsset.id,\n );\n\n if (isAssetValid) {\n reset([Setter.WalletA, Setter.WalletB, Setter.AssetA]);\n } else {\n reset([Setter.WalletA, Setter.WalletB]);\n }\n\n setWalletA(selectedWallet);\n setWalletB(newWalletB);\n };\n\n const exchangeTransferParams = () => {\n if (walletB) setWalletA({ ...walletB });\n if (walletA) setWalletB({ ...walletA });\n };\n\n const isSwappable =\n walletA &&\n walletB &&\n !!getWhitelistedTransfers(walletA, walletB).length &&\n !!getWhitelistedTransfers(walletB, walletA).length;\n\n return (\n <>\n \n \n \n Withdraw\n \n \n Wallet\n {\n const selectedWallet = transferWhitelist\n .map((transfer) => transfer.sourceWallet)\n .find(\n (wallet) => wallet.id.toString() === e.target.value,\n );\n if (selectedWallet) {\n handleWalletChange(selectedWallet);\n }\n }}\n value={walletA?.id || \"\"}\n className=\"text-start\"\n >\n \n {uniqBy(\n transferWhitelist.map((transfer) => transfer.sourceWallet),\n \"id\",\n ).map((wallet) => (\n \n ))}\n \n \n \n \n Asset\n {\n if (!walletA || !walletB) {\n return;\n }\n\n const selectedTransfer = getWhitelistedTransfers(\n walletA,\n walletB,\n ).find(\n (transfer) =>\n transfer.sourceAsset.id.toString() === e.target.value,\n );\n\n if (selectedTransfer) {\n setAssetA({\n sourceAsset: selectedTransfer.sourceAsset,\n destinationAsset: selectedTransfer.destinationAsset,\n });\n setAmountA(\"0\");\n }\n }}\n value={assetA ? assetA.sourceAsset.id : \"\"}\n disabled={!walletA || !walletB}\n className=\"text-start\"\n >\n {\" \"}\n {walletA &&\n walletB &&\n getWhitelistedTransfers(walletA, walletB).map(\n (transfer) => (\n \n {transfer.sourceAsset.name}\n {transfer.sourceAsset.name !==\n transfer.destinationAsset?.name\n ? ` => ${transfer.destinationAsset?.name}`\n : \"\"}\n \n ),\n )}\n \n \n\n \n Amount\n setAmountA(e.target.value.replace(\",\", \".\"))}\n />\n {\n if (walletA?.id) {\n fetchWalletBalances(walletA?.id);\n }\n }}\n disabled={!assetA}\n >\n Max{\" \"}\n {walletBalancesIsLoading && (\n \n )}\n \n \n \n Network\n {\n if (!walletA || !walletB || !assetA) {\n return;\n }\n\n const selectedGateway = getNetwork(\n walletA,\n walletB,\n assetA,\n ).find(\n (gateway) =>\n gateway.networkPlatformId.toString() === e.target.value,\n );\n\n if (selectedGateway) {\n setNetworkA(selectedGateway);\n }\n }}\n value={networkA?.networkPlatformId || \"\"}\n disabled={!walletA || !walletB || !assetA}\n className=\"text-start\"\n >\n {\" \"}\n {walletA &&\n walletB &&\n assetA &&\n getNetwork(walletA, walletB, assetA).map((gateway) => (\n \n {getGatewayLabel(\n gatewayStatus,\n gateway,\n walletA,\n walletB,\n assetA,\n )}\n \n ))}\n \n \n \n \n \n \n \n \n Deposit\n \n \n \n Wallet\n {\n if (!walletA) return;\n\n const selectedWallet = transferWhitelist\n .filter(\n (transfer) => transfer.sourceWallet.id === walletA.id,\n )\n .map((transfer) => transfer.destinationWallet)\n .find(\n (wallet) => wallet.id.toString() === e.target.value,\n );\n\n if (selectedWallet) {\n const isAssetInWhitelist = getWhitelistedTransfers(\n walletA,\n selectedWallet,\n ).some(\n (asset) =>\n assetA?.sourceAsset.id === asset.sourceAsset.id,\n );\n\n reset([\n Setter.WalletA,\n Setter.WalletB,\n ...(isAssetInWhitelist ? [Setter.AssetA] : []),\n ]);\n\n setWalletB(selectedWallet);\n }\n }}\n value={walletB?.id || \"\"}\n disabled={!walletA}\n className=\"text-start\"\n >\n \n {uniqBy(\n transferWhitelist\n .filter(\n (transfer) => transfer.sourceWallet.id === walletA?.id,\n )\n .map((transfer) => transfer.destinationWallet),\n \"id\",\n ).map((wallet) => (\n \n ))}\n \n \n \n \n \n \n \n
\n 0 &&\n amountA.split(\".\").length - 1 <= 1\n )\n }\n onClick={performWithdraw}\n >\n Withdraw{\" \"}\n {transferIsLoading && (\n \n )}\n \n reset()}\n >\n Reset\n \n
\n {transferIsDone && {transferIsDone}}\n {transferHasError && {transferHasError}}\n \n );\n};\n\nexport default TransferCard;\n","import useBaseGetHook from \"./useBaseGetHook\";\nimport useBasePostHook from \"./useBasePostHook\";\nimport type {\n WithdrawalRequests,\n WithdrawalWhitelistResponse,\n} from \"../types/Api\";\n\nconst useTransfer = () => {\n const { postItem, isLoading, isLoadingDone, hasError } =\n useBasePostHook();\n\n const transfer = async (data: WithdrawalRequests) => {\n postItem(data, undefined, `withdrawal`);\n };\n\n const {\n items: transferWhitelist,\n isLoading: transferWhitelistIsLoading,\n hasError: transferWhitelistHasError,\n fetchItems: fetchTransferWhitelist,\n } = useBaseGetHook(\"withdrawal/whitelist\");\n\n return {\n transfer,\n isLoadingDone,\n isLoading,\n hasError,\n fetchTransferWhitelist,\n transferWhitelist,\n transferWhitelistIsLoading,\n transferWhitelistHasError,\n };\n};\n\nexport default useTransfer;\n","import { Alert, Button, Spinner } from \"react-bootstrap\";\n\nimport { DOLLAR_DECIMALS, LOCAL_STORAGE_PAGINATION } from \"../../constants\";\nimport { useTransferList } from \"../../hooks\";\nimport {\n WithdrawalDepositStatusEnum,\n WithdrawalResponse,\n} from \"../../types/Api\";\nimport {\n findNetworkById,\n findWithdrawalDepositStatus,\n formatDateTime,\n} from \"../../utils\";\nimport Countdown from \"../misc/Countdown\";\nimport { StyledTd, TableContainer } from \"../misc/TableContainer\";\n\nconst isDepositCompleted = (transfer: WithdrawalResponse) =>\n transfer.deposit.statusId === WithdrawalDepositStatusEnum.Completed &&\n transfer.statusId === WithdrawalDepositStatusEnum.Completed;\n\nconst TransferTable = () => {\n const {\n transferList,\n isLoading,\n hasError,\n updateTransfer,\n updateId,\n updateIsLoading,\n updateHasError,\n updateIsDone,\n countdown,\n pageNumber,\n setPageNumber,\n } = useTransferList();\n\n return (\n <>\n \n {hasError ? (\n {hasError}\n ) : (\n <>\n \n {transferList?.items?.map((transfer) => (\n \n {formatDateTime(transfer.created)}\n {transfer.createdBy}\n {transfer.asset.name}\n {transfer.amount}\n {transfer.wallet.name}\n {transfer.deposit.walletName}\n \n {findNetworkById(transfer.networkPlatformId)}\n \n \n {transfer.feeInDollars?.toFixed(DOLLAR_DECIMALS)}\n \n \n \n {findWithdrawalDepositStatus(\n Math.min(\n transfer.deposit.statusId ||\n WithdrawalDepositStatusEnum.Processing,\n transfer.statusId ||\n WithdrawalDepositStatusEnum.Processing,\n ),\n )}\n \n \n \n {!isDepositCompleted(transfer) && (\n \n updateTransfer({\n id: transfer.id,\n withdrawalStatusId:\n WithdrawalDepositStatusEnum.Completed,\n depositStatusId:\n WithdrawalDepositStatusEnum.Completed,\n })\n }\n >\n Complete{\" \"}\n {updateId === transfer.id && updateIsLoading && (\n \n )}\n \n )}\n \n \n ))}\n \n\n {updateIsDone && (\n \n Done\n \n )}\n {updateHasError && (\n \n Id {updateId} {updateHasError}\n \n )}\n \n )}\n \n );\n};\n\nexport default TransferTable;\n","import { useEffect, useMemo } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport useBasePutHook from \"./useBasePutHook\";\nimport { LOCAL_STORAGE_PAGINATION } from \"../constants\";\nimport type {\n PaginationResponseOfWithdrawalResponse,\n UpdateWithdrawalRequest,\n} from \"../types/Api\";\n\nimport { usePagination } from \".\";\n\nconst useTransferList = () => {\n const { pageNumber, setPageNumber } = usePagination();\n\n const params = useMemo(\n () =>\n new URLSearchParams({\n pageSize:\n localStorage.getItem(LOCAL_STORAGE_PAGINATION.transfer) || \"20\",\n pageNumber: pageNumber.toString(),\n }),\n [pageNumber],\n );\n\n const {\n items: transferList,\n isLoading,\n hasError,\n fetchItems: fetchTransferList,\n countdown,\n } = useBaseGetHook(\n `withdrawal?${params.toString()}`,\n undefined,\n 3,\n );\n\n useEffect(() => {\n fetchTransferList();\n }, [pageNumber]);\n\n const {\n updateItem,\n id: updateId,\n isLoading: updateIsLoading,\n isLoadingDone: updateIsDone,\n hasError: updateHasError,\n } = useBasePutHook();\n\n const updateTransfer = (data: UpdateWithdrawalRequest) =>\n updateItem(data, data.id, `withdrawal/${data.id}`);\n\n return {\n fetchTransferList,\n transferList,\n isLoading,\n hasError,\n updateTransfer,\n updateId,\n updateIsLoading,\n updateHasError,\n updateIsDone,\n countdown,\n pageNumber,\n setPageNumber,\n };\n};\n\nexport default useTransferList;\n","import TransferCard from \"./TransferCard\";\nimport TransferTable from \"./TransferTable\";\nimport { useCurrentBalances } from \"../../hooks\";\nimport BalanceCurrent from \"../balance/BalanceCurrent\";\n\nconst TransferViewer = () => {\n const { currentBalanceGroups, isLoading, hasError, fetchItems, countdown } =\n useCurrentBalances();\n\n return (\n <>\n \n \n \n \n );\n};\n\nexport default TransferViewer;\n","import { useState } from \"react\";\nimport { Card, Tab, Tabs } from \"react-bootstrap\";\nimport { Route, Routes, useLocation, useNavigate } from \"react-router-dom\";\n\nimport BalanceViewer from \"./balance/BalanceViewer\";\nimport ConfigurationViewer from \"./configuration/ConfigurationViewer\";\nimport ExchangeViewer from \"./exchange/ExchangeViewer\";\nimport LogsViewer from \"./logs/LogsViewer\";\nimport OtherViewer from \"./other/OtherViewer\";\nimport PerformanceViewer from \"./performance/PerformanceViewer\";\nimport TimelineViewer from \"./timeline/TimelineViewer\";\nimport TradesViewer from \"./trades/TradesViewer\";\nimport TransferViewer from \"./transfer/TransferViewer\";\n\nconst TabsNav = () => {\n const navigate = useNavigate();\n const { pathname } = useLocation();\n\n const [key, setKey] = useState(pathname);\n\n return (\n \n \n {\n if (!k) return;\n\n setKey(k);\n navigate(k);\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n \n \n );\n};\n\nexport default TabsNav;\n","import {\n addDays,\n endOfMonth,\n endOfWeek,\n roundToNearestMinutes,\n startOfMonth,\n startOfWeek,\n subDays,\n subHours,\n subMinutes,\n subMonths,\n} from \"date-fns\";\nimport { fromZonedTime } from \"date-fns-tz\";\nimport { useContext, useEffect, useState } from \"react\";\nimport {\n Button,\n ButtonGroup,\n Card,\n Col,\n Dropdown,\n Form,\n InputGroup,\n Row,\n} from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\n\nimport { DataContext } from \"../../context/Data\";\nimport { getIsoDate, getTodayUTC, timeZone } from \"../../utils\";\n\nconst StyledInputGroupText = styled(InputGroup.Text)`\n width: 3.5rem;\n`;\n\nconst StyledButtonGroup = styled(ButtonGroup)`\n display: flex;\n flex-wrap: wrap;\n`;\n\nconst createDateOption = (label: string, from: Date, to?: Date) => ({\n label,\n onClickFromDate: fromZonedTime(from, timeZone),\n onClickToDate: to ? fromZonedTime(to, timeZone) : addDays(getTodayUTC(), 1),\n});\n\nexport const dateOptions = [\n createDateOption(\"Last 10 minutes\", subMinutes(new Date(), 10)),\n createDateOption(\"Last 30 minutes\", subMinutes(new Date(), 30)),\n createDateOption(\"Last hour\", subHours(new Date(), 1)),\n createDateOption(\"Last 3 hours\", subHours(new Date(), 3)),\n createDateOption(\"Last 6 hours\", subHours(new Date(), 6)),\n createDateOption(\"Last 12 hours\", subHours(new Date(), 12)),\n createDateOption(\"Today\", getTodayUTC()),\n createDateOption(\"Yesterday\", subDays(getTodayUTC(), 1), getTodayUTC()),\n createDateOption(\"Last 24 hours\", subHours(new Date(), 24)),\n createDateOption(\"Last 3 days\", subHours(new Date(), 72)),\n createDateOption(\"Last 7 days\", subHours(new Date(), 168)),\n createDateOption(\n \"This week\",\n startOfWeek(getTodayUTC(), { weekStartsOn: 1 }),\n endOfWeek(getTodayUTC(), { weekStartsOn: 1 }),\n ),\n createDateOption(\n \"Previous week\",\n subDays(startOfWeek(getTodayUTC(), { weekStartsOn: 1 }), 7),\n subDays(endOfWeek(getTodayUTC(), { weekStartsOn: 1 }), 7),\n ),\n createDateOption(\n \"This month\",\n startOfMonth(new Date()),\n endOfMonth(new Date()),\n ),\n createDateOption(\n \"Previous month\",\n subMonths(startOfMonth(getTodayUTC()), 1),\n endOfMonth(subMonths(getTodayUTC(), 1)),\n ),\n createDateOption(\"Last month\", subMonths(new Date(), 1)),\n createDateOption(\"All time\", new Date(\"2021-05-06 23:41:54\")),\n];\n\ninterface DropdownWithLabelProps {\n label: string;\n options?: Array<{ label: string; value: any }>;\n onSelect: (value: any) => void;\n selectedValue?: string;\n}\n\nexport const DropdownWithLabel = ({\n label,\n options,\n onSelect,\n selectedValue,\n}: DropdownWithLabelProps) => (\n \n \n {selectedValue || label}\n \n \n {options?.map((option) => (\n onSelect(option.value)}\n >\n {option.label}\n \n ))}\n \n \n);\n\nconst DATETIME_SETTINGS_LABEL = \"Date & Time\";\n\nexport const DataSettings = () => {\n const {\n fromDate,\n setFromDate,\n toDate,\n setToDate,\n wallets,\n chosenWallet,\n setChosenWallet,\n arbitrages,\n chosenArbitrage,\n setChosenArbitrage,\n } = useContext(DataContext);\n\n const [pickerFromDate, setPickerFromDate] = useState(fromDate);\n const [pickerToDate, setPickerToDate] = useState(toDate);\n const [datetimeSettingsLabel, setDatetimeSettingsLabel] = useState(\n DATETIME_SETTINGS_LABEL,\n );\n\n useEffect(() => {\n setPickerFromDate(fromDate);\n setPickerToDate(toDate);\n }, [fromDate, toDate]);\n\n const applyDateSettings = () => {\n setFromDate(pickerFromDate);\n setToDate(pickerToDate);\n setDatetimeSettingsLabel(DATETIME_SETTINGS_LABEL);\n };\n\n const resetDateSettings = () => {\n setFromDate(getIsoDate(new Date()));\n setToDate(getIsoDate(new Date()));\n setChosenWallet(null);\n setChosenArbitrage(null);\n };\n\n return (\n \n \n ({\n label: option.label,\n value: option,\n }))}\n onSelect={(option) => {\n setFromDate(\n getIsoDate(roundToNearestMinutes(option.onClickFromDate)),\n );\n setToDate(getIsoDate(roundToNearestMinutes(option.onClickToDate)));\n setDatetimeSettingsLabel(option.label);\n }}\n />\n\n ({\n label: wallet.name,\n value: wallet,\n }))}\n selectedValue={chosenWallet?.name}\n onSelect={setChosenWallet}\n />\n\n ({\n label: arbitrage.name || \"\",\n value: arbitrage,\n }))}\n selectedValue={chosenArbitrage?.name || \"\"}\n onSelect={setChosenArbitrage}\n />\n \n\n \n \n \n From\n setPickerFromDate(e.target.value)}\n max={getIsoDate(new Date())}\n />\n \n \n \n \n To\n setPickerToDate(e.target.value)}\n />\n \n \n \n \n \n \n \n Reset\n \n \n \n \n );\n};\n","import { Badge, Card } from \"react-bootstrap\";\nimport { ChevronDown, ChevronUp, CircleFill } from \"react-bootstrap-icons\";\nimport { styled } from \"styled-components\";\n\nimport { LOCAL_STORAGE_SETTINGS_COLLAPSED } from \"../../constants\";\nimport {\n useFearAndGreedIndex,\n useGasPrice,\n useInstanceTypeStatus,\n useUserStatus,\n} from \"../../hooks\";\nimport { InstanceTypeStatus } from \"../../types/Api\";\nimport { findInstanceById, findNetworkById } from \"../../utils\";\n\nconst StyledCardHeader = styled(Card.Header)`\n cursor: pointer;\n`;\n\nconst BadgeWrapper = styled.div`\n display: flex;\n gap: 10px;\n cursor: default;\n`;\n\nconst StyledBadge = styled(Badge)`\n display: inline-grid;\n text-align: left;\n`;\n\nconst SizedSpan = styled.span`\n width: 12px;\n display: inline-block;\n`;\n\nconst StyledDot = styled(CircleFill)<{ $color: string }>`\n color: ${(props) => props.$color};\n margin-right: -3px;\n margin-left: 2px;\n width: 8px;\n margin-top: -3px;\n`;\n\nconst getBadgeColor = (classification: string) => {\n switch (classification) {\n case \"Extreme greed\":\n return \"aquamarine\";\n case \"Greed\":\n return \"limeGreen\";\n case \"Fear\":\n return \"red\";\n case \"Extreme fear\":\n return \"salmon\";\n case \"Neutral\":\n default:\n return \"gold\";\n }\n};\n\ninterface InfoBadgesProps {\n collapsed: boolean;\n setCollapsed: (collapse: boolean) => void;\n}\n\nconst InfoBadges = ({ collapsed, setCollapsed }: InfoBadgesProps) => {\n const { instanceTypeInfo } = useInstanceTypeStatus();\n const { gasPrices } = useGasPrice();\n const { userStatuses } = useUserStatus();\n const { fearAndGreedIndex } = useFearAndGreedIndex();\n\n return (\n {\n if (collapsed) {\n localStorage.removeItem(LOCAL_STORAGE_SETTINGS_COLLAPSED);\n } else {\n localStorage.setItem(LOCAL_STORAGE_SETTINGS_COLLAPSED, \"1\");\n }\n setCollapsed(!collapsed);\n }}\n >\n e.stopPropagation()}>\n
\n
\n {userStatuses.map((userStatus) => (\n \n {userStatus.userAbbreviation}\n \n ))}\n
\n
\n \n W {fearAndGreedIndex?.lastWeek?.value}{\" \"}\n \n \n \n Y {fearAndGreedIndex?.yesterday?.value}{\" \"}\n \n \n \n N {fearAndGreedIndex?.now?.value}\n \n \n
\n
\n {gasPrices.map((gasPrice) => (\n \n {findNetworkById(gasPrice.networkPlatform)}\n \n B {gasPrice.roundedBaseFeePerGas}\n \n \n P{\" \"}\n {gasPrice.roundedMaxPriorityFeePerGas}\n \n \n M {gasPrice.roundedMaxFeePerGas}\n \n \n ))}\n
\n
\n {instanceTypeInfo.map((info) => {\n let statusColor;\n\n switch (info.status) {\n case InstanceTypeStatus.Running:\n statusColor = \"success\";\n break;\n case InstanceTypeStatus.Inactive:\n statusColor = \"warning\";\n break;\n case InstanceTypeStatus.Error:\n default:\n statusColor = \"danger\";\n break;\n }\n\n return (\n \n {findInstanceById(info.type)}\n \n );\n })}\n
\n
\n
\n \n {collapsed ? : }\n \n );\n};\n\nexport default InfoBadges;\n","import { useEffect } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { InstanceTypeStatusResponse } from \"../types/Api\";\n\nconst useInstanceTypeStatus = () => {\n const {\n items: instanceTypeInfo,\n isLoading,\n hasError,\n fetchItems: fetchInstanceTypeStatus,\n countdown,\n } = useBaseGetHook(\n `instancetype/status`,\n undefined,\n 5,\n );\n\n useEffect(() => {\n fetchInstanceTypeStatus();\n }, []);\n\n return {\n instanceTypeInfo,\n isLoading,\n hasError,\n countdown,\n };\n};\n\nexport default useInstanceTypeStatus;\n","import { useEffect } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { GasPriceResponse } from \"../types/Api\";\n\nconst useGasPrice = () => {\n const {\n items: gasPrices,\n isLoading,\n hasError,\n fetchItems: fetchGasPrice,\n countdown,\n } = useBaseGetHook(`gasprice`, undefined, 4);\n\n useEffect(() => {\n fetchGasPrice();\n }, []);\n\n return {\n gasPrices,\n isLoading,\n hasError,\n countdown,\n };\n};\n\nexport default useGasPrice;\n","import { useEffect } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { UserStatusResponse } from \"../types/Api\";\n\nconst useUserStatus = () => {\n const {\n items: userStatuses,\n isLoading,\n hasError,\n fetchItems: fetchUserStatus,\n countdown,\n } = useBaseGetHook(`user/status`, undefined, 10);\n\n useEffect(() => {\n fetchUserStatus();\n }, []);\n\n return {\n userStatuses,\n isLoading,\n hasError,\n countdown,\n };\n};\n\nexport default useUserStatus;\n","import { useEffect } from \"react\";\n\nimport useBaseGetHook from \"./useBaseGetHook\";\nimport { FearAndGreedIndexResponse } from \"../types/Api\";\n\nconst useFearAndGreedIndex = () => {\n const {\n items: fearAndGreedIndex,\n isLoading,\n hasError,\n fetchItems: fetchFearAndGreed,\n countdown,\n } = useBaseGetHook(`marketdata/fear-greed`);\n\n useEffect(() => {\n fetchFearAndGreed();\n }, []);\n\n return {\n fearAndGreedIndex,\n isLoading,\n hasError,\n countdown,\n };\n};\n\nexport default useFearAndGreedIndex;\n","import { useState } from \"react\";\nimport { Card } from \"react-bootstrap\";\n\nimport { DataSettings } from \"./DataSettings\";\nimport InfoBadges from \"./InfoBadges\";\nimport { LOCAL_STORAGE_SETTINGS_COLLAPSED } from \"../../constants\";\n\nexport const PageHeader = () => {\n const [collapsed, setCollapsed] = useState(\n !!localStorage.getItem(LOCAL_STORAGE_SETTINGS_COLLAPSED),\n );\n\n return (\n \n \n\n {!collapsed && }\n \n );\n};\n","import { useContext } from \"react\";\nimport { Alert, Container, Spinner } from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\n\nimport TabsNav from \"./TabsNav\";\nimport { DataContext } from \"../context/Data\";\nimport { PageHeader } from \"./settings/PageHeader\";\n\nconst StyledContainer = styled(Container)`\n -webkit-text-size-adjust: 100%;\n`;\n\nconst StyledSpinnerBox = styled.div`\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n`;\n\nconst StyledSpinner = styled(Spinner)`\n width: 80px;\n height: 80px;\n`;\n\nconst Dashboard = () => {\n const { dataIsLoading, dataHasError } = useContext(DataContext);\n\n if (dataIsLoading) {\n return (\n \n \n \n );\n }\n\n if (dataHasError.length) {\n return (\n \n Errors list:\n {dataHasError.map((error) => (\n

{error}

\n ))}\n
\n );\n }\n\n return (\n \n \n \n \n );\n};\n\nexport default Dashboard;\n","import { FormEvent, useContext, useState } from \"react\";\nimport {\n Alert,\n Button,\n Card,\n Form,\n FormControl,\n InputGroup,\n} from \"react-bootstrap\";\nimport { styled } from \"styled-components\";\n\nimport { BACKEND_API_URL, LOCAL_STORAGE_TOKEN } from \"../constants\";\nimport { AuthContext } from \"../context/Auth\";\nimport { useFetch } from \"../hooks\";\nimport type { LoginRequest, LoginResponse } from \"../types/Api\";\n\nconst StyledCard = styled(Card)`\n position: absolute;\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n width: 22rem;\n`;\n\nconst StyledInputGroupText = styled(InputGroup.Text)`\n width: 6rem;\n`;\n\nconst Login = () => {\n const [error, setError] = useState(\"\");\n const [login, setLogin] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n\n const { fetch } = useFetch();\n const { setIsLogged } = useContext(AuthContext);\n\n const onLogin = async (e: FormEvent) => {\n e.preventDefault();\n\n const response = await fetch(`${BACKEND_API_URL}/login`, {\n method: \"POST\",\n body: JSON.stringify({ password, login } as LoginRequest),\n });\n\n if (!response.ok) {\n const error = await response.json();\n // TODO: error\n setError(error?.message || \"Login error\");\n return;\n }\n\n const { token } = (await response.json()) as LoginResponse;\n localStorage.setItem(LOCAL_STORAGE_TOKEN, token);\n setError(\"\");\n setIsLogged(true);\n };\n\n return (\n \n \n
\n \n Email\n setLogin(e.target.value)}\n required\n />\n \n \n \n Password\n \n setPassword(e.target.value)}\n />\n \n
\n \n Login\n \n
\n {error ? {error} : null}\n
\n
\n
\n );\n};\n\nexport default Login;\n","import { useContext } from \"react\";\n\nimport Dashboard from \"./Dashboard\";\nimport Login from \"./Login\";\nimport { AuthContext } from \"../context/Auth\";\nimport { DataProvider } from \"../context/Data\";\n\nconst App = () => {\n const { isLogged } = useContext(AuthContext);\n\n return isLogged ? (\n \n \n \n ) : (\n \n );\n};\n\nexport default App;\n","import {\n Chart as ChartJS,\n LineElement,\n LinearScale,\n PointElement,\n Title,\n registerables,\n} from \"chart.js\";\nimport zoomPlugin from \"chartjs-plugin-zoom\";\nimport { createRoot } from \"react-dom/client\";\nimport { HashRouter } from \"react-router-dom\";\n\nimport \"chartjs-adapter-date-fns\";\nimport \"./public/bootstrap.min.css\";\n\nimport App from \"./components/App\";\nimport { AuthProvider } from \"./context/Auth\";\n\nChartJS.register(\n zoomPlugin,\n LineElement,\n PointElement,\n LinearScale,\n Title,\n ...registerables,\n);\n\nconst Index = () => (\n \n \n \n \n \n);\n\nconst root = createRoot(document.getElementById(\"root\")!);\nroot.render();\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\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk\"] = self[\"webpackChunk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [644,531,869,65,121], () => (__webpack_require__(2704)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","ExchangeTypeEnum","NetworkPlatformEnum","TradeDirectionEnum","InstanceTypeEnum","FeeAssetTypeEnum","InstanceTypeStatus","RoleEnum","SwapTypeEnum","OrderSideEnum","NotificationTypeEnum","TradeEvaluationEnum","TradeAdditionalDataTypeEnum","WithdrawalDepositStatusEnum","timeZone","Intl","DateTimeFormat","resolvedOptions","getIsoDate","date","toISOString","replace","getTodayUTC","datePart","Date","split","getTimezoneOffset","confirmDialog","description","Promise","resolve","window","confirm","getOrderSide","item","assetA","assetB","assetPairs","find","asset","priceAsset","id","amountAsset","Buy","Sell","getAssetPairId","formatDateTime","format","findNetworkById","networkToFindById","Object","keys","values","indexOf","parseAmount","amount","Number","parseFloat","getExchanges","entries","filter","_","word","isNaN","map","number","capitals","toString","abbreviation","length","slice","toUpperCase","name","findExchangeById","exchange","isMobile","matchMedia","matches","floor","num","decimalPlaces","p","Math","pow","Wrapper","styled","div","props","height","StyledSpinner","Spinner","Loader","_jsx","Card","className","children","size","animation","variant","Container","BalanceChart","balance","isLoading","balanceSummaries","Line","data","labels","balances","created","datasets","label","fill","backgroundColor","borderColor","options","plugins","legend","display","maintainAspectRatio","scales","x","type","time","unit","displayFormats","hour","grid","color","ticks","y","BACKEND_API_URL","location","hostname","includes","origin","LOCAL_STORAGE_TOKEN","LOCAL_STORAGE_SETTINGS_COLLAPSED","LOCAL_STORAGE_PAGINATION","useBaseGetHook","pathname","isLoadingFallback","refreshDataTimeout","onFocusOnly","items","setItems","useState","setIsLoading","hasError","setHasError","reset","countdown","setCountdown","stop","useCountdown","seconds","interval","useEffect","setInterval","document","hasFocus","clearInterval","requestIdRef","useRef","async","fetchItems","fetchData","fetch","abortController","useFetch","pathnameFallback","console","error","signal","currentRequestId","current","result","ok","parsedItems","json","message","abort","setId","isLoadingDone","setIsLoadingDone","deleteItem","method","body","JSON","stringify","undefined","response","parsedError","LogLevel","SourceLevel","AuthContext","createContext","isLogged","setIsLogged","user","role","Operator","AuthProvider","setRole","setUser","token","localStorage","getItem","decodedToken","isExpired","useJwt","Provider","value","AbortController","useContext","url","headers","Authorization","status","removeItem","updateItem","formatDataBeforeUpdate","configuration","reduce","acc","key","parsedValue","useConfiguration","configurations","fetchConfigurations","updateIsLoading","updateIsDone","updateHasError","useBasePutHook","updateConfiguration","formattedConfiguration","formattedAssetPairWallets","assetPairWallets","assetPairWallet","dataToUpdate","isPaused","isEnabled","assetPairConfigurations","useAppConfiguration","postItem","useCurrentBalancesHook","currentBalanceGroups","useGatewayInfoHook","gatewayStatus","gatewayStatusIsLoading","gatewayStatusHasError","fetchGatewayStatus","gatewayDetails","fetchGatewayDetails","usePaginationHook","pageNumber","setPageNumber","useWalletBalanceHook","walletBalances","fetchWalletBalances","walletId","useBalanceCheckHook","DataContext","assets","wallets","chosenWallet","setChosenWallet","chosenArbitrage","setChosenArbitrage","fromDate","toDate","setFromDate","setToDate","dataIsLoading","dataHasError","DataProvider","setDataIsLoading","setDataHasError","assetsIsLoading","assetsHasError","fetchAssets","walletsIsLoading","walletsHasError","fetchWallets","useDates","startOfTodayUTC","startOfTomorrowUTC","add","days","params","useMemo","URLSearchParams","from","to","arbitrages","arbitragesIsLoading","arbitragesHasError","fetchArbitrages","some","loading","isEmpty","errorsList","Countdown","_jsxs","StyledFormControl","Form","Control","Pagination","currentPageNumber","totalPages","setValue","setItem","parseInt","PaginationBootstrap","First","disabled","onClick","Prev","Item","active","Next","Last","onChange","e","target","StyledTh","th","StyledTd","td","TableContainer","header","wrapperClassName","tableClassName","bordered","striped","hover","paginationName","_Fragment","Table","head","index","style","width","Array","isArray","colSpan","BalanceTable","summary","totalInUsd","sort","a","b","textDecimals","assetName","toFixed","change","changeInUsd","price","borderTop","percentageStableCoinPart","percentageNonStableCoinPart","BalanceViewer","useBalanceHook","arbitrageId","fetchBalance","useBalance","Alert","ConfigurationFormBottom","Button","as","Check2Circle","XLg","StyledFormLabel","ConfigurationInput","isModified","button","buttonOnClick","isDisabled","InputGroup","FormControl","inputMode","onWheelCapture","blur","StyledFormCheck","Check","ConfigurationSwitch","checked","AppConfiguration","config","previousConfig","setPreviousConfig","setConfiguration","Fragment","Group","controlId","updateConfig","AppConfigurations","Header","Body","getColorByIndex","ArbitrageInfo","arbitrageEvent","arbitrageInfo","useArbitrageEventHook","fetchArbitrageInfo","activeWebSockets","info","exchangeType","activeWebSocketCount","activeArbitrageCount","events","runId","count","assetPairText","position","tooltip","callbacks","tooltipItem","raw","ConfigurationTurnOnOff","checkedHandleLabel","uncheckedHandleLabel","Switch","checkedIcon","uncheckedIcon","borderRadius","handleDiameter","onColor","offColor","checkedHandleIcon","uncheckedHandleIcon","StyledHeading","BalanceCheckConfiguration","visible","setVisible","wallet","ChevronUp","ChevronDown","minQuantity","maxQuantity","assetId","BalanceCheckConfigurations","useBalanceCheck","isArbitrageResponse","arbitrage","ConfigurationSelect","Select","option","StyledTrash","Trash","TradeConfigurationBody","previousArbitrage","isVisible","setConfigKey","handleVisibilityChange","useBaseDeleteHook","renderFormGroup","commonProps","restrictedFields","negativeProperties","Badge","bg","instanceType","highPriorityProperties","ChevronDoubleUp","ChevronDoubleDown","TradeConfigurationHeader","assetPair","isEqualized","feeType","eventTrigger","TradeConfigurationToggles","onPauseToggle","onEnableToggle","PlayFill","Pause","TradeConfiguration","setPreviousArbitrage","parse","setArbitrage","setIsVisible","allFieldsVisibility","setAllFieldsVisibility","prevVisibility","action","newArbitrage","prev","assetArbitrage","assetPairWalletsCopy","TradeConfigurations","activeKey","setActiveKey","Tabs","onSelect","k","configurationItems","Tab","title","group","eventKey","UsersConfiguration","users","fetchUsers","blockUser","isBlockingDone","isBlocking","hasBlockingError","blockingId","useUsersHook","useBasePostHook","useUsers","userConfig","login","isBlocked","Owner","TabsName","ConfigurationViewer","navigate","useNavigate","useLocation","setKey","Trade","BalanceCheck","App","Info","Users","Routes","Route","element","path","StyledInputGroupText","Text","StyledDropdownToggle","Dropdown","Toggle","PriceButton","BottomButton","getAssetOptions","chosenAsset","itemAsset","availableAssets","getPrice","priceType","prices","firstPrice","averagePrice","lastPrice","getPriceBidAsk","orderSide","firstPriceAsk","asks","firstPriceBid","bids","deviation","Setter","ExchangeCard","refreshData","getExchangePrices","pricesIsLoading","pricesHasError","resetPrices","fetchExchangeWhitelist","exchangeWhitelistIsLoading","exchangeWhitelistHasError","exchangeWhitelist","useExchange","setPrices","assetPairId","walletBalancesIsLoading","useWalletBalance","setWallet","whitelistItem","setWhitelistItem","setAssetA","setAssetB","setAmount","setPrice","cancelTime","setCancelTime","keepStates","AssetA","AssetB","CancelTime","WhitelistItem","Wallet","Amount","Price","Row","Col","lg","Menu","tempAssetA","ArrowDownUp","Checkbox","exchangeData","cancellableTimeInSeconds","setTimeout","StyledA","$isLink","LinkMaybeModal","links","setShowLinksModal","href","rel","StyledUl","ul","StyledLi","li","LinksModal","showLinksModal","Modal","show","onHide","closeButton","link","ExchangeTable","exchangeList","cancelExchange","cancelId","cancelIsDone","cancelIsLoading","cancelHasError","useExchangeList","usePagination","pageSize","fetchExchangeList","walletName","priceAssetName","priceAssetId","amountAssetName","amountAssetId","exchangeName","ex","exchangeId","createdBy","filledStatus","expectedAmount","payAmount","orderSideId","acquiredAmount","expectedPrice","realPrice","Manual","isCancelled","Swop","RefreshIcon","ArrowClockwise","StyledTableContainer","WalletAssetRow","walletAsset","total","free","BalanceCurrentTabContent","fetchCurrentBalances","BalanceCurrent","groupId","setGroupId","ExchangeViewer","useCurrentBalances","StyledCardHeader","getLogLevelColor","level","Information","Warning","Error","Fatal","LogsTable","logs","deleteLogs","levels","setLevels","sources","setSources","useLogsHook","Deimos","Phobos","Job","Web","Tool","Test","eventTypes","join","eventSources","fetchLogs","deleteLogsIsLoading","useLogs","GridFill","cursor","Grid","prevLevels","lvl","handleLevelToggle","source","prevSources","src","handleSourceToggle","Trash2","log","alert","exception","getColorForNetworkPlatform","networkPlatform","colors","RecentTradeStoreChart","recentTradeStoreData","useRecentTradeStoreDataHook","fetchDataStore","useRecentTradeStoreData","dates","store","groupedData","push","dataByDate","record","waitTimeInMiliseconds","showLine","LogsViewer","StyledCard","InfoWrapper","TableWrapper","AllowanceItem","border","arbitrageName","uniq","allowanceDollarValue","allowanceAmount","routerAddress","AllowanceResponse","useArbitrageAllowanceHook","getStatusIndicator","updatedTime","isRecent","getTime","now","formatDateDistance","formatDistance","GatewayRow","gateway","depositStatus","updated","withdrawStatus","quantityDisplay","isStableCoin","availableQuantity","exchangeTypeAbbreviation","transactionInCountProcessedInLastHour","transactionOutCountProcessedInLastHour","availableQuantityUpdated","GatewaysStatus","useGatewayInfo","sortedGatewayDetails","localeCompare","OtherViewer","PriceStoreViewer","performanceStore","fetchPerformanceStore","usePerformanceStore","tradeCountSum","accumulator","currentValue","tradeCount","volumeSum","volume","profitSum","profitInDollars","performanceInfo","negativeTradeCount","failedTradeCount","averageProfitInDollarsPerTrade","TimelineViewer","timelineData","useTimelineHook","fetchTimelineData","useTimeline","timeline","text","table","Th","Td","DataTable","setData","setHeaders","parsedData","uniqueKeys","Set","forEach","rowIndex","cellIndex","DataModal","showDataModal","setShowDataModal","OrderBookSnapshot","LinkWrapper","TransactionItem","transaction","filled","transactionId","additionalData","evaluation","Bad","Good","Great","getEvaluationColor","$windowWidth","TradeItem","trade","windowWidth","useWindowSize","windowSize","setWindowSize","innerWidth","innerHeight","handleResize","addEventListener","removeEventListener","tradeDirection","Straight","sourceExchange","configuredProfitInPercent","isMultiplierUsed","isQuantityConsistent","isProfitRealized","realProfitInDollars","expectedProfitInPercent","isExpectedProfitRealized","realProfitInPercent","transactions","TradesStatistics","tradeData","xs","md","straightTradeCount","reverseTradeCount","averageTradeProfit","TradesViewer","useTradeData","fetchTrades","pagination","SwapButtonWrapper","SwapButton","ArrowLeftRight","getGatewayLabel","gateways","withdrawWallet","depositWallet","networkName","networkPlatformId","statusToSymbol","withdraw","gt","sourceAsset","withdrawStatusSymbol","withdrawalStatus","deposit","destinationAsset","fee","feeAsset","TransferCard","transfer","transferIsLoading","transferIsDone","transferHasError","fetchTransferWhitelist","transferWhitelist","transferWhitelistIsLoading","transferWhitelistHasError","useTransfer","walletA","setWalletA","walletB","setWalletB","amountA","setAmountA","networkA","setNetworkA","networks","getNetwork","getWhitelistedTransfers","walletSource","walletDestination","uniqWith","destinationWallet","sourceWallet","whitelistedGateways","uniqBy","wg","WalletA","WalletB","AmountA","NetworkA","exchangeTransferParams","isSwappable","sm","selectedWallet","potentialWalletBs","newWalletB","isAssetValid","handleWalletChange","selectedTransfer","selectedGateway","isAssetInWhitelist","performWithdraw","withdrawal","sourceWalletId","destinationWalletId","sourceAssetId","destinationAssetId","withdrawals","isDepositCompleted","statusId","Completed","TransferTable","transferList","updateTransfer","updateId","useTransferList","fetchTransferList","feeInDollars","min","Processing","withdrawalStatusId","depositStatusId","TransferViewer","TabsNav","PerformanceViewer","StyledButtonGroup","ButtonGroup","createDateOption","onClickFromDate","fromZonedTime","onClickToDate","addDays","dateOptions","subMinutes","subHours","subDays","startOfWeek","weekStartsOn","endOfWeek","startOfMonth","endOfMonth","subMonths","DropdownWithLabel","selectedValue","DATETIME_SETTINGS_LABEL","DataSettings","pickerFromDate","setPickerFromDate","pickerToDate","setPickerToDate","datetimeSettingsLabel","setDatetimeSettingsLabel","roundToNearestMinutes","max","applyDateSettings","resetDateSettings","BadgeWrapper","StyledBadge","SizedSpan","span","StyledDot","CircleFill","$color","getBadgeColor","classification","InfoBadges","collapsed","setCollapsed","instanceTypeInfo","useInstanceTypeStatus","fetchInstanceTypeStatus","gasPrices","useGasPrice","fetchGasPrice","userStatuses","useUserStatus","fetchUserStatus","fearAndGreedIndex","useFearAndGreedIndex","fetchFearAndGreed","stopPropagation","userStatus","isActive","userAbbreviation","lastWeek","value_classification","yesterday","gasPrice","roundedBaseFeePerGas","roundedMaxPriorityFeePerGas","roundedMaxFeePerGas","statusColor","Running","Inactive","instanceToFindById","PageHeader","StyledContainer","StyledSpinnerBox","Dashboard","Heading","fluid","Login","setError","setLogin","password","setPassword","onSubmit","preventDefault","required","minLength","ChartJS","register","zoomPlugin","LineElement","PointElement","LinearScale","Title","registerables","Index","HashRouter","createRoot","getElementById","render","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","getPrototypeOf","obj","t","mode","this","then","ns","create","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","nc","__webpack_exports__"],"sourceRoot":""}