{"version":3,"file":"static/chunks/3641.999c983d1d867c57.js","mappings":"gPAUMA,EAAkB,SAACC,CAAAA,CAAU,CACjC,IAQmCC,EAR3BC,EACNF,EADME,KAAAA,CAAOC,EACbH,EADaG,KAAAA,CAAOC,EACpBJ,EADoBI,WAAAA,CAAaC,EACjCL,EADiCK,OAAAA,CAASC,EAC1CN,EAD0CM,SAAAA,CAAWC,EACrDP,EADqDO,QAAAA,CAAUC,EAC/DR,EAD+DQ,QAAAA,CAAUC,EACzET,EADyES,YAAAA,CAAcC,EACvFV,EADuFU,SAAAA,CAG1DC,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,GAAKC,KAAAA,EAAW,IAAI,GAApEC,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CAEzBI,EAAU,CAAC,CAACT,GAAa,CAAC,CAACC,EAE3BS,EAAQd,SAAAA,EAAmB,QAAU,OAAO,CAC5Ce,EAAUC,IAAWC,IAAAA,IAAAA,CAAQlB,CAAAA,EAAA,GAC/B,GAAAmB,EAAAC,CAAA,EAD+BpB,EAC9BkB,IAAAA,OAAAA,CAAYL,GACb,GAAAM,EAAAC,CAAA,EAF+BpB,EAE9BkB,IAAAA,IAAAA,CAASjB,SAAAA,GAFqBD,CAAA,EAIjCS,EAAUY,GAAG,CAAC,SAACC,CAAAA,CAAAA,QAAMJ,GAAC,CAACI,EAAE,IAG3B,MACE,GAAAC,EAAAC,IAAA,EAACC,MAAAA,CAAIC,IAAKd,EAAWe,UAAWX,YAC9B,GAAAO,EAAAC,IAAA,EAACC,MAAAA,CAAIE,UAAWT,IAAAA,YAAAA,CAAgBU,GAAIxB,YAClC,GAAAmB,EAAAM,GAAA,EAACC,KAAAA,CAAGH,UAAWT,IAAAA,KAAAA,UAAUhB,IACxBY,GACC,GAAAS,EAAAM,GAAA,EAACJ,MAAAA,CAAIE,UAAW,GAAaI,MAAA,CAAVb,IAAAA,OAAAA,WACjB,GAAAK,EAAAM,GAAA,EAACG,EAAAA,CAAWA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CACVjB,MAAOA,EACPb,MAAOG,EACP4B,KAAM3B,EACN4B,KAAM3B,GACFC,SAKZ,GAAAe,EAAAM,GAAA,EAACM,IAAAA,CAAER,UAAWT,IAAAA,WAAAA,UAAgBf,IAC9B,GAAAoB,EAAAM,GAAA,EAACJ,MAAAA,CAAIE,UAAW,GAAoBT,MAAAA,CAAjBA,IAAAA,WAAAA,CAAc,KAAgBa,MAAA,CAAbb,IAAAA,UAAAA,WACjCJ,GACC,GAAAS,EAAAM,GAAA,EAACG,EAAAA,CAAWA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CACVjB,MAAOA,EACPb,MAAOG,EACP4B,KAAM3B,EACN4B,KAAM3B,GACFC,QAMhB,CAEAV,CAAAA,EAAgBsC,SAAS,CAAG,CAC1BhC,QAASiC,IAAAA,MAAAA,CACTpC,MAAOoC,IAAAA,KAAe,CAAC,CAAC,QAAS,OAAO,EACxCnC,MAAOmC,IAAAA,MAAAA,CACPlC,YAAakC,IAAAA,MAAAA,CACbhC,UAAWgC,IAAAA,MAAAA,CACX/B,SAAU+B,IAAAA,MAAAA,CACV9B,SAAU8B,IAAAA,KAAe,CAAC,CACxBC,KAAMD,IAAAA,MAAAA,CACNJ,KAAMI,IAAAA,MAAAA,GAER7B,aAAc6B,IAAAA,KAAe,CAAC,CAC5BE,WAAYF,IAAAA,KAAe,CAAC,CAAC,cAAe,cAAc,CAC5D,GACA5B,UAAW4B,IAAAA,KAAAA,EAGbvC,EAAgB0C,YAAY,CAAG,CAC7BvC,MAAO,OACPC,MAAO,GACPC,YAAa,GACbK,aAAc,CACZ+B,WAAY,aACd,EACA9B,UAAW,EAAE,EAGfgC,EAAA,EAAe3C,yOCjETkC,EAAc,SAAAU,CAAA,CAA8C,KAS3CR,EATAhC,EAAAA,EAAAA,KAAAA,CAAO+B,EAAAA,EAAAA,IAAAA,CAAMC,EAAAA,EAAAA,IAAAA,CAAMnB,EAAAA,EAAAA,KAAAA,CAAOwB,EAAAA,EAAAA,UAAAA,CACzCI,EAAQC,CAAAA,EAAAA,EAAAA,EAAAA,IAAND,CAAAA,CACFE,EAAUC,CAAAA,EAAAA,EAAAA,CAAAA,EAAgB,CAC9BC,UAAW,aACXC,OAAQ,GACRC,cAAe,GACfC,KAAM,EACR,GAEMC,EAAejB,MAAAA,EAAAA,KAAAA,EAAAA,IAAU,GAAVA,CAAAA,EAAAA,EAAMI,IAAI,GAAVJ,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAYkB,QAAAA,CAAS,QAI1C,MACE,GAAA7B,EAAAC,IAAA,EAAAD,EAAA8B,QAAA,YACE,GAAA9B,EAAAM,GAAA,EAACyB,EAAAA,CAAeA,CAAAA,UACbT,EAAQU,IAAI,EACX,GAAAhC,EAAAM,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,GAAU,EACT7B,UAAWT,IAAAA,uBAAAA,CAEXuC,QAAS,CAAEC,QAAS,EAAGC,UAAW,EAAG,EACrCC,QAAS,CACPF,QAAS,EACTC,UAAW,EACXE,WAAY,CACVH,QAAS,CAAEI,SAAU,GAAK,EAC1BH,UAAW,CAAEG,SAAU,GAAK,CAC9B,CACF,EACAC,KAAM,CACJL,QAAS,EACTC,UAAW,GACXE,WAAY,CACVH,QAAS,CAAEI,SAAU,GAAK,EAC1BH,UAAW,CAAEG,SAAU,GAAK,CAC9B,CACF,WACA,GAAAvC,EAAAC,IAAA,EAACwC,EAAAA,CAAOA,CAAAA,CAACC,MAAOpB,EAASlB,UAAW,GAAgBY,MAAAA,CAAbrB,IAAAA,OAAAA,CAAU,KAAca,MAAA,CAAXQ,aAClD,GAAAhB,EAAAC,IAAA,EAAC0C,SAAAA,CAAOvC,UAAWT,IAAAA,kBAAAA,CAAsBiD,QAAStB,EAAQuB,IAAI,WAC5D,GAAA7C,EAAAM,GAAA,EAACwC,OAAAA,CAAK1C,UAAU,mBAAWgB,EAAE,mBAC7B,GAAApB,EAAAM,GAAA,EAACyC,IAAKA,CACJ3C,UAAWT,IAAAA,gBAAAA,CACXqD,MAAO,GACPC,OAAQ,GACRC,IAAK,QAAkB1C,MAAA,CAjCrBQ,gBAAAA,EAA+B,uBAAyB,sBAAsB,EAkChFmC,IAAI,QAGR,GAAAnD,EAAAM,GAAA,EAAC8C,EAAAA,CAAcA,CAAAA,CAAChD,UAAWT,IAAAA,cAAAA,UACxBhB,IAEH,GAAAqB,EAAAM,GAAA,EAAC+C,EAAAA,CAAkBA,CAAAA,CAACjD,UAAWT,IAAAA,kBAAAA,UAC5Be,IAEFC,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAMI,IAAI,GACT,GAAAf,EAAAC,IAAA,EAACC,MAAAA,CAAIE,UAAWT,IAAAA,aAAAA,WACbyB,EAAE,kBAAkB,QACrB,GAAApB,EAAAC,IAAA,EAACqD,IAAIA,CACHlD,UAAWT,IAAAA,WAAAA,CACXoB,KAAMJ,MAAAA,EAAAA,KAAAA,EAAAA,EAAMI,IAAI,CAChBwC,OAAQ3B,EAAe,SAAW,OAAO,WACxCjB,MAAAA,EAAAA,KAAAA,EAAAA,EAAMD,IAAI,CACVkB,GACC,GAAA5B,EAAAM,GAAA,EAACyC,IAAKA,CACJ3C,UAAWT,IAAAA,eAAAA,CACXqD,MAAO,GACPC,OAAQ,GACRC,IAAM,+BACNC,IAAI,eAjDZ,aA2DV,GAAAnD,EAAAC,IAAA,EAACuD,EAAAA,CAAsBA,CAAAA,CACrBC,KAAK,UACLC,KAAM,aAAmBlD,MAAA,CAANhB,GACnBoD,QAAStB,EAAQqC,MAAM,CACvBzE,UAAW,CAACM,UAAAA,EAAoB,QAAU,EAAE,CAAE,YAAY,CAC1DW,IAAKmB,EAAQsC,SAAS,WACtB,GAAA5D,EAAAM,GAAA,EAACwC,OAAAA,CAAK1C,UAAW,GAAaI,MAAA,CAAVb,IAAAA,OAAAA,CAAU,qBAAYyB,EAAE,kBAC5C,GAAApB,EAAAM,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,IAAAA,UAAAA,UAAeyB,EAAE,uBAI1C,CAEAX,CAAAA,EAAYI,SAAS,CAAG,CACtBlC,MAAOmC,IAAAA,MAAAA,CACPJ,KAAMI,IAAAA,MAAAA,CACNtB,MAAOsB,IAAAA,MAAAA,CACPH,KAAMG,IAAAA,MAAAA,CACNE,WAAYF,IAAAA,MAAAA,EAGdL,EAAYQ,YAAY,CAAG,CACzBzB,MAAO,QACPwB,WAAY,aACd,EAEAE,EAAA,EAAeT,0ICxHToD,EAAU,SAAA1C,CAAA,MAAG2C,EAAAA,EAAAA,IAAAA,OACjB,GAAAC,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,IAAAA,SAAW,CAAEqE,wBAAyB,CAAEC,OAAQH,CAAK,IAGvED,CAAAA,EAAQhD,SAAS,CAAG,CAClBiD,KAAMhD,IAAAA,MAAAA,CAAAA,UAA2B,EAGnC+C,EAAQ5C,YAAY,CAAG,CACrB6C,KAAM,EACR,ECZA,IAAAI,EDceL,0JEZTM,EAA4B,SAAC3F,CAAAA,CAAU,CAC3C,IAAQ4F,EAAwC5F,EAAxC4F,QAAAA,CAAAA,EAAwC5F,EAA9B6F,KAAAA,CAAQC,EAAsB9F,EAAnB+F,OAAAA,CAY7B,MACE,GAAAvE,EAAAM,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,IAAW,EAACuC,SAXG,CAChBC,OAAQ,CAAC,EACTC,QAAS,CACPpC,WAAY,CACVqC,cANYN,KAAAA,IAAAA,EAAQ,EAAAO,CAAA,CAOpBC,gBAPuBN,KAAAA,IAAAA,EAAU,IAAAD,CAAA,CASrC,CACF,EAGoCpC,QAAQ,SAASG,QAAQ,mBACxD+B,GAGP,CAEAD,CAAAA,EAA0BtD,SAAS,CAAG,CACpCuD,SAAUtD,IAAAA,IAAAA,CAAAA,UAAAA,CACVuD,MAAOvD,IAAAA,MAAAA,CACPyD,QAASzD,IAAAA,MAAAA,EAGXqD,EAA0BlD,YAAY,CAAG,CACvCoD,MAAO,GACPE,QAAS,GACX,EAEA,IAAMO,EAAgB,SAACtG,CAAAA,CAAU,CAC/B,IAAQkC,EAA6BlC,EAA7BkC,IAAAA,CAAM6B,EAAuB/D,EAAvB+D,QAAAA,CAAUwC,EAAavG,EAAbuG,QAAAA,CAElBC,EAAQtE,EAAKuE,KAAK,CAAC,KAAKC,MAAM,CAAC,SAACC,CAAAA,CAAAA,OAASA,MAAAA,IAEzCC,EAAgB,CACpBX,OAAQ,CACNtC,QAAS,EACTkD,EAAGN,EACHO,KAAM,EACR,EACAZ,QAAS,CACPvC,QAAS,EACTkD,EAAG,EACHC,KAAM,EACNhD,WAAY,CACVC,SAAAA,EACAJ,QAAS,CACPI,SAAUA,IAAAA,CACZ,EACA8C,EAAG,CACD9C,SAAUA,GAAAA,CACZ,EACA+C,KAAM,CACJ/C,SAAUA,EAAAA,CACZ,CACF,CACF,CACF,EAEA,MACE,GAAAvC,EAAAM,GAAA,EAAAN,EAAA8B,QAAA,WACGkD,EAAMlF,GAAG,CAAC,SAACqF,CAAAA,CAAMI,CAAAA,CAAM,CACtB,MACE,GAAAvF,EAAAC,IAAA,EAAC6C,OAAAA,WACC,GAAA9C,EAAAM,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,IAAW,EACVuD,MAAO,CACLC,QAAS,eACTC,gBAAiB,SACnB,EAEAlB,SAAUY,WACTD,GAFII,GAIP,GAAAvF,EAAAM,GAAA,EAACwC,OAAAA,UAAMyC,EAAIP,EAAMW,MAAM,CAAG,EAAI,IAAM,EAAE,KAV7BJ,EAaf,IAGN,CAEAT,CAAAA,EAAcjE,SAAS,CAAG,CACxB0B,SAAUzB,IAAAA,MAAAA,CACViE,SAAUjE,IAAAA,MAAAA,CACVJ,KAAMI,IAAAA,MAAAA,CAAAA,UAAAA,EAGRgE,EAAc7D,YAAY,CAAG,CAC3BsB,SAAU,GACVwC,SAAU,GACVrE,KAAM,EACR,EAEA,IAAMkF,EAAoB,SAACpH,CAAAA,CAAU,CACnC,IAAAqH,EAAgCrH,EAAxBkC,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAO,GAAAmF,CAAA,CAAItD,EAAa/D,EAAb+D,QAAAA,CAGbuD,EAAYC,EADaC,KAAK,CAAC,uBACqB,CAACtF,EAAK,CAE1DuF,EAAoB,CACxBxB,OAAQ,CACNtC,QAAS,CACX,EACAuC,QAAS,CACPvC,QAAS,EACTG,WAAY,CACVC,SAAAA,CACF,CACF,CACF,EAEA,MACE,GAAAvC,EAAAM,GAAA,EAAAN,EAAA8B,QAAA,WACGgE,MAAAA,EAAAA,KAAAA,EAAAA,EAAWhG,GAAG,CAAC,SAACoG,CAAAA,CAAUX,CAAAA,CAAM,CAC/B,MACE,GAAAvF,EAAAM,GAAA,EAACwC,OAAAA,UACC,GAAA9C,EAAAC,IAAA,EAACgC,EAAAA,CAAAA,CAAAA,IAAW,EACVuD,MAAO,CACLC,QAAS,QACX,EAEAjB,SAAUyB,YACTC,GACIJ,EAAUH,MAAM,CAAO,MAHvBJ,IALEA,EAYf,IAGN,CAEAK,CAAAA,EAAkB/E,SAAS,CAAG,CAC5B0B,SAAUzB,IAAAA,MAAAA,CACVJ,KAAMI,IAAAA,MAAAA,CAAAA,UAAAA,EAGR8E,EAAkB3E,YAAY,CAAG,CAC/BsB,SAAU,EACZ,4JCzGM4D,EAAY,SAAAhF,CAAA,CAUZ,KATJf,EAAAA,EAAAA,SAAAA,CACA8C,EAAAA,EAAAA,GAAAA,CACAkD,EAAAA,EAAAA,IAAAA,CACAC,EAAAA,EAAAA,MAAAA,CACAC,EAAAA,EAAAA,IAAAA,CAAAA,EAAAA,EACAC,eAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAkB,EAAAC,CAAA,CAClBC,EAAAA,EAAAA,aAAAA,CACAC,EAAAA,EAAAA,iCAAAA,CACAC,EAAAA,EAAAA,wBAAAA,CAEkCC,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAI,KAAxCC,EAA2BD,CAAAA,CAAAA,EAAAA,CAAhBE,EAAgBF,CAAAA,CAAAA,EAAAA,CAC5BG,EAAaC,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,SAACC,CAAAA,CAAe,CAC7CH,EAAaG,EACf,EAAG,EAAE,EAC2BL,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAK,GAAvCM,EAAyBN,CAAAA,CAAAA,EAAAA,CAAfO,EAAeP,CAAAA,CAAAA,EAAAA,CAE1BQ,EAAuBC,CAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,uBAAuBA,GAAK,CAAC,GAA7DF,gBAAAA,OA6FR,CA3FAG,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACVV,CAAAA,GAAcO,GAAqBT,EAG5BE,GACTA,EAAUW,IAAI,IAHdX,EAAUY,KAAK,GACfZ,EAAUa,WAAW,CAAGhB,EAI5B,EAAG,CAACU,EAAiB,EAErBG,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACVlB,GAAUQ,GAAaK,IACrBX,EAAkB,EACpBoB,WAAW,UAAM,CACXlB,GAGFkB,WAAW,UAAM,CACflB,GACF,EAAG,KAGDW,GAAoBT,EACtBE,EAAUW,IAAI,IAEdX,EAAUY,KAAK,GACfZ,EAAUa,WAAW,CAAGhB,EAE5B,EAAGH,IAECE,GAGFkB,WAAW,UAAM,CACflB,GACF,EAAG,KAGDW,GAAoBT,EACtBE,EAAUW,IAAI,IAEdX,EAAUY,KAAK,GACfZ,EAAUa,WAAW,CAAGhB,IAIhC,EAAG,CAACL,EAAQQ,EAAWK,EAAS,EAEhCK,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,GAAKV,GAIL,IAAMe,EAAgB,UAAM,CAC1Bf,EAAUW,IAAI,GACTlB,GACHqB,WAAW,kBAAMd,EAAUY,KAAK,IAAI,IAGtCI,SAASC,mBAAmB,CAAC,aAAcF,EAC7C,EAIA,OADAC,SAASE,gBAAgB,CAAC,aAAcH,GACjC,UAAM,CACXC,SAASC,mBAAmB,CAAC,aAAcF,EAC7C,EAfC,EAgBA,CAACf,EAAU,EAIdU,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,GAAKV,GAIL,IAAMmB,EAAiB,kBAAMb,EAAY,KAKzC,GAAIN,EAAUoB,UAAU,CAAG,EAAG,CAC5BD,IACA,MACF,CAAC,OAEDnB,EAAUkB,gBAAgB,CAAC,iBAAkBC,GACtC,UAAM,CACXnB,EAAUiB,mBAAmB,CAAC,iBAAkBE,EAClD,EAfC,EAgBA,CAACnB,EAAU,EAEV,GAAST,EAAKT,MAAM,EAKtB,GAAA5B,EAAA9D,IAAA,EAACiI,QAAAA,CACCC,qBAAkB,GAClB/H,UAAW,GAAaA,MAAAA,CAAVT,IAAAA,IAAM,CAAC,KAAaa,MAAA,CAAVJ,GACxB8C,IAAKA,EACL/C,IAAK4G,EACLT,KAAMA,EACN8B,SAAU/B,EACVgC,QAAQ,OACRC,YAAW,GACXC,MAAK,aACJnC,EAAKtG,GAAG,CAAC,SAACH,CAAAA,CAAAA,OACT,GAAAoE,EAAAzD,GAAA,EAACkI,SAAAA,CAAmBtF,IAAKvD,EAAEuD,GAAG,CAAEuF,KAAM9I,EAAE8I,IAAI,EAA/B9I,EAAEuD,GAAG,IAEpB,GAAAa,EAAAzD,GAAA,EAACoI,QAAAA,CAAMC,KAAK,YAAYzF,IAAI,sBAAsB0F,QAAQ,UAjBrD,IAAI,CAsBfzC,CAAAA,EAAUtF,SAAS,CAAG,CACpBqC,IAAKpC,IAAAA,MAAgB,CACrBsF,KAAMtF,IAAAA,KAAe,CACrBuF,OAAQvF,IAAAA,IAAc,CACtBwF,KAAMxF,IAAAA,IAAc,CACpByF,gBAAiBzF,IAAAA,MAAgB,CACjC2F,cAAe3F,IAAAA,IAAc,CAC7B4F,kCAAmC5F,IAAAA,MAAgB,CACnD6F,yBAA0B7F,IAAAA,IAAc,EAG1CqF,EAAUlF,YAAY,CAAG,CACvBb,UAAW,IAAI,CACf8C,IAAK,IAAI,CACTkD,KAAM,EAAE,CACRC,OAAQ,GACRC,KAAM,GACNC,gBAAiB,IAAI,CACrBE,cAAe,IAAI,CACnBC,kCAAmC,GACnCC,yBAA0B,EAC5B,EChMA,IAAAkC,EDkMe1C,wFehL8B1H,EA2BHqK,EO3B1BC,EE4DDC,gQtB7CfC,EAhCiC,SAACC,CAAAA,CAAqB,CACrD,IAA8DtC,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,CACrEuC,EAAG,EACH9D,EAAG,EACH+D,UAAW,EACXC,UAAW,CACb,MALOC,EAAuD1C,CAAAA,CAAAA,EAAAA,CAA9B2C,EAA8B3C,CAAAA,CAAAA,EAAAA,CA4B9D,MArBA4C,CAAAA,EAAAA,EAAAA,CAAAA,EACE,SAAArI,CAAA,CAAiB,KAAdsI,EAAAA,EAAAA,OAAAA,CACD,GAAKP,EAAiBQ,OAAO,EAI7B,IAAMN,EAAY,CAACK,EAAQpE,CAAC,CACtBgE,EACJD,EACCF,CAAAA,EAAiBQ,OAAO,CAACC,YAAY,CAAGC,OAAOC,WAAW,EAE7DN,EAA2B,GAAAO,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACtB4J,GAAAA,CACHL,UAAAA,EACAC,UAAAA,KAVD,EAaH,EAAE,CACFH,GAGKI,CACT,4CCKMU,EAAmBC,IAAa,IAAM,IAAM,IAAM,KAYlDC,EAAgB,CACpB/H,QAAS,EACTG,WAAY,CACVC,SAAU,GACZ,CACF,EAEM4H,EAAiC,CACrChI,QAAS,EACTkD,EAAG,EACL,EAEM+E,EAAiC,CACrCjI,QAAS,EACTmD,KAAM,EACND,EAAG,EACH/C,WAAY,CACVC,SAAU,EACZ,CACF,EAEM8H,EAA8B,CAClClI,QAAS,EACTkD,EAAG,CACL,EAEMiF,EAA8B,CAClCnI,QAAS,EACTmD,KAAM,EACND,EAAG,EACH/C,WAAY,CACVC,SAAU,GACV8B,MAAO,EACT,CACF,EAEMkG,EAA0B,CAC9BpI,QAAS,EACTmD,KAAM,GACND,EAAG,EACL,EAEMmF,EAA0B,CAC9BrI,QAAS,EACTmD,KAAM,EACND,EAAG,EACH/C,WAAY,CACVC,SAAU,GACV8B,MAAO,EACT,CACF,EAEMoG,EAA2B,CAC/BtI,QAAS,EACTkD,EAAG,EACL,EAEMqF,EAA2B,CAC/BvI,QAAS,EACTkD,EAAG,EACH/C,WAAY,CACV+B,MAAO,IACP9B,SAAU,EACZ,CACF,EAEMoI,EAAgC,GAAAb,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACjC6K,GAAAA,CACHpI,WAAY,CACV+B,MAAO,GACP9B,SAAU,EACZ,IAGIqI,EAAoB,SAACpM,CAAAA,CAAU,CACnC,IAkPmCC,EAjPjCoM,EAMErM,EANFqM,SAAAA,CACAC,EAKEtM,EALFsM,SAAAA,CACAC,EAIEvM,EAJFuM,YAAAA,CACAC,EAGExM,EAHFwM,QAAAA,CACAC,EAEEzM,EAFFyM,gBAAAA,CACAC,EACE1M,EADF0M,YAAAA,CAGI9J,EAAQC,CAAAA,EAAAA,EAAAA,EAAAA,IAAND,CAAAA,CACF+J,EAAeC,CAAAA,EAAAA,EAAAA,CAAAA,EAAc,sBAE7BC,EACJF,GAAgB,CAACF,EAAmBC,EAAeD,CAAgB,CAE/BrE,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAK,GAA7C0E,EAA+B1E,CAAAA,CAAAA,EAAAA,CAAlB2E,EAAkB3E,CAAAA,CAAAA,EAAAA,CACUA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,MAAlD4E,EAAyC5E,CAAAA,CAAAA,EAAAA,CAAvB6E,EAAuB7E,CAAAA,CAAAA,EAAAA,CACdA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAI,KAAxCC,EAA2BD,CAAAA,CAAAA,EAAAA,CAAhBE,EAAgBF,CAAAA,CAAAA,EAAAA,CACYA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAASmE,GAAAA,GAAhDW,EAAuC9E,CAAAA,CAAAA,EAAAA,CAAtB+E,EAAsB/E,CAAAA,CAAAA,EAAAA,CACxCgF,GAAwBvE,CAAAA,EAAAA,EAAAA,UAAAA,EAAWwE,EAAAA,gBAAgBA,EAEjBjF,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,MAA1CkF,GAAiClF,EAAAA,CAAAA,EAAAA,CAAnBmF,GAAmBnF,EAAAA,CAAAA,EAAAA,CAClCoF,GAAkBC,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,GAEzBlF,GAAaC,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,SAACC,CAAAA,CAAe,CAC7CH,EAAaG,EACf,EAAG,EAAE,EAECiC,GAAmB+C,CAAAA,EAAAA,EAAAA,MAAAA,IACnB3C,GAA0B4C,EAAyBhD,IAIzD3B,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CAKT+D,EAGH3D,WAAW,UAAM,CACfwE,CAAAA,EAAAA,EAAAA,gBAAAA,GACF,EAAG,KAJHC,CAAAA,EAAAA,EAAAA,iBAAAA,GAMJ,EAAG,CAACd,EAAY,EAIhB/D,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACdoE,EAAmBR,GAAgB,CAACJ,EAAeC,EAAWD,CAAY,CAC5E,EAAG,CAACI,EAAa,EAIjB5D,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,GAAI,IAAc+D,GAIlBzE,EAAUwF,YAAY,CAAG,EAEzB,IAAMzE,EAAgB,UAAM,CAC1Bf,EAAUW,IAAI,GACdG,WAAW,UAAM,CACfd,EAAUa,WAAW,CAAG,EACxBb,EAAUY,KAAK,GACfI,SAASC,mBAAmB,CAAC,aAAcF,EAC7C,EAAG,EACL,EAIA,OADAC,SAASE,gBAAgB,CAAC,aAAcH,GACjC,UAAM,CACXC,SAASC,mBAAmB,CAAC,aAAcF,EAC7C,EAjBC,EAkBA,CAACf,EAAU,EAId,IAAMyF,GAAsB,SAAAnL,CAAA,CAAc,KAAXsH,EAAAA,EAAAA,IAAAA,CAC7B,IAAIuD,CAAAA,GAAgBtC,OAAO,EAAI,IAI/B,OAAQjB,GACN,IAAK,YACHuD,GAAgBtC,OAAO,EAAI,GAC3BqC,GAAgBC,GAAgBtC,OAAO,EACvC,KAAM,KAEH,UACHsC,GAAgBtC,OAAO,CACvBqC,GAAgBC,GAAgBtC,OAAO,EACvC,KAAM,SAINsC,GAAgBtC,OAAO,EAAI,GAC3BqC,GAAgBC,GAAgBtC,OAAO,CAE3C,CAlBC,EAqBG1B,GAAiB,UAAM,CAC3B,IAAMuE,EAAaC,YAAY,UAAM,CAC/B3F,EAAUoB,UAAU,CAAG,IACzBwE,cAAcF,GAEdP,GAAgBtC,OAAO,CAAG,IAC1BqC,GAAgBC,GAAgBtC,OAAO,EAEvC7C,EAAUiB,mBAAmB,CAAC,YAAawE,IAC3CzF,EAAUiB,mBAAmB,CAAC,WAAYwE,IAC1CzF,EAAUiB,mBAAmB,CAAC,UAAWwE,IACzCzF,EAAUiB,mBAAmB,CAAC,iBAAkBE,IAIhDL,WAAW,UAAM,CACfd,EAAUY,KAAK,GACfZ,EAAUa,WAAW,CAAG,EAExByE,CAAAA,EAAAA,EAAAA,gBAAAA,IACAZ,EAAe,GACjB,EAAG,KAEP,EAAG,IACL,EAEAhE,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,GAAKV,GAOL,GAAIA,EAAUoB,UAAU,CAAG,EAAG,CAC5BD,KACA,MACF,CAAC,OAEDnB,EAAUkB,gBAAgB,CAAC,YAAauE,IACxCzF,EAAUkB,gBAAgB,CAAC,WAAYuE,IACvCzF,EAAUkB,gBAAgB,CAAC,UAAWuE,IACtCzF,EAAUkB,gBAAgB,CAAC,iBAAkBC,IAEtC,UAAM,CACXnB,EAAUiB,mBAAmB,CAAC,YAAawE,IAC3CzF,EAAUiB,mBAAmB,CAAC,WAAYwE,IAC1CzF,EAAUiB,mBAAmB,CAAC,UAAWwE,IACzCzF,EAAUiB,mBAAmB,CAAC,iBAAkBE,GAClD,EApBC,EAqBA,CAACnB,EAAU,EAIdU,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,GAAKV,GAIL,IAAMa,EAAc,CAClBsC,EAAiBV,GAAwBD,SAAS,EAAIxC,EAAUtE,QAAQ,EACxEmK,OAAO,CAAC,GAGRC,MAAMjF,IACNA,EAAc,GACdA,GAAeb,EAAUtE,QAAQ,EAKnCkJ,EAAoB/D,GAdnB,EAeA,CAAC4B,GAAyBzC,EAAU,EAEvCU,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACTV,GAILA,CAAAA,EAAUa,WAAW,CAAG8D,CAAAA,CAC1B,EAAG,CAACA,EAAkB3E,EAAU,EAuBhC,IAAM+F,GAAkBlN,IAAWC,IAAAA,YAAc,CAC/C,GAAAkN,EAAAhN,CAAA,KAACF,IAAAA,kBAAoB,CAAG2J,GAAwBD,SAAS,EAAI,IAGzDyD,GAAmBxD,GAAwBD,SAAS,EAAI,EACxD0D,GAAezB,GAAewB,GAE9BE,GAASlC,EAAUhL,GAAG,CAAC,SAACmN,CAAAA,CAAAA,OAAW,GAAAnD,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACpCoN,GAAAA,CACH5G,OACEmF,EAAmByB,EAAMC,SAAS,EAAI1B,EAAmByB,EAAME,OAAO,KAKpEC,GAAcC,CAAAA,EAAAA,EAAAA,CAAAA,IAAZD,OAAAA,CACFE,GAAaC,CAAAA,EAAAA,EAAAA,CAAAA,EAAaH,GAAS,SAACI,CAAAA,CAAM,CAC9C,IAAMC,EAC4B7D,OAAOC,WAAW,CAG9C6D,EAAYN,GAAQO,GAAG,GAGvBC,EAAQC,CAAAA,EAAAA,EAAAA,EAAAA,EADZH,EAAaI,CAAAA,CAJSzC,EAAsB,IAAM,GAAKoC,EAIzBA,CAAAA,EACY,EAAGA,EAAmB,EAAG,GAIrE,OAFE,GAAKM,CAAAA,EAAAA,EAAAA,EAAAA,EAAaC,KAAKC,GAAG,CAACL,EAAO,IAAMH,EAAoB,EAGhE,GAEMS,GAAcxO,IAAWC,IAAAA,QAAU,CACvC,GAAAkN,EAAAhN,CAAA,KAACF,IAAAA,MAAQ,CAAG2L,IAGR7L,GAAUC,IAAWC,IAAAA,IAAM,CAAElB,CAAAA,EAAA,GACjC,GAAAoO,EAAAhN,CAAA,EADiCpB,EAChCkB,IAAAA,YAAc,CAAGiM,IAAyB,KAC3C,GAAAiB,EAAAhN,CAAA,EAFiCpB,EAEhCkB,IAAAA,YAAc,CAAGiM,IAAyB,KAC3C,GAAAiB,EAAAhN,CAAA,EAHiCpB,EAGhCkB,IAAAA,YAAc,CAAGiM,IAAyB,KAC3C,GAAAiB,EAAAhN,CAAA,EAJiCpB,EAIhCkB,IAAAA,YAAc,CAAGiM,IAAyB,KAJVnN,CAAA,GAOnC,MACE,GAAAsF,EAAA9D,IAAA,EAAA8D,EAAAjC,QAAA,YACE,GAAAiC,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAW8N,KAChB,GAAAnK,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWX,aACd,GAAAsE,EAAAzD,GAAA,EAACJ,MAAAA,CACCC,IAAK+I,GACL9I,UAAWT,IAAAA,SAAW,CACtB6F,MAAO,CACL2I,UAAW,GAAuB3N,MAAA,CAApB6K,EAAoB,MAClCpI,OAAQ,GAAuBzC,MAAA,CAApB6K,EAAoB,KACjC,WACCC,GAAehC,GAAwBD,SAAS,CAAG,GAClD,GAAAtF,EAAAzD,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,GAAU,EACT7B,UAAWT,IAAAA,WAAa,CACxB6F,MAAO,CACLH,EAAGiI,EACL,MAKN,GAAAvJ,EAAAzD,GAAA,EAACyB,EAAAA,CAAeA,CAAAA,UACb,CAACuJ,GAAeQ,IAAqB,GAArBA,IACf,GAAA/H,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,IAAAA,kBAAoB,UAClC,GAAAoE,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,IAAAA,WAAa,WAC3B,GAAAoE,EAAAzD,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,IAAW,EACV7B,UAAWT,IAAAA,eAAiB,CAC5BuC,QAASmI,EACThI,QAASiI,EACT9H,KAAM0H,WACL9I,EAAE,gCAEL,GAAA2C,EAAA9D,IAAA,EAACgC,EAAAA,CAAAA,CAAAA,IAAW,EACV7B,UAAWT,IAAAA,mBAAqB,CAChCuC,QAASiI,EACT9H,QAAS+H,EACT5H,KAAM0H,YACL4B,GAAa,cAOxB,GAAA/H,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWwM,aACd,GAAA7I,EAAAzD,GAAA,EAACyB,EAAAA,CAAeA,CAAAA,UACbgL,IACC,GAAAhJ,EAAAzD,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,GAAU,EAET7B,UAAWT,IAAAA,kBAAoB,CAC/B6C,KAAM0H,WACN,GAAAnG,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,IAAAA,cAAgB,CAAEyO,cAAa,CAACrB,aAC9C,GAAAhJ,EAAA9D,IAAA,EAACgC,EAAAA,CAAAA,CAAAA,EAAS,EACR7B,UAAWT,IAAAA,WAAa,CACxBuC,QAASqI,EACTlI,QAASmI,YACRK,EAAUwD,SAAS,CAAC,OACrB,GAAAtK,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,IAAAA,kBAAoB,UAClCkL,EAAUyD,YAAY,MAG3B,GAAAvK,EAAAzD,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,CAAQ,EACP7B,UAAWT,IAAAA,eAAiB,CAC5BuC,QAASuI,EACTpI,QAASsI,WACRE,EAAU0D,QAAQ,OAjBnB,aAwBV,GAAAxK,EAAA9D,IAAA,EAACgC,EAAAA,CAAAA,CAAAA,GAAU,EACT7B,UAAWT,IAAAA,sBAAwB,CACnCuC,QAAS,CACPC,QAAS,CACX,EACAE,QAAS,CACPF,QAAS,EACTG,WAAY,CACVC,SAAU,GACV8B,MAAO,CACT,CACF,YACA,GAAAN,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,IAAAA,oBAAsB,UACpC,GAAAoE,EAAA9D,IAAA,EAAC8B,EAAAA,CAAeA,CAAAA,WACbuH,GAAwBD,SAAS,EAAI,GACpC,GAAAtF,EAAAzD,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,IAAW,EAEV7B,UAAWT,IAAAA,WAAa,CACxBuC,QAAS,CACPC,QAAS,EACTkD,EAAG,EACL,EACAhD,QAAS,CACPF,QAAS,EACTkD,EAAG,EACH/C,WAAY,CACV+B,MAAO,GACP9B,SAAU,EACZ,CACF,EACAC,KAAM,CACJL,QAAS,EACTkD,EAAG,EACL,WACCjE,EAAE,6BAlBC,kBAsBPkI,GAAwBD,SAAS,CAAG,GACnC,GAAAtF,EAAAzD,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,IAAW,EAEV7B,UAAWT,IAAAA,WAAa,CACxBuC,QAAS,CACPC,QAAS,EACTkD,EAAG,CACL,EACAhD,QAAS,CACPF,QAAS,EACTkD,EAAG,EACH/C,WAAY,CACVC,SAAU,GACV8B,MAAO,EACT,CACF,EACA7B,KAAM,CACJL,QAAS,EACTkD,EAAG,CACL,WACCjE,EAAE,2BAlBC,uBAuBZ,GAAA2C,EAAAzD,GAAA,EAACqC,SAAAA,CACCC,QArMmB,UAAM,CACnC,IAAM6K,EAC4B7D,OAAOC,WAAW,CAGpD2E,CAAAA,EAAAA,EAAAA,EAAAA,EAAW,gBAEX5E,OAAO6E,MAAM,CAAC,CACZC,IAAKV,KAAKC,GAAG,CACXrE,OAAOwD,OAAO,CAAGxD,OAAOC,WAAW,CAAIqB,CAAAA,EAAe,KANtCG,EAAuB,IAAOoC,GAShDkB,KAAM,EACNC,SAAU,QACZ,EACF,EAuLYxO,UAAWT,IAAAA,qBAAuB,MAItC,GAAAoE,EAAAzD,GAAA,EAACyB,EAAAA,CAAeA,CAAAA,UACbiL,GAAOrH,MAAM,EACZ,CAACoH,IACDC,GAAOlN,GAAG,CAAC,SAACmN,CAAAA,CAAU,CACpB,GAAKA,EAAM5G,MAAM,EAIjB,IAAMwI,EAAWnP,IAAWC,IAAAA,UAAY,CAAE,QAE1C,MACE,GAAAoE,EAAA9D,IAAA,EAACC,MAAAA,CACCE,UAAWT,IAAAA,cAAgB,CAE3ByO,cAAa,CAACnB,EAAM5G,MAAM,WAC1B,GAAAtC,EAAAzD,GAAA,EAAC6D,EAAAA,EAAyBA,CAAAA,CAACI,QAAS,aAClC,GAAAR,EAAA9D,IAAA,EAAC6O,KAAAA,CAAG1O,UAAWyO,YACb,GAAA9K,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,IAAAA,aAAe,UAC9B,GAAAoE,EAAAzD,GAAA,EAACwE,EAAAA,EAAaA,CAAAA,CAACpE,KAAMuM,EAAMoB,SAAS,KAEtC,GAAAtK,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,IAAAA,gBAAkB,UACjC,GAAAoE,EAAAzD,GAAA,EAACwE,EAAAA,EAAaA,CAAAA,CAACpE,KAAMuM,EAAMqB,YAAY,UAI7C,GAAAvK,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAU,gBACb,GAAA2D,EAAAzD,GAAA,EAAC2B,EAAAA,CAAAA,CAAAA,CAAQ,EACP7B,UAAWT,IAAAA,SAAW,CACtBuC,QAASuI,EACTpI,QAASqI,WACRuC,EAAMvM,IAAI,OAjBVuM,EAAMoB,SAAS,EAPvB,KAgCP,GAAAtK,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,IAAAA,UAAY,UAC1B,GAAAoE,EAAAzD,GAAA,EAAC4H,QAAAA,CACCC,qBAAkB,GAClBhI,IAAK4G,GACL7D,IAAKwI,EACLpD,YAAW,GACXF,SAAQ,GACRC,QAAQ,OACRE,MAAO,eAMrB,CAEAqC,CAAAA,EAAkB/J,SAAS,CAAG,CAC5BgK,UAAW/J,IAAAA,MAAAA,CAAAA,UAA2B,CACtCoK,aAAcpK,IAAAA,MAAAA,CAAAA,UAA2B,CACzCmK,iBAAkBnK,IAAAA,MAAgB,CAClCkK,SAAUlK,IAAAA,MAAAA,CAAAA,UAA2B,CACrCiK,aAAcjK,IAAAA,MAAgB,CAC9BgK,UAAWhK,IAAAA,KAAe,EAG5B8J,EAAkB3J,YAAY,CAAG,CAC/B4J,UAAW,CACTyD,aAAc,GACdD,UAAW,EACb,EACArD,SAvhBoB,8CAwhBpBD,aAzhByB,6CA0hBzBE,iBAAkB,IAAI,CACtBC,aAAc,IACdJ,UAAW,EAAE,gDE/jBTiE,EAAkB,YAGlBC,EAAoB,cACpBC,GAAoB,cACpBC,GAAoB,cACpBC,GAAmB,aACnBC,GAAc,QAEdC,GAAc,SACdC,GAAa,QAEbC,GAAqB,UAErBC,GACJ,GAAA3C,EAAAhN,CAAA,KAAC0P,GAAqB,CACpB,CACErM,IAAK,iCACLuF,KAAM,0BACR,EACA,CACEvF,IAAK,iCACLuF,KAAM,YACR,EACD,EAGGgH,GAAyB,SAACjR,CAAAA,CAAU,CACxC,IAkBEC,EAjBAiR,EAWElR,EAXFkR,KAAAA,CACArB,EAUE7P,EAVF6P,SAAAA,CACAC,EASE9P,EATF8P,YAAAA,CACAC,EAQE/P,EARF+P,QAAAA,CACAoB,EAOEnR,EAPFmR,SAAAA,CACAC,EAMEpR,EANFoR,UAAAA,CACAC,EAKErR,EALFqR,SAAAA,CACAC,EAIEtR,EAJFsR,QAAAA,CACAC,EAGEvR,EAHFuR,SAAAA,CACAC,EAEExR,EAFFwR,SAAAA,CACA9Q,EACEV,EADFU,SAAAA,CAG6BC,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,OAAhDE,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CAEzBM,EAAUC,IACdC,IAAAA,IAAM,CACNlB,CAAAA,EAAA,GACE,GAAAoO,EAAAhN,CAAA,EADFpB,EACGkB,IAAAA,6BAA+B,CAC9B,CAAC,CAAC,CAACoQ,GAAa,CAAC,CAACC,CAAAA,GAAc,CAAGF,GAErC,GAAAjD,EAAAhN,CAAA,EAJFpB,EAIGkB,IAAAA,aAAe,CAAGgQ,IAAcZ,GAEjC,GAAAlC,EAAAhN,CAAA,EANFpB,EAMGkB,IAAAA,oBAAsB,CAAGiQ,IAAeZ,GACzC,GAAAnC,EAAAhN,CAAA,EAPFpB,EAOGkB,IAAAA,oBAAsB,CAAGiQ,IAAeX,IACzC,GAAApC,EAAAhN,CAAA,EARFpB,EAQGkB,IAAAA,oBAAsB,CAAGiQ,IAAeV,IACzC,GAAArC,EAAAhN,CAAA,EATFpB,EASGkB,IAAAA,mBAAqB,CAAGiQ,IAAeT,IAExC,GAAAtC,EAAAhN,CAAA,EAXFpB,EAWGkB,IAAAA,OAAS,CAAGL,GAXfb,CAAA,EAaAS,EAAUY,GAAG,CAAC,SAACC,CAAAA,CAAAA,QAAMJ,GAAC,CAACI,EAAE,IAGrBkQ,EACJD,GAAaA,KAAaR,GAAeA,EAAY,CAACQ,EAAU,CAAG,IAAI,CAEzE,MACE,GAAAjM,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWX,YACd,GAAAsE,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAW,GAAmBI,MAAA,CAAhBb,IAAAA,aAAe,CAAC,mBAChCmQ,GACC,GAAA/L,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,IAAAA,eAAiB,UAC/B,GAAAoE,EAAAzD,GAAA,EAACyC,IAAKA,CACJC,MAAO,IACPC,OAAQ,EACRiN,QAAS,IACThN,IAAK,QAAqB2M,MAAAA,CAAbC,EAAS,MAActP,MAAA,CAAVqP,EAAU,SACpC1M,IAAI,GACJ/C,UAAWT,IAAAA,QAAU,KAK1BsQ,GACC,GAAAlM,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,IAAAA,qBAAuB,UACrC,GAAAoE,EAAAzD,GAAA,EAAC6F,EAAAA,CAASA,CAAAA,CACR/F,UAAWT,IAAAA,SAAW,CACtB0G,OAAQ/G,EACRgH,KAAM,GACNF,KAAM6J,MAKXF,GAAa,CAACE,GACb,GAAAlM,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,IAAAA,gBAAkB,UAChC,GAAAoE,EAAAzD,GAAA,EAACyC,IAAKA,CACJC,MAAO,IACPC,OAAQ,EACRiN,QAAS,IACThN,IAAK,QAAsB2M,MAAAA,CAAdE,EAAU,MAAcvP,MAAA,CAAVqP,EAAU,SACrC1M,IAAI,GACJ/C,UAAWT,IAAAA,SAAW,QAK9B,GAAAoE,EAAA9D,IAAA,EAACC,MAAAA,CAAIC,IAAKd,EAAWe,UAAWT,IAAAA,SAAW,WACxCsQ,GACC,GAAAlM,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,IAAAA,0BAA4B,UAC1C,GAAAoE,EAAAzD,GAAA,EAAC6F,EAAAA,CAASA,CAAAA,CACR/F,UAAWT,IAAAA,mBAAqB,CAChC0G,OAAQ/G,EACRgH,KAAM,GACNF,KAAM6J,MAKXP,GACC,GAAA3L,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAY,gBACf,GAAA2D,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,IAAAA,UAAY,UAAG+P,MAIpC,GAAA3L,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAW,GAAmBI,MAAA,CAAhBb,IAAAA,aAAe,CAAC,kBACjC,GAAAoE,EAAA9D,IAAA,EAACkQ,KAAAA,CAAG/P,UAAW,GAAeI,MAAA,CAAZb,IAAAA,SAAW,CAAC,mBAC5B,GAAAoE,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,IAAAA,QAAU,UAAG0O,IAAiB,WAC/C,GAAAtK,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,IAAAA,WAAa,UAAG2O,SAIpCC,GACC,GAAAxK,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAU,gBACb,GAAA2D,EAAAzD,GAAA,EAACM,IAAAA,CAAER,UAAWT,IAAAA,IAAM,UAAG4O,WAMnC,CAEAkB,CAAAA,GAAuB5O,SAAS,CAAG,CACjC6O,MAAO5O,IAAAA,MAAgB,CACvBuN,UAAWvN,IAAAA,MAAAA,CAAAA,UAA2B,CACtCwN,aAAcxN,IAAAA,MAAAA,CAAAA,UAA2B,CACzCyN,SAAUzN,IAAAA,MAAgB,CAC1B6O,UAAW7O,IAAAA,KAAe,CAAC,CAACiO,EAlJL,aAkJuC,EAC9Da,WAAY9O,IAAAA,KAAe,CAAC,CAC1BkO,EACAC,GACAC,GACAC,GACD,EACDU,UAAW/O,IAAAA,KAAe,CAAC,CAtJE,mBAwJ3BkO,EACAC,GACAC,GACAC,GACAC,GACD,EACDU,SAAUhP,IAAAA,KAAe,CAAC,CAACwO,GAAYD,GAAY,EACnDU,UAAWjP,IAAAA,KAAe,CAAC,CAACwO,GAAYD,GAAY,EACpDW,UAAWlP,IAAAA,KAAe,CAAC,CAACyO,GAAmB,EAC/CrQ,UAAW4B,IAAAA,OAAiB,CAACA,IAAAA,MAAgB,CAC/C,EAEA2O,GAAuBxO,YAAY,CAAG,CACpCoN,UAAW,GACXC,aAAc,GACdC,SAAU,GACVqB,WAAY,IAAI,CAChBC,UAAWT,GACXU,SAAU,IAAI,CACdC,UAAW,IAAI,CACfC,UAAW,IAAI,CACf9Q,UAAW,EAAE,0CCpLTkR,GAAgB,SAAC5R,CAAAA,CAAU,CAC/B,IACE6R,EASE7R,EATF6R,IAAAA,CACAC,EAQE9R,EARF8R,EAAAA,CACAjK,EAOE7H,EAPF6H,MAAAA,CACA9D,EAME/D,EANF+D,QAAAA,CACAgO,EAKE/R,EALF+R,YAAAA,CACAC,EAIEhS,EAJFgS,WAAAA,CAAAA,EAIEhS,EAHFiS,MAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAS,IAAI,CAAAC,CAAA,CAAAC,EAGXnS,EAFFoS,QAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAW,IAAI,CAAAD,CAAA,CAAAE,EAEbrS,EADFsS,UAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAa,IAAI,CAAAD,CAAA,CAGbE,EAAU9E,CAAAA,EAAAA,EAAAA,MAAAA,IAEV+E,EAAiC,SAACC,CAAAA,CAAOC,CAAAA,CAAe,CAC5D,IAAMC,EAAQD,EAAWxE,OAAO,CAAC6D,GAC3Ba,EAASH,EAAMvE,OAAO,CAAC6D,GACvBc,EAASF,EAAMxL,MAAM,CAAGyL,EAAOzL,MAAM,CAE3C,MAAO2L,CAAAA,EAAAA,EAAAA,EAAAA,EAAaF,EAAQ,IAAKC,EAAS,EAAIA,EAAS,CAAC,CAC1D,EAEME,EAAqB,SAACN,CAAAA,CAAU,CACpC,IAAMO,EAAYR,EAA+BC,EAAOX,GAClDmB,EAAYC,CAAAA,EAAAA,EAAAA,EAAAA,EAAqBF,UAEvC,EAAmB,EACVC,EAAUE,OAAO,CAAC,IAAKnB,GAGzBiB,CAFN,EA6CH,MAxCAlK,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,IAAMqK,EAAOb,EAAQrH,OAAO,CAC5B,GAAI,CAACrD,EAAQ,CACXuL,EAAKC,SAAS,CAAGvB,EACjB,MACF,CAAC,IAEKwB,EAAWzP,CAAAA,EAAAA,GAAAA,CAAAA,EAAQgO,EAAMC,EAAI,CACjC/N,SAAAA,EACAuO,WAAY,UAAM,CAChB,IAAMiB,EAAkBR,EAAmBjB,EAC3CsB,CAAAA,EAAKC,SAAS,CAAGE,EAEbjB,GACFA,EAAWiB,EAEf,EACAtB,OAAQ,UAAM,CACZ,IAAMsB,EAAkBR,EAAmBlB,EAC3CuB,CAAAA,EAAKC,SAAS,CAAGE,EAEbtB,GACFA,EAAOsB,EAEX,EACAnB,SAAAA,SAASK,CAAK,CAAE,CACd,IAAMc,EAAkBR,EAAmBN,EAC3CW,CAAAA,EAAKC,SAAS,CAAGE,EAEbnB,GACFA,EAASmB,EAEb,CACF,GAEA,OAAO,UAAM,CACXD,EAASE,IAAI,EACf,CACF,EAAG,CAAC3B,EAAMC,EAAIjK,EAAO,EAEd,GAAAtC,EAAAzD,GAAA,EAACM,IAAAA,CAAET,IAAK4Q,GACjB,CAEAX,CAAAA,GAAcvP,SAAS,CAAG,CACxBwP,KAAMvP,IAAAA,MAAAA,CAAAA,UAA2B,CACjCwP,GAAIxP,IAAAA,MAAAA,CAAAA,UAA2B,CAC/BuF,OAAQvF,IAAAA,IAAAA,CAAAA,UAAyB,CACjCyB,SAAUzB,IAAAA,MAAgB,CAC1B2P,OAAQ3P,IAAAA,IAAc,CACtB8P,SAAU9P,IAAAA,IAAc,CACxBgQ,WAAYhQ,IAAAA,IAAc,EAG5BsP,GAAcnP,YAAY,CAAG,CAC3BsB,SAAU,EACVgO,aAAc,EACdC,YAAa,IACbC,OAAQ,IAAI,CACZG,SAAU,IAAI,CACdE,WAAY,IAAI,qDCjFZmB,GAAmB,aACnBlD,GAAkB,YAElBC,GAAoB,cACpBC,GAAoB,cACpBC,GAAoB,cACpBC,GAAmB,aAEnB+C,GAAkB,SAAC1T,CAAAA,CAAU,CACjC,IAyE2CC,EAxEzCE,EASEH,EATFG,KAAAA,CACAC,EAQEJ,EARFI,WAAAA,CACAE,EAOEN,EAPFM,SAAAA,CACAC,EAMEP,EANFO,QAAAA,CACAC,EAKER,EALFQ,QAAAA,CACAmT,EAIE3T,EAJF2T,wBAAAA,CACAC,EAGE5T,EAHF4T,KAAAA,CACA1T,EAEEF,EAFFE,KAAAA,CACAiR,EACEnR,EADFmR,SAAAA,CAGIvI,EAAuBC,CAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,uBAAuBA,GAAK,CAAC,GAA7DF,gBAAAA,CAEFiL,EAAYC,CAAAA,EAAAA,EAAAA,EAAAA,EAAQ3T,GACc4T,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAc,CAAC,MAAhDC,EAAiCD,CAAAA,CAAAA,EAAAA,CAAnBE,EAAmBF,CAAAA,CAAAA,EAAAA,CAETpT,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,GAAKC,KAAAA,EAAW,IAAI,GAApEC,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CACzBuT,EAAcC,CAAAA,EAAAA,GAAAA,CAAAA,IAEdC,EAAwB3G,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,EAAE,EACjC4G,EAAoB5G,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,EAAE,EAE7B6G,EAAuB,SAACvN,CAAAA,CAAAA,QAAM,SAACiI,CAAAA,CAAM,CACpCqF,EAAkBnJ,OAAO,CAACnE,EAAE,EAIjCwN,CAAAA,EAAAA,GAAAA,EAAAA,EAAe,CACbC,YAAaJ,EAAsBlJ,OAAO,CAACnE,EAAE,CAC7C0N,QAASJ,EAAkBnJ,OAAO,CAACnE,EAAE,CACrC2N,cAAe,GACjB,EACF,GAEMC,EAAkB,SAACC,CAAAA,CAAU,CACjCX,EAAgBW,EAClB,EAEMC,EAAwB,UAAM,CAClCR,EAAkBnJ,OAAO,CAAC4J,OAAO,CAAC,SAACC,CAAAA,CAAIhO,CAAAA,CAAM,CACtCgO,GAILR,CAAAA,EAAAA,GAAAA,EAAAA,EAAe,CACbC,YAAaJ,EAAsBlJ,OAAO,CAACnE,EAAE,CAC7C0N,QAASM,EACTL,cAAe,GACjB,EACF,EACF,EAGA3L,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CAC2B,IAArCsL,EAAkBnJ,OAAO,CAAC/D,MAAM,EAIpC0N,GACF,EAAG,CAACX,EAAapT,EAAU,EAG3BkU,CAAAA,EAAAA,GAAAA,CAAAA,EACE,IACA,UAAM,CAC6B,IAA7BrB,GAAmC/K,GACrCiM,GAEJ,EACA,CAAC/T,EAAW6S,EAAyB,EAGvC,IAAM1S,EAAUC,IAAWC,KAAAA,IAAM,CAAE,OAAQlB,CAAAA,EAAA,GACzC,GAAAoO,EAAAhN,CAAA,EADyCpB,EACxCkB,KAAAA,OAAS,CAAGL,GAEb,GAAAuN,EAAAhN,CAAA,EAHyCpB,EAGxCkB,KAAAA,aAAe,CAAGgQ,IAAcZ,IAEjC,GAAAlC,EAAAhN,CAAA,EALyCpB,EAKxCkB,KAAAA,eAAiB,CAAGjB,IAAUsQ,IAC/B,GAAAnC,EAAAhN,CAAA,EANyCpB,EAMxCkB,KAAAA,eAAiB,CAAGjB,IAAUuQ,IAC/B,GAAApC,EAAAhN,CAAA,EAPyCpB,EAOxCkB,KAAAA,eAAiB,CAAGjB,IAAUwQ,IAC/B,GAAArC,EAAAhN,CAAA,EARyCpB,EAQxCkB,KAAAA,cAAgB,CAAGjB,IAAUyQ,IARW1Q,CAAA,GAW3C,MACE,GAAAsF,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWX,WACd,GAAAsE,EAAA9D,IAAA,EAACC,MAAAA,CAAIC,IAAKd,EAAWe,UAAWT,KAAAA,SAAW,WACzC,GAAAoE,EAAAzD,GAAA,EAAC/B,GAAAA,CAAeA,CAAAA,CACdM,QAASwT,EACT1T,MAAOA,EACPC,YAAaA,EACbE,UAAWA,EACXC,SAAUA,EACVC,SAAUA,EACVN,MAAOiR,IAAcsC,GAAmB,QAAU,MAAM,GAE1D,GAAAlO,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,cAAgB,UAC7ByS,EAAMzM,MAAM,CAAG,GACd,GAAA5B,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,IAAM,UACnByS,EAAMtS,GAAG,CAAC,SAAC2T,CAAAA,CAAMlO,CAAAA,CAAM,CACtB,IAAMmO,EAAiB,EAAKtB,EAAMzM,MAAM,CAAI,IACtCgO,EAAkBjU,IAAWC,KAAAA,YAAc,CAC/C,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,SAAW,CAAG4F,IAAMiN,IAGvB,MACE,GAAAzO,EAAA9D,IAAA,EAACC,MAAAA,CAECE,UAAWT,KAAAA,GAAK,CAChB6F,MAAO,CACLxC,MAAO,GAAkBxC,MAAA,CAAfkT,EAAe,IAC3B,YACA,GAAA3P,EAAAzD,GAAA,EAACqC,SAAAA,CACCvC,UAAWT,KAAAA,SAAW,CACtBiD,QAAS,kBAAMuQ,EAAgB5N,aAC/B,GAAAxB,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,KAAAA,aAAe,UAAG8T,EAAK9U,KAAK,KAE/C,GAAAoF,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWuT,MAVXrB,CAAAA,EAAAA,EAAAA,EAAAA,EAAQmB,EAAK9U,KAAK,EAa7B,OAIN,GAAAoF,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,KAAO,UACpByS,EAAMtS,GAAG,CAAC,SAAC2T,CAAAA,CAAMlO,CAAAA,CAAM,CACtB,IAAMqO,EAAiBrO,IAAMiN,EACvBqB,EAAUnU,IAAWC,KAAAA,IAAM,CAC/B,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,UAAY,CAAGiU,IAGlB,MACE,GAAA7P,EAAAzD,GAAA,EAACJ,MAAAA,CAA8BE,UAAWyT,WACxC,GAAA9P,EAAAzD,GAAA,EAACJ,MAAAA,CACCE,UAAWT,KAAAA,SAAW,CACtBQ,IAAK,SAACoT,CAAAA,CAAAA,QAAQX,EAAsBlJ,OAAO,CAACnE,EAAE,CAAGgO,YACjD,GAAAxP,EAAA9D,IAAA,EAAC6C,OAAAA,CAAK3C,IAAK,SAACoT,CAAAA,CAAAA,QAAQV,EAAkBnJ,OAAO,CAACnE,EAAE,CAAGgO,aACjD,GAAAxP,EAAAzD,GAAA,ED9DL8P,GC8DmBA,CACZC,KAAM,EACNC,GAAImD,EAAKxC,KAAK,CACd1O,SAAU6E,EAAmB+K,EAA2B,CAAC,CACzD9L,OAAQ/G,GAAasU,EACrBnD,OAAQqC,EAAqBvN,GAC7BuL,WAAYgC,EAAqBvN,GACjCqL,SAAUkC,EAAqBvN,KAEhCkO,EAAKK,SAAS,EAAI,GAAA/P,EAAA9D,IAAA,EAAA8D,EAAAjC,QAAA,YAAE,OAAO2R,EAAKK,SAAS,UAdtCxB,CAAAA,EAAAA,EAAAA,EAAAA,EAAQmB,EAAK9U,KAAK,EAmBhC,SAKV,CAEAuT,CAAAA,GAAgBrR,SAAS,CAAG,CAC1BlC,MAAOmC,IAAAA,MAAgB,CACvBlC,YAAakC,IAAAA,MAAgB,CAC7BqR,yBAA0BrR,IAAAA,MAAgB,CAC1ChC,UAAWgC,IAAAA,MAAgB,CAC3B/B,SAAU+B,IAAAA,MAAgB,CAC1B9B,SAAU8B,IAAAA,MAAgB,CAC1BsR,MAAOtR,IAAAA,OAAiB,CACtBA,IAAAA,KAAe,CAAC,CACdnC,MAAOmC,IAAAA,MAAgB,CACvBmQ,MAAOnQ,IAAAA,MAAgB,CACvBgT,UAAWhT,IAAAA,MAAgB,IAG/B6O,UAAW7O,IAAAA,KAAe,CAAC,CAACiO,GAAiBkD,GAAiB,EAC9DvT,MAAOoC,IAAAA,KAAe,CAAC,CACrBkO,GACAC,GACAC,GACAC,GACD,CACH,EAEA+C,GAAgBjR,YAAY,CAAG,CAC7BtC,MAAO,GACPC,YAAa,GACbuT,yBAA0B,IAC1BC,MAAO,EAAE,CACTzC,UAAWsC,GACXvT,MAAOuQ,EACT,6BClNM8E,GAAc,SAAA5S,CAAA,CAAe,KAAZzC,EAAAA,EAAAA,KAAAA,CACfe,EAAUC,IAAWC,KAAAA,IAAM,CAC/B,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,IAAM,CAAGjB,SAAAA,IAGZ,MACE,GAAAqF,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWX,WACd,GAAAsE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,MAAQ,IAG9B,CAEAoU,CAAAA,GAAYlT,SAAS,CAAG,CACtBnC,MAAOoC,IAAAA,KAAe,CAAC,CAAC,QAAS,OAAO,EACxCkT,kBAAmBlT,IAAAA,MAAgB,EAGrCiT,GAAY9S,YAAY,CAAG,CACzBvC,MAAO,OACT,6BERauV,GAAmB,CALZ,aACa,0BACR,kBACC,mBAOzB,CAKKC,GAASD,GAAiBE,MAAM,CAAC,SAACD,CAAAA,CAAQE,CAAAA,CAAc,CAkC5D,OAjCAF,CAAM,CAACE,EAAU,CAAG,CAClBC,MAAO,CACL,CACEnR,IAAK,UAAoB1C,MAAA,CAAV4T,EAAU,oBACzB3L,KAAM,0BACR,EACA,CACEvF,IAAK,UAAoB1C,MAAA,CAAV4T,EAAU,oBACzB3L,KAAM,YACR,EACD,CACD6L,OAAQ,CACN,CACEpR,IAAK,UAAoB1C,MAAA,CAAV4T,EAAU,qBACzB3L,KAAM,0BACR,EACA,CACEvF,IAAK,UAAoB1C,MAAA,CAAV4T,EAAU,qBACzB3L,KAAM,YACR,EACD,CACD8L,MAAO,CACL,CACErR,IAAK,UAAoB1C,MAAA,CAAV4T,EAAU,qBACzB3L,KAAM,0BACR,EACA,CACEvF,IAAK,UAAoB1C,MAAA,CAAV4T,EAAU,qBACzB3L,KAAM,YACR,EACD,EAGIyL,CACT,EAAG,CAAC,GAEEM,GAAyB,SAAChW,CAAAA,CAAU,CACxC,IAwCsDC,EAxC9C2V,EACN5V,EADM4V,SAAAA,CAAWK,EACjBjW,EADiBiW,MAAAA,CAAQrU,EACzB5B,EADyB4B,SAAAA,CAAWsU,EACpClW,EADoCkW,WAAAA,CAAaC,EACjDnW,EADiDmW,WAAAA,CAAaC,EAC9DpW,EAD8DoW,UAAAA,CAG1DC,EAAgBzJ,CAAAA,EAAAA,EAAAA,CAAAA,EAAcuJ,GAC9BxJ,EAAeC,CAAAA,EAAAA,EAAAA,CAAAA,EAAcwJ,GAEGhO,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAK,GAA7C0E,EAA+B1E,CAAAA,CAAAA,EAAAA,CAAlB2E,EAAkB3E,CAAAA,CAAAA,EAAAA,CACJA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAI,KAAxCkO,EAA2BlO,CAAAA,CAAAA,EAAAA,CAAhBmO,EAAgBnO,CAAAA,CAAAA,EAAAA,CACcA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAI,IAAbA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAEhDW,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,IAAMyN,EAASZ,KAAaF,GAASA,EAAM,CAACE,EAAU,CAAG,IAAI,EAEzDY,GAAWH,GAAkB1J,EAMtB6J,GAAUL,GAAeE,GAAiB,CAAC1J,EAKpD4J,EAAaC,EAAOV,MAAM,EACjBU,GAAUJ,GAAczJ,GAKjC4J,EAAaC,EAAOT,KAAK,EAZzBQ,EAAaC,EAAOX,KAAK,CAc7B,EAAG,CAACQ,EAAe1J,EAAa,EAEhC,IAA+BhM,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAC7B,CAAC,EAAG,IAAM,GAAK,IAAM,EAAE,CACtB,qBACD,IAAI,GAHCE,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CAMzBM,EAAUC,IAAWC,KAAAA,IAAM,CAAES,EAAW,OAAQ3B,CAAAA,EAAA,GACpD,GAAAoO,EAAAhN,CAAA,EADoDpB,EACnDkB,KAAAA,OAAS,CAAGL,GACb,GAAAuN,EAAAhN,CAAA,EAFoDpB,EAEnDkB,KAAAA,WAAa,CAAG2L,GACjB,GAAAuB,EAAAhN,CAAA,EAHoDpB,EAGnDkB,KAAAA,eAAiB,CAAG8U,eAAAA,GAH+BhW,CAAA,GAMtD,MACE,GAAAsF,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWX,YAvFF,GAyFZ,GAAAsE,EAAA9D,IAAA,EAACC,MAAAA,CAAIC,IAAKd,EAAWe,UAAWT,KAAAA,SAAW,WACxCL,GAAawV,GACZ,GAAA/Q,EAAAzD,GAAA,EAAC6F,EAAAA,CAASA,CAAAA,CACR/F,UAAWT,KAAAA,KAAO,CAClB0G,OAAQ,GACRC,KAAM,GACNF,KAAM0O,EACNrO,cAAe,UAAM,CACnB8E,EAAe,GACjB,IAGJ,GAAAxH,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,UAAY,UAC1B,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,MAAQ,UACtB,GAAAoE,EAAAzD,GAAA,EFrGGyT,GEqGSA,CAACrV,MAAOgW,aAMhC,CAEAF,CAAAA,GAAuB3T,SAAS,CAAG,CACjCT,UAAWU,IAAAA,MAAgB,CAC3B6T,YAAa7T,IAAAA,MAAgB,CAC7B8T,WAAY9T,IAAAA,MAAgB,CAC5B2T,OAAQ3T,IAAAA,KAAe,CAAC,CAAC,SAAU,aAAa,EAChDsT,UAAWtT,IAAAA,KAAe,CAACmT,IAC3BS,YAAa5T,IAAAA,KAAe,CAAC,CAAC,QAAS,OAAO,CAChD,EAEA0T,GAAuBvT,YAAY,CAAG,CACpCmT,UAAW,IAAI,CACfK,OAAQ,SACRC,YAAa,QACbC,YAAa,oBACf,yCCtIM1C,GAAmB,aACnBlD,GAAkB,YAElBC,GAAoB,cACpBC,GAAoB,cACpBC,GAAoB,cACpBC,GAAmB,aAEnB8F,GAAmB,YAEnBC,GACJ,GAAArI,EAAAhN,CAAA,KAACoV,GAAmB,CAClB,CACE/R,IAAK,UAA2B1C,MAAA,CAAjByU,GAAiB,oBAChCxM,KAAM,0BACR,EACA,CACEvF,IAAK,UAA2B1C,MAAA,CAAjByU,GAAiB,oBAChCxM,KAAM,YACR,EACD,EAGG0M,GAAsB,SAAC3W,CAAAA,CAAU,CACrC,IAuB2CC,EAtBzC2W,EAUE5W,EAVF4W,QAAAA,CACAC,EASE7W,EATF6W,WAAAA,CACApE,EAQEzS,EARFyS,KAAAA,CACAnS,EAOEN,EAPFM,SAAAA,CACAC,EAMEP,EANFO,QAAAA,CACAC,EAKER,EALFQ,QAAAA,CACAmT,EAIE3T,EAJF2T,wBAAAA,CACAxC,EAGEnR,EAHFmR,SAAAA,CACAjR,EAEEF,EAFFE,KAAAA,CACAsR,EACExR,EADFwR,SAAAA,CAIY3O,CAAAA,EAAAA,EAAAA,EAAAA,IAAND,CAAAA,CACR,IAA+BjC,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,GAAKC,KAAAA,EAAW,IAAI,GAApEC,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CACeyH,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAK,GAArD0O,EAAuC1O,CAAAA,CAAAA,EAAAA,CAAtB2O,EAAsB3O,CAAAA,CAAAA,EAAAA,CAExCqJ,EAAgBiF,EAAU,CAAClF,EAAU,CAGrC5I,EAAuBC,CAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,uBAAuBA,GAAK,CAAC,GAA7DF,gBAAAA,CAEF3H,EAAUC,IAAWC,KAAAA,IAAM,CAAE,OAAQlB,CAAAA,EAAA,GACzC,GAAAoO,EAAAhN,CAAA,EADyCpB,EACxCkB,KAAAA,OAAS,CAAGL,GACb,GAAAuN,EAAAhN,CAAA,EAFyCpB,EAExCkB,KAAAA,WAAa,CAAG2V,GAEjB,GAAAzI,EAAAhN,CAAA,EAJyCpB,EAIxCkB,KAAAA,aAAe,CAAGgQ,IAAcZ,IAEjC,GAAAlC,EAAAhN,CAAA,EANyCpB,EAMxCkB,KAAAA,eAAiB,CAAGjB,IAAUsQ,IAC/B,GAAAnC,EAAAhN,CAAA,EAPyCpB,EAOxCkB,KAAAA,eAAiB,CAAGjB,IAAUuQ,IAC/B,GAAApC,EAAAhN,CAAA,EARyCpB,EAQxCkB,KAAAA,eAAiB,CAAGjB,IAAUwQ,IAC/B,GAAArC,EAAAhN,CAAA,EATyCpB,EASxCkB,KAAAA,cAAgB,CAAGjB,IAAUyQ,IATW1Q,CAAA,GAYrC+W,EAAY9V,IAAWC,KAAAA,MAAQ,CACnC,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,OAAS,CAAG,CAAC2V,IAGhB,MACE,GAAAvR,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWX,WACd,GAAAsE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,SAAW,CAAEQ,IAAKd,WAChC,GAAA0E,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,KAAAA,cAAgB,WAC9B,GAAAoE,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,KAAAA,eAAiB,WAC/B,GAAAoE,EAAA9D,IAAA,EAACM,KAAAA,CAAGH,UAAWT,KAAAA,WAAa,WACzByV,EACD,GAAArR,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,KAAAA,MAAQ,UACvB,GAAAoE,EAAAzD,GAAA,ELgBD8P,GKhBeA,CACZC,KAAM,EACNC,GAAIW,EACJV,aAAc,EACdhO,SAAU6E,EAAmB+K,EAA2B,CAAC,CACzD9L,OAAQ/G,MAGX+V,KAEF9V,CA7CM,CAACT,GAAa,CAAC,CAACC,GA8CrB,GAAAgF,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,QAAU,UACxB,GAAAoE,EAAAzD,GAAA,EAACG,GAAAA,CAAWA,CAAAA,CACVjB,MAzCFmQ,IAAcsC,GAAmB,QAAU,OAAO,CA0ChDtT,MAAOG,EACP4B,KAAM3B,EACN4B,KAAM3B,SAMd,GAAA+E,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,KAAAA,cAAgB,WAC9B,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,UAAY,UAC1B,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWoV,WACd,GAAAzR,EAAAzD,GAAA,EHrFDyT,GGqFaA,CACVrV,MAAOiR,cAAAA,EAA4B,OAAS,OAAO,OAKxDM,GAAiB3Q,GAChB,GAAAyE,EAAAzD,GAAA,EAAC6F,EAAAA,CAASA,CAAAA,CACR/F,UAAWT,KAAAA,SAAW,CACtB0G,OAAQ,GACRC,KAAM,GACNF,KAAM6J,EACNxJ,cAAe,UAAM,CACnB8O,EAAmB,GACrB,aAQhB,CAEAJ,CAAAA,GAAoBtU,SAAS,CAAG,CAC9BuU,SAAUtU,IAAAA,MAAgB,CAC1BuU,YAAavU,IAAAA,MAAgB,CAC7BmQ,MAAOnQ,IAAAA,MAAgB,CACvBqR,yBAA0BrR,IAAAA,MAAgB,CAC1C6O,UAAW7O,IAAAA,KAAe,CAAC,CAACiO,GAAiBkD,GAAiB,EAC9DvT,MAAOoC,IAAAA,KAAe,CAAC,CACrBkO,GACAC,GACAC,GACAC,GACD,EACDa,UAAWlP,IAAAA,KAAe,CAAC,CAACmU,GAAiB,CAC/C,EAEAE,GAAoBlU,YAAY,CAAG,CACjCmU,SAAU,GACVC,YAAa,GACbpE,MAAO,EACPkB,yBAA0B,IAC1BxC,UAAWsC,GACXvT,MAAOsQ,GACPgB,UAAWiF,EACb,0CC7JMQ,GAAkB,UAAgB,KAAfjX,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAQ,CAAC,EAChCkX,EAKIlX,EAJFmX,MAAAA,CAASC,EAIPpX,EAHFqX,cAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAiB,CAAE1M,EAAG,EAAG9D,EAAG,EAAGyQ,EAAG,EAAG,EAAAF,CAAA,CAAAG,EAGnCvX,EAFFwX,aAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAgB,CAAE7M,EAAG,IAAK9D,EAAG,EAAGyQ,EAAG,CAAE,EAAAC,CAAA,CAAAE,EAEnCzX,EADF0X,cAAAA,CAGIjJ,EAAQ,IAAIkJ,GAAAA,GAAKA,CAMjBC,EAAS,IAAIC,GAAAA,GAAiBA,CAJxB,GARVV,KAAAA,IAAAA,EAAS,EAAAD,CAAA,CASE,GACD,KAGZU,EAAOE,QAAQ,CAACC,GAAG,CAACV,EAAe1M,CAAC,CAAE0M,EAAexQ,CAAC,CAAEwQ,EAAeC,CAAC,EACxEM,EAAOI,MAAM,CAAC,EAAG,EAAG,GAGpB,IAAMC,EAAQ,IAAIC,GAAAA,GAAgBA,CADpB,SAbZR,KAAAA,IAAAA,EAAiB,GAAAD,CAAA,EAkBnB,OAHAQ,EAAMH,QAAQ,CAACC,GAAG,CAACP,EAAc7M,CAAC,CAAE6M,EAAc3Q,CAAC,CAAE2Q,EAAcF,CAAC,EACpE7I,EAAM0J,GAAG,CAACF,GAEH,CACLL,OAAAA,EACAnJ,MAAAA,CACF,CACF,EAIM2J,GAA4B,SAChCR,CAAM,CACNS,CAAW,CACXC,CAAM,CACNC,CAAU,CACVC,CAAa,CACb,CAEA,IAAIvT,EAAO,IAAIwT,GAAAA,GAAOA,CACtBJ,EAAYK,OAAO,CAACzT,GAqCpB,IAAM0T,EAAMf,EAAOe,GAAG,CAAInJ,CAAAA,KAAKoJ,EAAE,CAAG,KAC9BC,EAAO,EAAIrJ,KAAKsJ,IAAI,CAACtJ,KAAKuJ,GAAG,CAACJ,EAAM,GAAKf,EAAOT,MAAM,EAGxD6B,EAAUxJ,KAAKyJ,GAAG,CAFbhU,EAAKqS,CAAC,CAAG,EAAI9H,KAAK0J,GAAG,CAACjU,EAAK0F,CAAC,CAAG,EAAI6E,KAAKuJ,GAAG,CAACF,EAAO,IACnD5T,EAAKqS,CAAC,CAAG,EAAI9H,KAAK0J,GAAG,CAACjU,EAAK4B,CAAC,CAAG,EAAI2I,KAAKuJ,GAAG,CAACJ,EAAM,IAIrC,UAAXL,GAA0BA,IAAAA,GACnCU,CAAAA,GAAWV,CAAAA,EAGa,SAAfC,GACTS,CAAAA,EAAUxJ,KAAKyJ,GAAG,CAACV,EAAYS,EAAAA,EAGjCpB,EAAOE,QAAQ,CAACC,GAAG,CAAC,EAAG,EAAGiB,GAG1B,IAAMG,EAAOd,EAAY5I,GAAG,CAAC6H,CAAC,CACxB8B,EAAkBD,EAAO,EAAI,CAACA,EAAOH,EAAUA,EAAUG,CAAI,CAEnEvB,EAAOyB,GAAG,CAAGD,EAAAA,EACbxB,EAAO0B,sBAAsB,GAEP1Y,KAAAA,IAAlB4X,IAEFA,EAAczT,MAAM,CAAG,IAAI0T,GAAAA,GAAOA,CAAC,EAAG,EAAG,GAGzCD,EAAce,WAAW,CAAGH,EAAAA,EAEhC,EAEMI,GAAyC,SAACxZ,CAAAA,CAAU,CACxD,IACE4X,EASE5X,EATF4X,MAAAA,CACA6B,EAQEzZ,EARFyZ,UAAAA,CACAC,EAOE1Z,EAPF0Z,kBAAAA,CACAC,EAME3Z,EANF2Z,OAAAA,CAAAA,EAME3Z,EALF4Z,oBAAAA,CAA4BC,EAK1B7Z,EAJF8Z,iBAAAA,CAAyBC,EAIvB/Z,EAHFga,WAAAA,CAAkBC,EAGhBja,EAFFka,SAAAA,CAAiBC,EAEfna,EADFoa,UAAAA,CAGIC,EAAsBX,EAAmBY,KAAK,GACpDD,EAAoBE,OAAO,CAAC3C,GAE5B,IAAM4C,EAASb,EAAQc,qBAAqB,GAEtCC,EACJL,EAAoB1P,CAAC,CAAG8O,EAAWjV,KAAK,CAAG,GAC1CwV,CAAAA,KAZDA,IAAAA,GAAkBD,EAYH,CAACS,EAAOhW,KAAK,CAAG,EAAI,CAAC,EACnC0V,CAAAA,KAZDA,IAAAA,GAAiBD,EAYJ,CAACO,EAAOhW,KAAK,CAAG,CAAC,EAC7B4V,CAAAA,KAZDA,IAAAA,GAAkBD,EAYJK,EAAOhW,KAAK,CAAG,CAAC,EAE1BmW,EACJN,EAAoBxT,CAAC,CAAG4S,EAAWhV,MAAM,CAAG,GAC3CqV,CAAAA,KAnBDA,IAAAA,GAAyBD,EAmBJW,EAAO/V,MAAM,CAAG,CAAC,EACrCmV,CAAAA,KArBDA,IAAAA,GAA4BgB,EAqBJJ,EAAO/V,MAAM,CAAG,CAAC,CAE3CkV,CAAAA,EAAQ3S,KAAK,CAAC6T,SAAS,CAAG,cAA0C7Y,MAAA,CAA5B0Y,EAAW,mBAA6B1Y,MAAA,CAAZ,CAAC2Y,EAAW,MAClF,sCCtIMG,GAAoB,yCA0KpBC,GAA8B,SAAApY,CAAA,CAM9B,KALJqY,EAAAA,EAAAA,cAAAA,CACAC,GAAAA,EAAAA,MAAAA,CAAAA,EACAC,qBAAAA,EAAwBC,EAAAxY,EACxByY,oBAAAA,CAAuBC,EAAA1Y,EACvB2Y,WAAAA,CAEMC,EAAe,IAAIC,GAAAA,GAAaA,GAAGC,IAAI,CAACX,GAC9CS,CAAAA,EAAaG,KAAK,CAAGC,GAAAA,GAAcA,CACnCJ,EAAaK,KAAK,CAAGD,GAAAA,GAAcA,CAEnC,IAAQE,EACNb,EADMa,mBAAAA,CAAqBC,EAC3Bd,EAD2Bc,gBAAAA,CAAkBC,EAC7Cf,EAD6Ce,mBAAAA,CAGzCC,EAAgB,IAAIC,GAAAA,GAAiBA,CAAC,CAC1Cjb,MAAO,IAAIkb,GAAAA,GAAKA,CAAC,EACnB,GAEIC,EAAsB,CACxBC,MAAO,CAAE3J,MAAO,CAAE,EAClB4J,gBAAiB,CACf5J,MAAO,CAACoJ,EAAqBC,EAAkBC,EAAoB,EAErEO,YAAa,CACX7J,MAAO,CAAC,EAAG,EAAE,EAEf8J,gBAAiB,CACf9J,MAAO,CAAC,EAAG,EAAE,EAEf+J,YAAa,CACX/J,MAAO,CACT,EACAgK,cAAe,CACbhK,MAAO,CAAC,EAAG,EAAE,EAEfiK,uBAAwB,CACtBjK,MAjCJyI,KAAAA,IAAAA,EAAwB,GAAAyB,CAAA,EAmCtBC,sBAAuB,CACrBnK,MAnCJ2I,KAAAA,IAAAA,EAAuB,GAAAD,CAAA,EAqCrB0B,aAAc,CACZpK,MArCJ6I,KAAAA,IAAAA,EAAc,GAAAD,CAAA,EAuCZyB,cAAe,CACbrK,MAAO8I,CACT,CACF,EAyHA,OAvHAS,EAAce,eAAe,CAAG,SAACC,CAAAA,CAAW,CAC1CA,EAAOC,QAAQ,CAACR,aAAa,CAAGN,EAAoBM,aAAa,CACjEO,EAAOC,QAAQ,CAACX,WAAW,CAAGH,EAAoBG,WAAW,CAC7DU,EAAOC,QAAQ,CAACV,eAAe,CAAGJ,EAAoBI,eAAe,CACrES,EAAOC,QAAQ,CAACP,sBAAsB,CACpCP,EAAoBO,sBAAsB,CAC5CM,EAAOC,QAAQ,CAACb,KAAK,CAAGD,EAAoBC,KAAK,CACjDY,EAAOC,QAAQ,CAACZ,eAAe,CAAGF,EAAoBE,eAAe,CACrEW,EAAOC,QAAQ,CAACT,WAAW,CAAGL,EAAoBK,WAAW,CAC7DQ,EAAOC,QAAQ,CAACL,qBAAqB,CACnCT,EAAoBS,qBAAqB,CAC3CI,EAAOC,QAAQ,CAACJ,YAAY,CAAGV,EAAoBU,YAAY,CAC/DG,EAAOC,QAAQ,CAACH,aAAa,CAAGX,EAAoBW,aAAa,CAEjEE,EAAOE,YAAY,CAAGF,EAAOE,YAAY,CACtC/J,OAAO,CACN,gBACY,0FAMbA,OAAO,CACN,uBACY,uFAQhB6J,EAAOG,cAAc,CAAGH,EAAOG,cAAc,CAC1ChK,OAAO,CACN,yBACY,0tBA4BbA,OAAO,CACN,gCACY,m9CAmDlB,EAEO,CACL6I,cAAAA,EACAG,oBAAAA,CACF,CACF,EAmLMiB,GAAwC,SAAAza,CAAA,CAMxC,KALJqY,EAAAA,EAAAA,cAAAA,CACAC,GAAAA,EAAAA,MAAAA,CAAAA,EACAC,qBAAAA,EAAwBC,EAAAxY,EACxByY,oBAAAA,CAAuBC,EAAA1Y,EACvB2Y,WAAAA,CAEMC,EAAe,IAAIC,GAAAA,GAAaA,GAAGC,IAAI,CAACX,GAC9CS,CAAAA,EAAaG,KAAK,CAAGC,GAAAA,GAAcA,CACnCJ,EAAaK,KAAK,CAAGD,GAAAA,GAAcA,CAEnC,IAAQE,EACNb,EADMa,mBAAAA,CAAqBC,EAC3Bd,EAD2Bc,gBAAAA,CAAkBC,EAC7Cf,EAD6Ce,mBAAAA,CAGzCC,EAAgB,IAAIC,GAAAA,GAAiBA,CAAC,CAC1Cjb,MAAO,IAAIkb,GAAAA,GAAKA,CAAC,EACnB,GAEIC,EAAsB,CACxBC,MAAO,CAAE3J,MAAO,CAAE,EAClB4J,gBAAiB,CACf5J,MAAO,CAACoJ,EAAqBC,EAAkBC,EAAoB,EAErEO,YAAa,CACX7J,MAAO,CAAC,EAAG,EAAE,EAEf8J,gBAAiB,CACf9J,MAAO,CAAC,EAAG,EAAE,EAEf+J,YAAa,CACX/J,MAAO,CACT,EACAgK,cAAe,CACbhK,MAAO,CAAC,EAAG,EAAE,EAEfiK,uBAAwB,CACtBjK,MAjCJyI,KAAAA,IAAAA,EAAwB,GAAAyB,CAAA,EAmCtBC,sBAAuB,CACrBnK,MAnCJ2I,KAAAA,IAAAA,EAAuB,GAAAD,CAAA,EAqCrB0B,aAAc,CACZpK,MArCJ6I,KAAAA,IAAAA,EAAc,GAAAD,CAAA,EAuCZyB,cAAe,CACbrK,MAAO8I,CACT,CACF,EAkIA,OAhIAS,EAAce,eAAe,CAAG,SAACC,CAAAA,CAAW,CAC1CA,EAAOC,QAAQ,CAACR,aAAa,CAAGN,EAAoBM,aAAa,CACjEO,EAAOC,QAAQ,CAACX,WAAW,CAAGH,EAAoBG,WAAW,CAC7DU,EAAOC,QAAQ,CAACV,eAAe,CAAGJ,EAAoBI,eAAe,CACrES,EAAOC,QAAQ,CAACP,sBAAsB,CACpCP,EAAoBO,sBAAsB,CAC5CM,EAAOC,QAAQ,CAACb,KAAK,CAAGD,EAAoBC,KAAK,CACjDY,EAAOC,QAAQ,CAACZ,eAAe,CAAGF,EAAoBE,eAAe,CACrEW,EAAOC,QAAQ,CAACT,WAAW,CAAGL,EAAoBK,WAAW,CAC7DQ,EAAOC,QAAQ,CAACL,qBAAqB,CACnCT,EAAoBS,qBAAqB,CAC3CI,EAAOC,QAAQ,CAACJ,YAAY,CAAGV,EAAoBU,YAAY,CAC/DG,EAAOC,QAAQ,CAACH,aAAa,CAAGX,EAAoBW,aAAa,CAEjEE,EAAOE,YAAY,CAAGF,EAAOE,YAAY,CACtC/J,OAAO,CACN,gBACY,0FAMbA,OAAO,CACN,uBACY,uFAQhB6J,EAAOG,cAAc,CAAGH,EAAOG,cAAc,CAC1ChK,OAAO,CACN,yBACY,0tBA4BbA,OAAO,CACN,gCACY,yyDA4DlB,EAEO,CACL6I,cAAAA,EACAG,oBAAAA,CACF,CACF,ECnsBMkB,GAAoB,cAIpBC,GAAe,QAKfC,GAAuB,cACvBC,GAAuB,cACvBC,GAAuB,cACvBC,GAAgB,u79HCKhBC,GAAuC1d,CAAAA,EAAA,GAC3C,GAAAoO,EAAAhN,CAAA,EAD2CpB,EAC1Csd,GAAuB,CACtBzB,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,KACrD7B,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,KACxD/B,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,IAC1D,GACA,GAAAvP,EAAAhN,CAAA,EAN2CpB,EAM1Cud,GAAuB,CACtB1B,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,SAAU0B,cAAc,CAAC,KACrD7B,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,SAAU0B,cAAc,CAAC,KACxD/B,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,QAAU0B,cAAc,CAAC,IAC1D,GACA,GAAAvP,EAAAhN,CAAA,EAX2CpB,EAW1Cwd,GAAuB,CACtB3B,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,KACrD7B,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,KACxD/B,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,IAC1D,GACA,GAAAvP,EAAAhN,CAAA,EAhB2CpB,EAgB1Cyd,GAAgB,CACf5B,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,SAAU0B,cAAc,CAAC,GAAGA,cAAc,CAAC,KACvE7B,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,SAC5B0B,cAAc,CAAC,IACfA,cAAc,CAAC,KAClB/B,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,SAC5B0B,cAAc,CAAC,IACfA,cAAc,CAAC,IACpB,GAxB2C3d,CAAA,CA2BHqK,CAAAA,EAAA,GACxC,GAAA+D,EAAAhN,CAAA,EADwCiJ,EACvCiT,GAAuB,CACtBzB,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,UAC5BH,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,UAC/BL,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,SACjC,GACA,GAAA7N,EAAAhN,CAAA,EANwCiJ,EAMvCkT,GAAuB,CACtB1B,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,SAC5BH,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,SAC/BL,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,OACjC,GACA,GAAA7N,EAAAhN,CAAA,EAXwCiJ,EAWvCmT,GAAuB,CACtB3B,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,UAC5BH,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,UAC/BL,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,SACjC,GACA,GAAA7N,EAAAhN,CAAA,EAhBwCiJ,EAgBvCoT,GAAgB,CACf5B,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,SAAU0B,cAAc,CAAC,GACrD7B,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,SAAU0B,cAAc,CAAC,IACxD/B,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,SAAU0B,cAAc,CAAC,GAC1D,EApBwC,CAyB1C,IAAMC,GAAe,CACnB5Y,KAAM,EACN6Y,SAAU,EACVC,OAAQ,GACV,EAEMC,GAA0B,UAAsB,KAArBC,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAc,CAAC,EACtCC,EAAoBD,EAApBC,QAAAA,CAAUtK,EAAUqK,EAAVrK,KAAAA,CAEZuK,EAAgBvK,EACnBtS,GAAG,CAAC,SAAC8c,CAAAA,CAAAA,QAAM5O,KAAK0J,GAAG,CAACkF,EAAE3L,KAAK,IAC3BkD,MAAM,CAAC,SAACsD,CAAAA,CAAKjK,CAAAA,CAAAA,QAAMQ,KAAKyJ,GAAG,CAACA,EAAKjK,IAAI,CAACqP,KAEnCC,EAAc1K,EAAMtS,GAAG,CAAC,SAAC2T,CAAAA,CAAS,CACtC,MAAO,GAAA3J,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACF4T,GAAAA,CACHxC,MAAOwC,EAAKxC,KAAK,CAAIyL,CAAAA,GAAYC,CAAAA,GAErC,GAEA,MAAO,GAAA7S,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACF4c,GAAAA,CACHrK,MAAO0K,GAEX,EAEMC,GAAoB,SAACC,CAAAA,CAAK/Z,CAAAA,CAAQyM,CAAAA,CAAOuN,CAAAA,CAAa,CAC1D,IAWAC,EAXIA,EAAU,IAAIC,GAAAA,GAAIA,CACpB,IAAIC,GAAAA,CAAkBA,CACpBf,GAAa5Y,IAAI,CACjBR,EACAoZ,GAAa5Y,IAAI,CACjB4Y,GAAaC,QAAQ,CACrBD,GAAaE,MAAM,GAUvB,OANAW,EAAQD,QAAQ,CAAGA,EACnBC,CAAAA,EAAAA,EAAQ5G,QAAQ,EAACC,GAAG,CAApB2G,KAAAA,CAAAA,EAAqB,GAAAG,GAAAxd,CAAA,EAAGmd,IACxBE,EAAQI,IAAI,CAAG,OAAa9c,MAAA,CAANkP,GAEtBwN,EAAQK,MAAM,CAACC,MAAM,CD/FI,GCiGlB,CACLC,KAAMP,EACNja,OAAAA,CACF,CACF,EAEMya,GAAqB,SAAClf,CAAAA,CAAU,CACpC,IACEmf,EAMEnf,EANFmf,QAAAA,CACAV,EAKEze,EALFye,QAAAA,CACAW,EAIEpf,EAJFof,eAAAA,CACAnJ,EAGEjW,EAHFiW,MAAAA,CACAoJ,EAEErf,EAFFqf,YAAAA,CACAC,EACEtf,EADFsf,YAAAA,CAGIC,EAAWvB,GAAwBmB,GACnCK,EAAWD,EAAS3L,KAAK,CAACzM,MAAM,CAElCsY,EAAOF,EAAS3L,KAAK,CAACtS,GAAG,CAAC,SAAC8c,CAAAA,CAAGrX,CAAAA,CAAM,CACtC,IAAM2Y,EAAiB7B,IAAAA,GAAa5Y,IAAI,CACpC0a,EAAYtQ,CAAAA,EAAAA,EAAAA,EAAAA,EACdG,KAAK0J,GAAG,CAACkF,EAAE3L,KAAK,EAChB,EACA,EACA4M,EACAC,GASIM,EAAMrB,GANQ,IAAI9F,GAAAA,GAAOA,CAC7B,CAAE,EAAC+G,EAAW,GAAK,GAAME,CAAAA,EAAkBA,EAAiB3Y,EAC5D,EACA,GAKA4Y,EACA,OAAS3d,MAAA,CAAF+E,GACPqX,EAAE3L,KAAK,CAAG,EAAIgM,EAAWW,CAAe,CACxCnJ,GAGF,MAAO,GAAA1K,EAAAlK,CAAA,KACFue,EACAxB,EAEP,GAEMyB,EAAmBJ,EACtB/Y,MAAM,CAAC,SAAC0X,CAAAA,CAAAA,QAAMA,EAAE3L,KAAK,CAAG,IACxBkD,MAAM,CAAC,SAACsD,CAAAA,CAAKmF,CAAAA,CAAAA,QAAM5O,KAAKyJ,GAAG,CAACA,EAAKmF,EAAE3Z,MAAM,GAAG,CAAC4Z,KAC1CyB,EAAsBL,EACzB/Y,MAAM,CAAC,SAAC0X,CAAAA,CAAAA,QAAMA,EAAE3L,KAAK,CAAG,IACxBkD,MAAM,CAAC,SAAClG,CAAAA,CAAK2O,CAAAA,CAAAA,QAAM5O,KAAKC,GAAG,CAACA,EAAK,CAAC2O,EAAE3Z,MAAM,GAAG4Z,KAC1C0B,EAAyB,CAAC,CAACN,EAAKO,IAAI,CAAC,SAAC5B,CAAAA,CAAAA,QAAMA,EAAE3L,KAAK,CAAG,IAsC5D,MAAO,CACLgN,KArCFA,EAAOA,EAAKne,GAAG,CAAC,SAAC8c,CAAAA,CAAGrX,CAAAA,CAAM,CACxB,IAAMkZ,EAAc,CAACR,EAAKtY,MAAM,CAAG,GAAK,EAElC+Y,EAAwB,EAAIC,KADHjH,GAAG,CAACnS,EAAI,EAAIkZ,GACYA,EAAe,GAChEG,EACJ,CAACrZ,IAAMkZ,EACH,EACAlZ,EAAIkZ,EAAc,EAClB,CAACC,EACDnZ,EAAIkZ,EACJC,EACA,CAAC,EAAI,EAEX,MAAO,GAAA5U,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KAEF+c,GAAAA,CAGHiC,eAAgB,IAAI5H,GAAAA,GAAOA,CACzB2F,EAAEa,IAAI,CAACnH,QAAQ,CAACnN,CAAC,CAAGyV,EACpB,CAAC,KAACP,CAAmB,EAClBE,CAAAA,EAAyBD,IAAAA,EAA6B,CAAC,GACvD1B,CAAAA,EAAE3L,KAAK,CAAG,EAAI,IAAM,EAAG,EAC1B2L,EAAEa,IAAI,CAACnH,QAAQ,CAACR,CAAC,EAEnBgJ,YAAa,IAAI7H,GAAAA,GAAOA,CACtB2F,EAAEa,IAAI,CAACnH,QAAQ,CAACnN,CAAC,CAAGyV,EACpB,KAACP,CAAmB,EACjBE,CAAAA,EAAyBD,IAAAA,EAA6B,CAAC,EACvD1B,CAAAA,EAAE3L,KAAK,CAAG,EAAI2L,EAAE3Z,MAAM,CAAG,OAAC2Z,EAAE3Z,MAAM,CAAO,EAC1C,CAAC2Z,EAAE3L,KAAK,CAAG,EAAI,EAAI,EAAE,EAAIyN,EAC3B9B,EAAEa,IAAI,CAACnH,QAAQ,CAACR,CAAC,GAGvB,GAIEuI,iBAAAA,EACAC,oBAAAA,EACAC,uBAAAA,CACF,CACF,EAEMQ,GAAyB,SAAC3M,CAAAA,CAAU,CACxC,IAAM4M,EAAgB5M,EAAM+B,MAAM,CAAC,SAAC8K,CAAAA,CAAKxL,CAAAA,CAAS,CAEhD,OADAwL,EAAOxL,EAAKxC,KAAK,EAEhB,GASH,MAAO,CACLmB,MARkBA,EAAMtS,GAAG,CAAC,SAAC2T,CAAAA,CAAS,CACtC,MAAO,GAAA3J,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACF4T,GAAAA,CACHxC,MAAOwC,EAAKxC,KAAK,CAAG+N,GAExB,EAIA,CACF,EAEME,GAAsB,SAAClc,CAAAA,CAAO0M,CAAAA,CAAOuN,CAAAA,CAAa,CACtD,IAAIC,EAAU,IAAIC,GAAAA,GAAIA,CACpB,IAAIC,GAAAA,CAAkBA,CACpBpa,EACAqZ,GAAa5Y,IAAI,CACjB4Y,GAAa5Y,IAAI,CACjB4Y,GAAaC,QAAQ,CACrBD,GAAaE,MAAM,GAUvB,OANAW,EAAQD,QAAQ,CAAGA,EACnBC,EAAQ5G,QAAQ,CAACC,GAAG,CAAC,EAAG,EAAG,GAC3B2G,EAAQI,IAAI,CAAG,OAAa9c,MAAA,CAANkP,GAEtBwN,EAAQK,MAAM,CAACC,MAAM,CDvOI,GCyOlB,CACLC,KAAMP,EACNla,MAAAA,CACF,CACF,EAEMmc,GAAgB,SAAC3gB,CAAAA,CAAU,CAC/B,IAAQ4T,EAAgD5T,EAAhD4T,KAAAA,CAAOgN,EAAyC5gB,EAAzC4gB,UAAAA,CAAyBC,EAAgB7gB,EAAhB6gB,WAAAA,CAElCC,EAAa,IAAIC,GAAAA,CAAUA,GAAGC,KAAK,CAACC,IAEpCL,EAAaM,EAActN,EAAMzM,MAAM,CAAG0Z,EAC1CtB,EAAWgB,GAAuB3M,GAEpCuN,EAAY,CAAC,EACbC,EAAgB,EAoFpB,MAAO,CACL3B,KAnFSF,EAAS3L,KAAK,CAACtS,GAAG,CAAC,SAAC8c,CAAAA,CAAGrX,CAAAA,CAAM,CACtC,IAGI0X,EAHE4C,EAAWjD,EAAE3L,KAAK,CAAGmO,EACrBU,EAAWlD,EAAEkD,QAAQ,EAAI5D,GAI7Be,EADEL,EAAEkD,QAAQ,IAAIH,EACLA,CAAS,CAACG,EAAS,CAEnBH,CAAS,CAACG,EAAS,CAAGlE,GAAsC,CACrEpC,eACEsG,KAhNkB3D,GAiNd4D,EAAmB,CAACD,EAAS,CAC7BC,EAAmB,CAAC7D,GAAc,CACxCzC,OAAQ,IAAI,CACZC,sBAAuB,EACvBE,qBAAsB,GAEtBE,YAAa,GACf,GAGF,IAAMsE,EAAMc,GACVW,EACA,OAASrf,MAAA,CAAF+E,GACP0X,EAASzC,aAAa,EAIlBwF,EAAe,IAAIC,GAAAA,CAAYA,CAAC,GAA2Bzf,MAAA,CAAxB0f,SAAStD,IAAAA,EAAE3L,KAAK,EAAQ,KAAI,CACnEkP,KAAMb,EACN7b,KAHe,IAIfR,OAAQ,GACRmd,aAAc,EAChB,GAEMC,EAAe,IAAIC,GAAAA,GAAiBA,CAAC,CACzC9gB,MAAOod,EAAE2D,UAAU,EAAI,QACzB,GAEMC,EAAW,IAAIrD,GAAAA,GAAIA,CAAC6C,EAAcK,GACxCG,EAASjD,MAAM,CAACC,MAAM,CDnSA,GCsStBgD,EAASlK,QAAQ,CAACC,GAAG,CADN,CAACsJ,EAAW,EAAI,EACC,KAAe,KAE/C,IAAMY,EAAW,IAAIC,GAAAA,GAAKA,CAE1BD,EAAS9J,GAAG,CAACyH,EAAIX,IAAI,EACrBgD,EAAS9J,GAAG,CAAC6J,GAEb,IAAMG,EAAQ,IAAOvB,EAAaQ,EAG5BgB,EAAe,IAAI3J,GAAAA,GAAOA,CAC9B0J,EAHgCA,EAASvB,EAAc,EAIvD,CAAC/C,GAAa5Y,IAAI,CAClB,GAGIod,EAAS,IAAOzB,EAAaQ,EAAgBC,EAG7CiB,EAAgB,IAAI7J,GAAAA,GAAOA,CAC/B4J,EAHiCA,EAAUzB,EAAc,EAIzD,CAAC/C,GAAa5Y,IAAI,CAClB,GAGIsd,EAAI,GAAAjX,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACLue,EACAxB,GAAAA,CACHa,KAAMgD,EACNb,cAAAA,EACAgB,aAAAA,EACAE,cAAAA,IAKF,OAFAlB,GAAiBC,EAAWR,EAErB0B,CACT,GAIEC,aAAcrB,CAChB,CACF,EAEMsB,GAAY,SAAC7C,CAAAA,CAAK8C,CAAAA,CAAO7C,CAAAA,CAAqB,CAClD,IAAMZ,EAAOW,EAAIX,IAAI,CACfxa,EAASmb,EAAInb,MAAM,CAEzBwa,EAAKyD,KAAK,CAAC7b,CAAC,CAAG6b,EAEX9C,EAAInN,KAAK,CAAG,EACdwM,EAAKnH,QAAQ,CAACjR,CAAC,CAAGpC,EAAUie,EAAS,EAAI7C,GAAAA,EAEzCZ,EAAKnH,QAAQ,CAACjR,CAAC,CAAG,CAAEpC,EAASie,EAAS,EAAI7C,GAAAA,CAE9C,EAEM8C,GAAY,SAAC/C,CAAAA,CAAK8C,CAAAA,CAAOE,CAAAA,CAAmB,CAChD,IAAM3D,EAAOW,EAAIX,IAAI,CACfza,EAAQob,EAAIpb,KAAK,CAEvBya,EAAKyD,KAAK,CAAC/X,CAAC,CAAG+X,EAEfzD,EAAKnH,QAAQ,CAACnN,CAAC,CACb,IAAOiY,EAAiBhD,EAAIwB,aAAa,CAAG,GAAM5c,EAAQke,CAC9D,qCCtWMG,GAAkCC,CAAAA,EAAAA,EAAAA,aAAAA,EALX,CAC3BC,gBAAiB,IAAI,CACrBC,6BAA8B,IAAI,GAK9BC,GAAiC,SAACC,CAAAA,CAAa,CACnD,IAAIC,EAAW,EAAE,CAEXC,EAAQ,IAAIC,GAAAA,GAAKA,CACjBC,EAAW,IAAIC,GAAAA,GAAaA,CAAC,CACjCC,OAAQN,EACRO,UAAW,OACXC,UAAW,GACXC,MAAO,EAET,GAEMC,EAAapU,KAAKyJ,GAAG,CAAC,IAAK7N,CAAAA,MAAAA,OAAAA,KAAAA,EAAAA,OAAQyY,gBAAgB,GAAI,GAE7DP,EAASQ,aAAa,CAACF,GAYvB,IAAMG,EAA8B,SAACT,CAAAA,CAAa,CAChD,IAAME,EAASF,EAASU,UAAU,CAE5Bxf,EAAQgf,EAAOS,WAAW,CAC1Bxf,EAAS+e,EAAOrY,YAAY,CAE5B+Y,EAAaV,EAAOhf,KAAK,GAAKA,GAASgf,EAAO/e,MAAM,GAAKA,EAK/D,OAJIyf,GACFZ,EAASa,OAAO,CAAC3f,EAAOC,EAAQ,IAG3Byf,CACT,EAEME,EAAe,UAGhB,KAFHC,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAe,IAAI,CACnBC,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAa,IAAIpI,GAAAA,GAAKA,CAAC,WAEjBqI,EAAOF,GAAgBjB,EAAMoB,cAAc,GAEjDT,EAA4BT,GAE5BA,EAASmB,cAAc,CAAC,IACxBnB,EAASoB,aAAa,CAACJ,EAAY,GACnChB,EAASqB,KAAK,CAAC,GAAM,IACrBrB,EAASmB,cAAc,CAAC,IAExB,IAAM5J,EAAY,cAA6B7Y,MAAA,CAAfoJ,OAAOwD,OAAO,CAAC,MAC/C0U,CAAAA,EAASU,UAAU,CAAChd,KAAK,CAAC6T,SAAS,CAAGA,MAEjC+J,EAAA,GAAAC,EAAA,GAAAC,EAAAlkB,KAAAA,MAAL,QAAKmkB,EAAAC,EAA6C7B,CAAAA,CAAAA,OAAAA,QAAAA,CAAAA,GAA7C,CAAAyB,CAAAA,EAAA,CAAAG,EAAAC,EAAAC,IAAA,IAAAC,IAAA,EAAAN,EAAA,GAAuD,CAAvD,IAAAO,EAAAJ,EAAAtS,KAAA,CAAQ2S,EAAAA,EAAAA,YAAAA,CAAcC,EAAAA,EAAAA,iBAAAA,CACnBC,EAAOF,EAAa3K,qBAAqB,GACvCtK,EAA4CmV,EAA5CnV,IAAAA,CAAMoV,EAAsCD,EAAtCC,KAAAA,CAAOrV,EAA+BoV,EAA/BpV,GAAAA,CAAKsV,EAA0BF,EAA1BE,MAAAA,CAAQhhB,EAAkB8gB,EAAlB9gB,KAAAA,CAAOC,EAAW6gB,EAAX7gB,MAAAA,CAQzC,GAAI,CALF+gB,CAAAA,EAAS,GACTtV,EAAMoT,EAASU,UAAU,CAAC7Y,YAAY,EACtCoa,EAAQ,GACRpV,EAAOmT,EAASU,UAAU,CAACC,WAAW,EAEtB,CAChB,IAAMwB,EAAoBnC,EAASU,UAAU,CAAC7Y,YAAY,CAAGqa,EAEvDE,EAAiB,CAACvV,EAAMsV,EAAkB,CAEhDnC,EAASqC,UAAU,CAACxV,EAAMsV,EAAmBjhB,EAAOC,GACpD6e,EAASsC,WAAW,CAACzV,EAAMsV,EAAmBjhB,EAAOC,GAErD4gB,EAAkBd,EAAMe,EAAMhC,EAAUoC,EAC1C,CAAC,WAnBEb,EAAA,GAAAC,EAAAe,cAAAjB,GAAAI,IAAA,EAAAA,EAAAc,MAAA,EAAAd,EAAAc,MAAA,cAAAjB,QAAAC,CAAA,EAsBLiB,sBAAsB3B,EACxB,EAEA,MAAO,CACL4B,iBAlEuB,SAACZ,CAAAA,CAAcC,CAAAA,CAAAA,QACtClC,EAAS8C,IAAI,CAAC,CACZb,aAAAA,EACAC,kBAAAA,CACF,IA+DAa,oBA7D0B,SAACd,CAAAA,CAAiB,CAC5CjC,EAAWA,EAASzc,MAAM,CAAC,SAACyf,CAAAA,CAAAA,QAAMA,EAAEf,YAAY,GAAKA,GACvD,EA4DEhB,aAAAA,EACAd,SAAAA,CACF,CACF,EAEM8C,GAAmC,SAAAzjB,CAAA,CAAkB,KAAfiD,EAAAA,EAAAA,QAAAA,CACdwC,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAI,KAAlCob,EAAqBpb,CAAAA,CAAAA,EAAAA,CAAbie,EAAaje,CAAAA,CAAAA,EAAAA,CACtB2a,EAAkBva,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,SAAC0a,CAAAA,CAAa,CAChDmD,EAAUnD,EACZ,EAAG,EAAE,EAGH9a,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,CAAC,MADL4a,EACL5a,CAAAA,CAAAA,EAAAA,CADmCke,EACnCle,CAAAA,CAAAA,EAAAA,CAwBF,MAtBAW,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACTya,GAIL8C,EAAgC,GAAAhb,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KAC3B4hB,GAA+BO,IAAAA,CAClCA,OAAAA,IAEJ,EAAG,CAACA,EAAO,EAEXza,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACR,iBAAkBia,GAOxBA,EAA6BoB,YAAY,EAC3C,EAAG,CAACpB,EAA6B,EAG/B,GAAAzd,EAAA9D,IAAA,EAACohB,GAAgC0D,QAAQ,EACvC9T,MAAOuQ,YACP,GAAAzd,EAAAzD,GAAA,EAAC0hB,SAAAA,CAAO7hB,IAAKohB,EAAiBnhB,UAAWT,KAAAA,MAAQ,GAChDyE,IAGP,CAEAwgB,CAAAA,GAAiC/jB,SAAS,CAAG,CAAC,EAC9C+jB,GAAiC3jB,YAAY,CAAG,CAAC,EE1FjD,IAAA+jB,GA1D8B,UAAe,KAAdC,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAO,CAAC,EACrCC,EAA0BD,EAAlBE,KAAAA,CAAAA,EAAAA,KAAAA,IAAAA,GAAaD,EAEOte,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAI,KAAlCob,EAAqBpb,CAAAA,CAAAA,EAAAA,CAAbie,EAAaje,CAAAA,CAAAA,EAAAA,CACgCS,EAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EAC1Dga,IADMmD,EAAoDnd,EAApDmd,gBAAAA,CAAkBE,EAAkCrd,EAAlCqd,mBAAAA,CAAqB5C,EAAaza,EAAbya,QAAAA,CA8C/C,MAAO,CACLsD,qBAvC2B,SAACC,CAAAA,CAAAA,KAAI3iB,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAQ,EAAE,OAC1C6E,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,GAAI,GAAYid,GAIZW,GACFG,QAAQC,IAAI,CACV,0DACAvD,GAIJ,IAAMwD,EAAYH,EAAG,CACnBvD,SAAAA,EACAE,OAAAA,EACAwC,iBAAAA,EACAiB,8BAA+B,SAACJ,CAAAA,CAAO,CACrCb,EAAiBxC,EAAQqD,EAC3B,CACF,GAEA,OAAO,UAAM,CACPF,GACFG,QAAQC,IAAI,CACV,wDACAvD,GAIqB,YAArB,OAAOwD,GACTA,IAGFd,EAAoB1C,EACtB,EA/BC,EAgCA,CAACA,EAAQwC,EAAkBE,EAA8B,CAAzDlkB,MAAA,CAAgD,GAAA6c,GAAAxd,CAAA,EAAG6C,MAItD6e,gBA5CsBva,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,SAAC0a,CAAAA,CAAa,CAChDmD,EAAUnD,EACZ,EAAG,EAAE,EA2CHM,OAAAA,EACAF,SAAAA,CACF,CACF,wBCXM4D,GAA0B,SAACC,CAAAA,CAAa,CAC5C,IAAMC,EAAkB,CAAC,EAEzBD,EAASrS,OAAO,CAAC,SAAC6E,CAAAA,CAAS/E,CAAAA,CAAU,CACnC,GAAK+E,GAIL,IAAM0N,EAAQ1N,EAAQc,qBAAqB,EAC3C2M,CAAAA,CAAe,CAACxS,EAAM,CAAG,EAAE,CAE3BuS,EAASrS,OAAO,CAAC,SAACwS,CAAAA,CAAcC,CAAAA,CAAe,CAC7C,GAAI3S,IAAU2S,GAGd,IAAMC,EAAQF,EAAa7M,qBAAqB,EAE9C4M,CAAAA,EAAM7B,MAAM,EAAIgC,EAAMtX,GAAG,EACzBmX,EAAMnX,GAAG,EAAIsX,EAAMhC,MAAM,EACzB6B,EAAM9B,KAAK,EAAIiC,EAAMrX,IAAI,EACzBkX,EAAMlX,IAAI,EAAIqX,EAAMjC,KAAK,EAEzB6B,CAAe,CAACxS,EAAM,CAACqR,IAAI,CAACsB,GAR7B,GARF,GAqBH,IAAIE,EAAe,EAAE,CACjBC,EAAmC,EAAE,CAEpC9C,EAAA,GAAAC,EAAA,GAAAC,EAAAlkB,KAAAA,MAAL,QAAKmkB,EAAAC,EAAkC2C,OAAOC,OAAO,CAACR,EAAAA,CAAAA,OAAAA,QAAAA,CAAAA,GAAjD,CAAAxC,CAAAA,EAAA,CAAAG,EAAAC,EAAAC,IAAA,IAAAC,IAAA,EAAAN,EAAA,IAAAiD,UAAmE,CAAnE,IAAA1C,EAAA,GAAA2C,EAAAzmB,CAAA,EAAA0jB,EAAAtS,KAAA,IAAOsV,EAAAA,CAAAA,CAAAA,EAAAA,CAASC,EAAAA,CAAAA,CAAAA,EAAAA,CAC6B,KAA5CP,EAAaQ,OAAO,CAACvG,SAASqG,KAIlCC,EAAclT,OAAO,CAAC,SAACoT,CAAAA,CAAmB,CACxCR,EAAiCzB,IAAI,CAACiC,GAEtCT,EAAaxB,IAAI,CAACvE,SAASqG,IAC3BN,EAAaxB,IAAI,CAACvE,SAASwG,GAC7B,EACF,aAXKrD,EAAA,GAAAC,EAAAe,cAAAjB,GAAAI,IAAA,EAAAA,EAAAc,MAAA,EAAAd,EAAAc,MAAA,cAAAjB,QAAAC,CAAA,EAaL,OAAO4C,CACT,EAEMS,GAAgB,SAACnoB,CAAAA,CAAU,CAC/B,IA8RmCC,EA7RjCE,EAOEH,EAPFG,KAAAA,CACAC,EAMEJ,EANFI,WAAAA,CACAE,EAKEN,EALFM,SAAAA,CACAC,EAIEP,EAJFO,QAAAA,CACAC,EAGER,EAHFQ,QAAAA,CACA4nB,EAEEpoB,EAFFooB,SAAAA,CACAxU,EACE5T,EADF4T,KAAAA,CAGIhL,EAAuBC,CAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,uBAAuBA,GAAK,CAAC,GAA7DF,gBAAAA,CAEFsL,EAAcC,CAAAA,EAAAA,GAAAA,CAAAA,EAAe,KAEjC/L,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAK,GADTigB,EACLjgB,CAAAA,CAAAA,EAAAA,CAD+BkgB,EAC/BlgB,CAAAA,CAAAA,EAAAA,CAEImgB,EAAY9a,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,EAAE,EACrB+a,EAAwB/a,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,EAAE,EAER9M,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,GAAKC,KAAAA,EAAW,IAAI,GAApEC,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CAE7B8nB,EAAAA,GAAsB,CAAE9B,MAAO,EAAM,GAD/BC,EACN6B,EADM7B,oBAAAA,CAAsB7D,EAC5B0F,EAD4B1F,eAAAA,CAAiBS,EAC7CiF,EAD6CjF,MAAAA,CAM3Cpb,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,EAAE,KAFbsgB,EAEEtgB,CAAAA,CAAAA,EAAAA,CADFugB,EACEvgB,CAAAA,CAAAA,EAAAA,CAEJW,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd4f,EAA0C,EAAE,EAC5Cxf,WACE,kBACEwf,EACEzB,GAAwBsB,EAAsBtd,OAAO,IAEzD,KAEJ,EAAG,CAACgJ,EAAapT,EAAU,EAE3B8lB,EACE,SAAAjkB,CAAA,CAAiD,CAA9C2gB,EAAAA,QAAAA,KAAU2D,EAAAA,EAAAA,6BAAAA,CACX,GAAKrT,GAKL,IAA0BqD,EAAAA,GAAgB,CACxCE,OAFaqM,EAAOoF,WAAW,CAAGpF,EAAOqF,YAAY,CAGrDxR,eAAgB,CACd1M,EAAG,EACH9D,EAAG,GACHyQ,EAAG,EACL,EACAE,cAAe,CACb7M,EAAG,IACH9D,EAAG,GACHyQ,EAAG,EACL,EACAI,eAAgB,EAClB,GAbQE,EAAkBX,EAAlBW,MAAAA,CAAQnJ,EAAUwI,EAAVxI,KAAAA,CA8BakS,EAAAA,GAAc,CACzC/M,MAAAA,EACAgN,WAlIqB,GAmIrBC,YAlIqB,EAmIvB,GAJMpB,EAAuBkB,EAAvBlB,IAAAA,CAAM+C,EAAiB7B,EAAjB6B,YAAAA,CAMZ/C,EAAK3K,OAAO,CAAC,SAACsJ,CAAAA,CAAM,CAClB3P,EAAM0J,GAAG,CAACiG,EAAEa,IAAI,CAClB,GAEA,IAAM6J,EAAkB,EAAoC,EAAR,IAAS,CAC7DrJ,EAAK3K,OAAO,CAAC,SAACsJ,CAAAA,CAAM,CAClBuE,GAAUvE,EAAG0K,EA5IQ,IA6IrB1K,EAAEa,IAAI,CAAC8J,QAAQ,CAACpe,CAAC,CAAG6E,KAAAA,KAAKoJ,EAAE,GAK7B,IAAIoQ,EAAe,CACjBC,KAAM,GACNC,KAAM,GACNve,EAAG,GACH9D,EAAG,GACHsiB,KAAM,GACNC,KAAM,GACNC,WAAY,CACd,EAEIC,EAA2B,GAAA/d,EAAAlK,CAAA,KAC1B2nB,GAGCO,EAAgBC,CAAAA,EAAAA,GAAAA,CAAAA,EAAS,GAAI,SAACC,CAAAA,CAAM,CACxC,IAAMC,EAASlG,EAAO/I,qBAAqB,GAErCwO,EAAOQ,EAAEE,OAAO,CAAGD,EAAOvZ,IAAI,CAC9B+Y,EAAOO,EAAEG,OAAO,CAAGF,EAAOxZ,GAAG,CAE7BvF,EAAIse,EAAOS,EAAOllB,KAAK,CACvBqC,EAAI,EAAIqiB,EAAOQ,EAAOjlB,MAAM,CAiBlCukB,EAfoB,CAElBC,KAAAA,EACAC,KAAAA,EAEAve,EAAAA,EACA9D,EAAAA,EAEAsiB,KAAMxe,EAAAA,EAAQ,EACdye,KAAM,CAACviB,EAAI,GAAK,EAAI,EAEpBwiB,WAAY7Z,KAAKqa,IAAI,CAACZ,EAAOK,EAAyBL,IAAI,EAC1Da,WAAYta,KAAKqa,IAAI,CAACX,EAAOI,EAAyBJ,IAAI,CAC5D,EAGAI,EAA2B,GAAA/d,EAAAlK,CAAA,KACtB2nB,EAEP,GAEA5d,OAAO7B,gBAAgB,CAAC,cAAeggB,GAEvC,IAAMQ,EAAY,IAAIC,GAAAA,GAASA,CAC3BC,EAAoB,EAAE,CAEpBC,EAA8B,UAAM,CACxCH,EAAUI,aAAa,CACrB,CACExf,EAAGqe,EAAaG,IAAI,CACpBtiB,EAAGmiB,EAAaI,IAAI,EAEtBxR,GAIF,IAAMwS,EACJC,EAF2BC,gBAAgB,CAAC7b,EAAM7I,QAAQ,CAAE,IAEjDc,MAAM,CAAC,SAAC6jB,CAAAA,CAAAA,QAAMA,EAAEC,MAAM,CAAC1L,IAAI,CAACmJ,OAAO,CAAC,QAAU,MAAO,EAAE,CAG9DwC,EAAqB,GAAA5L,GAAAxd,CAAA,EAAG+oB,GACxBM,EAAuBN,EAAc1jB,MAAM,CAC/C,SAACikB,CAAAA,CAAAA,QACCV,IAAAA,EAAkBvjB,MAAM,CAAC,SAACtE,CAAAA,CAAAA,QAAMA,EAAEooB,MAAM,CAACI,IAAI,GAAKD,EAAGH,MAAM,CAACI,IAAI,GAC7DzjB,MAAM,GAKb,OAFA8iB,EAAqB,GAAApL,GAAAxd,CAAA,EAAGopB,GAEjBC,CACT,EAgHA,OA5GI5pB,GAAa,CAACunB,GAA4Bzf,EAC5C6W,EAAK3K,OAAO,CAAC,SAAC8K,CAAAA,CAAQ,CAGpB/b,CAAAA,EAAAA,GAAAA,CAAAA,EAAQ,EAAG,EAAG,CACZE,SAHmB,EAInBqO,SAAU,SAAChQ,CAAAA,CAAM,CACfugB,GAAU/C,EAAKxd,EAtOA,GAuOjB,EACAkQ,WAAY,UAAM,CAChBgW,EAA4B,GAC9B,CACF,GAEAzkB,CAAAA,EAAAA,GAAAA,CAAAA,EAAQ+b,EAAIX,IAAI,CAAC8J,QAAQ,CAACpe,CAAC,CAAEiV,EAAIX,IAAI,CAAC8J,QAAQ,CAACpe,CAAC,CAAG6E,EAAAA,KAAKoJ,EAAE,CAAM,CAC9D7U,SAbmB,EAcnBqO,SAAU,SAACyY,CAAAA,CAAM,CACfjL,EAAIX,IAAI,CAAC8J,QAAQ,CAACpe,CAAC,CAAGkgB,CACxB,CACF,EACF,IACS/pB,GAAcunB,GAA6Bzf,GACpD0f,EAA4B,IAI9BrB,EACE,SAAC1C,CAAAA,CAAM9K,CAAAA,CAAY6J,CAAAA,CAAUoC,CAAAA,CAAmB,CAE9C9N,EAAOT,MAAM,CAAGsC,EAAWjV,KAAK,CAAGiV,EAAWhV,MAAM,CACpDmT,EAAO0B,sBAAsB,GAI7BqO,OAAOmD,MAAM,CAACtI,GAAc1N,OAAO,CAAC,SAAAnS,CAAA,CAA6B,KAA1BwZ,EAAAA,EAAAA,mBAAAA,CAIrCA,EAAoBI,eAAe,CAAC9J,KAAK,CAAGiT,EAE5CvJ,EAAoBG,WAAW,CAAC7J,KAAK,CAAG,CACtCgH,EAAWjV,KAAK,CAChBiV,EAAWhV,MAAM,CAClB,CACD0X,EAAoBM,aAAa,CAAChK,KAAK,CAAG,CACxCuW,EAAare,CAAC,CACdqe,EAAaniB,CAAC,CACf,CAEDsV,EAAoBC,KAAK,CAAC3J,KAAK,CAAG8R,EAClCpI,EAAoBK,WAAW,CAAC/J,KAAK,CAAG6Q,EAASyH,aAAa,EAChE,GAGAb,IAA8BpV,OAAO,CAAC,SAAC8K,CAAAA,CAAQ,CAC7C,IACEA,EAAAA,EAGAA,EAAAA,EAJIoL,EAAaxb,KAAK0J,GAAG,CACzB0G,CAAAA,IAAmB,GAAnBA,CAAAA,EAAAA,EAAI4K,MAAM,CAACS,QAAQ,GAAnBrL,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,IAAqBsL,GAArBtL,CAAAA,EAAAA,EAAqBsL,gBAAAA,GAAAA,KAAAA,IAAAA,EAArBtL,KAAAA,EAAAA,EAAuCqJ,IAAF,EAASD,EAAaC,IAAI,EAE3DkC,EAAa3b,KAAK0J,GAAG,CACzB0G,CAAAA,IAAmB,GAAnBA,CAAAA,EAAAA,EAAI4K,MAAM,CAACS,QAAQ,GAAnBrL,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,IAAqBsL,GAArBtL,CAAAA,EAAAA,EAAqBsL,gBAAAA,GAAAA,KAAAA,IAAAA,EAArBtL,KAAAA,EAAAA,EAAuCsJ,IAAF,EAASF,EAAaE,IAAI,EAK7D8B,GAAc,GAAKG,GAAc,GAIrCtnB,CAAAA,EAAAA,GAAAA,CAAAA,EAAQ2L,CAAAA,CAAAA,KAAKoJ,EAAE,CAAIoQ,EAAac,UAAU,EAAEta,KAAAA,KAAKoJ,EAAE,CAAU,CAE3D3O,KAAM,SACNmhB,UAAW,IACXC,SAAU,EACVC,KAAM,GACNrZ,OAAQ,UAAM,CACZ2N,EAAI4K,MAAM,CAACS,QAAQ,CAACC,gBAAgB,CAAG,GAAA3f,EAAAlK,CAAA,KAAK2nB,EAC9C,EACA5W,SAAU,SAACmZ,CAAAA,CAAM,CACf3L,EAAI4K,MAAM,CAACgB,MAAM,CAACzC,QAAQ,CAACpe,CAAC,CAAG4gB,CACjC,CACF,EACF,GAIAjI,EAASmI,MAAM,CAAChd,EAAOmJ,GAGvB2Q,EAAUrd,OAAO,CAAC4J,OAAO,CAAC,SAAC5D,CAAAA,CAAOnK,CAAAA,CAAM,CACtC,IAAM6Y,EAAMH,CAAI,CAAC1Y,EAAE,CAOnByS,GAAuC,CACrC5B,OAAAA,EACA6B,WAAAA,EACAC,mBAPAkG,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAK8L,cAAc,IAAK,QACpB9L,EAAI0C,aAAa,CACjB1C,EAAIwC,YAAY,CAMpBzI,QAASzI,EAAMyI,OAAO,CACtBK,YAAa,GACbE,UAAW0F,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAK8L,cAAc,IAAK,OACrC,EACF,EACF,GAGK,UAAM,CACXtgB,OAAO9B,mBAAmB,CAAC,cAAeigB,EAC5C,EA9OC,EAgPH,CAAChB,EAAWznB,EAAWunB,EAAyB,EAGlD,IAAMpnB,EAAUC,IAAWC,KAAAA,IAAM,CAAElB,CAAAA,EAAA,GACjC,GAAAoO,EAAAhN,CAAA,EADiCpB,EAChCkB,KAAAA,OAAS,CAAGL,GACb,GAAAuN,EAAAhN,CAAA,EAFiCpB,EAEhCkB,KAAAA,aAAe,CAAGinB,SAAAA,GAFcnoB,CAAA,GAKnC,MACE,GAAAsF,EAAA9D,IAAA,EAACC,MAAAA,CAAIC,IAAKd,EAAWe,UAAWX,YAC9B,GAAAsE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAU,gBACb,GAAA2D,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,cAAgB,UAC7BhB,GACC,GAAAoF,EAAAzD,GAAA,EAAC/B,GAAAA,CAAeA,CAAAA,CACdI,MAAOA,EACPC,YAAaA,EACbE,UAAWA,EACXC,SAAUA,EACVC,SAAUA,EACVN,MAAOkoB,QAKf,GAAA7iB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAU,gBACb,GAAA2D,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,SAAW,UACzB,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIC,IAAKohB,EAAiBnhB,UAAWT,KAAAA,MAAQ,UAC5C,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,MAAQ,UACrByS,EAAMtS,GAAG,CAAC,SAAC0N,CAAAA,CAAGjI,CAAAA,CAAM,CACnB,IAAuD9G,EAAjD0rB,EAAoBzqB,IAAWC,KAAAA,cAAgB,CAAElB,CAAAA,EAAA,GACrD,GAAAoO,EAAAhN,CAAA,EADqDpB,EACpDkB,KAAAA,OAAS,CAAGL,GAAaunB,GAC1B,GAAAha,EAAAhN,CAAA,EAFqDpB,EAEpDkB,KAAAA,MAAQ,CACPunB,KAAAA,EAAuCT,OAAO,CAC5CvG,SAAS3a,KAEb,GAAAsH,EAAAhN,CAAA,EANqDpB,EAMpDkB,KAAAA,YAAc,CAAG6N,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAG0c,cAAc,IAAK,SANazrB,CAAA,GASvD,MACE,GAAAsF,EAAAzD,GAAA,EAACJ,MAAAA,UACC,GAAA6D,EAAAzD,GAAA,EAACJ,MAAAA,CACCE,UAAWT,KAAAA,SAAW,CACtBQ,IAAK,SAACoT,CAAAA,CAAO,CACXwT,EAAUrd,OAAO,CAACnE,EAAE,CAAG,CACrB4S,QAAS5E,CACX,CACF,WACA,GAAAxP,EAAA9D,IAAA,EAACC,MAAAA,CACCC,IAAK,SAACoT,CAAAA,CAAO,CACXyT,EAAsBtd,OAAO,CAACnE,EAAE,CAAGgO,CACrC,EACAnT,UAAW+pB,YACX,GAAApmB,EAAAzD,GAAA,EAACwC,OAAAA,CACC1C,UAAWT,KAAAA,KAAO,CAClBU,GAAI,sBAAwBG,MAAA,CAAF+E,YAC1B,GAAAxB,EAAAzD,GAAA,EAACuD,GAAAA,CAAOA,CAAAA,CAACC,KAAM0J,EAAEkC,KAAK,KAExB,GAAA3L,EAAA9D,IAAA,EAAC6C,OAAAA,CACC1C,UAAU,UACVgqB,kBAAiB,sBAAwB5pB,MAAA,CAAF+E,aACtCiI,EAAEyD,KAAK,CAAC,aArBP1L,EA2Bd,aAOd,CAEAohB,CAAAA,GAAc9lB,SAAS,CAAG,CACxBlC,MAAOmC,IAAAA,MAAgB,CACvBlC,YAAakC,IAAAA,MAAgB,CAC7BhC,UAAWgC,IAAAA,MAAgB,CAC3B/B,SAAU+B,IAAAA,MAAgB,CAC1B9B,SAAU8B,IAAAA,MAAgB,CAC1B8lB,UAAW9lB,IAAAA,KAAe,CAAC,CAAC,QAAS,OAAO,EAC5CsR,MAAOtR,IAAAA,OAAiB,CACtBA,IAAAA,KAAe,CAAC,CACdgf,SAAUhf,IAAAA,KAAe,CAAC,CACxB,GACAib,GACAC,GACAC,GACAC,GACD,EACDjL,MAAOnQ,IAAAA,MAAAA,CAAAA,UAA2B,CAClC4O,MAAO5O,IAAAA,MAAAA,CAAAA,UAA2B,CAClCyf,WAAYzf,IAAAA,MAAgB,CAC5BopB,eAAgBppB,IAAAA,KAAe,CAAC,CAAC,GAAI,OAAQ,QAAQ,CACvD,GAAGupB,UAAU,EACbA,UAAU,EAGd1D,GAAc1lB,YAAY,CAAG,CAC3BmR,MAAO,EAAE,6BCjbLkY,GAA2B,CAC/BjQ,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,KACxD7B,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,KACxD9B,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,IACvD,EAEMmO,GAA2B,CAC/BlQ,oBAAqB,IAAIK,GAAAA,GAAKA,CAAC,SAAU0B,cAAc,CAAC,GACxD7B,oBAAqB,IAAIG,GAAAA,GAAKA,CAAC,SAAU0B,cAAc,CAAC,GACxD9B,iBAAkB,IAAII,GAAAA,GAAKA,CAAC,UAAU0B,cAAc,CAAC,EACvD,EAIMoO,GAAa,SAAChsB,CAAAA,CAAU,CAC5B,IAuWmCC,EAtWjCE,EAgBEH,EAhBFG,KAAAA,CACAC,EAeEJ,EAfFI,WAAAA,CACAE,EAcEN,EAdFM,SAAAA,CACAC,EAaEP,EAbFO,QAAAA,CACAC,EAYER,EAZFQ,QAAAA,CACA2e,EAWEnf,EAXFmf,QAAAA,CACAjf,EAUEF,EAVFE,KAAAA,CACAkoB,EASEpoB,EATFooB,SAAAA,CACAnS,EAQEjW,EARFiW,MAAAA,CAGAoJ,EAKErf,EALFqf,YAAAA,CACAC,EAIEtf,EAJFsf,YAAAA,CAEA2M,EAEEjsB,EAFFisB,kBAAAA,CACAC,EACElsB,EADFksB,YAAAA,CAGItjB,EAAuBC,CAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,uBAAuBA,GAAK,CAAC,GAA7DF,gBAAAA,CAEoBR,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAI,KAAlC6S,EAAqB7S,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAC5B,IACEA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAK,GADTigB,EACLjgB,CAAAA,CAAAA,EAAAA,CAD+BkgB,EAC/BlgB,CAAAA,CAAAA,EAAAA,CAEImgB,EAAY9a,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,EAAE,EACrB0e,EAAiB1e,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,EAAE,EAED9M,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,GAAKC,KAAAA,EAAW,IAAI,GAApEC,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CACzByrB,EAAWxf,CAAAA,EAAAA,EAAAA,CAAAA,EAAe,sBAG9B6b,EAAAA,GAAsB,CAAE9B,MAAO,EAAM,GAD/BC,EACN6B,EADM7B,oBAAAA,CAAsB7D,EAC5B0F,EAD4B1F,eAAAA,CAAiBS,EAC7CiF,EAD6CjF,MAAAA,CAC7CiF,EADqDnF,QAAAA,CAGvD,IAAM+I,EACJlN,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAUvL,KAAK,CAAClN,MAAM,CAAC,SAACK,CAAAA,CAAAA,QAAMA,EAAE0L,KAAK,CAAG,IAAGtL,MAAM,EAAG,EAmBtDyf,EACE,SAAAjkB,CAAA,CAAiD,CAA9C2gB,EAAAA,QAAAA,KAAU2D,EAAAA,EAAAA,6BAAAA,CACX,GAAK9H,MAAAA,EAAAA,KAAAA,EAAAA,EAAUvL,KAAK,EAIpB,IAAMuD,EAASqM,EAAOoF,WAAW,CAAGpF,EAAOqF,YAAY,CAEjD7N,EACJ9a,IAAUmd,GACNyO,GACAC,EAAwB,CAEJ9U,EAAAA,GAAgB,CACxCE,OAAAA,EACAO,eAAgB,EAClB,GAHQE,EAAkBX,EAAlBW,MAAAA,CAAQnJ,EAAUwI,EAAVxI,KAAAA,CAgBdsM,EAAAA,GAA4B,CAC1BC,eAAAA,EACAC,OAAAA,EACAC,sBAAuB,GAIvBI,YAAa,GACf,GATMU,EACNjB,EADMiB,aAAAA,CAAeG,EACrBpB,EADqBoB,mBAAAA,CAcnBpB,EAAAA,GAA4B,CAC9BC,eAAgB,CACda,oBAAqBb,EAAec,gBAAgB,CACpDC,oBAAqBf,EAAee,mBAAmB,CACvDD,iBAAkBd,EAAea,mBAAmB,EAEtDZ,OAAAA,EACAC,sBAAuB,GAIvBI,YAAa,GACf,GAdEU,EAEEjB,EAFFiB,aAAAA,CACAG,EACEpB,EADFoB,mBAAAA,CAsBE+C,EAAAA,GAAmB,CACrBC,SAAAA,EACAV,SAAUzC,EACVoD,gBAAiBkN,EACjBjN,aAAAA,EACAC,aAAAA,EACArJ,OAAAA,CACF,GAXEwJ,EAIEP,EAJFO,IAAAA,CACAI,EAGEX,EAHFW,gBAAAA,CACAC,EAEEZ,EAFFY,mBAAAA,CACAC,EACEb,EADFa,sBAAAA,CAUIwM,EAAY,IAAIrK,GAAAA,GAAKA,CAC3BzC,EAAK3K,OAAO,CAAC,SAACsJ,CAAAA,CAAM,CAClBmO,EAAUpU,GAAG,CAACiG,EAAEa,IAAI,CACtB,GAEAxQ,EAAM0J,GAAG,CAACoU,GAEV,IAAMlU,EAAc,IAAImU,GAAAA,GAAIA,CAG5B,GAFAnU,EAAYoU,aAAa,CAACF,GAEtBxM,EAAwB,CAC1B,IAAM2M,EAAerU,EAAY5I,GAAG,CAAC6K,KAAK,GACpCqS,EAAetU,EAAYY,GAAG,CAACqB,KAAK,EAE1CoS,CAAAA,EAAa7lB,CAAC,CAAGwR,EAAY5I,GAAG,CAAC5I,CAAC,CAAGiZ,EACrC6M,EAAa9lB,CAAC,CAAGgZ,GAAAA,EAEjBxH,EAAYN,GAAG,CAAC2U,EAAcC,EAChC,CAAC,GAGyB/U,EAAQS,EAAa6T,EAD5B,IAGfnM,GACFwM,CAAAA,EAAUzU,QAAQ,CAACjR,CAAC,EAAIiZ,GAAAA,CAAsB,EAGhD,IAAMgJ,EAAkB,EAAoC,EAAR,IAAS,CAE7DrJ,EAAK3K,OAAO,CAAC,SAACsJ,CAAAA,CAAM,CAClBqE,GAAUrE,EAAG0K,EAAiBjJ,EAChC,GAIA,IAAImJ,EAAe,CACjBC,KAAM,GACNC,KAAM,GACNve,EAAG,GACH9D,EAAG,GACHsiB,KAAM,GACNC,KAAM,GACNC,WAAY,CACd,EAEIC,EAA2B,GAAA/d,EAAAlK,CAAA,KAC1B2nB,GAGCO,EAAgBC,CAAAA,EAAAA,GAAAA,CAAAA,EAAS,GAAI,SAACC,CAAAA,CAAM,CACxC,IAAMC,EAASlG,EAAO/I,qBAAqB,GAErCwO,EAAOQ,EAAEE,OAAO,CAAGD,EAAOvZ,IAAI,CAC9B+Y,EAAOO,EAAEG,OAAO,CAAGF,EAAOxZ,GAAG,CAE7BvF,EAAIse,EAAOS,EAAOllB,KAAK,CACvBqC,EAAI,EAAIqiB,EAAOQ,EAAOjlB,MAAM,CAgBlCukB,EAdoB,CAElBC,KAAAA,EACAC,KAAAA,EAEAve,EAAAA,EACA9D,EAAAA,EAEAsiB,KAAMxe,EAAAA,EAAQ,EACdye,KAAM,CAACviB,EAAI,GAAK,EAAI,EAEpBwiB,WAAY7Z,KAAKqa,IAAI,CAACZ,EAAOK,EAAyBL,IAAI,CAC5D,EAGAK,EAA2B,GAAA/d,EAAAlK,CAAA,KACtB2nB,EAEP,GAEA5d,OAAO7B,gBAAgB,CAAC,cAAeggB,GAEvC,IAAMQ,EAAY,IAAIC,GAAAA,GAASA,CAC3BC,EAAoB,EAAE,CAEpBC,EAA8B,UAAM,CACxCH,EAAUI,aAAa,CACrB,CACExf,EAAGqe,EAAaG,IAAI,CACpBtiB,EAAGmiB,EAAaI,IAAI,EAEtBxR,GAIF,IAAMwS,EACJC,EAF2BC,gBAAgB,CAAC7b,EAAM7I,QAAQ,CAAE,IAEjDc,MAAM,CAAC,SAAC6jB,CAAAA,CAAAA,QAAMA,EAAEC,MAAM,CAAC1L,IAAI,CAACmJ,OAAO,CAAC,QAAU,MAAO,EAAE,CAG9DwC,EAAqB,GAAA5L,GAAAxd,CAAA,EAAG+oB,GACxBM,EAAuBN,EAAc1jB,MAAM,CAC/C,SAACikB,CAAAA,CAAAA,QACCV,IAAAA,EAAkBvjB,MAAM,CAAC,SAACtE,CAAAA,CAAAA,QAAMA,EAAEooB,MAAM,CAACI,IAAI,GAAKD,EAAGH,MAAM,CAACI,IAAI,GAC7DzjB,MAAM,GAKb,OAFA8iB,EAAqB,GAAApL,GAAAxd,CAAA,EAAGopB,GAEjBC,CACT,EA+GA,OA3GI5pB,GAAa,CAACunB,GAA4Bzf,EAC5C6W,EAAK3K,OAAO,CAAC,SAAC8K,CAAAA,CAAQ,CACpB/b,CAAAA,EAAAA,GAAAA,CAAAA,EAAQ,EAAG,EAAG,CACZE,SAAU,EACVqO,SAAU,SAAChQ,CAAAA,CAAM,CACfwd,EAAIX,IAAI,CAAC8J,QAAQ,CAACliB,CAAC,CAAGzE,EAAIoN,KAAKoJ,EAAE,CAAG,EACpC6J,GAAU7C,EAAKxd,EAAGyd,EACpB,EACAvN,WAAY,UAAM,CAChBgW,EAA4B,GAC9B,CACF,EACF,IACSxnB,GAAcunB,GAA6Bzf,GACpD0f,EAA4B,IAI9BrB,EACE,SAAC1C,CAAAA,CAAM9K,CAAAA,CAAY6J,CAAAA,CAAUoC,CAAAA,CAAmB,CAE9C9N,EAAOT,MAAM,CAAGsC,EAAWjV,KAAK,CAAGiV,EAAWhV,MAAM,CACpDmT,EAAO0B,sBAAsB,GAO7BsT,EAA2BrQ,eAAe,CAAC9J,KAAK,CAC9C0J,EAAoBI,eAAe,CAAC9J,KAAK,CAAGiT,EAE9CkH,EAA2BtQ,WAAW,CAAC7J,KAAK,CAC1C0J,EAAoBG,WAAW,CAAC7J,KAAK,CAAG,CACtCgH,EAAWjV,KAAK,CAChBiV,EAAWhV,MAAM,CAClB,CACHmoB,EAA2BxQ,KAAK,CAAC3J,KAAK,CACpC0J,EAAoBC,KAAK,CAAC3J,KAAK,CAAG8R,EACpCqI,EAA2BnQ,aAAa,CAAChK,KAAK,CAC5C0J,EAAoBM,aAAa,CAAChK,KAAK,CAAG,CACxCuW,EAAare,CAAC,CACdqe,EAAaniB,CAAC,CACf,CACH+lB,EAA2BpQ,WAAW,CAAC/J,KAAK,CAC1C0J,EAAoBK,WAAW,CAAC/J,KAAK,CAAG6Q,EAASyH,aAAa,GAGhEb,IAA8BpV,OAAO,CAAC,SAAC8K,CAAAA,CAAQ,CAC7C,IACEA,EAAAA,EAGAA,EAAAA,EAJIoL,EAAaxb,KAAK0J,GAAG,CACzB0G,CAAAA,IAAmB,GAAnBA,CAAAA,EAAAA,EAAI4K,MAAM,CAACS,QAAQ,GAAnBrL,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,IAAqBsL,GAArBtL,CAAAA,EAAAA,EAAqBsL,gBAAAA,GAAAA,KAAAA,IAAAA,EAArBtL,KAAAA,EAAAA,EAAuCqJ,IAAF,EAASD,EAAaC,IAAI,EAE3DkC,EAAa3b,KAAK0J,GAAG,CACzB0G,CAAAA,IAAmB,GAAnBA,CAAAA,EAAAA,EAAI4K,MAAM,CAACS,QAAQ,GAAnBrL,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,IAAqBsL,GAArBtL,CAAAA,EAAAA,EAAqBsL,gBAAAA,GAAAA,KAAAA,IAAAA,EAArBtL,KAAAA,EAAAA,EAAuCsJ,IAAF,EAASF,EAAaE,IAAI,EAK7D8B,GAAc,GAAKG,GAAc,GAIrCtnB,CAAAA,EAAAA,GAAAA,CAAAA,EAAQ,EAAG2L,KAAKoJ,EAAE,CAAGoQ,EAAaK,UAAU,CAAE,CAC5Cpf,KAAM,SACNmhB,UAAW,IACXC,SAAU,EACVC,KAAM,GACNrZ,OAAQ,UAAM,CACZ2N,EAAI4K,MAAM,CAACS,QAAQ,CAACC,gBAAgB,CAAG,GAAA3f,EAAAlK,CAAA,KAAK2nB,EAC9C,EACA5W,SAAU,SAACmZ,CAAAA,CAAM,CACf3L,EAAI4K,MAAM,CAACzB,QAAQ,CAACliB,CAAC,CAAG0kB,CAC1B,CACF,EACF,GAIAjI,EAASmI,MAAM,CAAChd,EAAOmJ,GAGvB2Q,EAAUrd,OAAO,CAAC4J,OAAO,CAAC,SAAC5D,CAAAA,CAAOnK,CAAAA,CAAM,CAGtCyS,GAAuC,CACrC5B,OAAAA,EACA6B,WAAAA,EACAC,mBALiB+F,CAAI,CAAC1Y,EAAE,CAACsZ,cAAc,CAAC/F,KAAK,GAM7CX,QAASzI,EAAMyI,OAAO,CACtBG,kBAAmB2F,CAAI,CAAC1Y,EAAE,CAAC0L,KAAK,CAAG,CACrC,EACF,GAEA0Z,EAAejhB,OAAO,CAAC4J,OAAO,CAAC,SAAC5D,CAAAA,CAAOnK,CAAAA,CAAM,CAG3CyS,GAAuC,CACrC5B,OAAAA,EACA6B,WAAAA,EACAC,mBALc+F,CAAI,CAAC1Y,EAAE,CAACuZ,WAAW,CAAChG,KAAK,GAMvCX,QAASzI,EAAMyI,OAAO,CACtBG,iBAAAA,EAAmB2F,CAAAA,CAAI,CAAC1Y,EAAE,CAAC0L,KAAK,CAAG,EACrC,EACF,EACF,GAGK,UAAM,CACXrH,OAAO9B,mBAAmB,CAAC,cAAeigB,EAC5C,EAhSC,EAkSH,CACErpB,EACA+a,EACAsN,EACA4D,EACArrB,EACAunB,EACA+D,EACD,EAGH,IAAMnrB,EAAUC,IAAWC,KAAAA,IAAM,CAAElB,CAAAA,EAAA,GACjC,GAAAoO,EAAAhN,CAAA,EADiCpB,EAChCkB,KAAAA,WAAa,CAAG,CAAC,CAAC8qB,GACnB,GAAA5d,EAAAhN,CAAA,EAFiCpB,EAEhCkB,KAAAA,iBAAmB,CAAGkrB,GACvB,GAAAhe,EAAAhN,CAAA,EAHiCpB,EAGhCkB,KAAAA,WAAa,CAAG8U,IAAWqH,IAC5B,GAAAjP,EAAAhN,CAAA,EAJiCpB,EAIhCkB,KAAAA,aAAe,CAAGinB,SAAAA,GAJcnoB,CAAA,GAOnC,MACE,GAAAsF,EAAA9D,IAAA,EAACC,MAAAA,CAAIC,IAAKd,EAAWe,UAAWX,YAC9B,GAAAsE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAU,gBACb,GAAA2D,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,cAAgB,UAC7BhB,GACC,GAAAoF,EAAAzD,GAAA,EAAC/B,GAAAA,CAAeA,CAAAA,CACdI,MAAOA,EACPG,UAAWA,EACXC,SAAUA,EACVC,SAAUA,EACVJ,YAAaA,EACbF,MAAOkoB,QAKf,GAAA7iB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,SAAW,UACzB,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CACCC,IAAKohB,EACLnhB,UAAWT,KAAAA,MAAQ,CACnB6F,MACEilB,EACI,CACEY,SAAU,GAAsB7qB,MAAA,CAAnBiqB,EAAmB,KAClC,EACA,CAAC,CAAC,UAER,GAAA1mB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,MAAQ,UACrBge,MAAAA,EAAAA,KAAAA,EAAAA,EAAUvL,KAAK,CAACtS,GAAG,CAAC,SAAC0N,CAAAA,CAAGjI,CAAAA,CAAM,CAC7B,IAAiE9G,EAKVqK,EALjDwiB,EAAyB5rB,IAAWC,KAAAA,mBAAqB,CAAElB,CAAAA,EAAA,GAC/D,GAAAoO,EAAAhN,CAAA,EAD+DpB,EAC9DkB,KAAAA,OAAS,CAAGL,GACb,GAAAuN,EAAAhN,CAAA,EAF+DpB,EAE9DkB,KAAAA,eAAiB,CAAG6N,EAAEyD,KAAK,CAAG,GAFgCxS,CAAA,GAK3D0rB,EAAoBzqB,IAAWC,KAAAA,cAAgB,CAAEmJ,CAAAA,EAAA,GACrD,GAAA+D,EAAAhN,CAAA,EADqDiJ,EACpDnJ,KAAAA,OAAS,CAAGL,GACb,GAAAuN,EAAAhN,CAAA,EAFqDiJ,EAEpDnJ,KAAAA,eAAiB,CAAG6N,EAAEyD,KAAK,CAAG,GAFsBnI,CAAA,GAKvD,MACE,GAAA/E,EAAA9D,IAAA,EAACC,MAAAA,WACEuU,IAAWqH,IACV,GAAA/X,EAAAzD,GAAA,EAACJ,MAAAA,CACCE,UAAWT,KAAAA,SAAW,CACtBQ,IAAK,SAACoT,CAAAA,CAAO,CACXoX,EAAejhB,OAAO,CAACnE,EAAE,CAAG,CAC1B4S,QAAS5E,CACX,CACF,WACA,GAAAxP,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWkrB,WACd,GAAAvnB,EAAAzD,GAAA,EAACwC,OAAAA,CACC1C,UAAWT,KAAAA,UAAY,CACvByqB,kBAAiB,sBAAwB5pB,MAAA,CAAF+E,YACtCiI,EAAE+d,UAAU,OAKrB,GAAAxnB,EAAAzD,GAAA,EAACJ,MAAAA,CACCE,UAAWT,KAAAA,SAAW,CACtBQ,IAAK,SAACoT,CAAAA,CAAO,CACXwT,EAAUrd,OAAO,CAACnE,EAAE,CAAG,CACrB4S,QAAS5E,CACX,CACF,WACA,GAAAxP,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAW+pB,YACb1V,IAAWqH,IACV,GAAA/X,EAAAzD,GAAA,EAACwC,OAAAA,CACC1C,UAAWT,KAAAA,UAAY,CACvByqB,kBAAiB,sBAAwB5pB,MAAA,CAAF+E,YACtCiI,EAAE+d,UAAU,GAGjB,GAAAxnB,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,KAAAA,KAAO,CAAEU,GAAI,sBAAwBG,MAAA,CAAF+E,YACjDiI,EAAEkC,KAAK,UAlCNnK,EAwCd,EAAE,SAMd,CAEAilB,CAAAA,GAAW3pB,SAAS,CAAG,CACrBlC,MAAOmC,IAAAA,MAAgB,CACvBlC,YAAakC,IAAAA,MAAgB,CAC7BhC,UAAWgC,IAAAA,MAAgB,CAC3B/B,SAAU+B,IAAAA,MAAgB,CAC1B9B,SAAU8B,IAAAA,MAAgB,CAC1B8lB,UAAW9lB,IAAAA,KAAe,CAAC,CAAC,QAAS,OAAO,EAC5CpC,MAAOoC,IAAAA,KAAe,CAAC,CAAC,GAAI+a,GNrgBJ,cMqgByC,EACjEpH,OAAQ3T,IAAAA,KAAe,CAAC,CAAC,GNpgBL,SMogBwBgb,GAAa,EACzD0P,UAAW1qB,IAAAA,MAAAA,CAAAA,UAA2B,CACtC4pB,aAAc5pB,IAAAA,MAAgB,CAC9B+c,aAAc/c,IAAAA,MAAgB,CAC9Bgd,aAAchd,IAAAA,MAAgB,CAC9B2pB,mBAAoB3pB,IAAAA,MAAgB,CACpC6c,SAAU7c,IAAAA,KAAe,CAAC,CACxB4b,SAAU5b,IAAAA,MAAgB,CAC1BsR,MAAOtR,IAAAA,OAAiB,CACtBA,IAAAA,KAAe,CAAC,CACdmQ,MAAOnQ,IAAAA,MAAAA,CAAAA,UAA2B,CAClCyqB,WAAYzqB,IAAAA,MAAAA,CAAAA,UAA2B,CACvC4O,MAAO5O,IAAAA,MAAAA,CAAAA,UAA2B,GACjCupB,UAAU,CAEjB,GAAGA,UAAU,EAGfG,GAAWvpB,YAAY,CAAG,CACxBtC,MAAO,GACPC,YAAa,GACbF,MAAOmd,GACP+K,UAAW,QACXnS,OAAQqH,GACR0P,UNjiB0B,iCMkiB1Bd,aNniB4B,IMoiB5B7M,aN3hBqB,EM4hBrBC,aN3hBqB,GM4hBrBH,SAAU,IAAI,yCC9gBV8N,GAAmB,SAACjtB,CAAAA,CAAU,CAClC,IAiVmCC,EAhVjCE,EASEH,EATFG,KAAAA,CACAC,EAQEJ,EARFI,WAAAA,CACAE,EAOEN,EAPFM,SAAAA,CACAC,EAMEP,EANFO,QAAAA,CACAC,EAKER,EALFQ,QAAAA,CACAoT,EAIE5T,EAJF4T,KAAAA,CACAsZ,EAGEltB,EAHFktB,qBAAAA,CACAC,EAEEntB,EAFFmtB,oBAAAA,CACA/E,EACEpoB,EADFooB,SAAAA,CAG6BznB,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,GAAKC,KAAAA,EAAW,IAAI,GAApEC,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CAEzBysB,EAAmB3f,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,IAAI,EAC9B4f,EAAW5f,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,EAAE,EAEpB2e,EAAWxf,CAAAA,EAAAA,EAAAA,CAAAA,EAAe,uBAE1BsH,EAAcC,CAAAA,EAAAA,GAAAA,CAAAA,IAEpBpL,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,GAAI,EAAUmC,OAAO,EAAKkiB,EAAiBliB,OAAO,EAAKpK,GAKvD,IAAMoU,EAAiBkY,EAAiBliB,OAAO,CAAC0d,WAAW,CACrD0E,EAAkBF,EAAiBliB,OAAO,CAAC2d,YAAY,CAEvD0E,EAAmBrY,EAAiB,EACpCsY,EAAmBF,EAAkB,EAErCG,EAAcrB,EA3CC,GAGK,EAwC6C,CACjEsB,EAActB,EA7CC,EAGK,EA0C6C,CAGjEuB,EAAe/Z,EAClBtS,GAAG,CAAC,SAAC8c,CAAAA,CAAAA,QAAM5O,KAAK0J,GAAG,CAACkF,EAAE3L,KAAK,IAC3BkD,MAAM,CAAC,SAACsD,CAAAA,CAAKjK,CAAAA,CAAAA,QAAMQ,KAAKyJ,GAAG,CAACA,EAAKjK,IAAI,CAACqP,KAEnCuP,EAAWha,EAAMtS,GAAG,CAAC,SAAC2T,CAAAA,CAAMlO,CAAAA,CAAM,CACtC,IAAM8mB,EAAa5Y,EAAKxC,KAAK,CAAIkb,CAAAA,IAAAA,CAAe,EAC1CG,EAAate,KAAKC,GAAG,CACzBD,KAAKyJ,GAAG,CAACyU,EAAaG,EAAaJ,GACnCA,GAIIM,EAAa7Y,EAAkB4Y,CAAAA,EAAa,KAM5CE,EAAOC,GAAAA,MAAAA,CAAAA,MAAoB,CAHpBze,KAAK0e,MAAM,GAAKhZ,EAChB1F,KAAK0e,MAAM,GAAKZ,EAK3BS,KAAAA,EACA,CACEzC,KAAM,EACR,GAGF,MAAO,GAAAhgB,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACF4T,GAAAA,CACH4Y,WAAAA,EACA9Y,GAAIsY,EAASniB,OAAO,CAACnE,EAAE,CACvB+mB,WAAAA,EACAE,KAAAA,EACAD,WAAAA,EACAI,eArBqBJ,EAAa,GAuBtC,GAGMK,EAASH,GAAAA,MAAAA,CAAAA,MAAoB,CAAC,CAClCI,QAAS,CACP1jB,EAAG,EACH9D,EAAG,CACL,EACAynB,eAAgB,GAChBC,qBAAsB,EACtBC,mBAAoB,EACpBC,mBAAoB,CACtB,GAGMhD,EAaF,IAAI,CAGFiD,EAAQT,GAAAA,KAAAA,CAAAA,MAAmB,CAACb,EAAiBliB,OAAO,EACpDyjB,EAAkBV,GAAAA,eAAAA,CAAAA,MAA6B,CAACG,EAAQ,CAC5DM,MAAAA,EACAE,WAAY,CACVxD,UAAW,GACXK,OAAQ,CACNvlB,QAAS,EACX,CACF,CACF,GAGAyoB,EAAgBD,KAAK,CAAC/U,OAAO,CAACrQ,mBAAmB,CAC/C,aACAqlB,EAAgBD,KAAK,CAACG,UAAU,EAElCF,EAAgBD,KAAK,CAAC/U,OAAO,CAACrQ,mBAAmB,CAC/C,iBACAqlB,EAAgBD,KAAK,CAACG,UAAU,EAKlCF,EAAgBD,KAAK,CAAC/U,OAAO,CAACrQ,mBAAmB,CAC/C,aACAqlB,EAAgBD,KAAK,CAACI,SAAS,EAEjCH,EAAgBD,KAAK,CAAC/U,OAAO,CAACrQ,mBAAmB,CAC/C,YACAqlB,EAAgBD,KAAK,CAACK,SAAS,EAEjCJ,EAAgBD,KAAK,CAAC/U,OAAO,CAACrQ,mBAAmB,CAC/C,WACAqlB,EAAgBD,KAAK,CAACM,OAAO,EAG/BL,EAAgBD,KAAK,CAAC/U,OAAO,CAACpQ,gBAAgB,CAC5C,aACAolB,EAAgBD,KAAK,CAACI,SAAS,CAC/B,CAAEG,QAAS,EAAK,GAElBN,EAAgBD,KAAK,CAAC/U,OAAO,CAACpQ,gBAAgB,CAAC,YAAa,SAACkgB,CAAAA,CAAM,CAC7DkF,EAAgBX,IAAI,EACtBW,EAAgBD,KAAK,CAACK,SAAS,CAACtF,EAEpC,GACAkF,EAAgBD,KAAK,CAAC/U,OAAO,CAACpQ,gBAAgB,CAAC,WAAY,SAACkgB,CAAAA,CAAM,CAC5DkF,EAAgBX,IAAI,EACtBW,EAAgBD,KAAK,CAACM,OAAO,CAACvF,EAElC,GAKAwE,GAAAA,SAAAA,CAAAA,GAAoB,CAACG,EAAOc,KAAK,CAAE,CACjCjB,GAAAA,MAAAA,CAAAA,SAAuB,CACrB/Y,EAAiB,EACjB,EACAA,EANc,GAQd,CACEia,SAAU,EACZ,GAEFlB,GAAAA,MAAAA,CAAAA,SAAuB,CACrB/Y,EAAiB,EACjBoY,EACApY,EAfc,GAiBd,CAAEia,SAAU,EAAK,GAEnBlB,GAAAA,MAAAA,CAAAA,SAAuB,CACrB/Y,EACAoY,EAAkB,EArBJ,GAuBdA,EACA,CAAE6B,SAAU,EAAK,GAEnBlB,GAAAA,MAAAA,CAAAA,SAAuB,CACrB,EACAX,EAAkB,EA5BJ,GA8BdA,EACA,CACE6B,SAAU,EACZ,GAEH,EAGDlB,GAAAA,SAAAA,CAAAA,GAAoB,CAClBG,EAAOc,KAAK,CACZtB,EAAStsB,GAAG,CAAC,SAAC8c,CAAAA,CAAAA,QAAMA,EAAE4P,IAAI,IAG5B,IAAMoB,EAASnB,GAAAA,MAAAA,CAAAA,MAAoB,CAAC,CAClCoB,MAAO,IAAO,GACdC,QAAS,GACTC,QAAS,EACX,GAEAtB,GAAAA,MAAAA,CAAAA,GAAiB,CAACmB,EAAQhB,GAE1B,IACIoB,EAAe,GAAAjkB,EAAAlK,CAAA,KAAKstB,EAAgBD,KAAK,CAAC5W,QAAQ,EAiHtD,OA/GAmW,GAAAA,MAAAA,CAAAA,EAAgB,CAACG,EAAQ,cAAe,SAACqB,CAAAA,CAAU,CACjD,IAAMf,EAAQC,EAAgBD,KAAK,CAC7BgB,EAASzB,GAAAA,SAAAA,CAAAA,SAA0B,CAACG,EAAOc,KAAK,EAAExoB,MAAM,CAC5D,SAAC0X,CAAAA,CAAAA,OAAM,CAACA,EAAE+Q,QAAQ,GAGdQ,EAAajB,EAAM5W,QAAQ,EAAI,CAAEnN,EAAG,EAAG9D,EAAG,CAAE,EAC5C+oB,EAAW,CAAEjlB,EAAGglB,EAAWhlB,CAAC,CAAG,EAAG9D,EAAG8oB,EAAW9oB,CAAC,CAAG,CAAE,EAS5DgpB,GAN4B5B,KAAAA,CAAAA,GAAgB,CAC1CyB,EACAC,EACAC,GAGwB9a,OAAO,CAAC,SAACsJ,CAAAA,CAAM,CACvC,IAAM4P,EAAO5P,EAAE4P,IAAI,CACb8B,EAAiB9B,MAAAA,EAAK1C,IAAI,CAAY6B,EAEtC4C,EAAS9B,GAAAA,MAAAA,CAAAA,IAAkB,CAC/BA,GAAAA,MAAAA,CAAAA,SAAuB,CACrBA,GAAAA,MAAAA,CAAAA,MAAoB,CAClBS,EAAM5W,QAAQ,CAACnN,CAAC,CAAG6kB,EAAa7kB,CAAC,CACjC+jB,EAAM5W,QAAQ,CAACjR,CAAC,CAAG2oB,EAAa3oB,CAAC,GAGrCipB,GAGF7B,GAAAA,IAAAA,CAAAA,UAAsB,CAACD,EAAMA,EAAKlW,QAAQ,CAAEiY,GAC5CP,EAAe,GAAAjkB,EAAAlK,CAAA,KAAKstB,EAAgBD,KAAK,CAAC5W,QAAQ,CACpD,GAGA8V,EAAS9Y,OAAO,CAAC,SAACsJ,CAAAA,CAAM,CACtB,IAAM4P,EAAO5P,EAAE4P,IAAI,CAEb8B,EAAiB,KAAQ9B,EAAK1C,IAAI,CAAG4B,EAErC8C,EAAK/B,GAAAA,MAAAA,CAAAA,IAAkB,CAC3BA,GAAAA,MAAAA,CAAAA,SAAuB,CACrBA,GAAAA,MAAAA,CAAAA,MAAoB,CAClBV,EAAmBS,EAAKlW,QAAQ,CAACnN,CAAC,CAClC6iB,EAAmBQ,EAAKlW,QAAQ,CAACjR,CAAC,GAGtCipB,GAGF7B,GAAAA,IAAAA,CAAAA,UAAsB,CAACD,EAAMA,EAAKlW,QAAQ,CAAEkY,GAG5C,IAAMC,EAAKjC,EAAKlW,QAAQ,CAACnN,CAAC,CAAGyT,EAAE+P,cAAc,CACvC+B,EAAKlC,EAAKlW,QAAQ,CAACjR,CAAC,CAAGuX,EAAE+P,cAAc,CAE7C/P,EAAErJ,EAAE,CAAC/N,KAAK,CAAG,qCACiCkpB,MAAAA,CAApBD,EAAG,mBAClB7R,MAAAA,CADmC8R,EAAG,2BAErC9R,MAAAA,CADDA,EAAE2P,UAAU,CAAC,2BACC/rB,MAAA,CAAboc,EAAE2P,UAAU,CAAC,gBAQ3B,EACF,GA2CO,UAAM,CACXE,GAAAA,KAAAA,CAAAA,KAAkB,CAACG,EAAOc,KAAK,EAC/BjB,GAAAA,MAAAA,CAAAA,KAAmB,CAACG,GAEhB3C,IACFwC,GAAAA,MAAAA,CAAAA,IAAkB,CAACxC,GACnBA,EAAOjI,MAAM,CAAC2M,MAAM,GAEpB1E,EAAOjI,MAAM,CAAG,IAAI,CACpBiI,EAAO2E,OAAO,CAAG,IAAI,CACrB3E,EAAO4E,QAAQ,CAAG,CAAC,EAEvB,EAtTC,EAuTA,CAACvvB,EAAWusB,EAAUD,EAAkBlZ,EAAY,EAEvD,IAAMjT,EAAUC,IAAWC,KAAAA,IAAM,CAAElB,CAAAA,EAAA,GACjC,GAAAoO,EAAAhN,CAAA,EADiCpB,EAChCkB,KAAAA,OAAS,CAAGL,GACb,GAAAuN,EAAAhN,CAAA,EAFiCpB,EAEhCkB,KAAAA,KAAO,CAtVe,IAoVUlB,CAAA,UAKnC,EAAWkH,MAAM,CAKf,GAAA5B,EAAA9D,IAAA,EAACC,MAAAA,CAAIC,IAAKd,EAAWe,UAAWX,YAC9B,GAAAsE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAW,GAAkBI,MAAA,CAAfb,KAAAA,YAAc,CAAC,kBAChC,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,cAAgB,UAC7BhB,GACC,GAAAoF,EAAAzD,GAAA,EAAC/B,GAAAA,CAAeA,CAAAA,CACdI,MAAOA,EACPC,YAAaA,EACbE,UAAWA,EACXC,SAAUA,EACVC,SAAUA,EACVN,MAAOkoB,QAKf,GAAA7iB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIC,IAAKyrB,EAAkBxrB,UAAWT,KAAAA,aAAe,UACnDyS,EAAMtS,GAAG,CAAC,SAAC2T,CAAAA,CAAMlO,CAAAA,CAAM,CACtB,MACE,GAAAxB,EAAAzD,GAAA,EAACJ,MAAAA,CAECC,IAAK,SAACoT,CAAAA,CAAAA,QAAQsY,EAASniB,OAAO,CAACnE,EAAE,CAAGgO,GACpCnT,UAAWT,KAAAA,IAAM,UACjB,GAAAoE,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,KAAAA,WAAa,WAC3B,GAAAoE,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAWT,KAAAA,SAAW,CAAEU,GAAI,sBAAwBG,MAAA,CAAF+E,YACrDkO,EAAK/D,KAAK,GAEb,GAAA3L,EAAAzD,GAAA,EAACwC,OAAAA,CACC1C,UAAWT,KAAAA,SAAW,CACtByqB,kBAAiB,sBAAwB5pB,MAAA,CAAF+E,YACtCkO,EAAK8X,UAAU,OAVfhmB,EAeX,QAtCG,IAAI,CA4CfkmB,CAAAA,GAAiB5qB,SAAS,CAAG,CAC3BlC,MAAOmC,IAAAA,MAAgB,CACvBlC,YAAakC,IAAAA,MAAgB,CAC7BhC,UAAWgC,IAAAA,MAAgB,CAC3B/B,SAAU+B,IAAAA,MAAgB,CAC1B9B,SAAU8B,IAAAA,MAAgB,CAC1B8lB,UAAW9lB,IAAAA,KAAe,CAAC,CAAC,QAAS,OAAO,EAC5CsR,MAAOtR,IAAAA,OAAiB,CACtBA,IAAAA,KAAe,CAAC,CACdmQ,MAAOnQ,IAAAA,MAAAA,CAAAA,UAA2B,CAClCyqB,WAAYzqB,IAAAA,MAAAA,CAAAA,UAA2B,CACvC4O,MAAO5O,IAAAA,MAAAA,CAAAA,UAA2B,GACjCupB,UAAU,EACbA,UAAU,CACZqB,sBAAuB5qB,IAAAA,MAAgB,CACvC6qB,qBAAsB7qB,IAAAA,MAAgB,EAGxC2qB,GAAiBxqB,YAAY,CAAG,CAC9B2lB,UAAW,OACXxU,MAAO,EAAE,CACTsZ,sBAAuB,IACvBC,qBAAsB,GACxB,gECraM3c,GAAoB,cACpBC,GAAoB,cACpB6f,GAAyB,mBACzB5f,GAAoB,cACpBC,GAAmB,aAEnB4f,GAAUhmB,CAAAA,EAAA,GACd,GAAA8D,EAAAhN,CAAA,EADckJ,EACbmG,GAAoB,CACnB,CACEhM,IAAK,8DACLuF,KAAM,0BACR,EACA,CACEvF,IAAK,6DACLuF,KAAM,YACR,EACD,EACD,GAAAoE,EAAAhN,CAAA,EAXckJ,EAWbiG,GAAoB,CACnB,CACE9L,IAAK,8DACLuF,KAAM,0BACR,EACA,CACEvF,IAAK,6DACLuF,KAAM,YACR,EACD,EACD,GAAAoE,EAAAhN,CAAA,EArBckJ,EAqBb+lB,GAAyB,CACxB,CACE5rB,IAAK,mEACLuF,KAAM,0BACR,EACA,CACEvF,IAAK,kEACLuF,KAAM,YACR,EACD,EACD,GAAAoE,EAAAhN,CAAA,EA/BckJ,EA+BbkG,GAAoB,CACnB,CACE/L,IAAK,8DACLuF,KAAM,0BACR,EACA,CACEvF,IAAK,6DACLuF,KAAM,YACR,EACD,EACD,GAAAoE,EAAAhN,CAAA,EAzCckJ,EAyCbmG,GAAoB,CACnB,CACEhM,IAAK,8DACLuF,KAAM,0BACR,EACA,CACEvF,IAAK,6DACLuF,KAAM,YACR,EACD,EACD,GAAAoE,EAAAhN,CAAA,EAnDckJ,EAmDboG,GAAmB,CAClB,CACEjM,IAAK,6DACLuF,KAAM,0BACR,EACA,CACEvF,IAAK,4DACLuF,KAAM,YACR,EACD,EA5DaM,CAAA,EA+DVimB,GAAqB,SAAA7tB,CAAA,CAMrB,KAMyC1C,EAX7CE,EAAAA,EAAAA,KAAAA,CACA+B,EAAAA,EAAAA,IAAAA,CACAuuB,EAAAA,EAAAA,gBAAAA,CACAluB,EAAAA,EAAAA,IAAAA,CAAAA,EAAAA,EACArC,KAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAQwQ,GAAiBA,CAAAA,CAEStI,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAK,GAAzCsoB,EAA2BtoB,CAAAA,CAAAA,EAAAA,CAAhBuoB,EAAgBvoB,CAAAA,CAAAA,EAAAA,CAE5BxF,EAAQC,CAAAA,EAAAA,EAAAA,EAAAA,IAAND,CAAAA,CACuBjC,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,GAAKC,KAAAA,EAAW,IAAI,GAApEC,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CAEzBiwB,EAAe1vB,IAAWC,KAAAA,SAAW,CAAElB,CAAAA,EAAA,GAC3C,GAAAoO,EAAAhN,CAAA,EAD2CpB,EAC1CkB,IAAAA,CAAAA,wBAA0B,CAAGjB,IAAUowB,IACxC,GAAAjiB,EAAAhN,CAAA,EAF2CpB,EAE1CkB,IAAAA,CAAAA,oBAAsB,CAAGjB,IAAUsQ,IACpC,GAAAnC,EAAAhN,CAAA,EAH2CpB,EAG1CkB,IAAAA,CAAAA,mBAAqB,CAAGjB,IAAUyQ,IACnC,GAAAtC,EAAAhN,CAAA,EAJ2CpB,EAI1CkB,IAAAA,CAAAA,oBAAsB,CAAGjB,IAAUuQ,IACpC,GAAApC,EAAAhN,CAAA,EAL2CpB,EAK1CkB,IAAAA,CAAAA,oBAAsB,CAAGjB,IAAUwQ,IALOzQ,CAAA,GAQvC4wB,EAAa3vB,IAAWC,KAAAA,OAAS,CACrC,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,OAAS,CAAGL,IAETgwB,EAAU5vB,IAAWC,KAAAA,IAAM,CAC/B,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,OAAS,CAAGL,IAETiwB,EAAsB7vB,IAAWC,KAAAA,gBAAkB,CACvD,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,OAAS,CAAGL,IAGXkwB,EAAWT,MAAAA,GAAAA,KAAAA,EAAAA,EAAS,CAACrwB,EAAM,CAE3B+wB,EAAM1uB,MAAAA,EAAAA,KAAAA,EAAAA,EAAMA,IAAI,CAOpB,MAJI0uB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAKhJ,OAAO,CAAC,iBAAkB,IACjCgJ,CAAAA,GAAY,4BAIZ,GAAA1rB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAW,GAAUI,MAAA,CAAPb,KAAAA,IAAM,CAAC,kBACxB,GAAAoE,EAAA9D,IAAA,EAACC,MAAAA,CACCC,IAAKd,EACLe,UAAWgvB,EACXM,aAAc,kBAAMP,EAAa,KACjCQ,aAAc,kBAAMR,EAAa,eACjC,GAAAprB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,UAAY,GAC3B8vB,GACC,GAAA1rB,EAAAzD,GAAA,EAACgD,KAAIA,CAACvC,KAAM0uB,EAAKG,eAAgB,YAC/B,GAAA7rB,EAAAzD,GAAA,EAAC+oB,IAAAA,CAAEjpB,UAAWT,KAAAA,IAAM,UAClB,GAAAoE,EAAAzD,GAAA,EAACwC,OAAAA,CAAK1C,UAAU,mBAAWW,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAML,IAAI,GAAI/B,QAK9C6wB,GACC,GAAAzrB,EAAAzD,GAAA,EAAC6F,EAAAA,CAASA,CAAAA,CACR/F,UAAWT,KAAAA,SAAW,CACtB0G,OAAQ/G,EACR8G,KAAMopB,EACN9oB,kCAAmC,IAIvC,GAAA3C,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,KAAAA,OAAS,WACvB,GAAAoE,EAAAzD,GAAA,EAAC6P,KAAAA,CAAG/P,UAAWivB,WAAa1wB,IAC5B,GAAAoF,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWkvB,WAAU5uB,IAE1B,GAAAqD,EAAAzD,GAAA,EAACJ,MAAAA,CAAIkO,cAAa,GAAMhO,UAAWT,KAAAA,iBAAmB,UACpD,GAAAoE,EAAAzD,GAAA,EAACkD,GAAAA,CAAsBA,CAAAA,CACrBC,KAAK,QACL4C,OAAQ6oB,EACRW,SAAU,OAIbZ,GACC,GAAAlrB,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWmvB,YACd,GAAAxrB,EAAAzD,GAAA,EAACyC,IAAKA,CACJ3C,UAAWT,KAAAA,YAAc,CACzBqD,MAAO,GACPC,OAAQ,GACRC,IAAM,wBACNC,IAAI,KAGL8rB,GAAAA,EACG7tB,EAAE,4BACFA,EAAE,iCAAkC,CAClCmB,SAAU0sB,CACZ,EAAE,IAIV,GAAAlrB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,cAAgB,UAC9B,GAAAoE,EAAAzD,GAAA,EAACkD,GAAAA,CAAsBA,CAAAA,CACrBC,KAAK,QACL4C,OAAQ6oB,EACRW,SAAU,cAOxB,CAEAb,CAAAA,GAAmBnuB,SAAS,CAAG,CAC7BnC,MAAOoC,IAAAA,KAAe,CAAC,CACrB,GACAguB,GACA9f,GACAC,GACAC,GACAC,GACD,EACDxQ,MAAOmC,IAAAA,MAAAA,CAAAA,UAA2B,CAClCJ,KAAMI,IAAAA,MAAAA,CAAAA,UAA2B,CACjCC,KAAMD,IAAAA,MAAAA,CAAAA,UAA2B,CACjCmuB,iBAAkBnuB,IAAAA,MAAgB,EAGpCkuB,GAAmB/tB,YAAY,CAAG,CAChCvC,MAAOwQ,GACPvQ,MAAO,GACP+B,KAAM,GACNK,KAAM,IAAI,CACVkuB,iBAAkB,IAAI,mDClNX/f,GAAoB,oBACpB4gB,GAAmB,mBCC1BC,GAAY,CAChBrxB,MAAO,CACLsxB,OAAQ,EAAE,CACVC,MAAO,CACLC,gBAAiB,uBACjBC,YAAa,EACbC,gBAAiB,EACjBC,OAAQ,EACRptB,OAAQ,IAAI,CACZuC,MAAO,CACL8qB,WAAY,oBACd,CACF,EACAC,QAAS,CACPxC,QAAS,EACX,EACAyC,QAAS,CACPzC,QAAS,EACX,EACA0C,OAAQ,CACN1C,QAAS,EACX,EACA2C,YAAa,CACXC,OAAQ,CACNR,YAAa,EACbS,aAAc,EAChB,EACAxS,IAAK,CACHyS,WAAY,EACd,CACF,EACAlyB,MAAO,CACL+B,KAAM,EACR,CACF,EACAowB,iBAAkB,CAChBC,OAAQ,CACN5nB,EAAG,EACH6nB,MAAO,OACPC,aAAc,GACd5rB,EAAG,IACHG,MAAO,CACLhG,MAAO,QACP2gB,KAAM,0BACN+Q,WAAY,OACZC,WAAY,SACZC,YAAa,MACf,CACF,EACAC,UAAW,CACb,EACAC,iBAAkB,CAChB3yB,MAAO,CACL+B,KAAM,EACR,EACA6wB,cAAe,EACfR,OAAQ,CACNhD,QAAS,EACX,CACF,EACAyD,WAAY,CACVzD,QAAS,GACT0D,OAAQ,GACRT,MAAO,OACPU,cAAe,SACfvoB,EAAG,EACHwoB,OAAQ,MACRnsB,MAAO,CACLhG,MAAO,QACP2gB,KAAM,qBACNyR,SAAU,OACVV,WAAY,SACZC,WAAY,SACZC,YAAa,MACf,CACF,CACF,EAEMS,GAAS7oB,CAAAA,EAAA,GACb,GAAA6D,EAAAhN,CAAA,EADamJ,EACZ8mB,GAAmB,GAAAhmB,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACfkwB,IAAAA,CACHrxB,MAAO,GAAAoL,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACFkwB,GAAUrxB,KAAK,GAClBsxB,OAAQ,CACN,CACE8B,eAAgB,CAAEC,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAGC,GAAI,CAAE,EAC7CC,MAAO,CACL,CAAC,EAAG,UAAU,CACd,CAAC,EAAG,UAAU,CACf,EAEJ,MAUL,GAAAtlB,EAAAhN,CAAA,EAvBamJ,EAuBZkG,GAAoB,GAAApF,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KAChBkwB,IAAAA,CACHrxB,MAAO,GAAAoL,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACFkwB,GAAUrxB,KAAK,GAClBsxB,OAAQ,CACN,CACE8B,eAAgB,CAAEC,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAGC,GAAI,CAAE,EAC7CC,MAAO,CACL,CAAC,EAAG,UAAU,CACd,CAAC,EAAG,UAAU,CACf,EAEJ,MAnCQnpB,CAAA,yBCtDTopB,GAA8B,SAACzU,CAAAA,CAAUjf,CAAAA,CAAOiR,CAAAA,CAAc,CAClE,IAAmBgO,EACAA,EAgCTA,EAjCJ0U,EAAa1U,MAAAA,EAAAA,KAAAA,EAAAA,IAAe,GAAfA,CAAAA,EAAAA,EAAUvL,KAAK,GAAfuL,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiB7d,GAAAA,CAAI,SAAC2T,CAAAA,CAAAA,QAASA,EAAK/D,KAAK,GACtD4iB,EAAa3U,MAAAA,EAAAA,KAAAA,EAAAA,IAAe,GAAfA,CAAAA,EAAAA,EAAUvL,KAAK,GAAfuL,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiB7d,GAAAA,CAAI,SAAC2T,CAAAA,CAAAA,OAAU,CAAEpO,EAAGoO,EAAKxC,KAAK,IAE5DshB,EAAW5U,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAU4U,QAAQ,GAAI,EACjC7V,EAAWiB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAUjB,QAAQ,EAC/BiB,MAAAA,EAAAA,KAAAA,EAAAA,EAAUjB,QAAQ,CAClB4V,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAYne,MAAM,CAAC,SAACsD,CAAAA,CAAKjK,CAAAA,CAAM,CAE7B,OADAiK,EAAMjK,EAAEnI,CAAC,CAAGoS,EAAMjK,EAAEnI,CAAC,CAAGoS,CAAG,EAE1B,IAAK,GAAG,CAEf,MAAO,CACL+a,MAAO,GAAA1oB,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACFnB,EAAMoyB,gBAAgB,GACzBC,OAAQ,GAAAjnB,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACHnB,EAAMoyB,gBAAgB,CAACC,MAAM,GAChCvrB,MAAO,GAAAsE,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACFnB,EAAMoyB,gBAAgB,CAACC,MAAM,CAACvrB,KAAK,GACtChG,MAAOmQ,MAGX0iB,WAAAA,IAEFI,MAAO,GAAA1oB,EAAAlK,CAAA,GACLoO,IAAKskB,EACL9a,IAAKiF,GACFhe,EAAM4yB,gBAAgB,EAE3BX,OAAQ,CACN,CACEa,WAAY,GAAA1nB,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACPnB,EAAM8yB,UAAU,GACnBG,OACEhU,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,IAAyB,GAAzBA,CAAAA,EAAAA,EAAU+U,eAAe,GAAzB/U,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAA2BhM,OAAAA,CAAQ,UAAW,SAC9CjT,EAAM8yB,UAAU,CAACG,MAAM,CACzBnsB,MAAO,GAAAsE,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACFnB,EAAM8yB,UAAU,CAAChsB,KAAK,GACzBhG,MAAOmQ,MAGXgjB,KAAML,EACNM,OAAQ,CAENC,MAAO,CACL9E,QAAS,EACX,CACF,CACF,EACD,CAEL,EAEM+E,GAAqB,SAACt0B,CAAAA,CAAU,CACpC,IACEG,EASEH,EATFG,KAAAA,CACAC,EAQEJ,EARFI,WAAAA,CACAE,EAOEN,EAPFM,SAAAA,CACAC,EAMEP,EANFO,QAAAA,CACAC,EAKER,EALFQ,QAAAA,CACA+zB,EAIEv0B,EAJFu0B,UAAAA,CACAnM,EAGEpoB,EAHFooB,SAAAA,CACAoM,EAEEx0B,EAFFw0B,WAAAA,CACArV,EACEnf,EADFmf,QAAAA,CAGIvW,EAAuBC,CAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,uBAAuBA,GAAK,CAAC,GAA7DF,gBAAAA,CAEF6rB,EAAoBhnB,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,IAAI,EACN9M,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAwB,GAAKC,KAAAA,EAAW,IAAI,GAApEC,EAAwBF,CAAAA,CAAAA,EAAAA,CAAbG,EAAaH,CAAAA,CAAAA,EAAAA,CAEzBT,EAAQw0B,EAAW,CAACH,EAAW,CAG/BI,EAAoBf,GACxBzU,EACAjf,EAJgBkoB,UAAAA,EAAwB,UAAY,SAAS,EAQzDqJ,EAAQhkB,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,IAAI,EAEzBuH,CAAAA,EAAAA,GAAAA,CAAAA,EACEpM,EAAmB,IAAM,EAAE,CAC3B,UAAM,CACC6rB,EAAkBvpB,OAAO,EAAKpK,IAInC8zB,KAAwBC,MAExBpD,EAAMvmB,OAAO,CAAG,GAAI2pB,CAAAA,IAAAA,EAAAA,KAAgB,CAACJ,EAAkBvpB,OAAO,CAAE,GAAAK,EAAAlK,CAAA,KAAAiK,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,GAC9DyzB,cAAe,CACb10B,YAAa,GAAaA,MAAAA,CAAVD,EAAM,MAAgB6B,MAAA,CAAZ5B,EAC5B,GACGF,EAAMA,KAAK,GACdgyB,YAAa,GAAA5mB,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACRnB,EAAMA,KAAK,CAACgyB,WAAW,GAC1BC,OAAQ,GAAA7mB,EAAAjK,CAAA,KAAAkK,EAAAlK,CAAA,KACHnB,EAAMA,KAAK,CAACgyB,WAAW,CAACC,MAAM,GACjC4C,UAAWnsB,MAGf6oB,MAAO,GAAAlmB,EAAAlK,CAAA,GACL4I,KAAM,OACH/J,EAAMA,KAAK,CAACuxB,KAAK,IAEnBkD,IAEP,EACA,CAAC7zB,EAAU,EAGb,IAAMG,EAAUC,IAAWC,KAAAA,IAAM,CAAE,OACjC,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,OAAS,CAAGL,IAGf,MACE,GAAAyE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIC,IAAKd,EAAWe,UAAWX,WAC9B,GAAAsE,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,KAAAA,SAAW,WACxBhB,GACC,GAAAoF,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,WAAa,UAC3B,GAAAoE,EAAAzD,GAAA,EAAC/B,GAAAA,CAAeA,CAAAA,CACdG,MAAOkoB,EACPjoB,MAAOA,EACPC,YAAaA,EACbE,UAAWA,EACXC,SAAUA,EACVC,SAAUA,MAIhB,GAAA+E,EAAAzD,GAAA,EAACJ,MAAAA,CACCC,IAAK8yB,EACL7yB,UAAWT,KAAAA,cAAgB,CAC3B6F,MAAO,CACL2I,UAAW6kB,CACb,QAIV,CAEAF,CAAAA,GAAmBjyB,SAAS,CAAG,CAC7BlC,MAAOmC,IAAAA,MAAgB,CACvBlC,YAAakC,IAAAA,MAAgB,CAC7BhC,UAAWgC,IAAAA,MAAgB,CAC3B/B,SAAU+B,IAAAA,MAAgB,CAC1B9B,SAAU8B,IAAAA,MAAgB,CAC1BiyB,WAAYjyB,IAAAA,KAAe,CAAC,CAACgvB,GAAkB5gB,GAAkB,EACjE0X,UAAW9lB,IAAAA,KAAe,CAAC,CAAC,QAAS,OAAO,EAC5CkyB,YAAalyB,IAAAA,MAAgB,CAC7B6c,SAAU7c,IAAAA,KAAe,CAAC,CACxB4xB,gBAAiB5xB,IAAAA,MAAgB,CACjCyxB,SAAUzxB,IAAAA,MAAgB,CAC1B4b,SAAU5b,IAAAA,MAAgB,CAC1BsR,MAAOtR,IAAAA,OAAiB,CACtBA,IAAAA,KAAe,CAAC,CACdmQ,MAAOnQ,IAAAA,MAAAA,CAAAA,UAA2B,CAClC4O,MAAO5O,IAAAA,MAAAA,CAAAA,UAA2B,GACjCupB,UAAU,CAEjB,GAAGA,UAAU,EAGfyI,GAAmB7xB,YAAY,CAAG,CAChC8xB,WAAYjD,GACZlJ,UAAW,QACXoM,YAAa,OACbrV,SAAU,CAAC,CACb,yCCtKM6V,GAAmB,SAACC,CAAAA,CAAAA,KAAUA,EAAAA,MAAAA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,IAAU,GAAVA,CAAAA,EAAAA,CAAO,CAAC,EAAE,GAAVA,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAYxiB,KAAF,GAAW,CAAC,GAEpDyiB,GAAkB,SAACl1B,CAAAA,CAAU,CACjC,IAAAm1B,EAMIn1B,EALFo1B,OAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAU,OAAAD,CAAA,CACVvzB,EAIE5B,EAJF4B,SAAAA,CACAgE,EAGE5F,EAHF4F,QAAAA,CACAyvB,EAEEr1B,EAFFq1B,SAAAA,CACAC,EACEt1B,EADFs1B,UAAAA,CAGmC30B,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EACnC00B,EACAC,EACA,IAAK,GAHAC,EAA8B50B,CAAAA,CAAAA,EAAAA,CAAlB60B,EAAkB70B,CAAAA,CAAAA,EAAAA,CAK/B80B,EAA4B5sB,CAAAA,EAAAA,EAAAA,UAAAA,EAAW6sB,EAAAA,iBAAiBA,EAAtDD,qBAAAA,CAQR,MANA1sB,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACVysB,GACFC,EAAsBL,QAAAA,EAE1B,EAAG,CAACI,EAAe,EAGjB,GAAAjwB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWA,EAAWD,IAAK4zB,WAC7B3vB,GAGP,CAEAsvB,CAAAA,GAAgBzyB,YAAY,CAAG,CAC7B2yB,QAAS,OACTC,UAAW,GACXC,WAAY,EACd,EAEAJ,GAAgB7yB,SAAS,CAAG,CAC1B+yB,QAAS9yB,IAAAA,KAAe,CAAC,CAAC,OAAQ,QAAQ,EAC1CV,UAAWU,IAAAA,MAAgB,CAC3BsD,SAAUtD,IAAAA,IAAAA,CAAAA,UAAyB,CACnC+yB,UAAW/yB,IAAAA,SAAmB,CAAC,CAC7BA,IAAAA,MAAgB,CAChBA,IAAAA,OAAiB,CAACA,IAAAA,MAAgB,EACnC,EACDgzB,WAAYhzB,IAAAA,MAAgB,EAG9B,IAAMqzB,GAAe,SAAAhzB,CAAA,CAMf,KAGF1C,EARF2F,EAAAA,EAAAA,QAAAA,CACAgwB,EAAAA,EAAAA,QAAAA,CACA3f,EAAAA,EAAAA,MAAAA,CAAAA,EAAAA,EACAhQ,MAAAA,CAAc4vB,EAAAlzB,EACdjC,SAAAA,CAEMo1B,EAAc50B,IAClBC,KAAAA,YAAc,CACdlB,CAAAA,EAAA,GACE,GAAAoO,EAAAhN,CAAA,EADFpB,EACGkB,KAAAA,QAAU,CAAGy0B,cAAAA,GACd,GAAAvnB,EAAAhN,CAAA,EAFFpB,EAEGkB,KAAAA,UAAY,CAAGy0B,gBAAAA,GAChB,GAAAvnB,EAAAhN,CAAA,EAHFpB,EAGGkB,KAAAA,UAAY,CAAGy0B,gBAAAA,GAChB,GAAAvnB,EAAAhN,CAAA,EAJFpB,EAIGkB,KAAAA,SAAW,CAAGy0B,eAAAA,GAEf,GAAAvnB,EAAAhN,CAAA,EANFpB,EAMGkB,KAAAA,YAAc,CAAG8U,WAAAA,GAClB,GAAA5H,EAAAhN,CAAA,EAPFpB,EAOGkB,KAAAA,eAAiB,CAAG8U,eAAAA,GAErB,GAAA5H,EAAAhN,CAAA,EATFpB,EASGkB,KAAAA,MAAQ,CAdb8E,KAAAA,IAAAA,GAAc8vB,GAKZ91B,CAAA,EAWAS,CAfFA,KAAAA,IAAAA,EAAY,EAAE,CAAAm1B,CAAA,EAeFv0B,GAAG,CAAC,SAACC,CAAAA,CAAAA,QAAMJ,IAAC,CAACI,EAAE,IAG3B,MACE,GAAAgE,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWk0B,YACd,GAAAvwB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,YAAc,GAC9B,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,aAAe,GAC9ByE,IAGP,CAEA+vB,CAAAA,GAAatzB,SAAS,CAAG,CACvBuD,SAAUtD,IAAAA,IAAc,CACxBszB,SAAUtzB,IAAAA,KAAe,CAAC,CACxB,YACA,cACA,cACA,aACD,EACD2T,OAAQ3T,IAAAA,KAAe,CAAC,CAAC,OAAQ,SAAU,aAAa,CAC1D,EAEA,IAAM0zB,GAAqB,SAAArzB,CAAA,CAAoC,KAAjCszB,EAAAA,EAAAA,KAAAA,CAAOrwB,EAAAA,EAAAA,QAAAA,CAAUhE,EAAAA,EAAAA,SAAAA,CACZjB,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAC/B,GACA,sBAFKu1B,EAA0Bv1B,CAAAA,CAAAA,EAAAA,CAAhBw1B,EAAgBx1B,CAAAA,CAAAA,EAAAA,CAK3By1B,EAAa,CACjBC,UAAW,QACXC,OAAQ,EACV,EAEML,GAAWA,EAAMM,KAAK,EAAMN,EAAMM,KAAK,CAAC5rB,CAAC,EAAMsrB,EAAMM,KAAK,CAAC1vB,CAAC,EAChEuvB,CAAAA,EAAWI,cAAc,CAAG,GAAoBP,MAAAA,CAAjBA,EAAMM,KAAK,CAAC5rB,CAAC,CAAC,KAAiB3I,MAAA,CAAdi0B,EAAMM,KAAK,CAAC1vB,CAAC,GAG/D,IAAM4vB,EAAUv1B,IAAWC,KAAAA,kBAAoB,CAAES,EAC/C,GAAAyM,EAAAhN,CAAA,KAACF,KAAAA,OAAS,CAAGg1B,IAGf,MACE,GAAA5wB,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAW60B,YACbR,GACC,GAAA1wB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWT,KAAAA,2BAA6B,UAC3C,GAAAoE,EAAAzD,GAAA,EAACyC,IAAKA,CACJ5C,IAAKu0B,EACLQ,MAAM,QACN90B,UAAWT,KAAAA,KAAO,CAClBuD,IAAKuxB,EAAMhF,GAAG,CACdtsB,IAAKsxB,MAAAA,EAAAA,KAAAA,EAAAA,EAAOtxB,GAAG,CACfxE,MAAO81B,MAAAA,EAAAA,KAAAA,EAAAA,EAAO91B,KAAK,CACnBw2B,KAAI,GACJ3vB,MAAOovB,MAIZxwB,IAGP,EAEMgxB,GAAqB,UAAM,CAC/B,IAAMh0B,EAAQC,CAAAA,EAAAA,EAAAA,EAAAA,IAAND,CAAAA,CAEFi0B,EAAsBhuB,CAAAA,EAAAA,EAAAA,UAAAA,EAAW6sB,EAAAA,iBAAiBA,EAAhDmB,eAAAA,CAC6ChuB,EAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EACnDC,EAAAA,uBAAuBA,EADjBF,EAA6CC,EAA7CD,gBAAAA,CAAkBkuB,EAA2BjuB,EAA3BiuB,sBAAAA,CAIpBC,EAAa71B,IAAWC,KAAAA,yBAA2B,CACvD,GAAAkN,EAAAhN,CAAA,KAACF,KAAAA,SAAW,CAAG01B,IAajB,MACE,GAAAtxB,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAWm1B,WACd,GAAAxxB,EAAA9D,IAAA,EAAC0C,SAAAA,CAAOvC,UAAWT,KAAAA,kBAAoB,CAAEiD,QAAS0yB,YAChD,GAAAvxB,EAAAzD,GAAA,EAACyC,IAAKA,CACJ3C,UAAWT,KAAAA,gBAAkB,CAC7BqD,MAAO,GACPC,OAAQ,GACRC,IAjBQ,QAQf1C,MAAA,CAPC4G,EACIiuB,EACE,mBACA,kBAAkB,CACpBA,EACA,kBACA,iBAAiB,CACtB,QAUOlyB,GAAAA,CAAwB/B,EAAE,kBAAqB,cAArB,IAGxBA,EAAE,0BACA,8BADA,MAKd,EAEMo0B,GAAe,SAACh3B,CAAAA,CAAU,CAC9B,IAAAi3B,EAoCIj3B,EAnCFk3B,IAAAA,CAAAA,EAAAA,KAAAA,IAAAA,EAAO,CAAC,EAAAD,CAAA,CAERE,EAiCEn3B,EAjCFm3B,eAAAA,CACAC,EAgCEp3B,EAhCFo3B,wBAAAA,CACAC,EA+BEr3B,EA/BFq3B,gCAAAA,CAEAC,EA6BEt3B,EA7BFs3B,eAAAA,CACAC,EA4BEv3B,EA5BFu3B,kBAAAA,CAEAC,EA0BEx3B,EA1BFw3B,iBAAAA,CACAC,EAyBEz3B,EAzBFy3B,oBAAAA,CAEAC,EAuBE13B,EAvBF03B,gBAAAA,CACAC,EAsBE33B,EAtBF23B,uBAAAA,CACAC,EAqBE53B,EArBF43B,kBAAAA,CAEAC,EAmBE73B,EAnBF63B,gBAAAA,CACAC,EAkBE93B,EAlBF83B,qBAAAA,CACAC,EAiBE/3B,EAjBF+3B,iBAAAA,CACAC,EAgBEh4B,EAhBFg4B,yBAAAA,CAEAC,EAcEj4B,EAdFi4B,eAAAA,CACAC,EAaEl4B,EAbFk4B,wBAAAA,CAEAC,EAWEn4B,EAXFm4B,iBAAAA,CACAC,EAUEp4B,EAVFo4B,oBAAAA,CAGAC,EAOEr4B,EAPFq4B,iBAAAA,CACAC,EAMEt4B,EANFs4B,oBAAAA,CAEAC,EAIEv4B,EAJFu4B,gBAAAA,CACAC,EAGEx4B,EAHFw4B,kBAAAA,CAEAC,EACEz4B,EADFy4B,WAAAA,CAGI5B,EAAsBhuB,CAAAA,EAAAA,EAAAA,UAAAA,EAAW6sB,EAAAA,iBAAiBA,EAAhDmB,eAAAA,CAC0ChuB,EAAAA,CAAAA,EAAAA,EAAAA,UAAAA,EAChDC,EAAAA,uBAAuBA,EAGzB,OAJkDD,EAA1CD,gBAAAA,CAA0CC,EAAxB6vB,mBAAAA,CAKxB,GAAAnzB,EAAA9D,IAAA,EV7FW2kB,GU6FsBA,WAC/B,GAAA7gB,EAAAzD,GAAA,EAAC80B,GAAAA,CAAAA,GACD,GAAArxB,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,KAAAA,IAAM,WACnB+1B,GAAQ,GAAA3xB,EAAAzD,GAAA,EvBqVFsK,EuBrVoBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK8qB,IAGhC,GAAA3xB,EAAA9D,IAAA,EAACyzB,GAAAA,CAAgBtzB,UAAWT,KAAAA,UAAY,CAAEi0B,QAAQ,iBAChD,GAAA7vB,EAAA9D,IAAA,EAACk0B,GAAAA,CACC1vB,OAAQ4wB,EACRjB,SAAS,YACTl1B,UAAW,CAAC,aAAc,YAAY,WACtC,GAAA6E,EAAAzD,GAAA,ErBnEGmP,GqBmEoBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACjB+jB,GAAiBmC,IAAAA,CACrB5lB,UAAU,QACVF,UAAU,iBAEZ,GAAA9L,EAAAzD,GAAA,EnB5CG4R,GmB4CaA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACVshB,GAAiBoC,IAAAA,CACrBl3B,MAAM,cACNiR,UAAW0lB,EAAkB,YAAc,YAAY,OAG3D,GAAAtxB,EAAAzD,GAAA,EhBpHKkU,GgBoHkBA,CAACJ,UAAU,eAClC,GAAArQ,EAAAzD,GAAA,EAAC6zB,GAAAA,CACC1vB,OAAQ4wB,EACRjB,SAAS,YACT3f,OAAO,SACPvV,UAAW,CAAC,sBAAuB,qBAAqB,UACxD,GAAA6E,EAAAzD,GAAA,EflHG6U,GekHiBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAClBxF,UAAW0lB,EAAkB,YAAc,YAAY,EACnD7B,GAAiBqC,UAM3B,GAAA9xB,EAAA9D,IAAA,EAACyzB,GAAAA,CACCtzB,UAAWT,KAAAA,UAAY,CACvBi0B,QAAQ,QACRE,WAAW,gBACX,GAAA/vB,EAAAzD,GAAA,ErBhGKmP,GqBgGkBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACjB+jB,GAAiBsC,IAAAA,CACrBlmB,WAAW,cACXD,UAAW0lB,EAAkB,YAAc,YAAY,IAEzD,GAAAtxB,EAAAzD,GAAA,EP8LKqmB,GO9LSA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACR6M,GAAiBuC,IAAAA,CACrBnP,UAAWyO,EAAkB,OAAS,OAAO,IAE/C,GAAAtxB,EAAAzD,GAAA,EhB/IKkU,GgB+IkBA,CACrBpU,UAAWT,KAAAA,eAAiB,CAC5ByU,UAAU,0BACVM,YAAY,YAKhB,GAAA3Q,EAAA9D,IAAA,EAACyzB,GAAAA,CAAgBtzB,UAAWT,KAAAA,YAAc,CAAEi0B,QAAQ,kBAClD,GAAA7vB,EAAAzD,GAAA,ErBlHKmP,GqBkHkBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACjB+jB,GAAiBwC,IAAAA,CACrBpmB,WAAW,cACXD,UAAU,YACVI,UAAU,WAEZ,GAAAhM,EAAAzD,GAAA,ENmPKkqB,GMnPMA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACLgJ,GAAiByC,IAAAA,CACrBrP,UAAU,OACVloB,MAAM,oBAKV,GAAAqF,EAAA9D,IAAA,EAACyzB,GAAAA,CACCtzB,UAAWT,KAAAA,WAAa,CACxBi0B,QAAQ,QACRE,WAAY,iBACZ,GAAA/vB,EAAAzD,GAAA,ErBpIKmP,GqBoIkBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACjB+jB,GAAiB0C,IAAAA,CACrBtmB,WAAW,cACXD,UAAU,YACVK,UAAU,aAEZ,GAAAjM,EAAAzD,GAAA,EL6GKmrB,GK7GYA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK+H,GAAiB2C,KACvC,GAAApyB,EAAAzD,GAAA,EJpHK0uB,GIoHcA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACbwE,GAAiB4C,IAAAA,CACrB13B,MAAM,oBAKV,GAAAqF,EAAA9D,IAAA,EAACyzB,GAAAA,CACCtzB,UAAWT,KAAAA,WAAa,CACxBi0B,QAAQ,OACRC,UAAW,CAAC,IAAM,IAAM,IAAM,IAAK,CACnCC,WAAY,yBACZ,GAAA/vB,EAAAzD,GAAA,EAACk0B,GAAAA,CACCp0B,UAAWT,KAAAA,yBAA2B,CACtC80B,MAAO6B,WACP,GAAAvyB,EAAAzD,GAAA,ErB1JGmP,GqB0JoBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACjB+jB,GAAiB6C,IAAAA,CACrBn3B,UAAW,CAAC,sBAAsB,MAItC,GAAA6E,EAAAzD,GAAA,EAAC6zB,GAAAA,CACC1vB,OAAQ4wB,EACRjB,SAAS,cACT3f,OAAO,aACPvV,UAAW,CAAC,aAAa,UACzB,GAAA6E,EAAAzD,GAAA,ErBrKGmP,GqBqKoBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACjB+jB,GAAiB+C,IAAAA,CACrB1mB,UAAU,cACVC,SAAS,SACTC,UAAU,aAId,GAAAhM,EAAAzD,GAAA,EnBjJK4R,GmBiJWA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACVshB,GAAiBgD,IAAAA,CACrB93B,MAAM,iBAER,GAAAqF,EAAAzD,GAAA,EhBvNKkU,GgBuNkBA,CACrBpU,UAAWT,KAAAA,gBAAkB,CAC7ByU,UAAU,kBACVQ,WAAW,sBACXH,OAAO,aACPC,YAAY,aAKhB,GAAA3Q,EAAA9D,IAAA,EAACyzB,GAAAA,CAAgBtzB,UAAWT,KAAAA,UAAY,CAAEi0B,QAAQ,iBAChD,GAAA7vB,EAAAzD,GAAA,ErB5LKmP,GqB4LkBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK+jB,GAAiBiD,KAC7C,GAAA1yB,EAAAzD,GAAA,EAAC6zB,GAAAA,CACC1vB,OAAQ4wB,EACRjB,SAAS,cACT3f,OAAO,aACPvV,UAAW,CAAC,aAAa,UACzB,GAAA6E,EAAAzD,GAAA,EnBtKG4R,GmBsKaA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACVshB,GAAiBkD,IAAAA,CACrBh4B,MAAM,mBAGV,GAAAqF,EAAAzD,GAAA,EhB7OKkU,GgB6OkBA,CACrBpU,UAAWT,KAAAA,eAAiB,CAC5ByU,UAAU,mBACVQ,WAAW,sBACXH,OAAO,aACPC,YAAY,aAKhB,GAAA3Q,EAAA9D,IAAA,EAACyzB,GAAAA,CAAgBtzB,UAAWT,KAAAA,YAAc,CAAEi0B,QAAQ,iBAClD,GAAA7vB,EAAAzD,GAAA,EAAC6zB,GAAAA,CAAa1vB,OAAQ4wB,EAAiBjB,SAAS,uBAC9C,GAAArwB,EAAAzD,GAAA,ErBnNGmP,GqBmNoBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACjB+jB,GAAiBmD,IAAAA,CACrB5mB,UAAU,QACVF,UAAU,mBAGd,GAAA9L,EAAAzD,GAAA,ENkJKkqB,GMlJMA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACLgJ,GAAiBoD,IAAAA,CACrBhQ,UAAU,QACVloB,MAAM,oBASV,GAAAqF,EAAAzD,GAAA,EAACozB,GAAAA,CAAgBtzB,UAAWT,KAAAA,YAAc,CAAEi0B,QAAQ,gBAClD,GAAA7vB,EAAA9D,IAAA,EAACk0B,GAAAA,CACC1vB,OAAQ4wB,EACRjB,SAAS,cACT3f,OAAO,mBACP,GAAA1Q,EAAAzD,GAAA,ErB1OGmP,GqB0OoBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK+jB,GAAiBqD,KAC7C,GAAA9yB,EAAAzD,GAAA,EDnOGwyB,GCmOgBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAKU,GAAiBsD,UAK7C,GAAA/yB,EAAAzD,GAAA,EAACozB,GAAAA,CAAgBtzB,UAAWT,KAAAA,WAAa,CAAEi0B,QAAQ,gBACjD,GAAA7vB,EAAA9D,IAAA,EAACk0B,GAAAA,CACC1vB,OAAQ4wB,EACRjB,SAAS,aACT3f,OAAO,mBACP,GAAA1Q,EAAAzD,GAAA,ErBrPGmP,GqBqPoBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK+jB,GAAiBuD,KAC7C,GAAAhzB,EAAAzD,GAAA,EJ/NG0uB,GI+NgBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACbwE,GAAiBwD,IAAAA,CACrBt4B,MAAM,qBAKZ,GAAAqF,EAAA9D,IAAA,EAACC,MAAAA,CAAIE,UAAWT,KAAAA,aAAe,WAC7B,GAAAoE,EAAAzD,GAAA,EAACJ,MAAAA,CAAIE,UAAW,GAAcI,MAAA,CAAXb,KAAAA,QAAU,CAAC,WAC9B,GAAAoE,EAAAzD,GAAA,EAAC62B,GAAAA,CAAMA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EACDF,MAAAA,EAAAA,KAAAA,EAAAA,EAAaG,MAAM,GACvBC,cAAeJ,MAAAA,EAAAA,KAAAA,EAAAA,EAAaI,aAAa,CACzCjD,SAAS,YACTl1B,UAAW,CAAC,gBAAiB,cAAe,YAAY,YAMpE,CAEAs2B,CAAAA,GAAa30B,SAAS,CAAG,CACvB60B,KAAM50B,IAAAA,MAAAA,CAAAA,UAA2B,EAGnC00B,GAAav0B,YAAY,CAAG,CAAC,EC3c7B,IAAAq2B,GD6ceC,CAAAA,EAAAA,EAAAA,YAAAA,EAAa/B,GAAc,CAAEgC,iBAAkB,EAAK,qDEjcnEt2B,CAAAA,EAAA,EAZyB,UAAgC,KAA/BmD,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAQ,IAAKghB,EAAAA,UAAAA,MAAAA,CAAAA,EAAAA,SAAAA,CAAAA,EAAAA,CAAAA,KAAAA,CAAAA,CAAIoS,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAO,EAAE,CAClDlwB,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,IAAMmwB,EAAQ/vB,WAAW,UAAM,CAC7B0d,GACF,EAAGhhB,GAEH,OAAO,UAAM,CACXszB,aAAaD,EACf,CACF,EAAGD,EACL,8FCTe,SAASt4B,GAKtB,KAJA00B,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAY,CAAC,CACbC,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAa,EAAE,CACf8D,EAAAA,CAAAA,CAAAA,UAAAA,MAAAA,CAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAAAA,CACAC,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAAAA,CAEMC,EAAe3R,OAAO4R,MAAM,CAAC,CACjCC,MAAO,QACPC,KAAM,OACNC,OAAQ,QACV,GAEM/3B,EAAM8L,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,IAAI,EACWrF,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAASixB,GAAAA,GAApCv4B,EAA2BsH,CAAAA,CAAAA,EAAAA,CAAhBuxB,EAAgBvxB,CAAAA,CAAAA,EAAAA,CACFA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAAI,KAAtC0P,EAAyB1P,CAAAA,CAAAA,EAAAA,CAAfwxB,EAAexxB,CAAAA,CAAAA,EAAAA,CA0ChC,MAxCAW,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,IAAI4Q,EAAUhY,EAAIuJ,OAAO,CAuBnB2uB,EAAW,IAAIC,qBArBV,SAAClS,CAAAA,CAAY,CACtB,IAAOmS,EAASnS,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAEZmS,EAAMC,kBAAkB,CAAC9pB,GAAG,CAAG,GACjC0pB,EAAYN,EAAaE,KAAK,EAC9BG,EAAa,KACHI,EAAME,cAAc,GAC9BL,EAAYN,EAAaG,IAAI,EAC7BE,EAAa,KAGXI,EAAME,cAAc,GACtBN,EAAa,IACbC,EAAYN,EAAaI,MAAM,EAE3BN,GACFS,EAASK,SAAS,CAACvgB,GAGzB,EAE8C,CAC5C0b,UAAAA,EACAC,WAAAA,CACF,GAMA,OAJI3b,GACFkgB,EAASM,OAAO,CAACxgB,GAGZ,UAAM,CACPA,GACFkgB,EAASK,SAAS,CAACvgB,EAEvB,CACF,EAAG,CAAChY,EAAK0zB,EAAWC,EAAW,EAExB,CAAC3zB,EAAKb,EAAWgX,EAAS,6DCfnCpV,CAAAA,EAAA,EA1CA,SAAuB03B,CAAa,CAAW,KAYpCC,EAAT,UAAwB,CACtBC,EAAWC,EAAWH,GACxB,EAbMG,EAAa,SAACH,CAAAA,CAA2B,OAE7C,EAAqChvB,OAAOovB,UAAU,EAC7CpvB,OAAOovB,UAAU,CAACJ,GAAOK,OAAO,EAMbryB,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,QAAAA,EAAkBmyB,EAAWH,IAAAA,GAApDK,EAAuBryB,CAAAA,CAAAA,EAAAA,CAAdkyB,EAAclyB,CAAAA,CAAAA,EAAAA,CA6B9B,MAvBAW,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,UAAM,CACd,IAAMyxB,EAAapvB,OAAOovB,UAAU,CAACJ,GAYrC,OATAC,IAGIG,EAAWE,WAAW,CACxBF,EAAWE,WAAW,CAACL,GAEvBG,EAAWjxB,gBAAgB,CAAC,SAAU8wB,GAGjC,UAAM,CACPG,EAAWG,cAAc,CAC3BH,EAAWG,cAAc,CAACN,GAE1BG,EAAWlxB,mBAAmB,CAAC,SAAU+wB,EAE7C,CAEF,EAAG,CAACD,EAAM,EAEHK,CACT,uKCxCA,IAAMprB,EAAW,SACfurB,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAEG,KADHC,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAAAA,CAEMxoB,EACJ,CAAEmoB,EAAQC,CAAAA,EAAUC,CAAAA,EAASD,CAAAA,EAAWG,CAAAA,EAAUD,CAAAA,EAAUA,EAE9D,OAAOE,EAbwBzrB,KAAKyJ,GAAG,CAaN8hB,EAbYvrB,KAAKC,GAAG,CAaZurB,EAAfvoB,IAA0BA,CAAK,EAGrDqB,EAAU,SAAConB,CAAAA,CAAW,CAC1B,OAAOA,EACJC,WAAW,GACXhoB,OAAO,CAAC,OAAQ,KAChBA,OAAO,CAAC,KAAM,KACdA,OAAO,CAAC,KAAM,KACdA,OAAO,CAAC,KAAM,KACdA,OAAO,CAAC,YAAa,IACrBA,OAAO,CAAC,SAAU,KAClBA,OAAO,CAAC,MAAO,IACfA,OAAO,CAAC,MAAO,GACpB,EAEMD,EAAuB,SAACkoB,CAAAA,CAAsB,KAAd3U,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAO,CAAC,EACU4U,EAAT5U,CAAAA,GAAQ,CAAC,GAAhD6U,kBAAAA,CACN,MAAO,CAACF,EAAS,IAAIjoB,OAAO,CAAC,wBADvBmoB,KAAAA,IAAAA,EAAqB,cAAAD,CAAA,CAE7B,EAEMvoB,EAAe,SAAC3R,CAAAA,CAAGo6B,CAAAA,CAAMC,CAAAA,CAAc,CAC3C,IAAIC,EAASF,EAAKG,MAAM,CAACF,GACzB,MAAO,GAAOC,MAAAA,CAAJt6B,GAAWa,MAAA,CAAPy5B,EAChB,EAEMlsB,EAAe,SAAC5E,CAAAA,CAAM,CAC1B,OAAO,EAAI6E,KAAKmsB,GAAG,CAAC,EAAIhxB,EAAG,EAC7B,qBCxCAixB,EAAAC,OAAA,EAAkB,gvBCAlBD,EAAAC,OAAA,EAAkB,oQCAlBD,EAAAC,OAAA,EAAkB,4JCAlBD,EAAAC,OAAA,EAAkB,mmCCAlBD,EAAAC,OAAA,EAAkB,47BCAlBD,EAAAC,OAAA,EAAkB,qhBCAlBD,EAAAC,OAAA,EAAkB,4dCAlBD,EAAAC,OAAA,EAAkB,ikBCAlBD,EAAAC,OAAA,EAAkB,w5BCAlBD,EAAAC,OAAA,EAAkB,0aCAlBD,EAAAC,OAAA,EAAkB,miDCAlBD,EAAAC,OAAA,EAAkB,ofEAlBD,EAAAC,OAAA,EAAkB,ilDCAlBD,EAAAC,OAAA,EAAkB,4ECAlBD,EAAAC,OAAA,EAAkB,iDCAlBD,EAAAC,OAAA,EAAkB","sources":["webpack://_N_E/./components/ChartIntroLabel/ChartIntroLabel.js","webpack://_N_E/./components/InfoPopover/InfoPopover.js","webpack://_N_E/./components/RawHtml/RawHtml.js","webpack://_N_E/./components/RawHtml/index.js","webpack://_N_E/./components/StaggeredDelayedAnimation/StaggeredDelayedAnimation.js","webpack://_N_E/./components/VideoIcon/VideoIcon.js","webpack://_N_E/./components/VideoIcon/index.js","webpack://_N_E/./hooks/useElementScrollPosition.js","webpack://_N_E/./components/ScrolledVideoHero/ScrolledVideoHero.js","webpack://_N_E/./components/ScrolledVideoHero/index.js","webpack://_N_E/./components/InsightsSectionHeading/InsightsSectionHeading.js","webpack://_N_E/./components/NumberCounter/NumberCounter.js","webpack://_N_E/./components/BigNumbersBlock/BigNumbersBlock.js","webpack://_N_E/./components/BasicLoader/BasicLoader.js","webpack://_N_E/./components/BasicLoader/index.js","webpack://_N_E/./components/InsightsFullWidthVideo/InsightsFullWidthVideo.js","webpack://_N_E/./components/BigNumberVideoBlock/BigNumberVideoBlock.js","webpack://_N_E/./threejs/utils/sceneHelpers.js","webpack://_N_E/./threejs/utils/gradientMaterialHelpers.js","webpack://_N_E/./threejs/constants.js","webpack://_N_E/./threejs/utils/barHelpers.js","webpack://_N_E/./components/ThreeJsMultiplexedCanvasProvider/ThreeJsMultiplexedCanvasProvider.js","webpack://_N_E/./components/ThreeJsMultiplexedCanvasProvider/index.js","webpack://_N_E/./hooks/useMultiplexedThreeJs.js","webpack://_N_E/./components/PieBarChart3d/PieBarChart3d.js","webpack://_N_E/./components/BarChart3d/BarChart3d.js","webpack://_N_E/./components/GravityBallStats/GravityBallStats.js","webpack://_N_E/./components/InsightsContactCta/InsightsContactCta.js","webpack://_N_E/./components/BarChartHorizontal/constants.js","webpack://_N_E/./components/BarChartHorizontal/chartThemes.js","webpack://_N_E/./components/BarChartHorizontal/BarChartHorizontal.js","webpack://_N_E/./containers/InsightsPage/InsightsPage.js","webpack://_N_E/./containers/InsightsPage/index.js","webpack://_N_E/./hooks/useDelayedEffect.js","webpack://_N_E/./hooks/useIntersectionObserver.js","webpack://_N_E/./hooks/useMediaQuery.ts","webpack://_N_E/./utils/helpers.js","webpack://_N_E/./components/BarChart3d/BarChart3d.module.scss","webpack://_N_E/./components/BarChartHorizontal/BarChartHorizontal.module.scss","webpack://_N_E/./components/BasicLoader/BasicLoader.module.scss","webpack://_N_E/./components/BigNumberVideoBlock/BigNumberVideoBlock.module.scss","webpack://_N_E/./components/BigNumbersBlock/BigNumbersBlock.module.scss","webpack://_N_E/./components/ChartIntroLabel/ChartIntroLabel.module.scss","webpack://_N_E/./components/GravityBallStats/GravityBallStats.module.scss","webpack://_N_E/./components/InfoPopover/InfoPopover.module.scss","webpack://_N_E/./components/InsightsContactCta/InsightsContactCta.module.scss","webpack://_N_E/./components/InsightsFullWidthVideo/InsightsFullWidthVideo.module.scss","webpack://_N_E/./components/InsightsSectionHeading/InsightsSectionHeading.module.scss","webpack://_N_E/./components/PieBarChart3d/PieBarChart3d.module.scss","webpack://_N_E/./components/RawHtml/RawHtml.module.scss","webpack://_N_E/./components/ScrolledVideoHero/ScrolledVideoHero.module.scss","webpack://_N_E/./components/ThreeJsMultiplexedCanvasProvider/ThreeJsMultiplexedCanvasProvider.module.scss","webpack://_N_E/./components/VideoIcon/VideoIcon.module.scss","webpack://_N_E/./containers/InsightsPage/InsightsPage.module.scss","webpack://_N_E/"],"sourcesContent":["import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport InfoPopover from '../InfoPopover/InfoPopover';\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\n\nimport s from './ChartIntroLabel.module.scss';\n\nconst ChartIntroLabel = (props) => {\n const { theme, title, description, titleId, infoTitle, infoText, infoLink, popoverTheme, modifiers } =\n props;\n\n const [inViewRef, isVisible] = useIntersectionObserver(0.5, undefined, true);\n\n const hasInfo = !!infoTitle && !!infoText;\n\n const color = theme === 'dark' ? 'black' : 'white';\n const rootCls = classNames(s.Root, {\n [s.Visible]: isVisible,\n [s.Dark]: theme === 'dark',\n },\n modifiers.map((m) => s[m])\n );\n\n return (\n
\n
\n

{title}

\n {hasInfo && (\n
\n \n
\n )}\n
\n

{description}

\n
\n {hasInfo && (\n \n )}\n
\n
\n );\n};\n\nChartIntroLabel.propTypes = {\n titleId: PropTypes.string,\n theme: PropTypes.oneOf(['light', 'dark']),\n title: PropTypes.string,\n description: PropTypes.string,\n infoTitle: PropTypes.string,\n infoText: PropTypes.string,\n infoLink: PropTypes.shape({\n href: PropTypes.string,\n text: PropTypes.string,\n }),\n popoverTheme: PropTypes.shape({\n background: PropTypes.oneOf(['black-glass', 'white-glass']),\n }),\n modifiers: PropTypes.array,\n};\n\nChartIntroLabel.defaultProps = {\n theme: 'dark',\n title: '',\n description: '',\n popoverTheme: {\n background: 'black-glass',\n },\n modifiers: [],\n};\n\nexport default ChartIntroLabel;\n","import React from 'react';\nimport Link from 'next/link';\nimport Image from 'next/image';\n\nimport PropTypes from 'prop-types';\n\nimport {\n Popover,\n PopoverDescription,\n PopoverHeading,\n usePopoverState,\n} from 'ariakit/popover';\n\nimport { motion, AnimatePresence } from 'framer-motion';\n\nimport ButtonSecondaryEllipse from '../ButtonSecondaryEllipse';\nimport { useTranslation } from 'next-i18next';\n\nimport s from './InfoPopover.module.scss';\n\nconst InfoPopover = ({ title, text, link, color, background }) => {\n const { t } = useTranslation();\n const popover = usePopoverState({\n placement: 'top-center',\n gutter: 16,\n unstable_flip: false,\n flip: false,\n });\n\n const externalLink = link?.href?.includes('http');\n\n const closeIcon = background === 'white-glass' ? 'icon-cross-black.svg' : 'icon-cross-white.svg';\n\n return (\n <>\n \n {popover.open && (\n \n \n \n \n {title}\n \n \n {text}\n \n {link?.href && (\n
\n {t('Generic.source')}: \n \n {link?.text}\n {externalLink && (\n \n )}\n \n
\n )}\n
\n \n )}\n
\n \n {t('Generic.info')}\n {t('Generic.info')}\n \n \n );\n};\n\nInfoPopover.propTypes = {\n title: PropTypes.string,\n text: PropTypes.string,\n color: PropTypes.string,\n link: PropTypes.object,\n background: PropTypes.string,\n};\n\nInfoPopover.defaultProps = {\n color: 'black',\n background: 'black-glass',\n};\n\nexport default InfoPopover;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport s from './RawHtml.module.scss';\n\nconst RawHtml = ({ html }) => (\n
\n);\n\nRawHtml.propTypes = {\n html: PropTypes.string.isRequired,\n};\n\nRawHtml.defaultProps = {\n html: '',\n};\n\nexport default RawHtml;\n","import RawHtml from './RawHtml';\n\nexport default RawHtml;\n","import React from 'react';\nimport { motion } from 'framer-motion';\nimport PropTypes from 'prop-types';\n\nconst StaggeredDelayedAnimation = (props) => {\n const { children, delay = 0, stagger = 0.15 } = props;\n\n const animProps = {\n hidden: {},\n visible: {\n transition: {\n delayChildren: delay,\n staggerChildren: stagger,\n },\n },\n };\n\n return (\n \n {children}\n \n );\n};\n\nStaggeredDelayedAnimation.propTypes = {\n children: PropTypes.node.isRequired,\n delay: PropTypes.number,\n stagger: PropTypes.number,\n};\n\nStaggeredDelayedAnimation.defaultProps = {\n delay: 0.3,\n stagger: 0.25,\n};\n\nconst AnimatedWords = (props) => {\n const { text, duration, initialY } = props;\n\n const words = text.split(' ').filter((word) => word !== ' ');\n\n const wordAnimProps = {\n hidden: {\n opacity: 0,\n y: initialY,\n skew: 15,\n },\n visible: {\n opacity: 1,\n y: 0,\n skew: 0,\n transition: {\n duration,\n opacity: {\n duration: duration * 1.5,\n },\n y: {\n duration: duration * 0.8,\n },\n skew: {\n duration: duration * 1,\n },\n },\n },\n };\n\n return (\n <>\n {words.map((word, i) => {\n return (\n \n \n {word}\n \n {i < words.length - 1 ? ' ' : ''}\n \n );\n })}\n \n );\n};\n\nAnimatedWords.propTypes = {\n duration: PropTypes.number,\n initialY: PropTypes.number,\n text: PropTypes.string.isRequired,\n};\n\nAnimatedWords.defaultProps = {\n duration: 0.7,\n initialY: 16,\n text: '',\n};\n\nconst AnimatedSentences = (props) => {\n const { text = '', duration } = props;\n\n const splittedSentences = text.match(/[^\\.!\\?]+[\\.!\\?]+/g);\n const sentences = splittedSentences ? splittedSentences : [text];\n\n const sentenceAnimProps = {\n hidden: {\n opacity: 0,\n },\n visible: {\n opacity: 1,\n transition: {\n duration,\n },\n },\n };\n\n return (\n <>\n {sentences?.map((sentence, i) => {\n return (\n \n \n {sentence}\n {i < sentences.length - 1 ? '' : ''}\n \n \n );\n })}\n \n );\n};\n\nAnimatedSentences.propTypes = {\n duration: PropTypes.number,\n text: PropTypes.string.isRequired,\n};\n\nAnimatedSentences.defaultProps = {\n duration: 0.8,\n};\n\nexport default StaggeredDelayedAnimation;\nexport { StaggeredDelayedAnimation, AnimatedSentences, AnimatedWords };\n","import React, { useState, useEffect, useCallback, useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { AnimationsActiveContext } from '../../containers/BasePage';\n\nimport s from './VideoIcon.module.scss';\n\n// For transparent videos to work in all browsers, video files in hevc (mp4) and vp9 (webm)\n// are needed, and need to be supplied as follows in the srcs prop for this component:\n//\n// const srcs = [\n// {\n// src: '/video/video-with-alpha-hevc.mp4',\n// type: 'video/mp4; codecs=\"hvc1\"',\n// },\n// {\n// src: '/video/video-with-alpha-vp9.webm',\n// type: 'video/webm',\n// },\n// ];\n//\n// Given a hevc (or prores 4444) master in high resolution, the following steps\n// can be used for conversion:\n//\n// 1. If master is in 1080p hevc, convert this to prores4444 first, using avconvert (or right click and \"Encode video\" in mac os):\n// avconvert -s master.mov -o master-prores.mov -p PresetAppleProRes4444LPCM\n//\n// 2. Convert prores4444 master to prores4444 with correct down scaled resolution for use case, for example 350p:\n// ffmpeg -i master-prores.mov -vcodec prores_ks -pix_fmt yuva444p10le -profile:v 4444 -vf scale=\"350:-1\" master-prores-350p.mov\n//\n// 3. Convert prores 350p to final hevc 350p and vp9 350p:\n// Use rotato converter: https://rotato.app/tools/converter\n//\n// 4. ....or do it manually since Rotato is buggy as hell:\n// 4.a - prores downscaled to hevc:\n// avconvert -prog --preset PresetHEVC1920x1080WithAlpha --source master-prores-350p.mov --output master-hevc-350p.mp4\n// 4.b - prores downscaled to vp9:\n// ffmpeg -i master-prores-350p.mov -stats_period 0.1 -c:v libvpx-vp9 -progress pipe:1 -nostdin master-vp9-350p.webm\n//\n\nconst VideoIcon = ({\n className,\n src,\n srcs,\n active,\n loop,\n transitionDelay = 0,\n onVideoLoaded,\n animationsDisabledFreezeVideoTime,\n ignoreAnimationsDisabled,\n}) => {\n const [videoNode, setVideoNode] = useState(null);\n const videoRefFn = useCallback((_videoNode) => {\n setVideoNode(_videoNode);\n }, []);\n const [isLoaded, setIsLoaded] = useState(false);\n\n const { animationsActive } = useContext(AnimationsActiveContext) || {};\n\n useEffect(() => {\n if (videoNode && !animationsActive && !ignoreAnimationsDisabled) {\n videoNode.pause();\n videoNode.currentTime = animationsDisabledFreezeVideoTime;\n } else if (videoNode) {\n videoNode.play();\n }\n }, [animationsActive]);\n\n useEffect(() => {\n if (active && videoNode && isLoaded) {\n if (transitionDelay > 0) {\n setTimeout(() => {\n if (onVideoLoaded) {\n // timeout is used to give the video a few ms to load/activate after download\n // before calling callback\n setTimeout(() => {\n onVideoLoaded();\n }, 100);\n }\n\n if (animationsActive || ignoreAnimationsDisabled) {\n videoNode.play();\n } else {\n videoNode.pause();\n videoNode.currentTime = animationsDisabledFreezeVideoTime;\n }\n }, transitionDelay);\n } else {\n if (onVideoLoaded) {\n // timeout is used to give the video a few ms to load/activate after download\n // before calling callback\n setTimeout(() => {\n onVideoLoaded();\n }, 100);\n }\n\n if (animationsActive || ignoreAnimationsDisabled) {\n videoNode.play();\n } else {\n videoNode.pause();\n videoNode.currentTime = animationsDisabledFreezeVideoTime;\n }\n }\n }\n }, [active, videoNode, isLoaded]);\n\n useEffect(() => {\n if (!videoNode) {\n return;\n }\n\n const activateVideo = () => {\n videoNode.play();\n if (!loop) {\n setTimeout(() => videoNode.pause(), 50);\n }\n\n document.removeEventListener('touchstart', activateVideo);\n };\n\n // ios\n document.addEventListener('touchstart', activateVideo);\n return () => {\n document.removeEventListener('touchstart', activateVideo);\n };\n }, [videoNode]);\n\n // handle video loaded event\n\n useEffect(() => {\n if (!videoNode) {\n return;\n }\n\n const videoHasLoaded = () => setIsLoaded(true);\n\n // if the video is in the cache of the browser,\n // the 'canplaythrough' event might have been triggered\n // before we registered the event handler.\n if (videoNode.readyState > 3) {\n videoHasLoaded();\n return;\n }\n\n videoNode.addEventListener('canplaythrough', videoHasLoaded);\n return () => {\n videoNode.removeEventListener('canplaythrough', videoHasLoaded);\n };\n }, [videoNode]);\n\n if (!src && !srcs.length) {\n return null;\n }\n\n return (\n \n {srcs.map((s) => (\n \n ))}\n \n \n );\n};\n\nVideoIcon.propTypes = {\n src: PropTypes.string,\n srcs: PropTypes.array,\n active: PropTypes.bool,\n loop: PropTypes.bool,\n transitionDelay: PropTypes.number,\n onVideoLoaded: PropTypes.func,\n animationsDisabledFreezeVideoTime: PropTypes.number,\n ignoreAnimationsDisabled: PropTypes.bool,\n};\n\nVideoIcon.defaultProps = {\n className: null,\n src: null,\n srcs: [],\n active: false,\n loop: false,\n transitionDelay: null,\n onVideoLoaded: null,\n animationsDisabledFreezeVideoTime: 0.5,\n ignoreAnimationsDisabled: false,\n};\n\nexport default VideoIcon;\n","import VideoIcon from './VideoIcon';\n\nexport default VideoIcon;\n","import { useState } from 'react';\nimport { useScrollPosition } from '@n8tb1t/use-scroll-position';\n\nconst useElementScrollPosition = (scrollElementRef) => {\n const [scrolledElementPosition, setScrolledElementPosition] = useState({\n x: 0,\n y: 0,\n scrolledY: 0,\n scrolledP: 0,\n });\n\n useScrollPosition(\n ({ currPos }) => {\n if (!scrollElementRef.current) {\n return;\n }\n\n const scrolledY = -currPos.y;\n const scrolledP =\n scrolledY /\n (scrollElementRef.current.clientHeight - window.innerHeight);\n\n setScrolledElementPosition({\n ...currPos,\n scrolledY,\n scrolledP,\n });\n },\n [],\n scrollElementRef\n );\n\n return scrolledElementPosition;\n};\n\nexport default useElementScrollPosition;\n","// ref: https://codepen.io/shshaw/pen/vYKBPbv/9e810322d70c306de2d18237d0cb2d78\n\nimport React, {\n useState,\n useRef,\n useEffect,\n useCallback,\n useContext,\n} from 'react';\nimport { useTranslation } from 'next-i18next';\nimport { disablePageScroll, enablePageScroll } from 'scroll-lock';\n\nimport {\n motion,\n useScroll,\n useTransform,\n AnimatePresence,\n} from 'framer-motion';\n\nimport BezierEasing from 'bezier-easing';\n\nimport {\n StaggeredDelayedAnimation,\n AnimatedWords,\n} from '../StaggeredDelayedAnimation/StaggeredDelayedAnimation';\n\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport { ZoomLevelContext } from '../../containers/BasePage';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport useElementScrollPosition from '../../hooks/useElementScrollPosition';\n\nimport { mapRange, easeOutCubic } from '../../utils/helpers';\nimport { trackEvent } from '../../utils/dataLayer';\n\n// slow down video 'scroll' speed when we reach the end, see:\n// https://cubic-bezier.com/#.93,.91,.81,.99\nconst videoBezierCurve = BezierEasing(0.93, 0.91, 0.81, 0.99);\n\nimport s from './ScrolledVideoHero.module.scss';\n\n// IMPORTANT:\n// The encoding is super important here to enable frame-by-frame scrubbing:\n// ffmpeg -i ~/Downloads/Toshiba\\ video/original.mov -movflags faststart -vcodec libx264 -crf 23 -g 1 -pix_fmt yuv420p output.mp4\n// ffmpeg -i ~/Downloads/Toshiba\\ video/original.mov -vf scale=960:-1 -movflags faststart -vcodec libx264 -crf 20 -g 1 -pix_fmt yuv420p output_960.mp4\n\nconst DEFAULT_VIDEO_RESP = '/video/scroll-hero--resp--frames-fixed.mp4';\nconst DEFAULT_VIDEO = '/video/scroll-hero--1920p--frames-fixed.mp4';\n\nconst exitAnimProps = {\n opacity: 0,\n transition: {\n duration: 0.15,\n },\n};\n\nconst loaderProgressInitialAnimProps = {\n opacity: 0,\n y: 10,\n};\n\nconst loaderProgressEnteredAnimProps = {\n opacity: 1,\n skew: 0,\n y: 0,\n transition: {\n duration: 0.2,\n },\n};\n\nconst loaderLabelInitialAnimProps = {\n opacity: 0,\n y: 5,\n};\n\nconst loaderLabelEnteredAnimProps = {\n opacity: 1,\n skew: 0,\n y: 0,\n transition: {\n duration: 0.1,\n delay: 0.2,\n },\n};\n\nconst headingInitialAnimProps = {\n opacity: 0,\n skew: 13,\n y: 20,\n};\n\nconst headingEnteredAnimProps = {\n opacity: 1,\n skew: 0,\n y: 0,\n transition: {\n duration: 0.5,\n delay: 0.2,\n },\n};\n\nconst preambleInitialAnimProps = {\n opacity: 0,\n y: 20,\n};\n\nconst preambleEnteredAnimProps = {\n opacity: 1,\n y: 0,\n transition: {\n delay: 0.95,\n duration: 0.5,\n },\n};\n\nconst introPreambleEnteredAnimProps = {\n ...preambleEnteredAnimProps,\n transition: {\n delay: 0.4,\n duration: 0.5,\n },\n};\n\nconst ScrolledVideoHero = (props) => {\n const {\n titleCopy,\n sceneCopy,\n videoSrcResp,\n videoSrc,\n scrollHeightResp,\n scrollHeight,\n } = props;\n\n const { t } = useTranslation();\n const largeVideoMq = useMediaQuery('(min-width: 435px)');\n\n const currentScrollHeight =\n largeVideoMq || !scrollHeightResp ? scrollHeight : scrollHeightResp;\n\n const [videoLoaded, setVideoLoaded] = useState(false);\n const [currentVideoTime, setCurrentVideoTime] = useState(0);\n const [videoNode, setVideoNode] = useState(null);\n const [currentVideoSrc, setCurrentVideoSrc] = useState(videoSrcResp);\n const browserZoomPercentage = useContext(ZoomLevelContext);\n\n const [loadProgress, setLoadProgress] = useState(0);\n const loadProgressRef = useRef(0);\n\n const videoRefFn = useCallback((_videoNode) => {\n setVideoNode(_videoNode);\n }, []);\n\n const scrollElementRef = useRef();\n const scrolledElementPosition = useElementScrollPosition(scrollElementRef);\n\n // handle scroll lock on load\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!videoLoaded) {\n disablePageScroll();\n } else {\n setTimeout(() => {\n enablePageScroll();\n }, 500);\n }\n }, [videoLoaded]);\n\n // handle video source change\n\n useEffect(() => {\n setCurrentVideoSrc(largeVideoMq || !videoSrcResp ? videoSrc : videoSrcResp);\n }, [largeVideoMq]);\n\n // init video\n\n useEffect(() => {\n if (!videoNode || videoLoaded) {\n return;\n }\n\n videoNode.playbackRate = 5.0;\n\n const activateVideo = () => {\n videoNode.play();\n setTimeout(() => {\n videoNode.currentTime = 0;\n videoNode.pause();\n document.removeEventListener('touchstart', activateVideo);\n }, 0);\n };\n\n // ios\n document.addEventListener('touchstart', activateVideo);\n return () => {\n document.removeEventListener('touchstart', activateVideo);\n };\n }, [videoNode]);\n\n // handle video loaded event\n\n const handleVideoProgress = ({ type }) => {\n if (loadProgressRef.current >= 99) {\n return;\n }\n\n switch (type) {\n case 'loadStart':\n loadProgressRef.current += 10;\n setLoadProgress(loadProgressRef.current);\n break;\n\n case 'canplay':\n loadProgressRef.current + 10;\n setLoadProgress(loadProgressRef.current);\n break;\n\n default:\n case 'progress':\n loadProgressRef.current += 15;\n setLoadProgress(loadProgressRef.current);\n break;\n }\n };\n\n const videoHasLoaded = () => {\n const intervalId = setInterval(() => {\n if (videoNode.readyState > 3) {\n clearInterval(intervalId);\n\n loadProgressRef.current = 100;\n setLoadProgress(loadProgressRef.current);\n\n videoNode.removeEventListener('loadStart', handleVideoProgress);\n videoNode.removeEventListener('progress', handleVideoProgress);\n videoNode.removeEventListener('canplay', handleVideoProgress);\n videoNode.removeEventListener('canplaythrough', videoHasLoaded);\n\n // make sure loader is actually perceived\n // and doesn't just flicker by\n setTimeout(() => {\n videoNode.pause();\n videoNode.currentTime = 0;\n\n enablePageScroll();\n setVideoLoaded(true);\n }, 1000);\n }\n }, 250);\n };\n\n useEffect(() => {\n if (!videoNode) {\n return;\n }\n\n // if the video is in the cache of the browser,\n // the 'canplaythrough' event might have been triggered\n // before we registered the event handler.\n if (videoNode.readyState > 3) {\n videoHasLoaded();\n return;\n }\n\n videoNode.addEventListener('loadStart', handleVideoProgress);\n videoNode.addEventListener('progress', handleVideoProgress);\n videoNode.addEventListener('canplay', handleVideoProgress);\n videoNode.addEventListener('canplaythrough', videoHasLoaded);\n\n return () => {\n videoNode.removeEventListener('loadStart', handleVideoProgress);\n videoNode.removeEventListener('progress', handleVideoProgress);\n videoNode.removeEventListener('canplay', handleVideoProgress);\n videoNode.removeEventListener('canplaythrough', videoHasLoaded);\n };\n }, [videoNode]);\n\n // set current video time based on y scroll pos\n\n useEffect(() => {\n if (!videoNode) {\n return;\n }\n\n const currentTime = (\n videoBezierCurve(scrolledElementPosition.scrolledP) * videoNode.duration\n ).toFixed(2);\n\n if (\n isNaN(currentTime) ||\n currentTime < 0 ||\n currentTime >= videoNode.duration\n ) {\n return;\n }\n\n setCurrentVideoTime(currentTime);\n }, [scrolledElementPosition, videoNode]);\n\n useEffect(() => {\n if (!videoNode) {\n return;\n }\n\n videoNode.currentTime = currentVideoTime;\n }, [currentVideoTime, videoNode]);\n\n // event handlers\n\n const handleExperienceScroll = () => {\n const windowInnerHeight =\n typeof window !== 'undefined' ? window.innerHeight : 1045;\n const maxScrollPx = (currentScrollHeight / 100) * windowInnerHeight;\n\n trackEvent('scrollButton');\n\n window.scroll({\n top: Math.min(\n window.scrollY + window.innerHeight * (scrollHeight / 400),\n maxScrollPx\n ),\n left: 0,\n behavior: 'smooth',\n });\n };\n\n // classes\n\n const videoOverlayCls = classNames(s.VideoOverlay, {\n [s.VideoOverlayLocked]: scrolledElementPosition.scrolledP >= 1,\n });\n\n const startCopyVisible = scrolledElementPosition.scrolledP <= 0;\n const introVisible = videoLoaded && startCopyVisible;\n\n const scenes = sceneCopy.map((scene) => ({\n ...scene,\n active:\n currentVideoTime > scene.startTime && currentVideoTime < scene.endTime,\n }));\n\n // fade overlay\n\n const { scrollY } = useScroll();\n const fadeYEased = useTransform(scrollY, (v) => {\n const windowInnerHeight =\n typeof window !== 'undefined' ? window.innerHeight : 2000;\n const scrollHeightPx = (currentScrollHeight / 100 - 0) * windowInnerHeight;\n\n const scrollYPx = scrollY.get();\n const pastContainerBottom =\n scrollYPx - (scrollHeightPx - windowInnerHeight);\n const fadeY = mapRange(pastContainerBottom, 0, windowInnerHeight, 0, 1);\n const eased =\n -1 * easeOutCubic(Math.min(fadeY, 1)) * windowInnerHeight * 0.7;\n\n return eased;\n });\n\n const loaderBgCls = classNames(s.LoaderBg, {\n [s.Hidden]: videoLoaded,\n });\n\n const rootCls = classNames(s.Root, {\n [s.ZoomLevel200]: browserZoomPercentage >= 190,\n [s.ZoomLevel300]: browserZoomPercentage >= 290,\n [s.ZoomLevel300]: browserZoomPercentage >= 290,\n [s.ZoomLevel400]: browserZoomPercentage >= 390,\n });\n\n return (\n <>\n
\n
\n \n {videoLoaded && scrolledElementPosition.scrolledP > 0 && (\n \n )}\n
\n\n \n {!videoLoaded && loadProgress !== null && (\n
\n
\n \n {t('Insights.loadingExperience')}\n \n \n {loadProgress}%\n \n
\n
\n )}\n
\n\n
\n \n {introVisible && (\n \n
\n \n {titleCopy.boldTitle} \n \n {titleCopy.regularTitle}\n \n \n \n {titleCopy.preamble}\n \n
\n \n )}\n
\n\n \n
\n \n {scrolledElementPosition.scrolledP <= 0 && (\n \n {t('Insights.scrollToExplore')}\n \n )}\n\n {scrolledElementPosition.scrolledP > 0 && (\n \n {t('Insights.keepScrolling')}\n \n )}\n \n
\n \n \n\n \n {scenes.length &&\n !introVisible &&\n scenes.map((scene) => {\n if (!scene.active) {\n return;\n }\n\n const titleCls = classNames(s.SceneTitle, 'grid');\n\n return (\n \n \n

\n \n \n \n \n \n \n

\n
\n
\n \n {scene.text}\n \n
\n
\n );\n })}\n \n\n
\n \n
\n
\n
\n \n );\n};\n\nScrolledVideoHero.propTypes = {\n titleCopy: PropTypes.object.isRequired,\n scrollHeight: PropTypes.number.isRequired,\n scrollHeightResp: PropTypes.number,\n videoSrc: PropTypes.string.isRequired,\n videoSrcResp: PropTypes.string,\n sceneCopy: PropTypes.array,\n};\n\nScrolledVideoHero.defaultProps = {\n titleCopy: {\n regularTitle: '',\n boldTitle: '',\n },\n videoSrc: DEFAULT_VIDEO,\n videoSrcResp: DEFAULT_VIDEO_RESP,\n scrollHeightResp: null,\n scrollHeight: 800,\n sceneCopy: [],\n};\n\nexport default ScrolledVideoHero;\n","import ScrolledVideoHero from './ScrolledVideoHero';\n\nexport default ScrolledVideoHero;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Image from 'next/image';\n\nimport VideoIcon from '../VideoIcon';\n\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\n\nimport s from './InsightsSectionHeading.module.scss';\n\nconst TEXT_COLOR_LIGHT = 'text-light';\nconst TEXT_COLOR_DARK = 'text-dark';\n\nconst THEME_PINK_PURPLE_BLUE = 'pink-purple-blue';\nconst THEME_PINK_PURPLE = 'pink-purple';\nconst THEME_PINK_ORANGE = 'pink-orange';\nconst THEME_BLUE_PURPLE = 'blue-purple';\nconst THEME_BLUE_GREEN = 'blue-green';\nconst THEME_WHITE = 'white';\n\nconst ICON_CLOUDS = 'clouds';\nconst ICON_CLOUD = 'cloud';\n\nconst VIDEO_ICON_BALLOON = 'balloon';\n\nconst videoIconMap = {\n [VIDEO_ICON_BALLOON]: [\n {\n src: '/video/balloon--600p--hevc.mp4',\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: '/video/balloon--600p--vp9.webm',\n type: 'video/webm',\n },\n ],\n};\n\nconst InsightsSectionHeading = (props) => {\n const {\n label,\n boldTitle,\n regularTitle,\n preamble,\n textColor,\n titleTheme,\n iconTheme,\n leftIcon,\n rightIcon,\n videoIcon,\n modifiers,\n } = props;\n\n const [inViewRef, isVisible] = useIntersectionObserver(0.5);\n\n const rootCls = classNames(\n s.Root,\n {\n [s.ShortRightIconTransitionDelay]:\n (!!rightIcon || !!videoIcon) && !!!leftIcon,\n\n [s.TextColorDark]: textColor === TEXT_COLOR_DARK,\n\n [s.TitleThemePinkPurple]: titleTheme === THEME_PINK_PURPLE,\n [s.TitleThemePinkOrange]: titleTheme === THEME_PINK_ORANGE,\n [s.TitleThemeBluePurple]: titleTheme === THEME_BLUE_PURPLE,\n [s.TitleThemeBlueGreen]: titleTheme === THEME_BLUE_GREEN,\n\n [s.Visible]: isVisible,\n },\n modifiers.map((m) => s[m])\n );\n\n const videoIconSrcs =\n videoIcon && videoIcon in videoIconMap ? videoIconMap[videoIcon] : null;\n\n return (\n
\n
\n {leftIcon && (\n
\n \n
\n )}\n\n {videoIconSrcs && (\n
\n \n
\n )}\n\n {rightIcon && !videoIconSrcs && (\n
\n \n
\n )}\n
\n
\n {videoIconSrcs && (\n
\n \n
\n )}\n\n {label && (\n
\n {label}\n
\n )}\n\n
\n

\n {boldTitle}  \n {regularTitle}\n

\n
\n\n {preamble && (\n
\n

{preamble}

\n
\n )}\n
\n
\n );\n};\n\nInsightsSectionHeading.propTypes = {\n label: PropTypes.string,\n boldTitle: PropTypes.string.isRequired,\n regularTitle: PropTypes.string.isRequired,\n preamble: PropTypes.string,\n textColor: PropTypes.oneOf([TEXT_COLOR_DARK, TEXT_COLOR_LIGHT]),\n titleTheme: PropTypes.oneOf([\n THEME_PINK_PURPLE,\n THEME_PINK_ORANGE,\n THEME_BLUE_PURPLE,\n THEME_BLUE_GREEN,\n ]),\n iconTheme: PropTypes.oneOf([\n THEME_PINK_PURPLE_BLUE,\n THEME_PINK_PURPLE,\n THEME_PINK_ORANGE,\n THEME_BLUE_PURPLE,\n THEME_BLUE_GREEN,\n THEME_WHITE,\n ]),\n leftIcon: PropTypes.oneOf([ICON_CLOUD, ICON_CLOUDS]),\n rightIcon: PropTypes.oneOf([ICON_CLOUD, ICON_CLOUDS]),\n videoIcon: PropTypes.oneOf([VIDEO_ICON_BALLOON]),\n modifiers: PropTypes.arrayOf(PropTypes.string),\n};\n\nInsightsSectionHeading.defaultProps = {\n boldTitle: '',\n regularTitle: '',\n preamble: '',\n titleTheme: null,\n iconTheme: THEME_WHITE,\n leftIcon: null,\n rightIcon: null,\n videoIcon: null,\n modifiers: [],\n};\n\nexport default InsightsSectionHeading;\n","import React, { useEffect, useRef } from 'react';\nimport { animate } from 'framer-motion';\n\nimport PropTypes from 'prop-types';\n\nimport { formatNumberReadable, endPadString } from '../../utils/helpers';\n\nconst NumberCounter = (props) => {\n const {\n from,\n to,\n active,\n duration,\n decimalCount,\n decimalSign,\n onPlay = null,\n onUpdate = null,\n onComplete = null,\n } = props;\n\n const nodeRef = useRef();\n\n const getNumberStrPaddedToFinalValue = (value, finalValue) => {\n const toStr = finalValue.toFixed(decimalCount);\n const strVal = value.toFixed(decimalCount);\n const padLen = toStr.length - strVal.length;\n\n return endPadString(strVal, '0', padLen > 0 ? padLen : 0);\n };\n\n const getFinalCounterStr = (value) => {\n const paddedStr = getNumberStrPaddedToFinalValue(value, to);\n const formatted = formatNumberReadable(paddedStr);\n\n if (decimalCount > 0) {\n return formatted.replace('.', decimalSign);\n }\n\n return formatted;\n };\n\n useEffect(() => {\n const node = nodeRef.current;\n if (!active) {\n node.innerHTML = to;\n return;\n }\n\n const controls = animate(from, to, {\n duration,\n onComplete: () => {\n const formattedNumber = getFinalCounterStr(to);\n node.innerHTML = formattedNumber;\n\n if (onComplete) {\n onComplete(formattedNumber);\n }\n },\n onPlay: () => {\n const formattedNumber = getFinalCounterStr(from);\n node.innerHTML = formattedNumber;\n\n if (onPlay) {\n onPlay(formattedNumber);\n }\n },\n onUpdate(value) {\n const formattedNumber = getFinalCounterStr(value);\n node.innerHTML = formattedNumber;\n\n if (onUpdate) {\n onUpdate(formattedNumber);\n }\n },\n });\n\n return () => {\n controls.stop();\n };\n }, [from, to, active]);\n\n return

;\n};\n\nNumberCounter.propTypes = {\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n active: PropTypes.bool.isRequired,\n duration: PropTypes.number,\n onPlay: PropTypes.func,\n onUpdate: PropTypes.func,\n onComplete: PropTypes.func,\n};\n\nNumberCounter.defaultProps = {\n duration: 1,\n decimalCount: 0,\n decimalSign: ',',\n onPlay: null,\n onUpdate: null,\n onComplete: null,\n};\n\nexport default NumberCounter;\n","import React, { useEffect, useRef, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport { updateTextSize } from 'auto-text-size';\n\nimport ChartIntroLabel from '../ChartIntroLabel/ChartIntroLabel';\nimport NumberCounter from '../NumberCounter/NumberCounter';\n\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\nimport useWindowWidth from '../../hooks/useWindowWidth';\nimport useDelayedEffect from '../../hooks/useDelayedEffect';\n\nimport { AnimationsActiveContext } from '../../containers/BasePage';\n\nimport { slugify } from '../../utils/helpers';\n\nimport s from './BigNumbersBlock.module.scss';\n\nconst TEXT_COLOR_LIGHT = 'text-light';\nconst TEXT_COLOR_DARK = 'text-dark';\n\nconst THEME_PINK_PURPLE = 'pink-purple';\nconst THEME_PINK_ORANGE = 'pink-orange';\nconst THEME_BLUE_PURPLE = 'blue-purple';\nconst THEME_BLUE_GREEN = 'blue-green';\n\nconst BigNumbersBlock = (props) => {\n const {\n title,\n description,\n infoTitle,\n infoText,\n infoLink,\n counterAnimationDuration,\n items,\n theme,\n textColor,\n } = props;\n\n const { animationsActive } = useContext(AnimationsActiveContext) || {};\n\n const titleSlug = slugify(title);\n const [activeTabIdx, setActiveTabIdx] = React.useState(0);\n\n const [inViewRef, isVisible] = useIntersectionObserver(0.5, undefined, true);\n const windowWidth = useWindowWidth();\n\n const textSizeContainerRefs = useRef([]);\n const textSizeInnerRefs = useRef([]);\n\n const handleUpdateTextSize = (i) => (v) => {\n if (!textSizeInnerRefs.current[i]) {\n return;\n }\n\n updateTextSize({\n containerEl: textSizeContainerRefs.current[i],\n innerEl: textSizeInnerRefs.current[i],\n maxFontSizePx: 230,\n });\n };\n\n const handleTabSelect = (index) => {\n setActiveTabIdx(index);\n };\n\n const updateAllTabTextSizes = () => {\n textSizeInnerRefs.current.forEach((el, i) => {\n if (!el) {\n return;\n }\n\n updateTextSize({\n containerEl: textSizeContainerRefs.current[i],\n innerEl: el,\n maxFontSizePx: 230,\n });\n });\n };\n\n // update value text sizes on window resize\n useEffect(() => {\n if (textSizeInnerRefs.current.length === 0) {\n return;\n }\n\n updateAllTabTextSizes();\n }, [windowWidth, isVisible]);\n\n // update value text sizes manually if we have no enter animation\n useDelayedEffect(\n 300,\n () => {\n if (counterAnimationDuration === 0 || !animationsActive) {\n updateAllTabTextSizes();\n }\n },\n [isVisible, counterAnimationDuration]\n );\n\n const rootCls = classNames(s.Root, 'grid', {\n [s.Visible]: isVisible,\n\n [s.TextColorDark]: textColor === TEXT_COLOR_DARK,\n\n [s.ThemePinkPurple]: theme === THEME_PINK_PURPLE,\n [s.ThemePinkOrange]: theme === THEME_PINK_ORANGE,\n [s.ThemeBluePurple]: theme === THEME_BLUE_PURPLE,\n [s.ThemeBlueGreen]: theme === THEME_BLUE_GREEN,\n });\n\n return (\n

\n
\n \n
\n {items.length > 1 && (\n
\n {items.map((item, i) => {\n const containerWidth = (1 / items.length) * 100;\n const tabIndicatorCls = classNames(s.TabIndicator, {\n [s.TabActive]: i === activeTabIdx,\n });\n\n return (\n \n handleTabSelect(i)}>\n {item.title}\n \n
\n
\n );\n })}\n
\n )}\n
\n
\n {items.map((item, i) => {\n const tabValueActive = i === activeTabIdx;\n const statCls = classNames(s.Stat, {\n [s.StatActive]: tabValueActive,\n });\n\n return (\n
\n (textSizeContainerRefs.current[i] = el)}>\n (textSizeInnerRefs.current[i] = el)}>\n \n {item.valueUnit && <> {item.valueUnit}}\n \n
\n
\n );\n })}\n
\n \n \n );\n};\n\nBigNumbersBlock.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n counterAnimationDuration: PropTypes.number,\n infoTitle: PropTypes.string,\n infoText: PropTypes.string,\n infoLink: PropTypes.object,\n items: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n value: PropTypes.number,\n valueUnit: PropTypes.string,\n })\n ),\n textColor: PropTypes.oneOf([TEXT_COLOR_DARK, TEXT_COLOR_LIGHT]),\n theme: PropTypes.oneOf([\n THEME_PINK_PURPLE,\n THEME_PINK_ORANGE,\n THEME_BLUE_PURPLE,\n THEME_BLUE_GREEN,\n ]),\n};\n\nBigNumbersBlock.defaultProps = {\n title: '',\n description: '',\n counterAnimationDuration: 1.6,\n items: [],\n textColor: TEXT_COLOR_LIGHT,\n theme: THEME_PINK_ORANGE,\n};\n\nexport default BigNumbersBlock;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport s from './BasicLoader.module.scss';\n\nconst BasicLoader = ({ theme }) => {\n const rootCls = classNames(s.Root, {\n [s.Dark]: theme === 'dark',\n });\n\n return (\n
\n
\n
\n );\n};\n\nBasicLoader.propTypes = {\n theme: PropTypes.oneOf(['light', 'dark']),\n animationDuration: PropTypes.number,\n};\n\nBasicLoader.defaultProps = {\n theme: 'light',\n};\n\nexport default BasicLoader;\n","import BasicLoader from './BasicLoader';\n\nexport default BasicLoader;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport VideoIcon from '../VideoIcon';\nimport BasicLoader from '../BasicLoader';\n\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\nimport useMediaQuery from '../../hooks/useMediaQuery';\n\nimport s from './InsightsFullWidthVideo.module.scss';\n\nconst VIDEO_FIBER = 'fiber-loop';\nconst VIDEO_BESOKSNARING_LIGHT = 'besoksnaring-light-loop';\nconst VIDEO_BEFOLKNING = 'befolkning-loop';\nconst VIDEO_FORETAGANDE = 'foretagande-loop';\n\nexport const AVAILABLE_VIDEOS = [\n VIDEO_FIBER,\n VIDEO_BESOKSNARING_LIGHT,\n VIDEO_BEFOLKNING,\n VIDEO_FORETAGANDE,\n];\n\n// always set to false before commit!!\nconst DEBUG_MQS = false;\n\nconst videos = AVAILABLE_VIDEOS.reduce((videos, videoSlug) => {\n videos[videoSlug] = {\n small: [\n {\n src: `/video/${videoSlug}--800p--hevc.mp4`,\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: `/video/${videoSlug}--800p--vp9.webm`,\n type: 'video/webm',\n },\n ],\n medium: [\n {\n src: `/video/${videoSlug}--1200p--hevc.mp4`,\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: `/video/${videoSlug}--1200p--vp9.webm`,\n type: 'video/webm',\n },\n ],\n large: [\n {\n src: `/video/${videoSlug}--1800p--hevc.mp4`,\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: `/video/${videoSlug}--1800p--vp9.webm`,\n type: 'video/webm',\n },\n ],\n };\n\n return videos;\n}, {});\n\nconst InsightsFullWidthVideo = (props) => {\n const { videoSlug, layout, className, loaderColor, mediumQuery, largeQuery } =\n props;\n\n const mediumVideoMq = useMediaQuery(mediumQuery);\n const largeVideoMq = useMediaQuery(largeQuery);\n\n const [videoLoaded, setVideoLoaded] = useState(false);\n const [videoSrcs, setVideoSrcs] = useState(null);\n const [currentVideoSize, setCurrentVideoSize] = useState(null);\n\n useEffect(() => {\n const videoS = videoSlug in videos ? videos[videoSlug] : null;\n\n if (videoS && !mediumVideoMq && !largeVideoMq) {\n if (DEBUG_MQS) {\n setCurrentVideoSize('small');\n }\n\n setVideoSrcs(videoS.small);\n } else if (videoS && mediumQuery && mediumVideoMq && !largeVideoMq) {\n if (DEBUG_MQS) {\n setCurrentVideoSize('medium');\n }\n\n setVideoSrcs(videoS.medium);\n } else if (videoS && largeQuery && largeVideoMq) {\n if (DEBUG_MQS) {\n setCurrentVideoSize('large');\n }\n\n setVideoSrcs(videoS.large);\n }\n }, [mediumVideoMq, largeVideoMq]);\n\n const [inViewRef, isVisible] = useIntersectionObserver(\n [0, 0.25, 0.5, 0.75, 1],\n `-100px 0px 0px 0px`,\n true\n );\n\n const rootCls = classNames(s.Root, className, 'grid', {\n [s.Visible]: isVisible,\n [s.VideoLoaded]: videoLoaded,\n [s.LayoutExtraWide]: layout === 'extra-wide',\n });\n\n return (\n
\n {DEBUG_MQS &&

DEBUG_MQS: {currentVideoSize}

}\n
\n {isVisible && videoSrcs && (\n {\n setVideoLoaded(true);\n }}\n />\n )}\n
\n
\n \n
\n
\n
\n
\n );\n};\n\nInsightsFullWidthVideo.propTypes = {\n className: PropTypes.string,\n mediumQuery: PropTypes.string,\n largeQuery: PropTypes.string,\n layout: PropTypes.oneOf(['normal', 'extra-wide']),\n videoSlug: PropTypes.oneOf(AVAILABLE_VIDEOS),\n loaderColor: PropTypes.oneOf(['light', 'dark']),\n};\n\nInsightsFullWidthVideo.defaultProps = {\n videoSlug: null,\n layout: 'normal',\n loaderColor: 'light',\n mediumQuery: '(min-width: 800px)',\n};\n\nexport default InsightsFullWidthVideo;\n","import React, { useState, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'next-i18next';\n\nimport NumberCounter from '../NumberCounter/NumberCounter';\nimport VideoIcon from '../VideoIcon';\nimport BasicLoader from '../BasicLoader';\nimport InfoPopover from '../InfoPopover/InfoPopover';\n\nimport classNames from 'classnames';\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\n\nimport { AnimationsActiveContext } from '../../containers/BasePage';\n\nimport s from './BigNumberVideoBlock.module.scss';\n\nconst TEXT_COLOR_LIGHT = 'text-light';\nconst TEXT_COLOR_DARK = 'text-dark';\n\nconst THEME_PINK_PURPLE = 'pink-purple';\nconst THEME_PINK_ORANGE = 'pink-orange';\nconst THEME_BLUE_PURPLE = 'blue-purple';\nconst THEME_BLUE_GREEN = 'blue-green';\n\nconst VIDEO_ICON_GLOBE = 'glob-loop';\n\nconst videoIcons = {\n [VIDEO_ICON_GLOBE]: [\n {\n src: `/video/${VIDEO_ICON_GLOBE}--700p--hevc.mp4`,\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: `/video/${VIDEO_ICON_GLOBE}--700p--vp9.webm`,\n type: 'video/webm',\n },\n ],\n};\n\nconst BigNumberVideoBlock = (props) => {\n const {\n titleTop,\n titleBottom,\n value,\n infoTitle,\n infoText,\n infoLink,\n counterAnimationDuration,\n textColor,\n theme,\n videoIcon,\n } = props;\n const hasInfo = !!infoTitle && !!infoText;\n\n const { t } = useTranslation();\n const [inViewRef, isVisible] = useIntersectionObserver(0.5, undefined, true);\n const [videoIconLoaded, setVideoIconLoaded] = useState(false);\n\n const videoIconSrcs = videoIcons[videoIcon];\n const color = textColor === TEXT_COLOR_LIGHT ? 'white' : 'black';\n\n const { animationsActive } = useContext(AnimationsActiveContext) || {};\n\n const rootCls = classNames(s.Root, 'grid', {\n [s.Visible]: isVisible,\n [s.VideoLoaded]: videoIconLoaded,\n\n [s.TextColorDark]: textColor === TEXT_COLOR_DARK,\n\n [s.ThemePinkPurple]: theme === THEME_PINK_PURPLE,\n [s.ThemePinkOrange]: theme === THEME_PINK_ORANGE,\n [s.ThemeBluePurple]: theme === THEME_BLUE_PURPLE,\n [s.ThemeBlueGreen]: theme === THEME_BLUE_GREEN,\n });\n\n const loaderCls = classNames(s.Loader, {\n [s.Visible]: !videoIconLoaded,\n });\n\n return (\n
\n
\n
\n
\n

\n {titleTop}\n \n \n \n {titleBottom}\n

\n {hasInfo && (\n
\n \n
\n )}\n
\n\n
\n
\n
\n \n
\n
\n\n {videoIconSrcs && isVisible && (\n {\n setVideoIconLoaded(true);\n }}\n />\n )}\n
\n
\n
\n
\n );\n};\n\nBigNumberVideoBlock.propTypes = {\n titleTop: PropTypes.string,\n titleBottom: PropTypes.string,\n value: PropTypes.number,\n counterAnimationDuration: PropTypes.number,\n textColor: PropTypes.oneOf([TEXT_COLOR_DARK, TEXT_COLOR_LIGHT]),\n theme: PropTypes.oneOf([\n THEME_PINK_PURPLE,\n THEME_PINK_ORANGE,\n THEME_BLUE_PURPLE,\n THEME_BLUE_GREEN,\n ]),\n videoIcon: PropTypes.oneOf([VIDEO_ICON_GLOBE]),\n};\n\nBigNumberVideoBlock.defaultProps = {\n titleTop: '',\n titleBottom: '',\n value: 0,\n counterAnimationDuration: 1.6,\n textColor: TEXT_COLOR_LIGHT,\n theme: THEME_PINK_PURPLE,\n videoIcon: VIDEO_ICON_GLOBE,\n};\nexport default BigNumberVideoBlock;\n","import { Scene, PerspectiveCamera, DirectionalLight, Vector3 } from 'three';\n\nconst createBaseScene = (props = {}) => {\n const {\n aspect = 2,\n cameraPosition = { x: 0, y: 0, z: 85 },\n lightPosition = { x: -10, y: 5, z: 4 },\n lightIntensity = 15,\n } = props;\n\n const scene = new Scene();\n\n const fov = 45;\n const near = 0.1;\n const far = 200;\n\n const camera = new PerspectiveCamera(fov, aspect, near, far);\n camera.position.set(cameraPosition.x, cameraPosition.y, cameraPosition.z);\n camera.lookAt(0, 0, 0);\n\n const color = 0xffffff;\n const light = new DirectionalLight(color, lightIntensity);\n light.position.set(lightPosition.x, lightPosition.y, lightPosition.z);\n scene.add(light);\n\n return {\n camera,\n scene,\n };\n};\n\n// https://wejn.org/2020/12/cracking-the-threejs-object-fitting-nut/\n\nconst fitCameraToCenteredObject = function (\n camera,\n boundingBox,\n offset,\n cameraMinZ,\n orbitControls\n) {\n // var middle = new Vector3();\n var size = new Vector3();\n boundingBox.getSize(size);\n\n // figure out how to fit the box in the view:\n // 1. figure out horizontal FOV (on non-1.0 aspects)\n // 2. figure out distance from the object in X and Y planes\n // 3. select the max distance (to fit both sides in)\n //\n // The reason is as follows:\n //\n // Imagine a bounding box (BB) is centered at (0,0,0).\n // Camera has vertical FOV (camera.fov) and horizontal FOV\n // (camera.fov scaled by aspect, see fovh below)\n //\n // Therefore if you want to put the entire object into the field of view,\n // you have to compute the distance as: z/2 (half of Z size of the BB\n // protruding towards us) plus for both X and Y size of BB you have to\n // figure out the distance created by the appropriate FOV.\n //\n // The FOV is always a triangle:\n //\n // (size/2)\n // +--------+\n // | /\n // | /\n // | /\n // | F° /\n // | /\n // | /\n // | /\n // |/\n //\n // F° is half of respective FOV, so to compute the distance (the length\n // of the straight line) one has to: `size/2 / Math.tan(F)`.\n //\n // FTR, from https://threejs.org/docs/#api/en/cameras/PerspectiveCamera\n // the camera.fov is the vertical FOV.\n\n const fov = camera.fov * (Math.PI / 180);\n const fovh = 2 * Math.atan(Math.tan(fov / 2) * camera.aspect);\n let dx = size.z / 2 + Math.abs(size.x / 2 / Math.tan(fovh / 2));\n let dy = size.z / 2 + Math.abs(size.y / 2 / Math.tan(fov / 2));\n let cameraZ = Math.max(dx, dy);\n\n // offset the camera, if desired (to avoid filling the whole canvas)\n if (typeof offset !== 'undefined' && offset !== 0) {\n cameraZ *= offset;\n }\n\n if (typeof cameraMinZ !== 'undefined') {\n cameraZ = Math.max(cameraMinZ, cameraZ);\n }\n\n camera.position.set(0, 0, cameraZ);\n\n // set the far plane of the camera so that it easily encompasses the whole object\n const minZ = boundingBox.min.z;\n const cameraToFarEdge = minZ < 0 ? -minZ + cameraZ : cameraZ - minZ;\n\n camera.far = cameraToFarEdge * 3;\n camera.updateProjectionMatrix();\n\n if (orbitControls !== undefined) {\n // set camera to rotate around the center\n orbitControls.target = new Vector3(0, 0, 0);\n\n // prevent camera from zooming out far enough to create far plane cutoff\n orbitControls.maxDistance = cameraToFarEdge * 2;\n }\n};\n\nconst alignHtmlElPositionWithWorldSpacePoint = (props) => {\n const {\n camera,\n resolution,\n worldSpacePosition,\n element,\n alignToBottomOfPoint = false,\n alignToTopOfPoint = false,\n centerAlign = true,\n leftAlign = false,\n rightAlign = false,\n } = props;\n\n const screenSpacePosition = worldSpacePosition.clone();\n screenSpacePosition.project(camera);\n\n const elDims = element.getBoundingClientRect();\n\n const translateX =\n screenSpacePosition.x * resolution.width * 0.5 +\n (centerAlign ? -elDims.width / 2 : 0) +\n (leftAlign ? -elDims.width : 0) +\n (rightAlign ? elDims.width : 0);\n\n const translateY =\n screenSpacePosition.y * resolution.height * 0.5 +\n (alignToTopOfPoint ? elDims.height : 0) -\n (alignToBottomOfPoint ? elDims.height : 0);\n\n element.style.transform = `translateX(${translateX}px) translateY(${-translateY}px)`;\n};\n\nexport {\n createBaseScene,\n fitCameraToCenteredObject,\n alignHtmlElPositionWithWorldSpacePoint,\n};\n","import {\n MeshPhysicalMaterial,\n MeshPhongMaterial,\n Color,\n TextureLoader,\n RepeatWrapping,\n} from 'three';\n\nconst NOISE_TEXTURE_URL = '/img/random_noise_tileable_256x256.jpg';\n\nconst createGlassGradientMaterial = ({\n gradientColors,\n envMap,\n pointerLightIntensity = 0.2,\n normedGradientMiddle = 0.5,\n noiseAmount = 0.1,\n}) => {\n const { gradientColorBottom, gradientColorTop, gradientColorMiddle } =\n gradientColors;\n\n const glassMaterial = new MeshPhysicalMaterial({\n roughness: 0.1,\n transmission: 0,\n thickness: 0,\n ior: 1.7,\n clearcoat: 0.25,\n clearcoatRoughness: 0.45,\n color: new Color(0x000000),\n envMap: envMap,\n });\n\n let customGlassUniforms = {\n uTime: { value: 0 },\n uGradientColors: {\n value: [gradientColorBottom, gradientColorTop, gradientColorMiddle],\n },\n uResolution: {\n value: [0, 0],\n },\n uScissorOffsets: {\n value: [0, 0],\n },\n uPixelRatio: {\n value: 0,\n },\n uMousePointer: {\n value: [0, 0],\n },\n uPointerLightIntensity: {\n value: pointerLightIntensity,\n },\n uNormedGradientMiddle: {\n value: normedGradientMiddle,\n },\n uNoiseAmount: {\n value: noiseAmount,\n },\n };\n\n glassMaterial.onBeforeCompile = (shader) => {\n shader.uniforms.uMousePointer = customGlassUniforms.uMousePointer;\n shader.uniforms.uResolution = customGlassUniforms.uResolution;\n shader.uniforms.uScissorOffsets = customGlassUniforms.uScissorOffsets;\n shader.uniforms.uPointerLightIntensity =\n customGlassUniforms.uPointerLightIntensity;\n shader.uniforms.uTime = customGlassUniforms.uTime;\n shader.uniforms.uGradientColors = customGlassUniforms.uGradientColors;\n shader.uniforms.uPixelRatio = customGlassUniforms.uPixelRatio;\n shader.uniforms.uNormedGradientMiddle =\n customGlassUniforms.uNormedGradientMiddle;\n shader.uniforms.uNoiseAmount = customGlassUniforms.uNoiseAmount;\n\n shader.vertexShader = shader.vertexShader\n .replace(\n '#define STANDARD',\n /* glsl */ `\n #define STANDARD\n varying vec2 vcUv;\n varying vec3 vcN;\n `\n )\n .replace(\n '#include ',\n /* glsl */ `\n #include \n\n vcUv = uv;\n vcN = normal;\n `\n );\n\n shader.fragmentShader = shader.fragmentShader\n .replace(\n 'uniform float opacity;',\n /* glsl */ `\n uniform float opacity;\n uniform float uTime;\n uniform float uPointerLightIntensity;\n uniform float uPixelRatio;\n uniform float uNormedGradientMiddle;\n uniform float uNoiseAmount;\n\n uniform vec2 uMousePointer;\n uniform vec2 uResolution;\n uniform vec2 uScissorOffsets;\n\n uniform vec3 uGradientColors[3];\n\n varying vec2 vcUv;\n varying vec3 vcN;\n\n float noise(vec2 co) {\n return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);\n }\n `\n )\n .replace(\n '#include ',\n /* glsl */ `\n #include \n\n vec2 xy = vcUv.yx;\n\n vec3 firstColor = uGradientColors[0];\n vec3 middleColor = uGradientColors[2];\n vec3 secondColor = uGradientColors[1];\n\n vec3 col = vec3(1., 1., 1.);\n float h = uNormedGradientMiddle;\n\n if(vcN.g > 0.5) { // top of bar\n col = secondColor;\n } else if(vcN.g < -0.5) { // bottom of bar\n col = firstColor;\n } else {\n col = mix(\n mix(firstColor, middleColor, xy.x/h),\n mix(middleColor, secondColor, (xy.x - h)/(1.0 - h)),\n step(h, xy.x)\n );\n }\n\n gl_FragColor.rgb = mix(gl_FragColor.rgb, col, 0.5);\n\n // vec2 st = (gl_FragCoord.xy/uResolution.xy)/uPixelRatio;\n vec2 fragCoord = vec2(\n gl_FragCoord.x - (uScissorOffsets.x * uPixelRatio),\n gl_FragCoord.y - (uScissorOffsets.y * uPixelRatio)\n );\n vec2 st = (fragCoord.xy/uResolution.xy)/uPixelRatio;\n\n float aspect = uResolution.y/uResolution.x;\n st.y *= aspect;\n\n vec2 mp = uMousePointer;\n mp.y *= aspect;\n\n float bv = clamp(\n 1. - (distance(mp, st)*7.),\n 0.,\n 1.\n );\n\n vec3 lightColor = vec3(bv*0.2) * uPointerLightIntensity;\n gl_FragColor.rgb += (gl_FragColor.rgb * lightColor * 3.);\n\n vec3 n = vec3(noise(st*vcN.x + st*vcN.z + st*vcN.y));\n gl_FragColor.rgb = mix(gl_FragColor.rgb, n, uNoiseAmount);\n `\n );\n };\n\n return {\n glassMaterial,\n customGlassUniforms,\n };\n};\n\nconst createPhongGradientMaterial = ({\n gradientColors,\n envMap,\n pointerLightIntensity = 0.2,\n normedGradientMiddle = 0.5,\n noiseAmount = 0.1,\n}) => {\n const noiseTexture = new TextureLoader().load(NOISE_TEXTURE_URL);\n noiseTexture.wrapS = RepeatWrapping;\n noiseTexture.wrapT = RepeatWrapping;\n\n const { gradientColorBottom, gradientColorTop, gradientColorMiddle } =\n gradientColors;\n\n const glassMaterial = new MeshPhongMaterial({\n color: new Color(0x000000),\n });\n\n let customGlassUniforms = {\n uTime: { value: 0 },\n uGradientColors: {\n value: [gradientColorBottom, gradientColorTop, gradientColorMiddle],\n },\n uResolution: {\n value: [0, 0],\n },\n uScissorOffsets: {\n value: [0, 0],\n },\n uPixelRatio: {\n value: 0,\n },\n uMousePointer: {\n value: [0, 0],\n },\n uPointerLightIntensity: {\n value: pointerLightIntensity,\n },\n uNormedGradientMiddle: {\n value: normedGradientMiddle,\n },\n uNoiseAmount: {\n value: noiseAmount,\n },\n uNoiseTexture: {\n value: noiseTexture,\n },\n };\n\n glassMaterial.onBeforeCompile = (shader) => {\n shader.uniforms.uMousePointer = customGlassUniforms.uMousePointer;\n shader.uniforms.uResolution = customGlassUniforms.uResolution;\n shader.uniforms.uScissorOffsets = customGlassUniforms.uScissorOffsets;\n shader.uniforms.uPointerLightIntensity =\n customGlassUniforms.uPointerLightIntensity;\n shader.uniforms.uTime = customGlassUniforms.uTime;\n shader.uniforms.uGradientColors = customGlassUniforms.uGradientColors;\n shader.uniforms.uPixelRatio = customGlassUniforms.uPixelRatio;\n shader.uniforms.uNormedGradientMiddle =\n customGlassUniforms.uNormedGradientMiddle;\n shader.uniforms.uNoiseAmount = customGlassUniforms.uNoiseAmount;\n shader.uniforms.uNoiseTexture = customGlassUniforms.uNoiseTexture;\n\n shader.vertexShader = shader.vertexShader\n .replace(\n '#define PHONG',\n /* glsl */ `\n #define PHONG\n varying vec2 vcUv;\n varying vec3 vcN;\n `\n )\n .replace(\n '#include ',\n /* glsl */ `\n #include \n\n vcUv = uv;\n vcN = normal;\n `\n );\n\n shader.fragmentShader = shader.fragmentShader\n .replace(\n 'uniform float opacity;',\n /* glsl */ `\n uniform float opacity;\n uniform float uTime;\n uniform float uPointerLightIntensity;\n uniform float uPixelRatio;\n uniform float uNormedGradientMiddle;\n uniform float uNoiseAmount;\n\n uniform vec2 uMousePointer;\n uniform vec2 uResolution;\n uniform vec2 uScissorOffsets;\n\n uniform vec3 uGradientColors[3];\n\n uniform sampler2D uNoiseTexture;\n\n varying vec2 vcUv;\n varying vec3 vcN;\n\n // float noise(vec2 co) {\n // return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);\n // }\n\n float noise(vec2 uv) {\n return texture2D(uNoiseTexture, uv * 3.5).r;\n }\n `\n )\n .replace(\n '#include ',\n /* glsl */ `\n #include \n\n vec2 xy = vcUv.yx;\n\n vec3 firstColor = uGradientColors[0];\n vec3 middleColor = uGradientColors[2];\n vec3 secondColor = uGradientColors[1];\n\n vec3 col = vec3(1., 1., 1.);\n float h = uNormedGradientMiddle;\n\n if(vcN.g > 0.5) { // top of bar\n col = secondColor;\n } else if(vcN.g < -0.5) { // bottom of bar\n col = firstColor;\n } else {\n col = mix(\n mix(firstColor, middleColor, xy.x/h),\n mix(middleColor, secondColor, (xy.x - h)/(1.0 - h)),\n step(h, xy.x)\n );\n }\n\n gl_FragColor.rgb = mix(gl_FragColor.rgb, col, 0.5);\n\n vec2 fragCoord = vec2(\n gl_FragCoord.x - (uScissorOffsets.x * uPixelRatio),\n gl_FragCoord.y - (uScissorOffsets.y * uPixelRatio)\n );\n\n vec2 st = (fragCoord.xy/uResolution.xy)/uPixelRatio;\n float aspect = uResolution.y/uResolution.x;\n st.y *= aspect;\n\n vec2 mp = uMousePointer;\n mp.y *= aspect;\n\n float bv = clamp(\n 1. - (distance(mp, st)*7.),\n 0.,\n 1.\n );\n\n vec3 lightColor = vec3(bv*0.2) * uPointerLightIntensity;\n gl_FragColor.rgb += (gl_FragColor.rgb * lightColor * 3.);\n\n vec3 n = vec3(noise(st*vcN.x + st*vcN.z + st*vcN.y));\n gl_FragColor.rgb = mix(gl_FragColor.rgb, n, uNoiseAmount);\n `\n );\n };\n\n return {\n glassMaterial,\n customGlassUniforms,\n };\n};\n\nconst createHorizontalGlassGradientMaterial = ({\n gradientColors,\n envMap,\n pointerLightIntensity = 0.2,\n normedGradientMiddle = 0.5,\n noiseAmount = 0.1,\n}) => {\n const { gradientColorBottom, gradientColorTop, gradientColorMiddle } =\n gradientColors;\n\n const glassMaterial = new MeshPhysicalMaterial({\n roughness: 0.1,\n transmission: 0,\n thickness: 0,\n ior: 1.7,\n clearcoat: 0.25,\n clearcoatRoughness: 0.45,\n color: new Color(0x000000),\n envMap: envMap,\n });\n\n let customGlassUniforms = {\n uTime: { value: 0 },\n uGradientColors: {\n value: [gradientColorBottom, gradientColorTop, gradientColorMiddle],\n },\n uResolution: {\n value: [0, 0],\n },\n uScissorOffsets: {\n value: [0, 0],\n },\n uPixelRatio: {\n value: 0,\n },\n uMousePointer: {\n value: [0, 0],\n },\n uPointerLightIntensity: {\n value: pointerLightIntensity,\n },\n uNormedGradientMiddle: {\n value: normedGradientMiddle,\n },\n uNoiseAmount: {\n value: noiseAmount,\n },\n };\n\n glassMaterial.onBeforeCompile = (shader) => {\n shader.uniforms.uMousePointer = customGlassUniforms.uMousePointer;\n shader.uniforms.uResolution = customGlassUniforms.uResolution;\n shader.uniforms.uScissorOffsets = customGlassUniforms.uScissorOffsets;\n shader.uniforms.uPointerLightIntensity =\n customGlassUniforms.uPointerLightIntensity;\n shader.uniforms.uTime = customGlassUniforms.uTime;\n shader.uniforms.uGradientColors = customGlassUniforms.uGradientColors;\n shader.uniforms.uPixelRatio = customGlassUniforms.uPixelRatio;\n shader.uniforms.uNormedGradientMiddle =\n customGlassUniforms.uNormedGradientMiddle;\n shader.uniforms.uNoiseAmount = customGlassUniforms.uNoiseAmount;\n\n shader.vertexShader = shader.vertexShader\n .replace(\n '#define STANDARD',\n /* glsl */ `\n #define STANDARD\n varying vec2 vcUv;\n varying vec3 vcN;\n `\n )\n .replace(\n '#include ',\n /* glsl */ `\n #include \n\n vcUv = uv;\n vcN = normal;\n `\n );\n\n shader.fragmentShader = shader.fragmentShader\n .replace(\n 'uniform float opacity;',\n /* glsl */ `\n uniform float opacity;\n uniform float uTime;\n uniform float uPointerLightIntensity;\n uniform float uPixelRatio;\n uniform float uNormedGradientMiddle;\n uniform float uNoiseAmount;\n\n uniform vec2 uMousePointer;\n uniform vec2 uResolution;\n uniform vec2 uScissorOffsets;\n\n uniform vec3 uGradientColors[3];\n\n varying vec2 vcUv;\n varying vec3 vcN;\n\n float noise(vec2 co) {\n return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);\n }\n `\n )\n .replace(\n '#include ',\n /* glsl */ `\n #include \n\n vec2 xy = vcUv.yx;\n\n vec3 firstColor = uGradientColors[0];\n vec3 middleColor = uGradientColors[2];\n vec3 secondColor = uGradientColors[1];\n\n vec3 col = vec3(1., 1., 1.);\n float h = uNormedGradientMiddle;\n\n if(vcN.r > 0.5) { // right side of bar\n col = firstColor;\n } else if(vcN.r <= -0.5) { // left side of bar\n col = secondColor;\n } else {\n if(vcN.b > -0.5) {\n col = mix(\n mix(secondColor, middleColor, xy.y/h),\n mix(middleColor, firstColor, (xy.y - h)/(1.0 - h)),\n step(h, xy.y)\n );\n } else {\n vec2 flippedXy = vec2(xy.x, 1. - xy.y);\n col = mix(\n mix(secondColor, middleColor, flippedXy.y/h),\n mix(middleColor, firstColor, (flippedXy.y - h)/(1.0 - h)),\n step(h, flippedXy.y)\n );\n }\n }\n\n gl_FragColor.rgb = mix(gl_FragColor.rgb, col, 0.5);\n\n vec2 fragCoord = vec2(\n gl_FragCoord.x - (uScissorOffsets.x * uPixelRatio),\n gl_FragCoord.y - (uScissorOffsets.y * uPixelRatio)\n );\n\n // vec2 st = (gl_FragCoord.xy/uResolution.xy)/uPixelRatio;\n vec2 st = (fragCoord.xy/uResolution.xy)/uPixelRatio;\n float aspect = uResolution.y/uResolution.x;\n st.y *= aspect;\n\n vec2 mp = uMousePointer;\n mp.y *= aspect;\n\n float bv = clamp(\n 1. - (distance(mp, st)*7.),\n 0.,\n 1.\n );\n\n vec3 lightColor = vec3(bv*0.2) * uPointerLightIntensity;\n gl_FragColor.rgb += (gl_FragColor.rgb * lightColor * 3.);\n\n vec3 n = vec3(noise(st*vcN.x + st*vcN.z + st*vcN.y));\n gl_FragColor.rgb = mix(gl_FragColor.rgb, n, uNoiseAmount);\n `\n );\n };\n\n return {\n glassMaterial,\n customGlassUniforms,\n };\n};\n\nconst createHorizontalPhongGradientMaterial = ({\n gradientColors,\n envMap,\n pointerLightIntensity = 0.2,\n normedGradientMiddle = 0.5,\n noiseAmount = 0.1,\n}) => {\n const noiseTexture = new TextureLoader().load(NOISE_TEXTURE_URL);\n noiseTexture.wrapS = RepeatWrapping;\n noiseTexture.wrapT = RepeatWrapping;\n\n const { gradientColorBottom, gradientColorTop, gradientColorMiddle } =\n gradientColors;\n\n const glassMaterial = new MeshPhongMaterial({\n color: new Color(0x000000),\n });\n\n let customGlassUniforms = {\n uTime: { value: 0 },\n uGradientColors: {\n value: [gradientColorBottom, gradientColorTop, gradientColorMiddle],\n },\n uResolution: {\n value: [0, 0],\n },\n uScissorOffsets: {\n value: [0, 0],\n },\n uPixelRatio: {\n value: 0,\n },\n uMousePointer: {\n value: [0, 0],\n },\n uPointerLightIntensity: {\n value: pointerLightIntensity,\n },\n uNormedGradientMiddle: {\n value: normedGradientMiddle,\n },\n uNoiseAmount: {\n value: noiseAmount,\n },\n uNoiseTexture: {\n value: noiseTexture,\n },\n };\n\n glassMaterial.onBeforeCompile = (shader) => {\n shader.uniforms.uMousePointer = customGlassUniforms.uMousePointer;\n shader.uniforms.uResolution = customGlassUniforms.uResolution;\n shader.uniforms.uScissorOffsets = customGlassUniforms.uScissorOffsets;\n shader.uniforms.uPointerLightIntensity =\n customGlassUniforms.uPointerLightIntensity;\n shader.uniforms.uTime = customGlassUniforms.uTime;\n shader.uniforms.uGradientColors = customGlassUniforms.uGradientColors;\n shader.uniforms.uPixelRatio = customGlassUniforms.uPixelRatio;\n shader.uniforms.uNormedGradientMiddle =\n customGlassUniforms.uNormedGradientMiddle;\n shader.uniforms.uNoiseAmount = customGlassUniforms.uNoiseAmount;\n shader.uniforms.uNoiseTexture = customGlassUniforms.uNoiseTexture;\n\n shader.vertexShader = shader.vertexShader\n .replace(\n '#define PHONG',\n /* glsl */ `\n #define PHONG\n varying vec2 vcUv;\n varying vec3 vcN;\n `\n )\n .replace(\n '#include ',\n /* glsl */ `\n #include \n\n vcUv = uv;\n vcN = normal;\n `\n );\n\n shader.fragmentShader = shader.fragmentShader\n .replace(\n 'uniform float opacity;',\n /* glsl */ `\n uniform float opacity;\n uniform float uTime;\n uniform float uPointerLightIntensity;\n uniform float uPixelRatio;\n uniform float uNormedGradientMiddle;\n uniform float uNoiseAmount;\n\n uniform vec2 uMousePointer;\n uniform vec2 uResolution;\n uniform vec2 uScissorOffsets;\n\n uniform vec3 uGradientColors[3];\n\n uniform sampler2D uNoiseTexture;\n\n varying vec2 vcUv;\n varying vec3 vcN;\n\n // float noise(vec2 co) {\n // return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);\n // }\n\n float noise(vec2 uv) {\n return texture2D(uNoiseTexture, uv * 3.5).r;\n }\n `\n )\n .replace(\n '#include ',\n /* glsl */ `\n #include \n\n vec2 xy = vcUv.yx;\n\n vec3 firstColor = uGradientColors[0];\n vec3 middleColor = uGradientColors[2];\n vec3 secondColor = uGradientColors[1];\n\n vec3 col = vec3(1., 1., 1.);\n float h = uNormedGradientMiddle;\n\n if(vcN.r > 0.5) { // right side of bar\n col = firstColor;\n } else if(vcN.r <= -0.5) { // left side of bar\n col = secondColor;\n } else {\n if(vcN.b > -0.5) {\n col = mix(\n mix(secondColor, middleColor, xy.y/h),\n mix(middleColor, firstColor, (xy.y - h)/(1.0 - h)),\n step(h, xy.y)\n );\n } else {\n vec2 flippedXy = vec2(xy.x, 1. - xy.y);\n col = mix(\n mix(secondColor, middleColor, flippedXy.y/h),\n mix(middleColor, firstColor, (flippedXy.y - h)/(1.0 - h)),\n step(h, flippedXy.y)\n );\n }\n }\n\n gl_FragColor.rgb = mix(gl_FragColor.rgb, col, 0.5);\n\n vec2 fragCoord = vec2(\n gl_FragCoord.x - (uScissorOffsets.x * uPixelRatio),\n gl_FragCoord.y - (uScissorOffsets.y * uPixelRatio)\n );\n\n vec2 st = (fragCoord.xy/uResolution.xy)/uPixelRatio;\n float aspect = uResolution.y/uResolution.x;\n st.y *= aspect;\n\n vec2 mp = uMousePointer;\n mp.y *= aspect;\n\n float bv = clamp(\n 1. - (distance(mp, st)*7.),\n 0.,\n 1.\n );\n\n vec3 lightColor = vec3(bv*0.2) * uPointerLightIntensity;\n gl_FragColor.rgb += (gl_FragColor.rgb * lightColor * 3.);\n\n vec3 n = vec3(noise(st*vcN.x + st*vcN.z + st*vcN.y));\n gl_FragColor.rgb = mix(gl_FragColor.rgb, n, uNoiseAmount);\n `\n );\n };\n\n return {\n glassMaterial,\n customGlassUniforms,\n };\n};\n\nexport {\n createGlassGradientMaterial,\n createPhongGradientMaterial,\n createHorizontalGlassGradientMaterial,\n createHorizontalPhongGradientMaterial,\n};\n","const DEFAULT_CHART_PADDING = 1.2;\nconst DEFAULT_ENV_MAP_URL = 'img/adams_place_bridge_512.hdr';\n\nconst THEME_ORANGE_PINK = 'orange-pink';\nconst THEME_BLUE_PURPLE = 'blue-purple';\n\nconst LAYOUT_SIMPLE = 'simple';\nconst LAYOUT_FANCY = 'fancy';\n\nconst MIN_BAR_HEIGHT = 0;\nconst MAX_BAR_HEIGHT = 30;\n\nconst GRADIENT_ORANGE_PINK = 'orange-pink';\nconst GRADIENT_BLUE_PURPLE = 'blue-purple';\nconst GRADIENT_PINK_PURPLE = 'pink-purple';\nconst GRADIENT_GRAY = 'gray';\n\nconst BASE_RENDER_LAYER = 0;\nconst BLOOM_RENDER_LAYER = 1;\n\nexport {\n DEFAULT_CHART_PADDING,\n DEFAULT_ENV_MAP_URL,\n LAYOUT_FANCY,\n LAYOUT_SIMPLE,\n MIN_BAR_HEIGHT,\n MAX_BAR_HEIGHT,\n THEME_BLUE_PURPLE,\n THEME_ORANGE_PINK,\n GRADIENT_ORANGE_PINK,\n GRADIENT_BLUE_PURPLE,\n GRADIENT_PINK_PURPLE,\n GRADIENT_GRAY,\n BASE_RENDER_LAYER,\n BLOOM_RENDER_LAYER,\n};\n","import { Color, Mesh, Vector3, MeshBasicMaterial, Group } from 'three';\n\nimport { RoundedBoxGeometry } from 'three/examples/jsm/geometries/RoundedBoxGeometry';\nimport { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js';\nimport { FontLoader } from 'three/examples/jsm/loaders/FontLoader.js';\n\nimport { mapRange } from '../../utils/helpers';\nimport { createHorizontalPhongGradientMaterial } from './gradientMaterialHelpers';\n\nimport {\n GRADIENT_ORANGE_PINK,\n GRADIENT_BLUE_PURPLE,\n GRADIENT_PINK_PURPLE,\n GRADIENT_GRAY,\n} from '../constants';\n\nimport { BLOOM_RENDER_LAYER, BASE_RENDER_LAYER } from '../../threejs/constants';\n\nimport futuraFontRaw from '../../public/fonts/FuturaLTW05-Bold.typeface.json';\n\nconst PIE_GRADIENT_COLORS_WITHOUT_PIPELINE = {\n [GRADIENT_ORANGE_PINK]: {\n gradientColorTop: new Color(0xd1453d).multiplyScalar(2.1),\n gradientColorMiddle: new Color(0xf81c6f).multiplyScalar(2.1),\n gradientColorBottom: new Color(0xf81c6f).multiplyScalar(2.1),\n },\n [GRADIENT_BLUE_PURPLE]: {\n gradientColorTop: new Color(0x3a228b).multiplyScalar(2.1),\n gradientColorMiddle: new Color(0x3a228b).multiplyScalar(2.1),\n gradientColorBottom: new Color(0x0870c9).multiplyScalar(2.1),\n },\n [GRADIENT_PINK_PURPLE]: {\n gradientColorTop: new Color(0xde015d).multiplyScalar(2.1),\n gradientColorMiddle: new Color(0xde015d).multiplyScalar(2.1),\n gradientColorBottom: new Color(0x9b309b).multiplyScalar(2.1),\n },\n [GRADIENT_GRAY]: {\n gradientColorTop: new Color(0x383838).multiplyScalar(1).multiplyScalar(2.1),\n gradientColorMiddle: new Color(0x6b6a6a)\n .multiplyScalar(0.4)\n .multiplyScalar(2.1),\n gradientColorBottom: new Color(0x4e4e4e)\n .multiplyScalar(0.4)\n .multiplyScalar(2.1),\n },\n};\n\nconst PIE_GRADIENT_COLORS_WITH_PIPELINE = {\n [GRADIENT_ORANGE_PINK]: {\n gradientColorTop: new Color(0xd1453d),\n gradientColorMiddle: new Color(0xf81c6f),\n gradientColorBottom: new Color(0xf81c6f),\n },\n [GRADIENT_BLUE_PURPLE]: {\n gradientColorTop: new Color(0x3a228b),\n gradientColorMiddle: new Color(0x3a228b),\n gradientColorBottom: new Color(0x0870c9),\n },\n [GRADIENT_PINK_PURPLE]: {\n gradientColorTop: new Color(0xde015d),\n gradientColorMiddle: new Color(0xde015d),\n gradientColorBottom: new Color(0x9b309b),\n },\n [GRADIENT_GRAY]: {\n gradientColorTop: new Color(0x383838).multiplyScalar(1),\n gradientColorMiddle: new Color(0x6b6a6a).multiplyScalar(0.4),\n gradientColorBottom: new Color(0x4e4e4e).multiplyScalar(0.4),\n },\n};\n\nconst PIE_GRADIENT_COLORS = PIE_GRADIENT_COLORS_WITHOUT_PIPELINE;\n\nconst BAR_SETTINGS = {\n size: 8,\n segments: 1,\n radius: 0.45,\n};\n\nconst parseRawPlotDataForBars = (rawPlotData = {}) => {\n const { yAxisMax, items } = rawPlotData;\n\n const foundYAxisMax = items\n .map((b) => Math.abs(b.value))\n .reduce((max, v) => Math.max(max, v), -Infinity);\n\n const parsedItems = items.map((item) => {\n return {\n ...item,\n value: item.value / (yAxisMax || foundYAxisMax),\n };\n });\n\n return {\n ...rawPlotData,\n items: parsedItems,\n };\n};\n\nconst createVerticalBar = (pos, height, label, material) => {\n let barMesh = new Mesh(\n new RoundedBoxGeometry(\n BAR_SETTINGS.size,\n height,\n BAR_SETTINGS.size,\n BAR_SETTINGS.segments,\n BAR_SETTINGS.radius\n )\n );\n\n barMesh.material = material;\n barMesh.position.set(...pos);\n barMesh.name = `bar-${label}`;\n\n barMesh.layers.enable(BLOOM_RENDER_LAYER);\n\n return {\n mesh: barMesh,\n height,\n };\n};\n\nconst createVerticalBars = (props) => {\n const {\n plotData,\n material,\n flippedMaterial,\n layout,\n minBarHeight,\n maxBarHeight,\n } = props;\n\n const barsData = parseRawPlotDataForBars(plotData);\n const barCount = barsData.items.length;\n\n let bars = barsData.items.map((b, i) => {\n const barWidthPadded = BAR_SETTINGS.size * 1.6;\n let barHeight = mapRange(\n Math.abs(b.value),\n 0,\n 1,\n minBarHeight,\n maxBarHeight\n );\n\n const barPosition = new Vector3(\n -((barCount - 1) * 0.5 * barWidthPadded) + barWidthPadded * i,\n 0,\n 0\n );\n\n const bar = createVerticalBar(\n barPosition,\n barHeight,\n `bar-${i}`,\n b.value > 0 ? material : flippedMaterial,\n layout\n );\n\n return {\n ...bar,\n ...b, // raw plot data\n };\n });\n\n const currMaxBarHeight = bars\n .filter((b) => b.value > 0)\n .reduce((max, b) => Math.max(max, b.height), -Infinity);\n const currNegMaxBarHeight = bars\n .filter((b) => b.value < 0)\n .reduce((min, b) => Math.min(min, -b.height), Infinity);\n const barsHaveNegativeValues = !!bars.find((b) => b.value < 0);\n\n bars = bars.map((b, i) => {\n const middleIndex = (bars.length + 1) / 2;\n const distToMiddleIndex = Math.abs(i + 1 - middleIndex);\n const perspectiveCorrection = 1 + (distToMiddleIndex / middleIndex) * 0.2;\n const xPerspectiveCorrection =\n (i === middleIndex\n ? 0\n : i < middleIndex - 2\n ? -perspectiveCorrection\n : i > middleIndex\n ? perspectiveCorrection\n : 0) * 1;\n\n return {\n // raw plot data\n ...b,\n // points used to align html labels to bars\n // we try to correct the perspective disalignment a bit\n bottomPosition: new Vector3(\n b.mesh.position.x + xPerspectiveCorrection,\n (-currMaxBarHeight * 0.5 +\n (barsHaveNegativeValues ? currNegMaxBarHeight * -0.5 : 0)) *\n (b.value > 0 ? 1.1 : 0.9),\n b.mesh.position.z\n ),\n topPosition: new Vector3(\n b.mesh.position.x + xPerspectiveCorrection,\n -currMaxBarHeight * 0.5 +\n (barsHaveNegativeValues ? currNegMaxBarHeight * -0.5 : 0) +\n (b.value > 0 ? b.height : -b.height * 1.04) +\n (b.value > 0 ? 1 : -1) * perspectiveCorrection,\n b.mesh.position.z\n ),\n };\n });\n\n return {\n bars,\n currMaxBarHeight,\n currNegMaxBarHeight,\n barsHaveNegativeValues,\n };\n};\n\nconst parseRawPlotDataForPie = (items) => {\n const totalValueSum = items.reduce((sum, item) => {\n sum += item.value;\n return sum;\n }, 0);\n\n const parsedItems = items.map((item) => {\n return {\n ...item,\n value: item.value / totalValueSum,\n };\n });\n\n return {\n items: parsedItems,\n };\n};\n\nconst createHorizontalBar = (width, label, material) => {\n let barMesh = new Mesh(\n new RoundedBoxGeometry(\n width,\n BAR_SETTINGS.size,\n BAR_SETTINGS.size,\n BAR_SETTINGS.segments,\n BAR_SETTINGS.radius\n )\n );\n\n barMesh.material = material;\n barMesh.position.set(0, 0, 0);\n barMesh.name = `bar-${label}`;\n\n barMesh.layers.enable(BLOOM_RENDER_LAYER);\n\n return {\n mesh: barMesh,\n width,\n };\n};\n\nconst createPieBars = (props) => {\n const { items, totalWidth: _totalWidth, marginRight } = props;\n\n const futuraFont = new FontLoader().parse(futuraFontRaw);\n\n const totalWidth = _totalWidth - items.length * marginRight;\n const barsData = parseRawPlotDataForPie(items);\n\n let materials = {};\n let currentTotalW = 0;\n\n let bars = barsData.items.map((b, i) => {\n const barWidth = b.value * totalWidth;\n const barColor = b.barColor || GRADIENT_GRAY;\n\n let material;\n if (b.barColor in materials) {\n material = materials[barColor];\n } else {\n material = materials[barColor] = createHorizontalPhongGradientMaterial({\n gradientColors:\n barColor in PIE_GRADIENT_COLORS\n ? PIE_GRADIENT_COLORS[barColor]\n : PIE_GRADIENT_COLORS[GRADIENT_GRAY],\n envMap: null,\n pointerLightIntensity: 1,\n normedGradientMiddle: 0.2,\n // noise texture\n noiseAmount: 0.04,\n });\n }\n\n const bar = createHorizontalBar(\n barWidth,\n `bar-${i}`,\n material.glassMaterial\n );\n\n const fontSize = 2.8;\n const textGeometry = new TextGeometry(`${parseInt(b.value * 100)}%`, {\n font: futuraFont,\n size: fontSize,\n height: 0.2,\n bevelEnabled: false,\n });\n\n const textMaterial = new MeshBasicMaterial({\n color: b.labelColor || 0xffffff,\n });\n\n const textMesh = new Mesh(textGeometry, textMaterial);\n textMesh.layers.enable(BASE_RENDER_LAYER);\n\n let textXPos = -barWidth / 2 + 2;\n textMesh.position.set(textXPos, -fontSize / 2, 4.3);\n\n const barGroup = new Group();\n\n barGroup.add(bar.mesh);\n barGroup.add(textMesh);\n\n const leftX = -0.5 * totalWidth + currentTotalW;\n const perspectiveCorrectionLeft = (leftX / totalWidth) * 8;\n\n const leftPosition = new Vector3(\n leftX + perspectiveCorrectionLeft,\n -BAR_SETTINGS.size,\n 0\n );\n\n const rightX = -0.5 * totalWidth + currentTotalW + barWidth;\n const perspectiveCorrectionRight = (rightX / totalWidth) * 8;\n\n const rightPosition = new Vector3(\n rightX + perspectiveCorrectionRight,\n -BAR_SETTINGS.size,\n 0\n );\n\n const d = {\n ...bar,\n ...b,\n mesh: barGroup,\n currentTotalW,\n leftPosition,\n rightPosition,\n };\n\n currentTotalW += barWidth + marginRight;\n\n return d;\n });\n\n return {\n bars,\n barMaterials: materials,\n };\n};\n\nconst scaleBarY = (bar, scale, currMaxBarHeight) => {\n const mesh = bar.mesh;\n const height = bar.height;\n\n mesh.scale.y = scale;\n\n if (bar.value > 0) {\n mesh.position.y = (height * scale) / 2 - currMaxBarHeight * 0.5;\n } else {\n mesh.position.y = (-height * scale) / 2 - currMaxBarHeight * 0.5;\n }\n};\n\nconst scaleBarX = (bar, scale, totalBarsWidth) => {\n const mesh = bar.mesh;\n const width = bar.width;\n\n mesh.scale.x = scale;\n\n mesh.position.x =\n -0.5 * totalBarsWidth + bar.currentTotalW + 0.5 * width * scale;\n};\n\nexport { createVerticalBars, createPieBars, scaleBarY, scaleBarX };\n","// more info regarding the technique of multiplexing a single threejs canvas be found here:\n// https://r105.threejsfundamentals.org/threejs/lessons/threejs-multiple-scenes.html\n\nimport React, { useState, useCallback, useEffect, createContext } from 'react';\n\nimport {\n Clock,\n WebGLRenderer,\n Color,\n // sRGBEncoding\n} from 'three';\n\nimport s from './ThreeJsMultiplexedCanvasProvider.module.scss';\n\nconst initialCanvasContext = {\n handleCanvasRef: null,\n webGlMultiplexedContextState: null,\n};\n\nconst ThreeJsMultiplexedCanvasContext = createContext(initialCanvasContext);\n\nconst createMultiplexedCanvasHelpers = (canvasEl) => {\n let canvases = [];\n\n const clock = new Clock();\n const renderer = new WebGLRenderer({\n canvas: canvasEl,\n precision: 'lowp',\n antialias: false,\n alpha: true,\n // outputEncoding: sRGBEncoding,\n });\n\n const pixelRatio = Math.max(1.4, window?.devicePixelRatio || 0);\n\n renderer.setPixelRatio(pixelRatio);\n\n const addThreeJsCanvas = (fauxCanvasEl, renderCanvasScene) =>\n canvases.push({\n fauxCanvasEl,\n renderCanvasScene,\n });\n\n const removeThreeJsCanvas = (fauxCanvasEl) => {\n canvases = canvases.filter((c) => c.fauxCanvasEl !== fauxCanvasEl);\n };\n\n const resizeRendererToDisplaySize = (renderer) => {\n const canvas = renderer.domElement;\n\n const width = canvas.clientWidth;\n const height = canvas.clientHeight;\n\n const needResize = canvas.width !== width || canvas.height !== height;\n if (needResize) {\n renderer.setSize(width, height, false);\n }\n\n return needResize;\n };\n\n const globalRender = (\n timeOverride = null,\n clearColor = new Color('#ff0000')\n ) => {\n const time = timeOverride || clock.getElapsedTime();\n\n resizeRendererToDisplaySize(renderer);\n\n renderer.setScissorTest(false);\n renderer.setClearColor(clearColor, 0);\n renderer.clear(true, true);\n renderer.setScissorTest(true);\n\n const transform = `translateY(${window.scrollY}px)`;\n renderer.domElement.style.transform = transform;\n\n for (const { fauxCanvasEl, renderCanvasScene } of canvases) {\n const dims = fauxCanvasEl.getBoundingClientRect();\n const { left, right, top, bottom, width, height } = dims;\n\n const isOffscreen =\n bottom < 0 ||\n top > renderer.domElement.clientHeight ||\n right < 0 ||\n left > renderer.domElement.clientWidth;\n\n if (!isOffscreen) {\n const positiveYUpBottom = renderer.domElement.clientHeight - bottom;\n\n const scissorOffsets = [left, positiveYUpBottom];\n\n renderer.setScissor(left, positiveYUpBottom, width, height);\n renderer.setViewport(left, positiveYUpBottom, width, height);\n\n renderCanvasScene(time, dims, renderer, scissorOffsets);\n }\n }\n\n requestAnimationFrame(globalRender);\n };\n\n return {\n addThreeJsCanvas,\n removeThreeJsCanvas,\n globalRender,\n renderer,\n };\n};\n\nconst ThreeJsMultiplexedCanvasProvider = ({ children }) => {\n const [canvas, setCanvas] = useState(null);\n const handleCanvasRef = useCallback((canvasEl) => {\n setCanvas(canvasEl);\n }, []);\n\n const [webGlMultiplexedContextState, setwebGlMultiplexedContextState] =\n useState({});\n\n useEffect(() => {\n if (!canvas) {\n return;\n }\n\n setwebGlMultiplexedContextState({\n ...createMultiplexedCanvasHelpers(canvas),\n canvas,\n });\n }, [canvas]);\n\n useEffect(() => {\n if (!('globalRender' in webGlMultiplexedContextState)) {\n return;\n }\n\n // trigger main multiplexed raf render loop\n // this will render all scenes added with webGlMultiplexedContextState.addThreeJsCanvas()\n // if they're visible\n webGlMultiplexedContextState.globalRender();\n }, [webGlMultiplexedContextState]);\n\n return (\n \n \n {children}\n \n );\n};\n\nThreeJsMultiplexedCanvasProvider.propTypes = {};\nThreeJsMultiplexedCanvasProvider.defaultProps = {};\n\nexport default ThreeJsMultiplexedCanvasProvider;\nexport { ThreeJsMultiplexedCanvasContext };\n","import ThreeJsMultiplexedCanvasProvider, {\n ThreeJsMultiplexedCanvasContext,\n} from './ThreeJsMultiplexedCanvasProvider';\n\nexport default ThreeJsMultiplexedCanvasProvider;\n\nexport { ThreeJsMultiplexedCanvasContext };\n","import { useContext, useState, useEffect, useCallback } from 'react';\nimport { ThreeJsMultiplexedCanvasContext } from '../components/ThreeJsMultiplexedCanvasProvider';\n\nconst useMultiplexedThreeJs = (opts = {}) => {\n const { debug = false } = opts;\n\n const [canvas, setCanvas] = useState(null);\n const { addThreeJsCanvas, removeThreeJsCanvas, renderer } = useContext(\n ThreeJsMultiplexedCanvasContext\n );\n\n const handleCanvasRef = useCallback((canvasEl) => {\n setCanvas(canvasEl);\n }, []);\n\n const onThreeJsCanvasReady = (fn, state = []) =>\n useEffect(() => {\n if (!canvas || !addThreeJsCanvas) {\n return;\n }\n\n if (debug) {\n console.info(\n '[DEBUG] Creating new render fn for multiplexed canvas: ',\n canvas\n );\n }\n\n const cleanUpFn = fn({\n renderer,\n canvas,\n addThreeJsCanvas,\n renderMultiplexedThreeJsScene: (fn) => {\n addThreeJsCanvas(canvas, fn);\n },\n });\n\n return () => {\n if (debug) {\n console.info(\n '[DEBUG] Cleaning up & updating render fn for canvas: ',\n canvas\n );\n }\n\n if (typeof cleanUpFn === 'function') {\n cleanUpFn();\n }\n\n removeThreeJsCanvas(canvas);\n };\n }, [canvas, addThreeJsCanvas, removeThreeJsCanvas, ...state]);\n\n return {\n onThreeJsCanvasReady,\n handleCanvasRef,\n canvas,\n renderer,\n };\n};\n\nexport default useMultiplexedThreeJs;\n","import React, { useEffect, useState, useRef, useContext } from 'react';\n\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport {\n Raycaster,\n // AxesHelper\n} from 'three';\n\nimport { animate } from 'framer-motion';\n\nimport ChartIntroLabel from '../ChartIntroLabel/ChartIntroLabel';\nimport RawHtml from '../RawHtml';\n\nimport {\n createBaseScene,\n alignHtmlElPositionWithWorldSpacePoint,\n} from '../../threejs/utils/sceneHelpers';\n\n// import {\n// createRenderPipeline,\n// createRenderPipelineWithOptionalBloom,\n// } from '../../threejs/utils/createRenderPipeline';\n\nimport { createPieBars, scaleBarX } from '../../threejs/utils/barHelpers';\n\nimport { throttle } from 'throttle-debounce';\n\nimport useMultiplexedThreeJs from '../../hooks/useMultiplexedThreeJs';\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\nimport useWindowWidth from '../../hooks/useWindowWidth';\n\nimport { AnimationsActiveContext } from '../../containers/BasePage';\n\nimport {\n GRADIENT_ORANGE_PINK,\n GRADIENT_BLUE_PURPLE,\n GRADIENT_PINK_PURPLE,\n GRADIENT_GRAY,\n} from '../../threejs/constants';\n\n// const PIE_BARS_TOTAL_WIDTH = 95;\nconst PIE_BARS_TOTAL_WIDTH = 85;\nconst PIE_BAR_RIGHT_MARGIN = 0.2;\n\nimport s from './PieBarChart3d.module.scss';\n\nconst getElementIntersections = (elements) => {\n const intersectionMap = {};\n\n elements.forEach((element, index) => {\n if (!element) {\n return;\n }\n\n const rect1 = element.getBoundingClientRect();\n intersectionMap[index] = [];\n\n elements.forEach((otherElement, otherIndex) => {\n if (index === otherIndex) {\n return;\n }\n const rect2 = otherElement.getBoundingClientRect();\n if (\n rect1.bottom >= rect2.top &&\n rect1.top <= rect2.bottom &&\n rect1.right >= rect2.left &&\n rect1.left <= rect2.right\n ) {\n intersectionMap[index].push(otherIndex);\n }\n });\n });\n\n let fixedIndexes = [];\n let intersectedIndexesForTranslation = [];\n\n for (const [elIndex, intersections] of Object.entries(intersectionMap)) {\n if (fixedIndexes.indexOf(parseInt(elIndex)) !== -1) {\n continue;\n }\n\n intersections.forEach((intersectIndex) => {\n intersectedIndexesForTranslation.push(intersectIndex);\n\n fixedIndexes.push(parseInt(elIndex));\n fixedIndexes.push(parseInt(intersectIndex));\n });\n }\n\n return intersectedIndexesForTranslation;\n};\n\nconst PieBarChart3d = (props) => {\n const {\n title,\n description,\n infoTitle,\n infoText,\n infoLink,\n textTheme,\n items,\n } = props;\n\n const { animationsActive } = useContext(AnimationsActiveContext) || {};\n\n const windowWidth = useWindowWidth(120);\n const [revealTransitionComplete, setRevealTransitionComplete] =\n useState(false);\n\n const labelRefs = useRef([]);\n const labelIntersectionRefs = useRef([]);\n\n const [inViewRef, isVisible] = useIntersectionObserver(0.5, undefined, true);\n const { onThreeJsCanvasReady, handleCanvasRef, canvas } =\n useMultiplexedThreeJs({ debug: false });\n\n const [\n intersectedLabelRefIndexesForTranslate,\n setIntersectedLabelRefIndexesForTranslate,\n ] = useState([]);\n\n useEffect(() => {\n setIntersectedLabelRefIndexesForTranslate([]);\n setTimeout(\n () =>\n setIntersectedLabelRefIndexesForTranslate(\n getElementIntersections(labelIntersectionRefs.current)\n ),\n 1300\n );\n }, [windowWidth, isVisible]);\n\n onThreeJsCanvasReady(\n ({ renderer, renderMultiplexedThreeJsScene }) => {\n if (!items) {\n return;\n }\n\n const aspect = canvas.offsetWidth / canvas.offsetHeight;\n const { camera, scene } = createBaseScene({\n aspect,\n cameraPosition: {\n x: 0,\n y: 30,\n z: 33,\n },\n lightPosition: {\n x: -10,\n y: 10,\n z: 30,\n },\n lightIntensity: 10,\n });\n\n // const { renderWithPipeline, updatePipeline } =\n // createRenderPipelineWithOptionalBloom(canvas, renderer, scene, camera, {\n // bloomThreshold: 0.155,\n // bloomStrength: 0.28, //0.28,\n // bloomRadius: 5, //8,\n // });\n\n // const { renderWithPipeline, updatePipeline } =\n // createRenderPipeline(canvas, renderer, scene, camera);\n\n // const axesHelper = new AxesHelper(15);\n // scene.add(axesHelper);\n\n // init bars\n\n let { bars, barMaterials } = createPieBars({\n items,\n totalWidth: PIE_BARS_TOTAL_WIDTH,\n marginRight: PIE_BAR_RIGHT_MARGIN,\n });\n\n bars.forEach((b) => {\n scene.add(b.mesh);\n });\n\n const initialBarScale = !revealTransitionComplete ? 0.001 : 1;\n bars.forEach((b) => {\n scaleBarX(b, initialBarScale, PIE_BARS_TOTAL_WIDTH);\n b.mesh.rotation.x = Math.PI * -0.35;\n });\n\n // get mouse position relative to canvas\n\n let mousePointer = {\n rawX: -1,\n rawY: -1,\n x: -1,\n y: -1,\n ndcX: -1,\n ndcY: -1,\n directionX: 0,\n };\n\n let prevMousePointerPosition = {\n ...mousePointer,\n };\n\n const onPointerMove = throttle(25, (e) => {\n const bounds = canvas.getBoundingClientRect();\n\n const rawX = e.clientX - bounds.left;\n const rawY = e.clientY - bounds.top;\n\n const x = rawX / bounds.width;\n const y = 1 - rawY / bounds.height;\n\n const newPosition = {\n // relative canvas coords in pixels in range [0, max canvas width/height in pixels]\n rawX,\n rawY,\n // normalized relative canvas coords in range [0, 1]\n x,\n y,\n // normalized relative canvas coords in range [-1, 1]\n ndcX: x * 2 - 1,\n ndcY: (y - 1) * 2 + 1,\n // horizontal movement direction\n directionX: Math.sign(rawX - prevMousePointerPosition.rawX),\n directionY: Math.sign(rawY - prevMousePointerPosition.rawY),\n };\n\n mousePointer = newPosition;\n prevMousePointerPosition = {\n ...mousePointer,\n };\n });\n\n window.addEventListener('pointermove', onPointerMove);\n\n const raycaster = new Raycaster();\n let prevBarIntersects = [];\n\n const getBarsIntersectedByPointer = () => {\n raycaster.setFromCamera(\n {\n x: mousePointer.ndcX,\n y: mousePointer.ndcY,\n },\n camera\n );\n\n const intersects = raycaster.intersectObjects(scene.children, true);\n const barIntersects =\n intersects.filter((o) => o.object.name.indexOf('bar-') > -1) || [];\n\n // used for pointer/mouse out detection\n const origBarIntersects = [...barIntersects];\n const currentBarIntersects = barIntersects.filter(\n (hb) =>\n prevBarIntersects.filter((p) => p.object.uuid === hb.object.uuid)\n .length === 0\n );\n\n prevBarIntersects = [...origBarIntersects];\n\n return currentBarIntersects;\n };\n\n // trigger reveal animation for bars\n\n if (isVisible && !revealTransitionComplete && animationsActive) {\n bars.forEach((bar) => {\n const animDuration = 1;\n\n animate(0, 1, {\n duration: animDuration,\n onUpdate: (p) => {\n scaleBarX(bar, p, PIE_BARS_TOTAL_WIDTH);\n },\n onComplete: () => {\n setRevealTransitionComplete(true);\n },\n });\n\n animate(bar.mesh.rotation.x, bar.mesh.rotation.x + Math.PI * 2, {\n duration: animDuration,\n onUpdate: (a) => {\n bar.mesh.rotation.x = a;\n },\n });\n });\n } else if (isVisible && !revealTransitionComplete && !animationsActive) {\n setRevealTransitionComplete(true);\n }\n\n // main render loop\n renderMultiplexedThreeJsScene(\n (time, resolution, renderer, scissorOffsets) => {\n // update stuff\n camera.aspect = resolution.width / resolution.height;\n camera.updateProjectionMatrix();\n\n // updatePipeline(resolution, time);\n\n Object.values(barMaterials).forEach(({ customGlassUniforms }) => {\n // NOTE!!!!!!\n // If using a bloom pipeline, this should be set to:\n // customGlassUniforms.uScissorOffsets.value = [0, 0];\n customGlassUniforms.uScissorOffsets.value = scissorOffsets;\n\n customGlassUniforms.uResolution.value = [\n resolution.width,\n resolution.height,\n ];\n customGlassUniforms.uMousePointer.value = [\n mousePointer.x,\n mousePointer.y,\n ];\n\n customGlassUniforms.uTime.value = time;\n customGlassUniforms.uPixelRatio.value = renderer.getPixelRatio();\n });\n\n // rotate bars on pointer hover\n getBarsIntersectedByPointer().forEach((bar) => {\n const mouseXDiff = Math.abs(\n bar.object.userData?.prevMousePointer?.rawX - mousePointer.rawX\n );\n const mouseYDiff = Math.abs(\n bar.object.userData?.prevMousePointer?.rawY - mousePointer.rawY\n );\n\n // bail if mouse hasn't moved\n // this prevents endless rotation triggered when hovering bar edges etc.\n if (mouseXDiff <= 1 && mouseYDiff <= 1) {\n return;\n }\n\n animate(Math.PI * -mousePointer.directionY, Math.PI * -0.35, {\n // duration: 1,\n type: 'spring',\n stiffness: 150,\n velocity: 8,\n mass: 0.7,\n onPlay: () => {\n bar.object.userData.prevMousePointer = { ...mousePointer };\n },\n onUpdate: (r) => {\n bar.object.parent.rotation.x = r;\n },\n });\n });\n\n // finally, render all the stuff\n // renderWithPipeline();\n renderer.render(scene, camera);\n\n // ...and handle alignment of html labels\n labelRefs.current.forEach((label, i) => {\n const bar = bars[i];\n\n const worldSpacePosition =\n bar?.labelAlignment === 'right'\n ? bar.rightPosition\n : bar.leftPosition;\n\n alignHtmlElPositionWithWorldSpacePoint({\n camera,\n resolution,\n worldSpacePosition,\n element: label.element,\n centerAlign: false,\n leftAlign: bar?.labelAlignment === 'right',\n });\n });\n }\n );\n\n return () => {\n window.removeEventListener('pointermove', onPointerMove);\n };\n },\n [labelRefs, isVisible, revealTransitionComplete]\n );\n\n const rootCls = classNames(s.Root, {\n [s.Visible]: isVisible,\n [s.TextColorDark]: textTheme === 'dark',\n });\n\n return (\n
\n
\n
\n {title && (\n \n )}\n
\n
\n
\n
\n
\n
\n {items.map((v, i) => {\n const innerLabelWrapCls = classNames(s.InnerLabelWrap, {\n [s.Visible]: isVisible || revealTransitionComplete,\n [s.TopPad]:\n intersectedLabelRefIndexesForTranslate.indexOf(\n parseInt(i)\n ) !== -1,\n [s.RightAligned]: v?.labelAlignment === 'right',\n });\n\n return (\n
\n {\n labelRefs.current[i] = {\n element: el,\n };\n }}>\n {\n labelIntersectionRefs.current[i] = el;\n }}\n className={innerLabelWrapCls}>\n \n \n \n \n {v.value}%\n \n
\n
\n
\n );\n })}\n
\n
\n
\n \n \n );\n};\n\nPieBarChart3d.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n infoTitle: PropTypes.string,\n infoText: PropTypes.string,\n infoLink: PropTypes.object,\n textTheme: PropTypes.oneOf(['light', 'dark']),\n items: PropTypes.arrayOf(\n PropTypes.shape({\n barColor: PropTypes.oneOf([\n '',\n GRADIENT_ORANGE_PINK,\n GRADIENT_BLUE_PURPLE,\n GRADIENT_PINK_PURPLE,\n GRADIENT_GRAY,\n ]),\n value: PropTypes.number.isRequired,\n label: PropTypes.string.isRequired,\n labelColor: PropTypes.string,\n labelAlignment: PropTypes.oneOf(['', 'left', 'right']),\n }).isRequired\n ).isRequired,\n};\n\nPieBarChart3d.defaultProps = {\n items: [],\n};\n\nexport default PieBarChart3d;\n","import React, { useState, useRef, useContext } from 'react';\n\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport { Color, Raycaster, Group, Box3 } from 'three';\n\nimport { animate } from 'framer-motion';\n\n// import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';\n// import { useTranslation } from 'next-i18next';\n\nimport ChartIntroLabel from '../ChartIntroLabel/ChartIntroLabel';\n\nimport {\n createBaseScene,\n fitCameraToCenteredObject,\n alignHtmlElPositionWithWorldSpacePoint,\n} from '../../threejs/utils/sceneHelpers';\nimport { createPhongGradientMaterial } from '../../threejs/utils/gradientMaterialHelpers';\n// import {\n// createRenderPipeline,\n// createRenderPipelineWithBloom,\n// } from '../../threejs/utils/createRenderPipeline';\nimport { createVerticalBars, scaleBarY } from '../../threejs/utils/barHelpers';\n\nimport { throttle } from 'throttle-debounce';\n\nimport useMultiplexedThreeJs from '../../hooks/useMultiplexedThreeJs';\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\nimport useMediaQuery from '../../hooks/useMediaQuery';\n\nimport { AnimationsActiveContext } from '../../containers/BasePage';\n\nimport {\n DEFAULT_CHART_PADDING,\n DEFAULT_ENV_MAP_URL,\n THEME_ORANGE_PINK,\n THEME_BLUE_PURPLE,\n LAYOUT_SIMPLE,\n LAYOUT_FANCY,\n MIN_BAR_HEIGHT,\n MAX_BAR_HEIGHT,\n} from '../../threejs/constants';\n\nconst orangePinkGradientColors = {\n gradientColorBottom: new Color(0xf81c6f).multiplyScalar(1.7),\n gradientColorMiddle: new Color(0xf81c6f).multiplyScalar(1.7),\n gradientColorTop: new Color(0xff5749).multiplyScalar(1.7),\n};\n\nconst bluePurpleGradientColors = {\n gradientColorBottom: new Color(0x5aa0f8).multiplyScalar(2),\n gradientColorMiddle: new Color(0x733da1).multiplyScalar(2),\n gradientColorTop: new Color(0xd7336c).multiplyScalar(2),\n};\n\nimport s from './BarChart3d.module.scss';\n\nconst BarChart3d = (props) => {\n const {\n title,\n description,\n infoTitle,\n infoText,\n infoLink,\n plotData,\n theme,\n textTheme,\n layout,\n // envMapUrl,\n\n minBarHeight,\n maxBarHeight,\n\n minHorizontalWidth,\n chartPadding,\n } = props;\n\n const { animationsActive } = useContext(AnimationsActiveContext) || {};\n\n const [envMap, setEnvMap] = useState(null);\n const [revealTransitionComplete, setRevealTransitionComplete] =\n useState(false);\n\n const labelRefs = useRef([]);\n const valueLabelRefs = useRef([]);\n\n const [inViewRef, isVisible] = useIntersectionObserver(0.3, undefined, true);\n const mediumMq = useMediaQuery(`(min-width: 768px)`);\n\n const { onThreeJsCanvasReady, handleCanvasRef, canvas, renderer } =\n useMultiplexedThreeJs({ debug: false });\n\n const hasNegativeValues =\n plotData?.items.filter((i) => i.value < 0).length > 0;\n\n // useEffect(() => {\n // if(!renderer) {\n // return;\n // }\n\n // new RGBELoader().load(envMapUrl, (texture) => {\n // const gen = new PMREMGenerator(renderer);\n // let em = gen.fromEquirectangular(texture).texture;\n\n // setEnvMap(em);\n\n // texture.dispose();\n // gen.dispose();\n\n // });\n // }, [renderer]);\n\n onThreeJsCanvasReady(\n ({ renderer, renderMultiplexedThreeJsScene }) => {\n if (!plotData?.items) {\n return;\n }\n\n const aspect = canvas.offsetWidth / canvas.offsetHeight;\n\n const gradientColors =\n theme === THEME_ORANGE_PINK\n ? orangePinkGradientColors\n : bluePurpleGradientColors;\n\n const { camera, scene } = createBaseScene({\n aspect,\n lightIntensity: 30,\n });\n\n // const { renderWithPipeline, updatePipeline } =\n // createRenderPipelineWithBloom(canvas, renderer, scene, camera, {\n // bloomThreshold: 0.44,\n // bloomStrength: 0.2,\n // });\n\n // const { renderWithPipeline, updatePipeline } =\n // createRenderPipeline(canvas, renderer, scene, camera, {\n // });\n\n const { glassMaterial, customGlassUniforms } =\n createPhongGradientMaterial({\n gradientColors,\n envMap,\n pointerLightIntensity: 0.8,\n // dynamic noise fn\n // noiseAmount: renderer.getPixelRatio() < 2 ? 0.05 : 0.1,\n // noise texture\n noiseAmount: 0.03,\n });\n\n const {\n glassMaterial: flippedGlassMaterial,\n customGlassUniforms: customFlippedGlassUniforms,\n } = createPhongGradientMaterial({\n gradientColors: {\n gradientColorBottom: gradientColors.gradientColorTop,\n gradientColorMiddle: gradientColors.gradientColorMiddle,\n gradientColorTop: gradientColors.gradientColorBottom,\n },\n envMap,\n pointerLightIntensity: 0.8,\n // dynamic noise fn\n // noiseAmount: renderer.getPixelRatio() < 2 ? 0.05 : 0.1,\n // noise texture\n noiseAmount: 0.03,\n });\n\n // init bars\n\n let {\n bars,\n currMaxBarHeight,\n currNegMaxBarHeight,\n barsHaveNegativeValues,\n } = createVerticalBars({\n plotData,\n material: glassMaterial,\n flippedMaterial: flippedGlassMaterial,\n minBarHeight,\n maxBarHeight,\n layout,\n });\n\n const barsGroup = new Group();\n bars.forEach((b) => {\n barsGroup.add(b.mesh);\n });\n\n scene.add(barsGroup);\n\n const boundingBox = new Box3();\n boundingBox.setFromObject(barsGroup);\n\n if (barsHaveNegativeValues) {\n const newMinBounds = boundingBox.min.clone();\n const newMaxBounds = boundingBox.max.clone();\n\n newMinBounds.y = boundingBox.min.y + currNegMaxBarHeight;\n newMaxBounds.y = currMaxBarHeight * 0.5;\n\n boundingBox.set(newMinBounds, newMaxBounds);\n }\n\n const cameraMinZ = 60;\n fitCameraToCenteredObject(camera, boundingBox, chartPadding, cameraMinZ);\n\n if (barsHaveNegativeValues) {\n barsGroup.position.y -= currNegMaxBarHeight * 0.5;\n }\n\n const initialBarScale = !revealTransitionComplete ? 0.001 : 1;\n\n bars.forEach((b) => {\n scaleBarY(b, initialBarScale, currMaxBarHeight);\n });\n\n // get mouse position relative to canvas\n\n let mousePointer = {\n rawX: -1,\n rawY: -1,\n x: -1,\n y: -1,\n ndcX: -1,\n ndcY: -1,\n directionX: 0,\n };\n\n let prevMousePointerPosition = {\n ...mousePointer,\n };\n\n const onPointerMove = throttle(25, (e) => {\n const bounds = canvas.getBoundingClientRect();\n\n const rawX = e.clientX - bounds.left;\n const rawY = e.clientY - bounds.top;\n\n const x = rawX / bounds.width;\n const y = 1 - rawY / bounds.height;\n\n const newPosition = {\n // relative canvas coords in pixels in range [0, max canvas width/height in pixels]\n rawX,\n rawY,\n // normalized relative canvas coords in range [0, 1]\n x,\n y,\n // normalized relative canvas coords in range [-1, 1]\n ndcX: x * 2 - 1,\n ndcY: (y - 1) * 2 + 1,\n // horizontal movement direction\n directionX: Math.sign(rawX - prevMousePointerPosition.rawX),\n };\n\n mousePointer = newPosition;\n prevMousePointerPosition = {\n ...mousePointer,\n };\n });\n\n window.addEventListener('pointermove', onPointerMove);\n\n const raycaster = new Raycaster();\n let prevBarIntersects = [];\n\n const getBarsIntersectedByPointer = () => {\n raycaster.setFromCamera(\n {\n x: mousePointer.ndcX,\n y: mousePointer.ndcY,\n },\n camera\n );\n\n const intersects = raycaster.intersectObjects(scene.children, true);\n const barIntersects =\n intersects.filter((o) => o.object.name.indexOf('bar-') > -1) || [];\n\n // used for pointer/mouse out detection\n const origBarIntersects = [...barIntersects];\n const currentBarIntersects = barIntersects.filter(\n (hb) =>\n prevBarIntersects.filter((p) => p.object.uuid === hb.object.uuid)\n .length === 0\n );\n\n prevBarIntersects = [...origBarIntersects];\n\n return currentBarIntersects;\n };\n\n // trigger reveal animation for bars\n\n if (isVisible && !revealTransitionComplete && animationsActive) {\n bars.forEach((bar) => {\n animate(0, 1, {\n duration: 1,\n onUpdate: (p) => {\n bar.mesh.rotation.y = p * Math.PI * 2;\n scaleBarY(bar, p, currMaxBarHeight);\n },\n onComplete: () => {\n setRevealTransitionComplete(true);\n },\n });\n });\n } else if (isVisible && !revealTransitionComplete && !animationsActive) {\n setRevealTransitionComplete(true);\n }\n\n // main render loop\n renderMultiplexedThreeJsScene(\n (time, resolution, renderer, scissorOffsets) => {\n // update stuff\n camera.aspect = resolution.width / resolution.height;\n camera.updateProjectionMatrix();\n\n // updatePipeline(resolution);\n\n // NOTE!!!!!!\n // If using a bloom pipeline, this should be set to:\n // customGlassUniforms.uScissorOffsets.value = [0, 0];\n customFlippedGlassUniforms.uScissorOffsets.value =\n customGlassUniforms.uScissorOffsets.value = scissorOffsets;\n\n customFlippedGlassUniforms.uResolution.value =\n customGlassUniforms.uResolution.value = [\n resolution.width,\n resolution.height,\n ];\n customFlippedGlassUniforms.uTime.value =\n customGlassUniforms.uTime.value = time;\n customFlippedGlassUniforms.uMousePointer.value =\n customGlassUniforms.uMousePointer.value = [\n mousePointer.x,\n mousePointer.y,\n ];\n customFlippedGlassUniforms.uPixelRatio.value =\n customGlassUniforms.uPixelRatio.value = renderer.getPixelRatio();\n\n // rotate bars on pointer hover\n getBarsIntersectedByPointer().forEach((bar) => {\n const mouseXDiff = Math.abs(\n bar.object.userData?.prevMousePointer?.rawX - mousePointer.rawX\n );\n const mouseYDiff = Math.abs(\n bar.object.userData?.prevMousePointer?.rawY - mousePointer.rawY\n );\n\n // bail if mouse hasn't moved\n // this prevents endless rotation triggered when hovering bar edges etc.\n if (mouseXDiff <= 1 && mouseYDiff <= 1) {\n return;\n }\n\n animate(0, Math.PI * mousePointer.directionX, {\n type: 'spring',\n stiffness: 150,\n velocity: 8,\n mass: 0.7,\n onPlay: () => {\n bar.object.userData.prevMousePointer = { ...mousePointer };\n },\n onUpdate: (r) => {\n bar.object.rotation.y = r;\n },\n });\n });\n\n // finally, render all the stuff\n // renderWithPipeline();\n renderer.render(scene, camera);\n\n // ...and handle alignment of html labels\n labelRefs.current.forEach((label, i) => {\n const bottomBarP = bars[i].bottomPosition.clone();\n\n alignHtmlElPositionWithWorldSpacePoint({\n camera,\n resolution,\n worldSpacePosition: bottomBarP,\n element: label.element,\n alignToTopOfPoint: bars[i].value < 0,\n });\n });\n\n valueLabelRefs.current.forEach((label, i) => {\n const topBarP = bars[i].topPosition.clone();\n\n alignHtmlElPositionWithWorldSpacePoint({\n camera,\n resolution,\n worldSpacePosition: topBarP,\n element: label.element,\n alignToTopOfPoint: bars[i].value < 0 ? false : true,\n });\n });\n }\n );\n\n return () => {\n window.removeEventListener('pointermove', onPointerMove);\n };\n },\n [\n theme,\n envMap,\n labelRefs,\n valueLabelRefs,\n isVisible,\n revealTransitionComplete,\n mediumMq,\n ]\n );\n\n const rootCls = classNames(s.Root, {\n [s.HasMinWidth]: !!minHorizontalWidth,\n [s.HasNegativeValues]: hasNegativeValues,\n [s.LayoutFancy]: layout === LAYOUT_FANCY,\n [s.TextColorDark]: textTheme === 'dark',\n });\n\n return (\n
\n
\n
\n {title && (\n \n )}\n
\n
\n
\n \n
\n {plotData?.items.map((v, i) => {\n const innerValueLabelWrapCls = classNames(s.InnerValueLabelWrap, {\n [s.Visible]: isVisible,\n [s.IsNegativeLabel]: v.value < 0,\n });\n\n const innerLabelWrapCls = classNames(s.InnerLabelWrap, {\n [s.Visible]: isVisible,\n [s.IsNegativeLabel]: v.value < 0,\n });\n\n return (\n
\n {layout === LAYOUT_FANCY && (\n {\n valueLabelRefs.current[i] = {\n element: el,\n };\n }}>\n
\n \n {v.valueLabel}\n \n
\n
\n )}\n {\n labelRefs.current[i] = {\n element: el,\n };\n }}>\n
\n {layout !== LAYOUT_FANCY && (\n \n {v.valueLabel}\n \n )}\n \n {v.label}\n \n
\n
\n
\n );\n })}\n
\n \n \n \n );\n};\n\nBarChart3d.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n infoTitle: PropTypes.string,\n infoText: PropTypes.string,\n infoLink: PropTypes.object,\n textTheme: PropTypes.oneOf(['light', 'dark']),\n theme: PropTypes.oneOf(['', THEME_ORANGE_PINK, THEME_BLUE_PURPLE]),\n layout: PropTypes.oneOf(['', LAYOUT_SIMPLE, LAYOUT_FANCY]),\n envMapUrl: PropTypes.string.isRequired,\n chartPadding: PropTypes.number,\n minBarHeight: PropTypes.number,\n maxBarHeight: PropTypes.number,\n minHorizontalWidth: PropTypes.number,\n plotData: PropTypes.shape({\n yAxisMax: PropTypes.number,\n items: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.number.isRequired,\n valueLabel: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n }).isRequired\n ),\n }).isRequired,\n};\n\nBarChart3d.defaultProps = {\n title: '',\n description: '',\n theme: THEME_ORANGE_PINK,\n textTheme: 'light',\n layout: LAYOUT_FANCY,\n envMapUrl: DEFAULT_ENV_MAP_URL,\n chartPadding: DEFAULT_CHART_PADDING,\n minBarHeight: MIN_BAR_HEIGHT,\n maxBarHeight: MAX_BAR_HEIGHT,\n plotData: null,\n};\n\nexport default BarChart3d;\n","import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport * as Matter from 'matter-js';\n\nimport ChartIntroLabel from '../ChartIntroLabel/ChartIntroLabel';\n\nimport useWindowWidth from '../../hooks/useWindowWidth';\nimport useMediaQuery from '../../hooks/useMediaQuery';\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\n\nimport s from './GravityBallStats.module.scss';\n\nconst MIN_BALL_SIZE_VW = 9;\nconst MAX_BALL_SIZE_VW = 23;\n\nconst MIN_BALL_SIZE_RESP_VW = 20;\nconst MAX_BALL_SIZE_RESP_VW = 40;\n\nconst MATTER_INTERNAL_SIZE_DOM_SIZE_RATIO = 0.485;\n\nconst USE_DEBUG_RENDERER = false;\n\nconst GravityBallStats = (props) => {\n const {\n title,\n description,\n infoTitle,\n infoText,\n infoLink,\n items,\n centerGravityStrength,\n pointerForceStrength,\n textTheme,\n } = props;\n\n const [inViewRef, isVisible] = useIntersectionObserver(0.3, undefined, true);\n\n const ballContainerRef = useRef(null);\n const ballRefs = useRef([]);\n\n const mediumMq = useMediaQuery(`(min-width: 1024px)`);\n\n const windowWidth = useWindowWidth();\n\n useEffect(() => {\n if (!ballRefs.current || !ballContainerRef.current || !isVisible) {\n return;\n }\n\n // dimensions\n const containerWidth = ballContainerRef.current.offsetWidth;\n const containerHeight = ballContainerRef.current.offsetHeight;\n\n const containerMiddleW = containerWidth / 2;\n const containerMiddleH = containerHeight / 2;\n\n const maxBallSize = mediumMq ? MAX_BALL_SIZE_VW : MAX_BALL_SIZE_RESP_VW;\n const minBallSize = mediumMq ? MIN_BALL_SIZE_VW : MIN_BALL_SIZE_RESP_VW;\n\n // format plot data\n const maxPlotValue = items\n .map((b) => Math.abs(b.value))\n .reduce((max, v) => Math.max(max, v), -Infinity);\n\n const ballData = items.map((item, i) => {\n const percentage = item.value / (maxPlotValue * 0.55);\n const ballSizeVw = Math.min(\n Math.max(minBallSize, percentage * maxBallSize),\n maxBallSize\n );\n\n // const ballSizePx = window.innerWidth * (ballSizeVw / 100);\n const ballSizePx = containerWidth * (ballSizeVw / 100);\n const ballSizePxHalf = ballSizePx / 2;\n\n const xPos = Math.random() * containerWidth;\n const yPos = Math.random() * containerHeight;\n\n const body = Matter.Bodies.circle(\n xPos,\n yPos,\n ballSizePx * MATTER_INTERNAL_SIZE_DOM_SIZE_RATIO,\n {\n mass: 10,\n }\n );\n\n return {\n ...item,\n percentage,\n el: ballRefs.current[i],\n ballSizeVw,\n body,\n ballSizePx,\n ballSizePxHalf,\n };\n });\n\n // create an engine\n const engine = Matter.Engine.create({\n gravity: {\n x: 0,\n y: 0,\n },\n enableSleeping: true,\n constraintIterations: 1, // defeault: 2\n positionIterations: 1, // default: 6\n velocityIterations: 1, // default: 4\n });\n\n // create a matter renderer if debugging\n const render = USE_DEBUG_RENDERER\n ? Matter.Render.create({\n element: ballContainerRef.current,\n engine: engine,\n options: {\n width: containerWidth,\n height: containerHeight,\n showVelocity: true,\n showAngleIndicator: true,\n showStats: true,\n showPerformance: true,\n },\n })\n : null;\n\n // add mouse control\n const mouse = Matter.Mouse.create(ballContainerRef.current);\n const mouseConstraint = Matter.MouseConstraint.create(engine, {\n mouse,\n constraint: {\n stiffness: 0.1,\n render: {\n visible: false,\n },\n },\n });\n\n // fix scroll in ball container\n mouseConstraint.mouse.element.removeEventListener(\n 'mousewheel',\n mouseConstraint.mouse.mousewheel\n );\n mouseConstraint.mouse.element.removeEventListener(\n 'DOMMouseScroll',\n mouseConstraint.mouse.mousewheel\n );\n\n // fix touch \"scroll\" in ball container\n // see: https://github.com/liabru/matter-js/issues/678\n mouseConstraint.mouse.element.removeEventListener(\n 'touchstart',\n mouseConstraint.mouse.mousedown\n );\n mouseConstraint.mouse.element.removeEventListener(\n 'touchmove',\n mouseConstraint.mouse.mousemove\n );\n mouseConstraint.mouse.element.removeEventListener(\n 'touchend',\n mouseConstraint.mouse.mouseup\n );\n\n mouseConstraint.mouse.element.addEventListener(\n 'touchstart',\n mouseConstraint.mouse.mousedown,\n { passive: true }\n );\n mouseConstraint.mouse.element.addEventListener('touchmove', (e) => {\n if (mouseConstraint.body) {\n mouseConstraint.mouse.mousemove(e);\n }\n });\n mouseConstraint.mouse.element.addEventListener('touchend', (e) => {\n if (mouseConstraint.body) {\n mouseConstraint.mouse.mouseup(e);\n }\n });\n\n // walls\n const wallWidth = 10;\n\n Matter.Composite.add(engine.world, [\n Matter.Bodies.rectangle(\n containerWidth / 2,\n 0,\n containerWidth,\n wallWidth,\n {\n isStatic: true,\n }\n ),\n Matter.Bodies.rectangle(\n containerWidth / 2,\n containerHeight,\n containerWidth,\n wallWidth,\n { isStatic: true }\n ),\n Matter.Bodies.rectangle(\n containerWidth,\n containerHeight / 2,\n wallWidth,\n containerHeight,\n { isStatic: true }\n ),\n Matter.Bodies.rectangle(\n 0,\n containerHeight / 2,\n wallWidth,\n containerHeight,\n {\n isStatic: true,\n }\n ),\n ]);\n\n // add balls\n Matter.Composite.add(\n engine.world,\n ballData.map((b) => b.body)\n );\n\n const runner = Matter.Runner.create({\n delta: 1000 / 60, // default 1000 / 60\n isFixed: true,\n enabled: true,\n });\n\n Matter.Runner.run(runner, engine);\n\n let ballsIntersectedByPointer = [];\n let prevMousePos = { ...mouseConstraint.mouse.position };\n\n Matter.Events.on(engine, 'afterUpdate', (event) => {\n const mouse = mouseConstraint.mouse;\n const bodies = Matter.Composite.allBodies(engine.world).filter(\n (b) => !b.isStatic\n );\n\n const startPoint = mouse.position || { x: 0, y: 0 };\n const endPoint = { x: startPoint.x + 1, y: startPoint.y + 1 };\n\n // apply force in the direction of movement on pointer ball hover\n ballsIntersectedByPointer = Matter.Query.ray(\n bodies,\n startPoint,\n endPoint\n );\n\n ballsIntersectedByPointer.forEach((b) => {\n const body = b.body;\n const forceMagnitude = body.mass * 0.0133 * pointerForceStrength;\n\n const dirVec = Matter.Vector.mult(\n Matter.Vector.normalise(\n Matter.Vector.create(\n mouse.position.x - prevMousePos.x,\n mouse.position.y - prevMousePos.y\n )\n ),\n forceMagnitude\n );\n\n Matter.Body.applyForce(body, body.position, dirVec);\n prevMousePos = { ...mouseConstraint.mouse.position };\n });\n\n // trigger force on each ball to make it gravitate towards middle of world\n ballData.forEach((b) => {\n const body = b.body;\n\n const forceMagnitude = 0.002 * body.mass * centerGravityStrength;\n\n const vF = Matter.Vector.mult(\n Matter.Vector.normalise(\n Matter.Vector.create(\n containerMiddleW - body.position.x,\n containerMiddleH - body.position.y\n )\n ),\n forceMagnitude\n );\n\n Matter.Body.applyForce(body, body.position, vF);\n\n // update html el positions\n const xP = body.position.x - b.ballSizePxHalf;\n const yP = body.position.y - b.ballSizePxHalf;\n\n b.el.style = `\n transform: translateX(${xP}px) translateY(${yP}px);\n width: ${b.ballSizePx}px;\n height: ${b.ballSizePx}px;\n `;\n\n // b.el.style = `\n // transform: translateX(${xP}px) translateY(${yP}px);\n // width: ${b.ballSizeVw}vw;\n // height: ${b.ballSizeVw}vw;\n // `;\n });\n });\n\n if (USE_DEBUG_RENDERER) {\n Matter.Render.run(render);\n Matter.Events.on(render, 'afterRender', function () {\n const mouse = mouseConstraint.mouse;\n const context = render.context;\n\n const endPoint = mouse.position || { x: 100, y: 600 };\n const startPoint = mouse.position || { x: 0, y: 0 };\n\n Matter.Render.startViewTransform(render);\n\n context.beginPath();\n context.moveTo(startPoint.x, startPoint.y);\n context.lineTo(endPoint.x, endPoint.y);\n\n if (ballsIntersectedByPointer.length > 0) {\n context.strokeStyle = '#fff';\n } else {\n context.strokeStyle = '#555';\n }\n\n context.lineWidth = 0.5;\n context.stroke();\n\n for (var i = 0; i < ballsIntersectedByPointer.length; i++) {\n var collision = ballsIntersectedByPointer[i];\n context.rect(\n collision.bodyA.position.x - 4.5,\n collision.bodyA.position.y - 4.5,\n 8,\n 8\n );\n }\n\n context.fillStyle = 'rgba(255, 165, 0, 0.7)';\n context.fill();\n\n Matter.Render.endViewTransform(render);\n });\n }\n\n return () => {\n Matter.World.clear(engine.world);\n Matter.Engine.clear(engine);\n\n if (render) {\n Matter.Render.stop(render);\n render.canvas.remove();\n\n render.canvas = null;\n render.context = null;\n render.textures = {};\n }\n };\n }, [isVisible, ballRefs, ballContainerRef, windowWidth]);\n\n const rootCls = classNames(s.Root, {\n [s.Visible]: isVisible,\n [s.Debug]: USE_DEBUG_RENDERER,\n });\n\n if (!items.length) {\n return null;\n }\n\n return (\n
\n
\n
\n {title && (\n \n )}\n
\n
\n
\n {items.map((item, i) => {\n return (\n (ballRefs.current[i] = el)}\n className={s.Ball}>\n
\n \n {item.label}\n \n \n {item.valueLabel}\n \n
\n
\n );\n })}\n
\n \n );\n};\n\nGravityBallStats.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n infoTitle: PropTypes.string,\n infoText: PropTypes.string,\n infoLink: PropTypes.object,\n textTheme: PropTypes.oneOf(['light', 'dark']),\n items: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.number.isRequired,\n valueLabel: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n }).isRequired\n ).isRequired,\n centerGravityStrength: PropTypes.number,\n pointerForceStrength: PropTypes.number,\n};\n\nGravityBallStats.defaultProps = {\n textTheme: 'dark',\n items: [],\n centerGravityStrength: 0.14,\n pointerForceStrength: 0.34,\n};\n\nexport default GravityBallStats;\n","import React, { useState } from 'react';\nimport Image from 'next/image';\nimport Link from 'next/link';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport { useTranslation } from 'next-i18next';\n\nimport ButtonSecondaryEllipse from '../ButtonSecondaryEllipse/ButtonSecondaryEllipse';\nimport VideoIcon from '../VideoIcon';\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\n\nimport s from './InsightsContactCta.module.scss';\n\nconst THEME_PINK_PURPLE = 'pink-purple';\nconst THEME_PINK_ORANGE = 'pink-orange';\nconst THEME_PINK_PURPLE_BLUE = 'pink-purple-blue';\nconst THEME_BLUE_PURPLE = 'blue-purple';\nconst THEME_BLUE_GREEN = 'blue-green';\n\nconst iconMap = {\n [THEME_BLUE_PURPLE]: [\n {\n src: '/video/crown-reveal-hevc/crown--blue-purple--350p--hevc.mp4',\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: '/video/crown-reveal-vp9/crown--blue-purple--350p--vp9.webm',\n type: 'video/webm',\n },\n ],\n [THEME_PINK_PURPLE]: [\n {\n src: '/video/crown-reveal-hevc/crown--pink-purple--350p--hevc.mp4',\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: '/video/crown-reveal-vp9/crown--pink-purple--350p--vp9.webm',\n type: 'video/webm',\n },\n ],\n [THEME_PINK_PURPLE_BLUE]: [\n {\n src: '/video/crown-reveal-hevc/crown--pink-purple-blue--350p--hevc.mp4',\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: '/video/crown-reveal-vp9/crown--pink-purple-blue--350p--vp9.webm',\n type: 'video/webm',\n },\n ],\n [THEME_PINK_ORANGE]: [\n {\n src: '/video/crown-reveal-hevc/crown--pink-orange--350p--hevc.mp4',\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: '/video/crown-reveal-vp9/crown--pink-orange--350p--vp9.webm',\n type: 'video/webm',\n },\n ],\n [THEME_BLUE_PURPLE]: [\n {\n src: '/video/crown-reveal-hevc/crown--blue-purple--350p--hevc.mp4',\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: '/video/crown-reveal-vp9/crown--blue-purple--350p--vp9.webm',\n type: 'video/webm',\n },\n ],\n [THEME_BLUE_GREEN]: [\n {\n src: '/video/crown-reveal-hevc/crown--blue-green--350p--hevc.mp4',\n type: 'video/mp4; codecs=\"hvc1\"',\n },\n {\n src: '/video/crown-reveal-vp9/crown--blue-green--350p--vp9.webm',\n type: 'video/webm',\n },\n ],\n};\n\nconst InsightsContactCta = ({\n title,\n text,\n activityDuration,\n href,\n theme = THEME_BLUE_PURPLE,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const { t } = useTranslation();\n const [inViewRef, isVisible] = useIntersectionObserver(0.5, undefined, true);\n\n const containerCls = classNames(s.Container, {\n [s['Theme--PinkPurpleBlue']]: theme === THEME_PINK_PURPLE_BLUE,\n [s['Theme--PinkPurple']]: theme === THEME_PINK_PURPLE,\n [s['Theme--BlueGreen']]: theme === THEME_BLUE_GREEN,\n [s['Theme--PinkOrange']]: theme === THEME_PINK_ORANGE,\n [s['Theme--BluePurple']]: theme === THEME_BLUE_PURPLE,\n });\n\n const headingCls = classNames(s.Heading, {\n [s.Visible]: isVisible,\n });\n const textCls = classNames(s.Text, {\n [s.Visible]: isVisible,\n });\n const activityDurationCls = classNames(s.ActivityDuration, {\n [s.Visible]: isVisible,\n });\n\n let iconSrcs = iconMap?.[theme];\n\n let url = href?.href;\n\n // hack to make form show correct dropdown alternative\n if (url?.indexOf('/contact-us/') > -1) {\n url = url + '?type=stockholm-insights';\n }\n\n return (\n
\n setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}>\n
\n {url && (\n \n \n {href?.text || title}\n \n \n )}\n\n {iconSrcs && (\n \n )}\n\n
\n

{title}

\n
{text}
\n\n
\n \n
\n\n {activityDuration && (\n
\n \n\n {activityDuration == 1\n ? t('Generic.activityDuration')\n : t('Generic.activityDurationPlural', {\n duration: activityDuration,\n })}\n
\n )}\n\n
\n \n
\n
\n
\n \n );\n};\n\nInsightsContactCta.propTypes = {\n theme: PropTypes.oneOf([\n '',\n THEME_PINK_PURPLE_BLUE,\n THEME_PINK_PURPLE,\n THEME_PINK_ORANGE,\n THEME_BLUE_PURPLE,\n THEME_BLUE_GREEN,\n ]),\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n href: PropTypes.object.isRequired,\n activityDuration: PropTypes.number,\n};\n\nInsightsContactCta.defaultProps = {\n theme: THEME_BLUE_PURPLE,\n title: '',\n text: '',\n href: null,\n activityDuration: null,\n};\n\nexport default InsightsContactCta;\n","export const THEME_BLUE_PURPLE = 'theme-blue-purple';\nexport const THEME_ORANGE_RED = 'theme-orange-red';\n","import { THEME_BLUE_PURPLE, THEME_ORANGE_RED } from './constants';\n\nconst baseTheme = {\n theme: {\n colors: [],\n chart: {\n backgroundColor: 'rgba(255,255,255, 0)',\n borderWidth: 0,\n plotBorderWidth: 0,\n margin: 0,\n height: null,\n style: {\n fontFamily: 'Futura, sans-serif',\n },\n },\n tooltip: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n legend: {\n enabled: false,\n },\n plotOptions: {\n series: {\n borderWidth: 0,\n pointPadding: 0.2,\n },\n bar: {\n pointWidth: 32,\n },\n },\n title: {\n text: '',\n },\n },\n xAxisLabelStyles: {\n labels: {\n x: 0,\n align: 'left',\n reserveSpace: false,\n y: -25,\n style: {\n color: 'white',\n font: '14px Futura, sans-serif',\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n textOutline: 'none',\n },\n },\n lineWidth: 0,\n },\n yAxisLabelStyles: {\n title: {\n text: '',\n },\n gridLineWidth: 0,\n labels: {\n enabled: false,\n },\n },\n dataLabels: {\n enabled: true,\n inside: false,\n align: 'left',\n verticalAlign: 'middle',\n x: 5,\n format: '{y}',\n style: {\n color: 'white',\n font: 'Futura, sans-serif',\n fontSize: '18px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOutline: 'none',\n },\n },\n};\n\nconst themes = {\n [THEME_ORANGE_RED]: {\n ...baseTheme,\n theme: {\n ...baseTheme.theme,\n colors: [\n {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n stops: [\n [0, '#f76500'],\n [1, '#d80100'],\n ],\n },\n ],\n },\n // focusBarColor: {\n // linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n // stops: [\n // [0, '#5b3a84'],\n // [1, '#ae044d']\n // ]\n // }\n },\n [THEME_BLUE_PURPLE]: {\n ...baseTheme,\n theme: {\n ...baseTheme.theme,\n colors: [\n {\n linearGradient: { x1: 0, x2: 0, y1: 0, y2: 1 },\n stops: [\n [0, '#bac2cc'],\n [1, '#a56ca6'],\n ],\n },\n ],\n },\n // focusBarColor: {\n // linearGradient: { x1: 0, x2: 1, y1: 0, y2: 0 },\n // stops: [\n // [0, '#5b3a84'],\n // [1, '#ae044d']\n // ]\n // }\n },\n};\n\nexport default themes;\n","import React, { useContext, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\n// TODO: fix this, currently issues with ssr + module types + highcharts\n\n// import Chart from 'highcharts/es-modules/Core/Chart/Chart.js';´\n// import BarSeries from 'highcharts/es-modules/Series/Bar/BarSeries.js';\n// import DataLabel from 'highcharts/es-modules/Core/Series/DataLabel.js';\n// DataLabel.compose(BarSeries);\n\nimport Highcharts from 'highcharts';\nimport highchartsAccessibility from 'highcharts/modules/accessibility';\n\nimport ChartIntroLabel from '../ChartIntroLabel/ChartIntroLabel';\n\nimport { THEME_BLUE_PURPLE, THEME_ORANGE_RED } from './constants';\n\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\nimport useDelayedEffect from '../../hooks/useDelayedEffect';\n\nimport { AnimationsActiveContext } from '../../containers/BasePage';\n\nimport chartThemes from './chartThemes';\nimport s from './BarChartHorizontal.module.scss';\n\nconst formatPlotDataForHighcharts = (plotData, theme, textColor) => {\n const categories = plotData?.items?.map((item) => item.label);\n const seriesData = plotData?.items?.map((item) => ({ y: item.value }));\n\n const yAxisMin = plotData?.yAxisMin || 0;\n const yAxisMax = plotData?.yAxisMax\n ? plotData?.yAxisMax\n : seriesData?.reduce((max, v) => {\n max = v.y > max ? v.y : max;\n return max;\n }, 0) * 1.1; // get max y and increase it by 10% to add some visual margin in chart\n\n return {\n xAxis: {\n ...theme.xAxisLabelStyles,\n labels: {\n ...theme.xAxisLabelStyles.labels,\n style: {\n ...theme.xAxisLabelStyles.labels.style,\n color: textColor,\n },\n },\n categories,\n },\n yAxis: {\n min: yAxisMin,\n max: yAxisMax,\n ...theme.yAxisLabelStyles,\n },\n series: [\n {\n dataLabels: {\n ...theme.dataLabels,\n format:\n plotData?.dataLabelFormat?.replace('{value}', '{y}') ||\n theme.dataLabels.format,\n style: {\n ...theme.dataLabels.style,\n color: textColor,\n },\n },\n data: seriesData,\n states: {\n // manually done in css instead to allow for transition animation\n hover: {\n enabled: false,\n },\n },\n },\n ],\n };\n};\n\nconst BarChartHorizontal = (props) => {\n const {\n title,\n description,\n infoTitle,\n infoText,\n infoLink,\n colorTheme,\n textTheme,\n chartHeight,\n plotData,\n } = props;\n\n const { animationsActive } = useContext(AnimationsActiveContext) || {};\n\n const chartContainerRef = useRef(null);\n const [inViewRef, isVisible] = useIntersectionObserver(0.2, undefined, true);\n\n const theme = chartThemes[colorTheme];\n const textColor = textTheme === 'light' ? '#ffffff' : '#000000';\n\n const formattedPlotData = formatPlotDataForHighcharts(\n plotData,\n theme,\n textColor\n );\n\n const chart = useRef(null);\n\n useDelayedEffect(\n animationsActive ? 900 : 10,\n () => {\n if (!chartContainerRef.current || !isVisible) {\n return;\n }\n\n highchartsAccessibility(Highcharts);\n\n chart.current = new Highcharts.Chart(chartContainerRef.current, {\n accessibility: {\n description: `${title}\\n${description}`,\n },\n ...theme.theme,\n plotOptions: {\n ...theme.theme.plotOptions,\n series: {\n ...theme.theme.plotOptions.series,\n animation: animationsActive,\n },\n },\n chart: {\n type: 'bar',\n ...theme.theme.chart,\n },\n ...formattedPlotData,\n });\n },\n [isVisible]\n );\n\n const rootCls = classNames(s.Root, 'grid', {\n [s.Visible]: isVisible,\n });\n\n return (\n
\n
\n {title && (\n
\n \n
\n )}\n
\n
\n \n );\n};\n\nBarChartHorizontal.propTypes = {\n title: PropTypes.string,\n description: PropTypes.string,\n infoTitle: PropTypes.string,\n infoText: PropTypes.string,\n infoLink: PropTypes.object,\n colorTheme: PropTypes.oneOf([THEME_ORANGE_RED, THEME_BLUE_PURPLE]),\n textTheme: PropTypes.oneOf(['light', 'dark']),\n chartHeight: PropTypes.string,\n plotData: PropTypes.shape({\n dataLabelFormat: PropTypes.string,\n yAxisMin: PropTypes.number,\n yAxisMax: PropTypes.number,\n items: PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.number.isRequired,\n label: PropTypes.string.isRequired,\n }).isRequired\n ),\n }).isRequired,\n};\n\nBarChartHorizontal.defaultProps = {\n colorTheme: THEME_ORANGE_RED,\n textTheme: 'light',\n chartHeight: '80vh',\n plotData: {},\n};\n\nexport default BarChartHorizontal;\n","import React, { useEffect, useContext, useRef } from 'react';\nimport Image from 'next/image';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'next-i18next';\n\nimport { basePageWrap } from '../BasePage';\n\nimport ScrolledVideoHero from '../../components/ScrolledVideoHero';\nimport InsightsSectionHeading from '../../components/InsightsSectionHeading/InsightsSectionHeading';\nimport BigNumbersBlock from '../../components/BigNumbersBlock/BigNumbersBlock';\nimport InsightsFullWidthVideo from '../../components/InsightsFullWidthVideo/InsightsFullWidthVideo';\nimport BigNumberVideoBlock from '../../components/BigNumberVideoBlock/BigNumberVideoBlock';\nimport PieBarChart3d from '../../components/PieBarChart3d/PieBarChart3d';\nimport BarChart3d from '../../components/BarChart3d/BarChart3d';\nimport GravityBallStats from '../../components/GravityBallStats/GravityBallStats';\nimport InsightsContactCta from '../../components/InsightsContactCta/InsightsContactCta';\nimport BarChartHorizontal from '../../components/BarChartHorizontal/BarChartHorizontal';\nimport Footer from '../../components/Footer';\n\nimport useIntersectionObserver from '../../hooks/useIntersectionObserver';\n\nimport {\n BackgroundContext,\n AnimationsActiveContext,\n} from '../../containers/BasePage';\nimport ThreeJsMultiplexedCanvasProvider from '../../components/ThreeJsMultiplexedCanvasProvider/ThreeJsMultiplexedCanvasProvider';\n\nimport s from './InsightsPage.module.scss';\n\nconst parseStreamField = (field) => field?.[0]?.value || {};\n\nconst InsightsSection = (props) => {\n const {\n bgColor = 'dark',\n className,\n children,\n threshold,\n rootMargin,\n } = props;\n\n const [sectionRef, sectionVisible] = useIntersectionObserver(\n threshold,\n rootMargin,\n false\n );\n const { toggleWhiteBackground } = useContext(BackgroundContext);\n\n useEffect(() => {\n if (sectionVisible) {\n toggleWhiteBackground(bgColor == 'dark' ? false : true);\n }\n }, [sectionVisible]);\n\n return (\n
\n {children}\n
\n );\n};\n\nInsightsSection.defaultProps = {\n bgColor: 'dark',\n threshold: 0.3,\n rootMargin: '',\n};\n\nInsightsSection.propTypes = {\n bgColor: PropTypes.oneOf(['dark', 'light']),\n className: PropTypes.string,\n children: PropTypes.node.isRequired,\n threshold: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.arrayOf(PropTypes.number),\n ]),\n rootMargin: PropTypes.string,\n};\n\nconst GradientWrap = ({\n children,\n gradient,\n layout,\n hidden = false,\n modifiers = [],\n}) => {\n const gradientCls = classNames(\n s.GradientWrap,\n {\n [s.PinkBlue]: gradient === 'pink-blue',\n [s.PinkOrange]: gradient === 'pink-orange',\n [s.PinkPurple]: gradient === 'pink-purple',\n [s.GreenBlue]: gradient === 'green-blue',\n\n [s.LayoutUneven]: layout === 'uneven',\n [s.LayoutRightOnly]: layout === 'right-only',\n\n [s.Hidden]: hidden,\n },\n modifiers.map((m) => s[m])\n );\n\n return (\n
\n
\n
\n {children}\n
\n );\n};\n\nGradientWrap.propTypes = {\n children: PropTypes.node,\n gradient: PropTypes.oneOf([\n 'pink-blue',\n 'pink-orange',\n 'pink-purple',\n 'green-blue',\n ]),\n layout: PropTypes.oneOf(['even', 'uneven', 'right-only']),\n};\n\nconst ImageFullwidthWrap = ({ image, children, className }) => {\n const [imageRef, imageVisible] = useIntersectionObserver(\n 0.1,\n '30% 0px 0px 0px'\n );\n\n const imageStyle = {\n objectFit: 'cover',\n zIndex: -1,\n };\n\n if (!!image && !!image.focal && !!image.focal.x && !!image.focal.y) {\n imageStyle.objectPosition = `${image.focal.x} ${image.focal.y}`;\n }\n\n const wrapCls = classNames(s.ImageFullwidthWrap, className, {\n [s.Visible]: imageVisible,\n });\n\n return (\n
\n {image && (\n
\n \n
\n )}\n {children}\n
\n );\n};\n\nconst ReduceMotionButton = () => {\n const { t } = useTranslation();\n\n const { whiteBackground } = useContext(BackgroundContext);\n const { animationsActive, toggleAnimationsActive } = useContext(\n AnimationsActiveContext\n );\n\n const wrapperCls = classNames(s.ReduceMotionButtonWrapper, {\n [s.BlackText]: whiteBackground,\n });\n\n const iconSrc = `/img/${\n animationsActive\n ? whiteBackground\n ? 'icon-pause-black'\n : 'icon-pause-white'\n : whiteBackground\n ? 'icon-play-black'\n : 'icon-play-white'\n }.svg`;\n\n return (\n
\n \n
\n );\n};\n\nconst InsightsPage = (props) => {\n const {\n hero = {},\n\n sectionOneIntro,\n sectionOneBigNumberStats,\n sectionOneBigNumberStatsAndVideo,\n\n sectionTwoIntro,\n sectionTwoPieChart,\n\n sectionThreeIntro,\n sectionThreeBarChart,\n\n sectionFourIntro,\n sectionFourGravityBalls,\n sectionFourContact,\n\n sectionFiveIntro,\n sectionFiveIntroImage,\n sectionFiveIntro2,\n sectionFiveBigNumberStats,\n\n sectionSixIntro,\n sectionSixBigNumberStats,\n\n sectionSevenIntro,\n sectionSevenBarChart,\n // sectionSevenOutroImage,\n\n sectionEightIntro,\n sectionEightBarChart,\n\n sectionNineIntro,\n sectionNineContact,\n\n siteSetting,\n } = props;\n\n const { whiteBackground } = useContext(BackgroundContext);\n const { animationsActive, setAnimationsActive } = useContext(\n AnimationsActiveContext\n );\n\n return (\n \n \n
\n {hero && }\n\n {/* section one */}\n \n \n\n {/* section two */}\n \n \n \n \n \n\n {/* section three */}\n \n \n \n \n\n {/* section four */}\n \n \n \n \n \n\n {/* section five */}\n \n \n \n \n\n