{"version":3,"file":"js/controllers-8c53691ba2deeaf5d2c4.js","mappings":"mGAAIA,EAAOC,E,UACX,SAASC,IAAiS,OAApRA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAUJ,EAASa,MAAMC,KAAMR,UAAY,CAclV,IAZiBS,GAAsB,gBAAoB,MAAOf,EAAS,CACzEgB,MAAO,6BACPC,MAAO,GACPC,OAAQ,GACRC,KAAM,QACLJ,GAAQjB,IAAUA,EAAqB,gBAAoB,OAAQ,CACpEqB,KAAM,UACNC,EAAG,8EACArB,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEoB,KAAM,UACNC,EAAG,4lB,wLCDE,MAAMC,EAAiC,SAASC,EAA4BC,EAAqB,CAAC,GACvGC,IAAUF,GACVG,IAAiBH,GACjBI,IAAcJ,GAEd,MAAMK,EAAUC,EAAkBN,EAAY,CAE5CE,UAAW,CACTK,aAAc,CACZC,MAAO,CACLC,gBAAiB,SAEnBC,YAAa,CACXC,OAAQ,CACNC,aAAc,GACdC,gBAAYC,KAIlBC,MAAO,KACPC,YAAa,KACbC,aAAc,IACdC,QAAS,CACPC,cAAe,CACbC,SAAS,GAGXC,aAAc,CAEZC,UAAW,CACT,cACA,eAEFC,MAAO,CACL1B,KAAM,cAEN2B,OAAQ,CACNC,MAAO,CACL5B,KAAM,eAER6B,OAAQ,CACN7B,KAAM,iBAIZ8B,SAAS,EACTC,KAAO,4uFA6BXC,oBAAqB,CAInBC,YAAa,CACXC,QAASC,EAAW,CAAEC,aAAc,QACpCL,KAAM,iCAIRM,YAAa,CACXH,QAASC,EAAW,CAAEC,aAAc,QACpCL,KAAM,6BAIZO,WAAY,CACVC,cAAe,CACbC,MAAO,OACPC,cAAe,UAEjBC,cAAe,CACbC,WAAYC,EAAAA,GAAgBC,KAAK,KACjCC,SAAU,OACVC,cAAe,IACfC,WAAY,OACZC,QAAS,SAEXC,UAAW,CACTD,QAAS,IACTrC,gBAAiB,mBACjBuC,OAAQ,6BACRC,MAAO,gBACPC,UAAW,oEAEbC,mBAAoB,CAClB1C,gBAAiB,mBACjBwC,MAAO,oBAKb,OAAOG,EAAAA,EAAAA,OAAU/C,EAASJ,EAC5B,EAEaK,EAAoB,SAASN,EAA4BC,EAAqB,CAAC,GAE1F,MAAMI,EAAmB,CAEvBgD,OAAQ,CAAC,WACT7C,MAAO,CAAEC,gBAAiB,QAC1B6C,KAAM,CAAEC,eAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,OAClDC,QAAS,CACP/C,gBAAiB,UACjBgD,YAAa,UACbC,UAAW,WAET,MAAO,0BADM1D,EAAW2D,WAAW,KAAM,IAAIC,KAAKpE,KAAKqE,GAAGC,WAChB,SAAQC,EAAgC,kBAAXvE,KAAKwE,EAAiBxE,KAAKwE,EAAI,GAAK,MAC7G,GAGFC,QAAS,CAAE7C,SAAS,IAGtB,OAAOgC,EAAAA,EAAAA,OAAU/C,EAASJ,EAC5B,EAGa8D,EAAiBG,IAC5B,MAAMC,EAAQ,CAAC,IAAK,IAAK,KACnBC,EAAW,CAAC,IAAK,IAAK,KAE5B,IAAK,IAAIrF,EAAI,EAAGA,EAAIqF,EAASnF,OAAQF,IACnC,GAAImF,GAAUE,EAASrF,GACrB,OAAQmF,EAASE,EAASrF,IAAIsF,QAAQ,GAAGC,QAAQ,OAAQ,IAAMH,EAAMpF,GAIzE,OAAOmF,EAAOK,UAAU,EAIpBC,EAAgBvC,IACpB,OAAQA,GACN,IAAK,MACH,MAAO,YACT,IAAK,MACH,MAAO,kBACT,QAME,MAJ8B,qBAAnBwC,OAAOC,SAEhBD,OAAOC,QAAQC,MAAO,0BAAyB1C,KAE1C,YACX,EAKID,EAAc3B,GAAsC,WACxDb,KAAKoF,YACH,CACEC,KAAML,EAAanE,EAAQ4B,cAC3B6C,SAAU,UAGd,MAAMC,EAAYC,SAASC,cAAc,4BAA4BC,aAAa,WAElFC,MAAM,oBAAqB,CACzBC,OAAQ,OACRC,QAAS,CACP,eAAgB,mBAChB,eAAqC,kBAAdN,EAAyBA,EAAY,IAE9DO,KAAMC,KAAKC,UAAU,CACnBC,cAAepF,EAAQ4B,iBAG1ByD,MAAKC,IACJ,IAAKA,EAASC,GACZ,MAAM,IAAIC,MAAM,qCAClB,IAEDC,OAAMnB,IACLoB,QAAQpB,MAAMA,EAAMqB,SAEU,qBAAnBvB,OAAOC,SAEhBD,OAAOC,QAAQC,MAAMA,EAAMqB,QAC7B,GAEJ,C,qCCnNA,MAAMC,EAAcC,EAAAA,GAAYC,QAGhCF,EAAYG,OAAQ,EACpB3B,OAAO4B,SAAWJ,ECVH,MAAMK,UAAyBC,EAAAA,GAC5CC,eAAiB,CAAC,UAClBA,cAAgB,CAAE5E,KAAM6E,QAKxBC,OAAAA,GACElH,KAAKmH,aAAaC,UAAW,EAC7BpH,KAAKmH,aAAaE,UAAYrH,KAAKsH,SACrC,CAEAC,MAAAA,GACEvH,KAAKmH,aAAaC,UAAW,CAC/B,ECZa,MAAMI,UAA2BT,EAAAA,GAC9CC,eAAiB,CAAC,WAAY,OAM9BS,OAAAA,GACMzH,KAAK0H,eAAeC,UACtB3H,KAAK4H,UAAUC,MAAMC,QAAU,IAEnC,CAEAC,cAAAA,GACM/H,KAAK0H,eAAeC,QACtB3H,KAAK4H,UAAUC,MAAMC,QAAU,IAE/B9H,KAAK4H,UAAUC,MAAMC,QAAU,GAEnC,E,ICvBE9I,E,2GACJ,SAASE,IAAiS,OAApRA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAUJ,EAASa,MAAMC,KAAMR,UAAY,CAUlV,MARqBS,GAAsB,gBAAoB,MAAOf,EAAS,CAC7EgB,MAAO,6BACPG,KAAM,OACN2H,QAAS,aACR/H,GAAQjB,IAAUA,EAAqB,gBAAoB,OAAQ,CACpEqB,KAAM,eACNC,EAAG,4N,mBCHU,SAAS2H,EAAKhI,GAC3B,MAAM,KAAEoF,EAAI,QAAE6C,EAAO,KAAEC,EAAI,SAAEf,EAAQ,SAAEgB,GAAanI,EAE9CoI,EAAa,8DAEbC,EAAS,CACbC,QAAU,GAAEF,iDACZG,UAAY,GAAEH,gDACdI,SAAW,GAAEJ,gDACbK,SAAW,GAAEL,iDACbjB,SAAW,GAAEiB,kDAKf,IAAIM,EAAe,UASnB,OAPEA,EADEvB,EACakB,EAAOlB,SACJ,aAAT/B,EACMiD,EAAOI,SAEPJ,EAAOjD,GAItBuD,IAAAA,cAAA,KACET,KAAMA,EACNU,UAAWF,EACXT,QAASA,EACTd,SAAUA,GAETgB,EAGP,CAEAH,EAAKa,UAAY,CACfzD,KAAM0D,IAAAA,OAAiBC,WACvBd,QAASa,IAAAA,KAAeC,WACxBb,KAAMY,IAAAA,OACN3B,SAAU2B,IAAAA,KACVX,SAAUW,IAAAA,M,kCC1BG,MAAME,UAAmCC,EAAAA,UACtDC,WAAAA,CAAYlJ,GACVmJ,MAAMnJ,GACND,KAAKqJ,MAAQ,CACXC,UAAW,CACTC,MAAO,GACPC,MAAO,CAAC,GAEVC,aAAc,KACdC,SAAS,EAEb,CAGAC,iBAAAA,GACE3J,KAAK4J,aAAe,IAAIC,EAAAA,EACtB7J,KAAKqJ,MAAMC,UAAUE,OACpBM,GAAc9J,KAAK+J,uBAAuB,QAASD,IAExD,CAGAC,uBAAyBA,CAACC,EAAQF,KAChC9J,KAAKiK,UAAUC,GACbC,IAAOD,EAAW,CAChBZ,UAAW,CACT,CAACU,GAAS,CACRI,OAAQA,CAACC,EAAiB,CAAC,IAAMP,EAAUN,MAAMY,OAAOC,QAI/D,EAIHC,eAAiBA,CAACN,EAAQO,KACxBvK,KAAKiK,UAAUC,GACbC,IAAOD,EAAW,CAChBZ,UAAW,CAAE,CAACU,GAAS,CAAEQ,QAAS,CAAC,CAACD,EAAO,SAE9C,EAIHE,kBAAqBC,IACnB,GAAkC,UAA9BA,EAAWC,gBAA8BD,EAAWE,UACtD,OAAO5K,KAAK4J,aAAaiB,aAAa,SAAUH,GAElD1K,KAAKiK,UAAUC,GACbC,IAAOD,EAAW,CAAEZ,UAAW,CAAEC,MAAO,CAAEuB,MAAO,CAACJ,QACnD,EAGHK,cAAAA,CAAeC,GACb,MAAMC,EAAW,CAACD,EAAOE,KAAMF,EAAOG,SACnCnB,QAAQoB,GAAqB,OAANA,IACvBlI,KAAK,MAER,OAAO0F,IAAAA,cAAA,OAAKC,UAAU,yBACnBoC,EAEL,CAGAI,uBAA0BX,IACxB,GAA0B,kBAAfA,EAAyB,OAAO,EAC3C,MAAM,MAAEnB,GAAUvJ,KAAKqJ,MAAMC,UAM7B,OAJ4B,IACvBC,EAAM+B,KAFgBC,GAAc,YAAWA,EAASC,UAGxDxL,KAAK4J,aAAa6B,mBAEKC,SAAShB,EAAWiB,aAAa,EAI/DC,iBAAmBA,CAACZ,EAAQa,EAAoB,KAE5CjD,IAAAA,cAAA,OAAKC,UAAY,+CAA8CgD,KAClC,UAA1Bb,EAAOL,gBACN/B,IAAAA,cAACkD,EAAAA,EAAiB,CAAC3L,MAAO,GAAIC,OAAQ,GAAIyI,UAAU,wDAEtDD,IAAAA,cAAA,OAAKC,UAAU,yBACbD,IAAAA,cAAA,OAAKC,UAAU,aAAamC,EAAOe,MACR,aAA1Bf,EAAOL,gBAAiC3K,KAAK+K,eAAeC,KAMrEgB,aAAeA,KACb,MAAM,UAAE1C,GAActJ,KAAKqJ,MAC3BrJ,KAAKiK,SAAS,CAAEP,SAAS,IAEzB,MAAMuC,EAAmB3C,EAAUC,MAAM+B,KAAKC,GAAaA,EAASC,KAC9DU,EAAmB/M,OAAOgN,OAAO7C,EAAUE,OAAO4C,SAAQ5C,GAC9DA,EAAMF,UAAUgC,KAAIC,GAAYA,EAASC,OAErCa,EAAc,IAAIJ,KAAqBC,GAE7ClM,KAAKsM,QAAUC,IAAAA,KAAO,CACpBlH,KAAM,OACNmH,IAAK,iCACLC,KAAM,CACJC,mBAAoBC,EAAAA,EAAMpH,aAAe,GACzCqH,aAAcP,EACdQ,OAAQ,oBAEVC,QAASA,KACP7H,OAAOgG,SAAS8B,QAAQ,EAE1B5H,MAAOA,KACLnF,KAAKiK,SAAS,CACZP,SAAS,EACTD,aAAc,mDACd,GAEJ,EAGJuD,OAASA,KACP,MAAM,UAAE1D,EAAS,QAAEI,EAAO,aAAED,GAAiBzJ,KAAKqJ,MAC5C4D,EAAoBjN,KAAK4J,cAAciB,aAAaxL,KAAKW,KAAK4J,cAC9DsD,EAASlN,KAAK4J,cAAcuD,aAAe,GAC3CC,EAAuB9D,EAAUC,MAAM9J,OAAS,GAAKN,OAAOkO,KAAK/D,EAAUE,OAAO/J,OAAS,EAG3F6N,EAAU9H,SAAS+H,SAAS7B,SAASzG,OAAOgG,SAAS4B,QAAUrH,SAAS+H,SAAW,aAIzF,OAFI9D,GAAc+D,MAAM/D,GAGtBb,IAAAA,cAAA,OAAKC,UAAU,aACbD,IAAAA,cAAA,MAAIC,UAAU,WAAU,oDACxBD,IAAAA,cAAC6E,EAAAA,EAAkB,CACjBC,YAAY,qCACZ3B,KAAK,0BACL4B,SAAU3N,KAAKyK,kBACf+B,IAAI,4BACJoB,gBAAkB5C,GAAWA,EAAOe,MAAQf,EAC5C6C,WAAW,OACXjC,iBAAmBlB,GAAe1K,KAAK4L,iBAAiBlB,EAAY,4CACpEW,uBAAwBrL,KAAKqL,yBAE9B+B,GACCxE,IAAAA,cAAA,OAAKC,UAAU,oDACbD,IAAAA,cAAA,OAAKC,UAAU,iBAAgB,iBAC9BS,EAAUC,MAAM+B,KAAI,CAACC,EAAUhM,IAC9BqJ,IAAAA,cAAA,OAAKjJ,IAAM,YAAWJ,IAAKsJ,UAAU,aACnCD,IAAAA,cAACkF,EAAAA,EAAgB,CACfnO,IAAK4L,EAASC,GACduC,WAAYA,IAAM/N,KAAKsK,eAAe,QAAS/K,GAC/CyO,MAAOzC,EAASQ,KAChBkC,aAAa,kBAEdjO,KAAK+K,eAAeQ,MAGxB2B,EAAO5B,KAAK9B,GACXZ,IAAAA,cAACsF,EAAAA,EAAa,CACZvO,IAAM,kBAAiB6J,EAAMgC,KAC7BhC,MAAOA,EACP2E,aAAe5C,GACb3C,IAAAA,cAAA,OAAKC,UAAU,iBACZ0C,EAASQ,KACT/L,KAAK+K,eAAeQ,IAGzBV,aAAcoC,EACde,MAAOhO,KAAK4L,iBAAiBpC,GAC7B4E,iBAAiB,OAKzBxF,IAAAA,cAAA,OAAK6D,KAAK,WAAW5D,UAAU,iCAC7BD,IAAAA,cAACyF,EAAAA,EAAM,CACLhJ,KAAK,UACL+B,UAAWgG,GAAwB1D,EACnCxB,QAAUoG,GAAMtO,KAAKgM,aAAasC,IACnC,WAGD1F,IAAAA,cAACX,EAAI,CACHE,KAAMmF,EACNjI,KAAK,YAELuD,IAAAA,cAAC2F,EAAQ,CAACC,MAAM,YAAW,SAI3B,EC7MG,MAAMC,UAAmC1H,EAAAA,GACtDC,eAAiB,CAAC,WAIlBS,OAAAA,GACEiH,EAAAA,OACE9F,EAAAA,cAAoBK,GACpBjJ,KAAK2O,cAET,E,2CCZa,SAASC,EAAiBpC,EAAKC,GAC5CF,IAAAA,KAAO,CACLC,MACAC,OACAoC,SAAU,OACVC,WAAYC,EACZjC,QAAS,SAASkC,GAChBzC,IAAE,kBAAkByC,KAAKA,EAC3B,EACA7J,MAAO,WACLoB,QAAQpB,MAAM,6BACVF,OAAOC,SACTD,OAAOC,QAAQC,MAAM,4BAEzB,EACA8J,SAAU,WACR1C,IAAE,kBAAkB2C,IAAI,CAAEpH,QAAS,IACnCiH,GACF,GAEJ,CAGA,SAASA,IACP,MAAMI,EAAiB3J,SAAS4J,eAAe,oBAC3CD,IACFA,EAAeE,UAAUC,OAAO,UAChCH,EAAeE,UAAUC,OAAO,YAEpC,C,aCEe,SAASC,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,MAMMC,EAAwBC,IAC5B,MAAMC,GAAMC,EAAAA,EAAAA,KAAUF,GAChBG,EARWC,KACjB,MAAMC,EAAQC,KAAKC,MAAMD,KAAKE,IAAIJ,GAAKE,KAAKG,KAAO,MACnD,OAAOH,KAAKI,IAAI,GAAIL,EAAM,EAMdM,CAAUV,GAAO,GAE7B,OAAOK,KAAKM,KAAKX,EAAME,GAAOA,CAAG,EAG7BU,EAAad,GAAqBe,EAAAA,EAAAA,KAAUtB,EAAQ/C,MAAM,SAASpI,GAAK,OAAO0M,WAAW1M,EAAI,KAC9F2M,EAAajB,EAAqBN,EAAQhD,MAuNhD,SAASwE,IAEPrC,EAAiBkB,EAAU,CACzBoB,OAAQxB,EAAWyB,SAASnR,KAAKqE,EAAG,KACpC+M,YAAazB,EACbC,OACAC,WACAwB,wBAAwB,IAO1B,MAAMC,EAActR,KAAKgQ,OAAOzF,MAChC,OAAOgH,WAAWC,EAA0BnS,KAAKW,KAAMsR,GAAc,EACvE,CAGA,SAASG,IACOzR,KAAKgQ,OAAO0B,OAAOP,SAASnR,KAAKqE,EAAG,KACxCqE,UACRiJ,GAEJ,CAIA,SAASA,IACP,MAAMC,EAAoBlC,EAAWmC,GAAG,GAClCC,EAAkBpC,EAAWmC,IAAI,GACvCjD,EAAiBkB,EAAU,CACzBoB,OAAQU,EACRG,WAAYD,EACZlC,OACAC,YAEJ,CAKA,SAAS2B,EAA0BF,GAEjC,MAAMtB,EAAShQ,KAAKgQ,OAAOhP,MAAMgP,OAEjC,IAAK,IAAIzQ,EAAI,EAAGA,EAAIyQ,EAAOvQ,OAAQF,IAEjC,GAAIyQ,EAAOzQ,GAAGgL,QAAU+G,EAAa,CACnC,MAAMU,EAAQhC,EAAOzQ,GAAGmS,OAAO1R,KAAKuK,OAGpCyH,EAAMtJ,UAAW,EACjBsJ,EAAM/H,SAAS,SACjB,CAEJ,CAeA,SAASgI,IACP,MAAMC,EAAO,IAAI9N,KAAKpE,KAAKmS,OAG3B,GAAmB,SAAfxC,EAAyB,OAAOuC,EAAKE,cAEzC,IAAIpE,EAEJ,OAAQ2B,GACN,IAAK,MACH3B,GAAQ7J,EAAAA,EAAAA,YAAW,QAAS+N,GAC5B,MAEF,IAAK,OACHlE,EAAS,IAAGqE,EAAWH,KACvB,MAEF,IAAK,UACHlE,EAAS,IAAGsE,EAAQJ,KACpB,MAEF,IAAK,OACHlE,EAAQkE,EAAKE,cACb,MAEF,QACEpE,GAAQ7J,EAAAA,EAAAA,YAAW,KAAM+N,GAK7B,MAAMK,EAAQL,EAAKM,WACbC,EAAaP,EAAKQ,UAClBC,EAA4B,IAAVJ,IAA+B,QAAf5C,GAAuC,IAAf8C,GAShE,OANEzS,KAAK4S,SACLD,KAEA3E,EAAS,GAAEA,MAmCf,SAAmBkE,GACjB,OAAOA,EAAKE,cAAcrN,WAAW8N,MAAM,SAC7C,CArCyBC,CAAUZ,MAG1BlE,CACT,CAoBA,SAASqE,EAAWH,GAClB,MAAMa,EAAS,IAAI3O,KAAK8N,EAAKE,cAAe,EAAG,GAC/C,OAAO9B,KAAKM,OAAQsB,EAAOa,GAAU,MAAYA,EAAOC,SAAW,GAAK,EAC1E,CAEA,SAASV,EAAQJ,GAEf,OAAuB,KADTA,EAAKM,WACD,EACpB,CA/Vc,IAAIS,EAAAA,MAChB,sBACAnS,EAAAA,EAAAA,IACEN,IACA,CACEI,cAAe,CACbgB,SAAS,GAEXZ,MAAO,CAELZ,OAAQ,IACR8S,UAdW,IAiBbC,MAAO,CAAE/Q,KAAM,IACfgR,MAAO,CACL/N,KAAM,WACNgO,WAAY,EACZC,WAAW,EACX5D,WAqTR,SAAyBjD,GACvB,IAAKA,EAAQ,MAAO,GACpB,OAAOA,EAAKnB,KAAI,SAAS4G,GACvB,OAAO9N,KAAKmP,MAAMrB,EACpB,GACF,CA1ToBsB,CAAgB9D,GAC5B+D,OAAQ,CACN5L,MAAO,CACL1E,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCgB,UAAW,WACT,OAAO+N,EAAenS,KAAKE,KAC7B,IAGJ0T,MAAO,CAAC,CAENP,MAAO,CAAE/Q,KAAM,MACfuR,WAAY,EACZC,cAAe,CAAC,EAAG/C,EAAa,EAAGA,GACnCgD,IAAK,EACLJ,OAAQ,CACN5L,MAAO,CACL1E,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCgB,UAAW,WACT,MAAO,QAAMK,EAAAA,EAAAA,IAAcvE,KAAKmS,MAClC,IAED,CAEDgB,MAAO,CAAE/Q,KAAM,MACfwR,cAAe,CAAC,EAAG5C,EAAa,EAAGA,GACnC8C,UAAU,EACVC,cAAe,EACfN,OAAQ,CACN5L,MAAO,CACL1E,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCgB,UAAW,WACT,OAAOK,EAAAA,EAAAA,IAAcvE,KAAKmS,MAC5B,KAGJjR,YAAa,CACX8O,OAAQ,CACNgE,aAAc,EACdC,kBAAkB,EAClBC,OAAQ,UACRC,OAAQ,CACNvS,SAAS,EACTI,OAAQ,CACNC,MAAO,CACLmS,UAAW,EACXC,OAAQ,GAEVnS,OAAQ,CACNN,SAAS,KAIfoQ,MAAO,CACLsC,OAAQ,CACNpS,OAAQ,WACN+O,EAAcnR,KAAKE,KACrB,EACAuU,SAAU,WACR9C,EAAgB3R,KAAKE,KACvB,MAKRgQ,OAAQ,CAAC,CACPjE,KAAMyD,EAAQ2D,MACd1G,KAiPR,SAA8BA,GAC5B,IAAKA,EAAQ,MAAO,GACpB,OAAOA,EAAKnB,KAAI,SAASkJ,GACvB,OAAOrD,SAASqD,EAAK,GACvB,GACF,CAtPcC,CAAqBjF,EAAQ/C,MACnCpH,KAAM,OACN5B,MAAO,UACPiR,OAAQ,GACP,CACD3I,KAAM0D,EAAQ0D,MACd1G,KAAMgD,EAAQhD,KACdpH,KAAM,SAEN5B,MAAO,UACPkR,YAAa,EACbjB,MAAO,EACPkB,aAAc,EACdxT,aAAc,GACdY,OAAQ,CAENE,OAAQ,CAAEuB,MAAO,WACjBxB,MAAO,CACLwB,MAAO,cAIboR,OAAQ,CACNC,UAAW,CACTC,WAAY,SACZ5R,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCL,MAAO,SAETmB,QAAS,CACP/C,gBAAiB,UACjBgD,YAAa,UACb+P,aAAc,EACdW,YAAa,EACbK,SAAS,EACTC,gBAAgB,EAChB3R,QAAS,EACT4R,OAAQ,CACNzR,MAAO,UACPqE,QAAS,IACTqN,QAAS,EACTC,QAAS,EACTjV,MAAO,GAET+D,UAAW,WACT,MAAMgO,EAAO,IAAI9N,KAAKpE,KAAKqE,GACrBgR,EAAW,GAGjB,OAAQ1F,GACN,IAAK,MAEH0F,EAASC,MAAKnR,EAAAA,EAAAA,YAAW,WAAY+N,IACrC,MAEF,IAAK,OACHmD,EAASC,KAAM,IAAGjD,EAAWH,MAASA,EAAKE,iBAC3C,MAEF,IAAK,QAEHiD,EAASC,MAAKnR,EAAAA,EAAAA,YAAW,QAAS+N,IAClC,MAEF,IAAK,UACHmD,EAASC,KAAM,IAAGhD,EAAQJ,MAASA,EAAKE,iBACxC,MAEF,IAAK,OACHiD,EAASC,KAAKpD,EAAKE,eAevB,OATApS,KAAK0R,OAAO6D,SAAQ,SAASvD,GACvBA,EAAMhC,OAAOjE,KAAKL,SAAS,SAC7B2J,EAASC,KAAK,eAAa/Q,EAAAA,EAAAA,IAAcyN,EAAMxN,IAE/C6Q,EAASC,KAAK,YAAa/Q,EAAAA,EAAAA,IAAcyN,EAAMxN,GAEnD,IAGQ,kGAEF6Q,EAAS/J,KAAKkK,GAAgB,OAAMA,WAAmBtS,KAAK,wCAGpE,EACAuS,WAAY,SAASC,EAAYC,EAAa3D,GAE5C,MAAMxN,EAAIxE,KAAKgB,MAAM4U,QAAUD,EAAc,EAG7C,MAAO,CAAEtR,EADC2N,EAAM6D,MAAQ7V,KAAKgB,MAAM8U,SAAWJ,EAAa,EAC/ClR,IACd,EACAuR,QAAQ,EAER5T,SAAS,MAQP6N,OAAO,GAAG0B,OAAOjS,OAAS,GAClCkS,GAwJJ,CClae,MAAMqE,UAAgDjP,EAAAA,GACnEC,cAAgB,CACdwI,QAASrQ,OACTsQ,QAAStQ,OACTuQ,WAAYuG,MACZtG,WAAY1I,OACZ2I,KAAM3I,OACN4I,SAAU5I,OACVuF,IAAKvF,QAWPQ,OAAAA,GAEE8H,EACEvP,KAAKkW,aACLlW,KAAKmW,aACLnW,KAAKoW,gBACLpW,KAAKqW,gBACLrW,KAAKsW,UACLtW,KAAKuW,cACLvW,KAAKwW,UAIPhR,SAASiR,iBAAiB,oBAAoB,WAC5C,MAAMC,EAAYlR,SAAS4J,eAAe,iBACxB,OAAdsH,GACJA,EAAUD,iBAAiB,SAAS,SAAUnI,GAC5C,GAAiB,OAAbA,EAAEhP,OAAiB,OACvB,MAAMA,EAASgP,EAAEhP,QACbA,EAAOqX,QAAQ,qBAAuBrX,EAAOqX,QAAQ,WACvDrI,EAAEsI,iBACFhI,EAAiBtP,EAAO6I,MAE5B,GACF,GACF,EC3Ca,MAAM0O,UAA4B9P,EAAAA,GAC/C+P,eAAiB,IACjB9P,eAAiB,CAAC,UAElBA,eAAiB,CAAE,iBAKnB,qBAAM+P,GACJ,MAAMC,EAAOhX,KAAKiX,QAElBjX,KAAKmH,aAAaC,UAAW,EAC7B,IACE,MAAMjB,QAAiBR,MAAMqR,EAAKE,OAAQ,CACxCtR,OAAQoR,EAAKpR,OACbC,QAAS,CACP,eAAgB,oCAChB,mBAAoB,iBACpB,eAAgB8G,EAAAA,EAAMpH,aAOxBO,KAAM,IAAIqR,gBAAgB,IAAIC,SAASJ,MAEnCK,QAAuBlR,EAASmR,OAEtCtX,KAAKuX,oBAAoBC,UAAUH,EACrC,CAAE,MAAOlS,GAGPoB,QAAQiK,IAAIrL,EACd,CAEKnF,KAAKuX,oBAAoBE,OAE9BlG,YAAW,KAAQvR,KAAKmH,aAAaC,UAAW,CAAK,GAAKpH,KAAK8W,eACjE,E,wBC/Ba,MAAMY,UAA2B3Q,EAAAA,GAI9C4Q,WAAa,GAIbC,YAAc,IAEdC,iBAGI,CACFC,UAAW,eACXC,WAAY,EAACC,EAAAA,EAAAA,IAAO,IAAIC,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,IAAM,CAAE5U,QAAS,MAOnD0D,eAAiB,CAAE,SAAU,YAI7BA,eAAiB,CAAE,SAGnBA,cAAiB,CAAEmR,SAAUlR,OAAQmR,SAAUnR,QAM/C,YAAMkD,GACJ,MAAMtJ,EAAUb,KAAK6X,iBACrBhX,EAAQiX,UAAY9X,KAAKqY,cACzB,MAAMC,EAAStY,KAAKmH,aACdoR,EAAWvY,KAAKwY,eAEtB,IACE,MAAM,EAAEnU,EAAC,EAAEG,SAAYiU,EAAAA,EAAAA,IAAgBH,EAAQC,EAAU1X,GACzD1B,OAAOC,OAAOmZ,EAAS1Q,MAAO,CAC5B6Q,KAAO,GAAErU,MACTsU,IAAM,GAAEnU,OAEZ,CAAE,MAAOW,GACPoB,QAAQpB,MAAM,4BAA6B,CAAEyT,MAAOzT,GACtD,CACF,CAIAsS,IAAAA,GACEoB,aAAa7Y,KAAK8Y,OAClBvH,YACE,KAEEvR,KAAKmH,aAAakI,UAAU0J,OAAO/Y,KAAKgZ,cAExChZ,KAAKwY,eAAe3Q,MAAMoR,QAAU,QAE/BjZ,KAAKmK,QAAQ,GAEpBnK,KAAK2X,YAGP3X,KAAKkZ,SAAS,OAAQ,CACpB5Z,OAAQ2F,OACRkU,OAAQ,CAAEC,0BAA2BpZ,KAAMoY,SAAUpY,KAAKqZ,gBAE9D,CAKAC,WAAAA,CAAYhL,GACV,MAAMiL,EAAiBjL,EAAE6K,OAAOf,WAAapY,KAAKqZ,cAC5CG,EAAoBlL,EAAE6K,OAAOC,4BAA8BpZ,KAC7DuZ,GAAkBC,GACpBxZ,KAAKyZ,kBAET,CAKAC,KAAAA,GACE1Z,KAAK8Y,MAAQvH,WACXvR,KAAKyZ,iBAAiBpa,KAAKW,MAC3BA,KAAK4X,YAET,CAIA6B,gBAAAA,GAEEzZ,KAAKmH,aAAakI,UAAUsK,UAAU3Z,KAAKgZ,cAE3ChZ,KAAKwY,eAAe3Q,MAAMoR,QAAU,MACtC,E,aCjHa,MAAMW,UAAkC7S,EAAAA,GACrDC,eAAiB,CAAC,UAClBA,cAAgB,CAAE1B,SAAU2B,QAK5BQ,OAAAA,GACEzH,KAAKmH,aAAasP,iBAAiB,QAASzW,KAAK6Z,cAAcxa,KAAKW,MACtE,CAEA6Z,aAAAA,GACE7Z,KAAKmH,aAAaC,UAAW,EAC7BmK,YAAW,KACTvR,KAAK8Z,gBACF5T,MAAK,KACJK,QAAQiK,IAAK,eAAcxQ,KAAK+Z,mCAEhC,MAAMxU,EAAYC,SAASC,cAAc,4BAA4BC,aAAa,WAElFC,MAAM,oBAAqB,CACzBC,OAAQ,OACRC,QAAS,CACP,eAAgB,mBAChB,eAAqC,kBAAdN,EAAyBA,EAAY,IAE9DO,KAAMC,KAAKC,UAAU,CACnBC,cAAe,UAGlBC,MAAKC,IACJ,IAAKA,EAASC,GACZ,MAAM,IAAIC,MAAM,qCAClB,IAEDC,OAAMnB,IACLoB,QAAQpB,MAAMA,EAAMqB,SAEU,qBAAnBvB,OAAOC,SAEhBD,OAAOC,QAAQC,MAAMA,EAAMqB,QAC7B,GACA,IAEHF,OAAMnB,IACLoB,QAAQpB,MAAM,0BAA2BA,GAEX,qBAAnBF,OAAOC,SAEhBD,OAAOC,QAAQC,MAAMA,EACvB,IAED6U,SAAQ,KACPzI,YAAW,KACTvR,KAAKmH,aAAaC,UAAW,CAAK,GACjC,IAAI,GACP,GACH,EACL,CAEA6S,gBAAAA,CAAiBhD,GACf,MAAMiD,EAAYjD,EAAQkD,WAAU,GAGpC,OAFAD,EAAUrS,MAAM1H,MAAS,GAAE8W,EAAQmD,gBACnC5U,SAASM,KAAKuU,YAAYH,GACnBA,CACT,CAEA,mBAAMJ,GACJ,IAAI7C,EAA8BzR,SAAS4J,eAAe,mCAC1D,GAAgB,OAAZ6H,EACF,MAAM,IAAI5Q,MAAM,qDAElB4Q,EAAUjX,KAAKia,iBAAiBhD,GAChCjX,KAAKsa,YAAYrD,GACjB,UACQjX,KAAKua,0BAA0BtD,GAASuD,UAE5C,MAAMC,QAAgBC,EAAAA,EAAAA,IAAMzD,EAAS,CACnC0D,WAAW,EACX1Z,gBAAiB,QACjBd,MAAO8W,EAAQmD,YAAeQ,GAC9Bxa,OAAQ6W,EAAQ4D,aAAgBD,GAChC/S,MAAO,CACLiT,OAAS,OACT5H,UAAY,OACZ/S,MAAQ,GAAE8W,EAAQmD,gBAClBha,OAAS,GAAE6W,EAAQ4D,oBAGjBE,EAAOvV,SAASwV,cAAc,KACpCD,EAAK5S,KAAOsS,EACZM,EAAKE,SAAyC,kBAAvBjb,KAAK+Z,cAA6B/Z,KAAK+Z,cAAgB,WAC9EgB,EAAKG,OAAO,GAEhB,CAAC,QACCjE,EAAQ0C,QACV,CACF,CAEA,+BAAMY,CAA0BtD,EAASkE,GACvC,MAAMC,EAAkBnE,EAAQoE,iBAAiB,aACjDD,EAAgB7F,SAAQ0B,IACrBA,EAAwBpP,MAAMoR,QAAU,MAAM,UAG3CkC,IAAWnB,SAAQ,KACvBoB,EAAgB7F,SAAQ0B,IACrBA,EAAwBpP,MAAMyT,eAAe,UAAU,GACxD,GAEN,CAEAhB,WAAAA,CAAYrD,GACV,MAAMsE,EAAa/V,SAAS4J,eAAe,cAAc+K,WAAU,GACnE,GAAmB,OAAfoB,EAOF,OANAhV,QAAQpB,MAAM,4BAEgB,qBAAnBF,OAAOC,SAEhBD,OAAOC,QAAQC,MAAM,2CAIzBoW,EAAW1T,MAAMsQ,SAAW,WAC5BoD,EAAW1T,MAAM8Q,IAAO,QACxB4C,EAAW1T,MAAM2T,MAAS,IAC1BD,EAAW1T,MAAMzH,OAAU,OAE3B6W,EAAQpP,MAAMsQ,SAAW,WACzBlB,EAAQoD,YAAYkB,EACtB,EClIa,MAAME,UAAqC1U,EAAAA,GACxDC,eAAiB,CAAC,cAAe,WAAY,SAAU,OAMvD9E,MAAAA,GACsBlC,KAAK0b,gBAAgBC,MAAKC,GAAKA,EAAEjU,UAGnD3H,KAAK6b,cAActG,SAAQ+C,IACzBA,EAAOlR,UAAW,EAClBpH,KAAK8b,SAAS,eAAe,IAG/B9b,KAAK6b,cAActG,SAAQ+C,IACzBA,EAAOlR,UAAW,EAClBpH,KAAK8b,SAAS,gBAAgB,GAGpC,CAEAC,SAAAA,GACM/b,KAAKgc,kBAAkBrU,QACzB3H,KAAK6b,cAActG,SAAQ+C,IACzBA,EAAOlR,UAAW,EAClBpH,KAAK8b,SAAS,eAAe,IAG/B9b,KAAK6b,cAActG,SAAQ+C,IACzBA,EAAOlR,UAAW,EAClBpH,KAAK8b,SAAS,gBAAgB,GAGpC,CAEAA,QAAAA,CAASjT,GACP7I,KAAKic,WAAW1G,SAAQ2G,IACtB,MAAMC,EAAeD,EAAI7M,UAAU8C,MACnC+J,EAAI7M,UAAUsK,OAAOwC,GACrBD,EAAI7M,UAAU0J,IAAIlQ,EAAU,GAEhC,EC5Ca,MAAMuT,UAAuBrV,EAAAA,GAC1CC,cAAgB,CAAEkQ,OAAQjQ,OAAQrB,OAAQqB,QAU1CoV,UAAAA,GACErc,KAAKiX,QAAQqF,QACf,CASAC,0BAAAA,GAOE,GALIvc,KAAKwc,gBACPxc,KAAKiX,QAAQwF,aAAa,SAAUzc,KAAK0c,aAIvC1c,KAAK2c,eACP,IAAK,MAAMC,KAAS5c,KAAKiX,QAAQ7O,SACI,YAA/BwU,EAAMlX,aAAa,SACrBkX,EAAMH,aAAa,QAASzc,KAAK6c,aAMvC7c,KAAKqc,YACP,ECvCa,MAAMS,UAA8B/V,EAAAA,GACjDgW,IAAAA,GACE/c,KAAKiX,QAAQ5H,UAAU0J,IAAI,SAC7B,E,aCyBF,MAxBA,WACE,MAAMiE,EAAkBxX,SAAS4J,eAAe,iBAC1C6N,EAAUD,EAAgBE,QAAQD,QAClCE,EAAYH,EAAgBE,QAAQC,UACpCtQ,EAASmQ,EAAgBE,QAAQrQ,OACjCuQ,EAAYrX,KAAKwN,MAAMyJ,EAAgBE,QAAQE,WAC/CC,EAAkD,SAAtCL,EAAgBE,QAAQG,UACpCC,EAAcvX,KAAKwN,MAAMyJ,EAAgBE,QAAQI,aAGvD5O,EAAAA,OACE9F,IAAAA,cAAC2U,EAAAA,EAA6B,CAC5BC,QAJAA,UAKAJ,UAAWA,EACXD,UAAWA,EACXF,QAASA,EACTI,UAAWA,EACXxQ,OAAQA,EACRyQ,YAAaA,IAEfN,EAEJ,ECzBe,MAAMS,UAAoC1W,EAAAA,GACvDU,OAAAA,GACEuF,GACF,E,cCDa,MAAM0Q,UAA4C3W,EAAAA,GAC/DC,cAAgB,CACdwF,IAAKvF,OACL0W,mBAAoB1W,OACpB2W,cAAe3W,OACfoJ,MAAOpJ,OACPpG,QAASoG,OACTkM,MAAOlM,OACP4W,eAAgB5W,OAChB6W,mBAAoB7W,QAatBQ,OAAAA,GACE,MAAMxH,EAAQ,CACZuM,IAAKxM,KAAKwW,SACVmH,mBAAoB3d,KAAK+d,wBACzBH,cAAe5d,KAAKge,mBACpB3N,MAAOrQ,KAAKie,WACZpd,QAASb,KAAKke,aACd/K,MAAOnT,KAAKme,WACZN,eAAgB9X,KAAKwN,MAAMvT,KAAKoe,qBAChCN,mBAAoBO,OAAOre,KAAKse,0BAGlC5P,EAAAA,OACE9F,EAAAA,cAAoB2V,EAAAA,EAAiCte,GACrDD,KAAKiX,QAET,ECzCa,MAAMuH,UAAiCzX,EAAAA,GACpDC,cAAgB,CAAEyX,MAAOC,SAQzBC,eAAAA,GACM3e,KAAK4e,YACT5e,KAAK6e,QACP,CAGAA,MAAAA,GACE,MAAM1P,EAAiB3J,SAAS4J,eAAe,sBACzB,MAAlBD,IACFA,EAAeE,UAAUsK,OAAO,UAChCxK,EAAeE,UAAU0J,IAAI,YAEjC,ECrBa,MAAM+F,UAAwB/X,EAAAA,GAC3CgW,IAAAA,GACE/c,KAAKiX,QAAQ5H,UAAU0J,IAAI,SAC7B,ECHa,MAAMgG,WAA8BhY,EAAAA,GACjDC,eAAiB,CAAC,SAGlBlH,IAAAA,GACE,MAAMkf,EAAehf,KAAKiX,QAAQiG,QAAQ+B,QACpCC,EAAelf,KAAKmf,aAAaC,MAAMC,GACpCA,EAAOpI,QAAQiG,QAAQ+B,UAAYD,IAG5C,GAAoB,MAAhBE,EACF,MAAM,IAAI7Y,MAAO,wCAAuC2Y,KAG1DE,EAAajI,QAAQ5H,UAAUsK,OAAO,SACxC,E,eCXa,MAAM2F,WAAgCvY,EAAAA,GAEnD8Q,iBAGI,CACFC,UAAW,aACXC,WAAY,EAACC,EAAAA,EAAAA,IAAO,IAAIC,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,IAAM,CAAE5U,QAAS,MAGnD0D,eAAiB,CAAE,SAAU,OAAQ,UAAW,aAMhDuY,iBAAmB,IACnBC,YAAwB,CAAC,gBAAiB,iBAC1CC,WAAY,EAGZzY,cAAiB,CAAE0Y,OAAQ,CAAEra,KAAMqZ,QAASiB,SAAS,GAASnT,IAAKvF,QAOnE2Y,UAAAA,GACE5f,KAAK6f,WACP,CAGAC,kBAAAA,GACE9f,KAAK6f,SAAUE,EAAAA,EAAAA,IACb/f,KAAKmH,aACLnH,KAAKggB,WAILhgB,KAAKmK,OAAO9K,KAAKW,MAErB,CAIA,YAAMmK,GACJ,MAAMtJ,EAAUb,KAAK6X,iBACfS,EAAStY,KAAKmH,aACd8Y,EAAOjgB,KAAKggB,YACZ,EAAC3b,EAAC,EAAEG,SAAWiU,EAAAA,EAAAA,IAAgBH,EAAQ2H,EAAMpf,GACnD1B,OAAOC,OAAO6gB,EAAKpY,MAAO,CAAE6Q,KAAO,GAAErU,MAAOsU,IAAM,GAAEnU,OACtD,CAGA8K,MAAAA,GACMtP,KAAKkgB,YACPlgB,KAAK0Z,QAEA1Z,KAAKyX,MAEd,CAGA,UAAMA,GAEJzX,KAAKmH,aAAakI,UAAU0J,OAAO/Y,KAAKwf,aAExCxf,KAAKggB,WAAW3Q,UAAUsK,OAAO,UAEjCpI,YAAW,KAAQvR,KAAKggB,WAAW3Q,UAAUsK,OAAO,YAAY,GAAK,GAErE3Z,KAAK8f,qBAEL9f,KAAKkgB,aAAc,EAEnBrH,aAAa7Y,KAAK8Y,OAClB9Y,KAAKyf,WAAY,EACZzf,KAAKmgB,MACZ,CAGAzG,KAAAA,GAEE1Z,KAAKmH,aAAakI,UAAUsK,UAAU3Z,KAAKwf,aAE3Cxf,KAAKggB,WAAW3Q,UAAU0J,IAAI,SAAU,aAExC/Y,KAAKkgB,aAAc,EAEnBlgB,KAAKyf,WAAY,CACnB,CAGA,UAAMU,GACJ,IAEE,MAAMha,QAAiBR,MAAM3F,KAAKwW,SAAU,CAC1C3Q,QAAS,CACP,eAAgB,mBAChB,mBAAoB,oBAIlBwR,QAAuBlR,EAASmR,OAGtCtX,KAAKwX,UAAUH,GAGXrX,KAAKyf,YACPzf,KAAK8Y,MAAQvH,YAAW,KAAavR,KAAKmgB,MAAM,GAAKngB,KAAKuf,kBAE9D,CAAE,MACA,MAAMpa,EAAQ,oCACdib,EAAAA,GAAAA,GAASpgB,KAAK2O,cAAexJ,EAC/B,CACF,CAIAqS,SAAAA,CAAUrR,GACR,MAAMka,EAAUla,EAASka,SACzBD,EAAAA,GAAAA,GAASpgB,KAAK2O,cAAe0R,GAE7B,MAAMC,EAAYna,EAASma,WAC3BF,EAAAA,GAAAA,GAASpgB,KAAKugB,gBAAiBD,EACjC,EChIa,MAAME,WAA0BzZ,EAAAA,GAC7C8Q,iBAGI,CACAC,UAAW,eACXC,WAAY,EAACC,EAAAA,EAAAA,IAAO,IAAIC,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,IAAM,CAAE5U,QAAS,MAOrD0D,eAAiB,CAAC,SAAU,WAI5BA,eAAiB,CAAC,SAGlBA,cAAgB,CAAEmR,SAAUlR,OAAQmR,SAAUnR,QAM9C,YAAMkD,GACJ,MAAMtJ,EAAUb,KAAK6X,iBACrBhX,EAAQiX,UAAY9X,KAAKqY,cACzB,MAAMC,EAAStY,KAAKmH,aACdsZ,EAAUzgB,KAAK0gB,eACf,EAACrc,EAAC,EAAEG,SAAWiU,EAAAA,EAAAA,IAAgBH,EAAQmI,EAAS5f,GACtD1B,OAAOC,OAAOqhB,EAAQ5Y,MAAO,CAAE6Q,KAAO,GAAErU,MAAOsU,IAAM,GAAEnU,OACzD,CAGAiT,IAAAA,GAEEzX,KAAKmH,aAAakI,UAAU0J,OAAO/Y,KAAKgZ,cAExChZ,KAAK0gB,cAAc7Y,MAAMoR,QAAU,QAE9BjZ,KAAKmK,QACZ,CAEAuP,KAAAA,GAEE1Z,KAAKmH,aAAakI,UAAUsK,UAAU3Z,KAAKgZ,cAE3ChZ,KAAK0gB,cAAc7Y,MAAMoR,QAAU,MACrC,CAEA3J,MAAAA,CAAOhB,GACLA,EAAEsI,iBAEuC,UAArC5W,KAAK0gB,cAAc7Y,MAAMoR,QAC3BjZ,KAAKyX,OAELzX,KAAK0Z,OAET,EC7Da,MAAMiH,WAAwB5Z,EAAAA,GAI3C4Q,WAAa,GAIbC,YAAc,GAEdC,iBAGI,CACAC,UAAW,eACXC,WAAY,EAACC,EAAAA,EAAAA,IAAO,IAAIC,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,IAAM,CAAE5U,QAAS,MAOrD0D,eAAiB,CAAC,SAAU,SAI5BA,eAAiB,CAAC,SAGlBA,cAAgB,CAAEmR,SAAUlR,QAK5B,YAAMkD,GACJ,MAAMtJ,EAAUb,KAAK6X,iBACrBhX,EAAQiX,UAAY9X,KAAKqY,cACzB,MAAMC,EAAStY,KAAKmH,aACdyZ,EAAQ5gB,KAAK6gB,aACb,EAACxc,EAAC,EAAEG,SAAWiU,EAAAA,EAAAA,IAAgBH,EAAQsI,EAAO/f,GACpD1B,OAAOC,OAAOwhB,EAAM/Y,MAAO,CAAE6Q,KAAO,GAAErU,MAAOsU,IAAM,GAAEnU,OACvD,CAGAiT,IAAAA,GACEoB,aAAa7Y,KAAK8Y,OAClBvH,YACE,KAEEvR,KAAKmH,aAAakI,UAAU0J,OAAO/Y,KAAKgZ,cAExChZ,KAAK6gB,YAAYhZ,MAAMoR,QAAU,QAE5BjZ,KAAKmK,QAAQ,GAEpBnK,KAAK2X,WAET,CAKA+B,KAAAA,GACE1Z,KAAK8Y,MAAQvH,WACXvR,KAAKyZ,iBAAiBpa,KAAKW,MAC3BA,KAAK4X,YAET,CAIA6B,gBAAAA,GAEEzZ,KAAKmH,aAAakI,UAAUsK,UAAU3Z,KAAKgZ,cAE3ChZ,KAAK6gB,YAAYhZ,MAAMoR,QAAU,MACnC,EC/Ea,MAAM6H,WAAgC/Z,EAAAA,GACnDC,eAAiB,CAAC,SAAU,WAK5BsI,MAAAA,GACEtP,KAAK6b,cAActG,SAAS+C,IAC1BA,EAAOjJ,UAAUC,OAAO,SAAS,IAEnCtP,KAAK+gB,eAAexL,SAASjW,IAC3BA,EAAO+P,UAAUC,OAAO,SAAS,GAErC,ECVa,MAAM0R,WAAuCja,EAAAA,GAC1DC,eAAiB,CAAC,aAElBA,cAAgB,CACdia,aAAc5C,OACd6C,mBAAoB7C,QAOtB5W,OAAAA,GACE,MAAM0Z,EAAa7Q,KAAK8Q,MAAOphB,KAAKqhB,kBAAoBrhB,KAAKshB,wBAA2B,KAExF9gB,EAAAA,MAAiBR,KAAKuhB,iBAAiBzgB,EAAAA,EAAAA,IAAkBN,EAAY,CACnEQ,MAAO,CACLwgB,oBAAqB,OACrBC,gBAAiB,EACjBC,YAAY,EACZC,QAAS,CAAC,EAAG,EAAG,EAAG,IAErBxO,MAAO,CACL/Q,KAAM+e,EAAa,IACnBte,MAAO,SACP+e,UAAU,EACV9G,OAAQ,EACRhY,cAAe,SAEf0B,EAAG,GACHqD,MAAO,CACLpE,MAAO,UACPsR,WAAY,SACZ5R,SAAU,OACVE,WAAY,IAGhBW,QAAS,CACP/C,gBAAiB,UACjBgD,YAAa,UACb+P,aAAc,EACdW,YAAa,EACbK,SAAS,EACTC,gBAAgB,EAChB3R,QAAS,EACT4R,OAAQ,CACNzR,MAAO,UACPqE,QAAS,IACTqN,QAAS,EACTC,QAAS,EACTjV,MAAO,GAET0H,MAAO,CACLpE,MAAO,UACPN,SAAU,OACV4R,WAAY,QAEd7Q,UAAW,WACT,MAAQ,OAAMlE,KAAKgS,MAAMjG,mBAAmB/L,KAAKwE,GACnD,GAEF5D,cAAe,CACboR,MAAO,CACL6P,YAAa,MAGjB3gB,YAAa,CACX4gB,IAAK,CACH9N,aAAc,EACd/P,YAAa,OACb8d,WAAY,CACVngB,SAAS,EACT0B,QAAS,GAEX0e,YAAa,GACbC,SAAU,GACVC,OAAQ,CAAC,MAAO,QAEhBC,KAAM,OACNC,UAAW,MACXC,aAAc,EACdrgB,OAAQ,CACNC,MAAO,CACLqgB,KAAM,CACJH,KAAM,OAMhBte,OAAQ,CAAC,UAAW,WACpBmM,OAAQ,CAAC,CACP3K,KAAM,MACN0G,KAAM,gBACNU,KAAM,CACJ,CAAC,YAAazM,KAAKqhB,mBACnB,CAAC,gBAAiBrhB,KAAKshB,wBAA0BthB,KAAKqhB,wBAI9D,E,0BCrGa,SAASkB,GAAStiB,GAC/B,MAOM,KAAE8L,EAAI,YAAE2B,EAAW,MAAEyE,EAAK,cAAEqQ,GAAkBviB,EAEpD,OACI2I,IAAAA,cAAA,YACEmD,KAAMA,EACNlD,UAXc,mIAYd4Z,aAAa,MACbpd,KAAK,OACLqd,KAfO,EAgBPvQ,MAAOA,EACPzE,YAAaA,EACbC,SAAWW,GAAMkU,EAAclU,EAAEhP,OAAO6S,QAGhD,CAEAoQ,GAASzZ,UAAY,CACnBiD,KAAMhD,IAAAA,OAAiBC,WACvB0E,YAAa3E,IAAAA,OAAiBC,WAC9BmJ,MAAOpJ,IAAAA,OAAiBC,WACxBwZ,cAAezZ,IAAAA,KAAeC,WAC9BH,UAAWE,IAAAA,Q,ICjCT,G,WACJ,SAAS,KAAiS,OAApR,GAAW5J,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAU,GAASS,MAAMC,KAAMR,UAAY,CAUlV,ICXI,GDWJ,GARoBS,GAAsB,gBAAoB,MAAO,GAAS,CAC5EC,MAAO,6BACPC,MAAO,GACPC,OAAQ,GACRC,KAAM,QACLJ,GAAQ,KAAU,GAAqB,gBAAoB,OAAQ,CACpEK,EAAG,ugBCRL,SAAS,KAAiS,OAApR,GAAWnB,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAU,GAASS,MAAMC,KAAMR,UAAY,CAUlV,OARgBS,GAAsB,gBAAoB,MAAO,GAAS,CACxEC,MAAO,6BACPC,MAAO,GACPC,OAAQ,GACRC,KAAM,QACLJ,GAAQ,KAAU,GAAqB,gBAAoB,OAAQ,CACpEK,EAAG,ukB,WCKU,MAAMqiB,WAAoBzZ,EAAAA,UACvCC,WAAAA,CAAYlJ,GACVmJ,MAAMnJ,GAEND,KAAKqJ,MAAQ,CACXuZ,WAAY,GACZC,eAAgB,GAChBC,YAAa,GACbtc,QAAS,GACTgH,MAAO,KAEX,CAEA6O,WAAaA,KACXrc,KAAKsM,QAAUC,IAAAA,KAAO,CACpBlH,KAAM,OACNmH,IAAKxM,KAAKC,MAAM8iB,QAChBtW,KAAM,CACJC,mBAAoBC,EAAAA,EAAMpH,aAAe,GACzCiG,GAAI2F,SAASnR,KAAKC,MAAM+iB,UACxBC,QAAS9R,SAASnR,KAAKC,MAAMijB,QAC7BC,gBAAiBnjB,KAAKqJ,MAAMwZ,eAC5Brc,QAASxG,KAAKqJ,MAAM7C,SAEtBsG,QAAUsW,IACRpjB,KAAKiK,SAAS,CACZuD,MAAO,2BACPoV,WAAY,GACZC,eAAgB,GAChBrc,QAAS,KAIX+K,YAAW,IAAMvR,KAAKiK,SAAS,CAAEuD,MAAO,MAAO,IAAK,EAEtDrI,MAAOA,CAACke,EAAOC,EAAYC,KACzBhd,QAAQpB,MAAMme,EAAYD,EAAMG,OAAQD,GACxCvjB,KAAKiK,SAAS,CAAEuD,MAAO6V,EAAMI,aAAaC,OAAO,IAAK,GAExD,EAIJC,eAAkBxR,IAChB,MAAMyQ,EAAazQ,EAAMyR,OAAOC,cAKhC,OAJ6B7jB,KAAK8jB,kBAAkB9Z,QAAO+Z,IACxD/jB,KAAKqJ,MAAMwZ,eAAenX,SAASqY,EAAKC,SAGfha,QAAO+Z,GACjCA,EAAKC,MAAMH,cAAcnY,SAASkX,IAClCmB,EAAKE,SAASJ,cAAcnY,SAASkX,IACtC,EAMHkB,gBAAkBA,KAChB,MAAM,MAAEI,GAAUlkB,KAAKC,MASvB,OARiB8F,KAAKwN,MAAM2Q,GAEK5Y,KAAKyY,IAG7B,CAAEC,MAFKD,EAAK7L,QAEH+L,SADCF,EAAK7gB,KAAK,QAIP,EAIxBihB,4BAA8BA,EAAGhS,YAC/B,MAAMiS,EAAiBpkB,KAAK2jB,eAAexR,GAC3CnS,KAAKiK,SAAS,CAAE6Y,YAAasB,GAAiB,EAGhDC,iBAAmBA,KACjBrkB,KAAKiK,SAAS,CAAE6Y,YAAa,IAAK,EAKpCwB,mBAAqBA,IACZ,GAIT1Y,iBAAoBlB,GAEhB9B,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,MAAIC,UAAU,OACX6B,EAAWuZ,UAEdrb,IAAAA,cAAA,aACG8B,EAAWsZ,QAMpBO,qBAAuBA,CAACC,GAAS5e,SAAQ8E,iBACxB,UAAX9E,GACF4e,EAAM5N,iBAER5W,KAAKykB,gBAAgB/Z,EAAW,EAIlCga,mBAAsBC,IACpB3kB,KAAKiK,UAASC,IAAS,CACrB2Y,eAAgB3Y,EAAU2Y,eAAe7Y,QAAO4a,GAAgBA,IAAiBD,OAChF,EAGLF,gBAAmB/Z,IACjB1K,KAAKiK,UAASC,IAAS,CACrB2Y,eAAgB,IAAI3Y,EAAU2Y,eAAgBnY,EAAWsZ,UACxD,EAILa,cAAgBA,KACd,KAAI7kB,KAAKqJ,MAAMwZ,eAAepjB,OAAS,GAEvC,OAAOO,KAAKqJ,MAAMwZ,eAAevX,KAAIsZ,GACnChc,IAAAA,cAACkF,EAAAA,EAAgB,CACfnO,IAAKilB,EACL7W,WAAYA,IAAM/N,KAAK0kB,mBAAmBE,GAC1C5W,MAAO4W,KAEV,EAGHE,gBAAmBte,IACjBxG,KAAKiK,SAAS,CAAEzD,WAAU,EAG5Bue,mBAAqBA,CAACC,GAAUC,eAC9BjlB,KAAKiK,SAAS,CACZ2Y,WAAYqC,GACZ,EAGJC,iBAAmBA,KACjB,MAAMC,EAA2D,IAArCnlB,KAAKqJ,MAAMwZ,eAAepjB,OAChD2lB,EAA6C,IAA9BplB,KAAKqJ,MAAM7C,QAAQ/G,OACxC,OAAO0lB,GAAuBC,CAAY,EAG5CC,qBAAuBC,GACrB1c,IAAAA,cAAA,OAAKC,UAAU,YACbD,IAAAA,cAAA,QAAW0c,GACX1c,IAAAA,cAAC2c,GAAAA,EAAU,CAAC1c,UAAU,wGAI1BmE,OAASA,KACP,MAAM,WAAE4V,EAAU,QAAEpc,EAAO,MAAEgH,GAAUxN,KAAKqJ,MAGtCic,EAAa,CACjB5X,YAAa,uBACbyE,MAAOyQ,EACPjV,SAAU3N,KAAK+kB,oBAGXS,EACJ5c,IAAAA,cAAA,OAAKC,UAAU,6BACbD,IAAAA,cAAA,MAAIC,UAAU,qCAAoC,oBAGlDD,IAAAA,cAAA,KAAGV,QAASlI,KAAKC,MAAMwlB,WAAY5c,UAAU,kBAC3CD,IAAAA,cAAC8c,GAAAA,EAAK,CAAC7c,UAAU,oBAKvB,OAAI2E,EAEA5E,IAAAA,cAAA,OAAKC,UAAU,iBACZ2c,EAGD5c,IAAAA,cAAA,OAAKC,UAAU,sFACbD,IAAAA,cAAA,OAAKC,UAAU,qCAAoC,8BASzDD,IAAAA,cAAA,WACG4c,EAED5c,IAAAA,cAAA,OAAKC,UAAU,6BACbD,IAAAA,cAAA,OAAKC,UAAU,QACbD,IAAAA,cAAA,SAAO+c,QAAQ,QAAO,eAGxB/c,IAAAA,cAAA,OAAKC,UAAU,gCACZ7I,KAAK6kB,iBAGRjc,IAAAA,cAAA,OAAKC,UAAU,QACbD,IAAAA,cAACgd,KAAW,CACV9C,YAAa9iB,KAAKqJ,MAAMyZ,YACxByB,qBAAsBvkB,KAAKukB,qBAC3BJ,4BAA6BnkB,KAAKmkB,4BAClC0B,4BAA6B7lB,KAAKqkB,iBAClCC,mBAAoBtkB,KAAKskB,mBACzB1Y,iBAAkB5L,KAAK4L,iBACvByZ,qBAAsBrlB,KAAKqlB,qBAC3BC,WAAYA,EACZvjB,MAAO,CACL+jB,MAAO,0GACPpb,WAAY,mDACZqb,qBAAsB,kEAK5Bnd,IAAAA,cAAA,OAAKC,UAAU,QACbD,IAAAA,cAAA,SAAO+c,QAAQ,WAAU,YAG3B/c,IAAAA,cAAC2Z,GAAQ,CACPxW,KAAK,UACLyW,cAAgBhc,GAAYxG,KAAK8kB,gBAAgBte,GACjD2L,MAAO3L,EACPkH,YAAY,uCAGd9E,IAAAA,cAAA,OAAKC,UAAU,6BACbD,IAAAA,cAACyF,EAAAA,EAAM,CACLhJ,KAAK,UACL6C,QAAUoG,GAAMtO,KAAKqc,WAAW/N,GAChClH,SAAUpH,KAAKklB,oBAChB,kBAECtc,IAAAA,cAACod,GAAY,CAACnd,UAAU,kBAG1BD,IAAAA,cAACyF,EAAAA,EAAM,CACLhJ,KAAK,WACL6C,QAASA,KAAQ+d,UAAUC,UAAUC,UAAUnmB,KAAKC,MAAMmmB,cAAc,GACzE,oBAECxd,IAAAA,cAACyd,GAAQ,CAACxd,UAAU,oBAItB,EAKZ8Z,GAAY7Z,UAAY,CACtBka,SAAUja,IAAAA,OAAiBC,WAC3Bka,OAAQna,IAAAA,OAAiBC,WACzB+Z,QAASha,IAAAA,OAAiBC,WAC1Bod,cAAerd,IAAAA,OAAiBC,WAChCkb,MAAOnb,IAAAA,OAAiBC,WACxByc,WAAY1c,IAAAA,KAAeC,YCjRd,MAAMsd,WAAmCvf,EAAAA,GACtDC,eAAiB,CAAC,QAAS,WAC3BA,cAAgB,CACdkc,OAAQjc,OACRmf,cAAenf,OACfid,MAAOjd,OACP+b,SAAU/b,OACV8b,QAAS9b,QAWXQ,OAAAA,GACE,MAAMxH,EAAQ,CACZijB,OAAQljB,KAAKumB,YACbH,cAAepmB,KAAKwmB,mBACpBtC,MAAOlkB,KAAKymB,WACZzD,SAAUhjB,KAAK0mB,cACf3D,QAAS/iB,KAAK2mB,aACdlB,WAAYzlB,KAAK0Z,MAAMra,KAAKW,OAG9B0O,EAAAA,OACE9F,EAAAA,cAAoB+Z,GAAa1iB,GACjCD,KAAK2O,cAET,CAEA8I,IAAAA,GACEzX,KAAK4mB,YAAYvX,UAAUsK,OAAO,SACpC,CAEAD,KAAAA,GACE1Z,KAAK4mB,YAAYvX,UAAU0J,IAAI,SACjC,ECrBa,SAAS8N,GAAUC,EAAapX,EAAYC,EAAYC,EAAMC,EAAUC,GAErF,GAAmB,MAAfgX,EACF,OAGF,MAAM9lB,EAAQ,IAAIiS,EAAAA,MAAM,sBAAsB1S,EAAAA,EAAAA,IAA+BC,IAAY,CACvFQ,MAAO,CACLZ,OAAQ,IACR8S,UAAW,GACX7N,KAAM,QAER8N,MAAO,CAAE/Q,KAAM,IACfgR,MAAO,CACL/N,KAAM,WACNgO,WAAY,EACZC,WAAW,EACX5D,WA8PJ,SAAyBjD,GACvB,IAAKA,EAAQ,MAAO,GACpB,OAAOA,EAAKnB,KAAI,SAAS4G,GACvB,OAAO9N,KAAKmP,MAAMrB,EACpB,GACF,CAnQgBsB,CAAgB9D,GAC5B+D,OAAQ,CACN5L,MAAO,CACL1E,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCgB,UAAW,WACT,OAAO+N,EAAenS,KAAKE,KAC7B,IAGJ0T,MAAO,CACLP,MAAO,CAAE/Q,KAAM,MACfqR,OAAQ,CACN5L,MAAO,CACL1E,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCgB,UAAW,WACT,MAAO,QAAMK,EAAAA,EAAAA,IAAcvE,KAAKmS,MAClC,IAGJjR,YAAa,CACX8O,OAAQ,CACNiE,kBAAkB,EAClBC,OAAQ,UACR6S,YAAa,EACb3S,UAAW,EACXD,OAAQ,CACNvS,SAAS,EACTI,OAAQ,CACNC,MAAO,CACLmS,UAAW,EACXC,OAAQ,GAEVnS,OAAQ,CACNN,SAAS,KAIfoQ,MAAO,CACLsC,OAAQ,CACNpS,OAAQ,WACN+O,EAAcnR,KAAKE,KACrB,IAGJgnB,SAAU,WAGdhX,OAAQ8W,EAAYxb,KAsFtB,SAAsB0E,EAAQzQ,GAC5B,MAAO,CACLwM,KAAMiE,EAAOmD,MAIb1G,KAAMuD,EAAOvD,KAAKnB,KAAI6G,GAASpB,WAAWoB,KAE1C1O,MAAQ,CAAC,UAAW,UAAW,WAAWlE,IAAM,UAChDoV,YAAa,EAEjB,IAhGEE,OAAQ,CACNC,UAAW,CACTC,WAAY,SACZ5R,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCL,MAAO,SAETmB,QAAS,CACP/C,gBAAiB,UACjBgD,YAAa,UACb+P,aAAc,EACdW,YAAa,EACbK,SAAS,EACTC,gBAAgB,EAChB3R,QAAS,EACT4R,OAAQ,CACNzR,MAAO,UACPqE,QAAS,IACTqN,QAAS,EACTC,QAAS,EACTjV,MAAO,GAET+D,UAAW,WACT,MAAMgO,EAAO,IAAI9N,KAAKpE,KAAKqE,GACrBgR,EAAW,GAGjB,OAAQ1F,GACN,IAAK,MAEH0F,EAASC,MAAKnR,EAAAA,EAAAA,YAAW,WAAY+N,IACrC,MAEF,IAAK,OACHmD,EAASC,KAAM,IAAGjD,EAAWH,MAASA,EAAKE,iBAC3C,MAEF,IAAK,QAEHiD,EAASC,MAAKnR,EAAAA,EAAAA,YAAW,QAAS+N,IAClC,MAEF,IAAK,UACHmD,EAASC,KAAM,IAAGhD,EAAQJ,MAASA,EAAKE,iBACxC,MAEF,IAAK,OACHiD,EAASC,KAAKpD,EAAKE,eAWvB,OALApS,KAAK0R,OAAO6D,SAAQ,SAASvD,GAC3BqD,EAASC,KAAM,GAAEtD,EAAMhC,OAAOjE,cAAUxH,EAAAA,EAAAA,IAAcyN,EAAMxN,KAC9D,IAGQ,0FAEF6Q,EAAS/J,KAAKkK,GAAgB,OAAMA,WAAmBtS,KAAK,gCAGpE,EACAuS,WAAY,SAASC,EAAYC,EAAa3D,GAE5C,MAAMxN,EAAIxE,KAAKgB,MAAM4U,QAAUD,EAAc,EAG7C,MAAO,CAAEtR,EADC2N,EAAM6D,MAAQ7V,KAAKgB,MAAM8U,SAAWJ,EAAa,EAC/ClR,IACd,EACAuR,QAAQ,EAER5T,SAAS,MAwBb,SAAS8O,IAEPrC,EACEkB,EAAU,CAGRmX,UAAU,EACV/V,OAAQxB,EAAWyB,SAASnR,KAAKqE,EAAG,KACpC+M,YAAazB,EACbC,OACAC,aAOJ,MAAMyB,EAActR,KAAKgQ,OAAOzF,MAChC,OAAOgH,WAAWC,EAA0BnS,KAAKW,KAAMsR,GAAc,EACvE,CAKA,SAASE,EAA0BF,GAEjC,MAAMtB,EAAShQ,KAAKgQ,OAAOhP,MAAMgP,OAEjC,IAAK,IAAIzQ,EAAI,EAAGA,EAAIyQ,EAAOvQ,OAAQF,IAEjC,GAAIyQ,EAAOzQ,GAAGgL,QAAU+G,EAAa,CACnC,MAAMU,EAAQhC,EAAOzQ,GAAGmS,OAAO1R,KAAKuK,OAGpCyH,EAAMtJ,UAAW,EACjBsJ,EAAM/H,SAAS,SACjB,CAEJ,CAeA,SAASgI,IACP,MAAMC,EAAO,IAAI9N,KAAKpE,KAAKmS,OAG3B,GAAmB,SAAfxC,EAAyB,OAAOuC,EAAKE,cAEzC,IAAIpE,EAEJ,OAAQ2B,GACN,IAAK,MACH3B,GAAQ7J,EAAAA,EAAAA,YAAW,QAAS+N,GAC5B,MAEF,IAAK,OACHlE,EAAS,IAAGqE,EAAWH,KACvB,MAEF,IAAK,UACHlE,EAAS,IAAGsE,EAAQJ,KACpB,MAEF,IAAK,OACHlE,EAAQkE,EAAKE,cACb,MAEF,QACEpE,GAAQ7J,EAAAA,EAAAA,YAAW,KAAM+N,GAK7B,MAAMK,EAAQL,EAAKM,WACbC,EAAaP,EAAKQ,UAClBC,EAA4B,IAAVJ,IAA+B,QAAf5C,GAAuC,IAAf8C,GAShE,OANEzS,KAAK4S,SACLD,KAEA3E,EAAS,GAAEA,MA2Bf,SAAmBkE,GACjB,OAAOA,EAAKE,cAAcrN,WAAW8N,MAAM,SAC7C,CA7ByBC,CAAUZ,MAG1BlE,CACT,CAYA,SAASqE,EAAWH,GAClB,MAAMa,EAAS,IAAI3O,KAAK8N,EAAKE,cAAe,EAAG,GAC/C,OAAO9B,KAAKM,OAAQsB,EAAOa,GAAU,MAAYA,EAAOC,SAAW,GAAK,EAC1E,CAEA,SAASV,EAAQJ,GAEf,OAAuB,KADTA,EAAKM,WACD,EACpB,CAtIIxR,EAAMgP,OAAO,GAAG0B,OAAOjS,OAAS,GAClCuB,EAAMgP,OAAO,GAAG0B,OAAOwV,OAAO,GAAG,GAAGhlB,OAAO,MAAM,EA2IrD,CCxTe,MAAMilB,WAAoCpgB,EAAAA,GACvDC,cAAgB,CACd8f,YAAa7Q,MACbtG,WAAY1I,OACZyI,WAAYuG,MACZzJ,IAAKvF,OACL2I,KAAM3I,OACN4I,SAAU5I,QAUZQ,OAAAA,GAEEof,GACE7mB,KAAKonB,iBACLpnB,KAAKoW,gBACLpW,KAAKqW,gBACLrW,KAAKsW,UACLtW,KAAKuW,cACLvW,KAAKwW,UAIPhR,SAASiR,iBAAiB,oBAAoB,WAC5C,MAAMC,EAAYlR,SAAS4J,eAAe,sBACxB9N,IAAdoV,GAAyC,OAAdA,GAE/BA,EAAUD,iBAAiB,SAAS,SAASnI,GAC3C,GAAiB,OAAbA,EAAEhP,OAAiB,OACvB,MAAMA,EAASgP,EAAEhP,QACbA,EAAOqX,QAAQ,qBAAuBrX,EAAOqX,QAAQ,WACvDrI,EAAEsI,iBAGFhI,EAAiBtP,EAAO6I,KAAM,CAAE8e,UAAU,IAE9C,GACF,GACF,ECrBa,SAASI,GACtB7X,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GASA,SAASC,EAAqBC,GAC5B,MAAMC,GAAMC,EAAAA,EAAAA,KAAUF,GAChBG,EARR,SAAmBC,GACjB,MAAMC,EAAQC,KAAKC,MAAMD,KAAKE,IAAIJ,GAAKE,KAAKG,KAAO,MACnD,OAAOH,KAAKI,IAAI,GAAIL,EACtB,CAKcM,CAAUV,GAAO,GAC7B,OAAOK,KAAKM,KAAKX,EAAME,GAAOA,CAChC,CAEA,MAAMU,EAAad,GAAqBe,EAAAA,EAAAA,KAAUtB,EAAQ/C,MAAM,SAASpI,GAAK,OAAO0M,WAAW1M,EAAI,KAC9F2M,EAAajB,EAAqBN,EAAQhD,MAO1CzL,EAAQ,IAAIiS,EAAAA,MAChB,sBACA1S,EAAAA,EAAAA,IACEC,IACA,CACEQ,MAAO,CAELZ,OAAQ,IACR8S,UAZW,IAebC,MAAO,CAAE/Q,KAAM,IACfgR,MAAO,CACL/N,KAAM,WACNgO,WAAY,EACZC,WAAW,EACX5D,WA6RR,SAAyBjD,GACvB,IAAKA,EAAQ,MAAO,GACpB,OAAOA,EAAKnB,KAAI,SAAS4G,GACvB,OAAO9N,KAAKmP,MAAMrB,EACpB,GACF,CAlSoBsB,CAAgB9D,GAC5B+D,OAAQ,CACN5L,MAAO,CACL1E,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCgB,UAAW,WACT,OAAO+N,EAAenS,KAAKE,KAC7B,IAGJ0T,MAAO,CAAC,CAENP,MAAO,CAAE/Q,KAAM,MACfuR,WAAY,EACZC,cAAe,CAAC,EAAG/C,EAAa,EAAGA,GACnCgD,IAAK,EACLJ,OAAQ,CACN5L,MAAO,CACL1E,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCgB,UAAW,WACT,MAAO,QAAMK,EAAAA,EAAAA,IAAcvE,KAAKmS,MAClC,IAED,CAEDgB,MAAO,CAAE/Q,KAAM,MACfwR,cAAe,CAAC,EAAG5C,EAAa,EAAGA,GACnC8C,UAAU,EACVC,cAAe,EACfN,OAAQ,CACN5L,MAAO,CACL1E,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCgB,UAAW,WACT,OAAOK,EAAAA,EAAAA,IAAcvE,KAAKmS,MAC5B,KAGJjR,YAAa,CACX8O,OAAQ,CACNgE,aAAc,EACdC,kBAAkB,EAClBC,OAAQ,UACRC,OAAQ,CACNvS,SAAS,EACTI,OAAQ,CACNC,MAAO,CACLmS,UAAW,EACXC,OAAQ,GAEVnS,OAAQ,CACNN,SAAS,KAIfoQ,MAAO,CACLsC,OAAQ,CACNpS,OAAQ,WACN+O,EAAcnR,KAAKE,KACrB,MAKRgQ,OAAQ,CAAC,CACPjE,KAAMyD,EAAQ2D,MACd1G,KA4NR,SAA8BA,GAC5B,IAAKA,EAAQ,MAAO,GACpB,OAAOA,EAAKnB,KAAI,SAASkJ,GACvB,OAAOrD,SAASqD,EAAK,GACvB,GACF,CAjOcC,CAAqBjF,EAAQ/C,MACnCpH,KAAM,OACN5B,MAAO,UACPiR,OAAQ,GACP,CACD3I,KAAM0D,EAAQ0D,MACd1G,KAAMgD,EAAQhD,KACdpH,KAAM,SAEN5B,MAAO,UACPkR,YAAa,EACbjB,MAAO,EACPkB,aAAc,EACdxT,aAAc,GACdY,OAAQ,CAENE,OAAQ,CAAEuB,MAAO,WACjBxB,MAAO,CACLwB,MAAO,cAIboR,OAAQ,CACNC,UAAW,CACTC,WAAY,SACZ5R,SAAU,OACVM,MAAO,UACPT,WAAYC,EAAAA,GAAgBC,KAAK,OAEnCL,MAAO,SAETmB,QAAS,CACP/C,gBAAiB,UACjBgD,YAAa,UACb+P,aAAc,EACdW,YAAa,EACbK,SAAS,EACTC,gBAAgB,EAChB3R,QAAS,EACT4R,OAAQ,CACNzR,MAAO,UACPqE,QAAS,IACTqN,QAAS,EACTC,QAAS,EACTjV,MAAO,GAET+D,UAAW,WACT,MAAMgO,EAAO,IAAI9N,KAAKpE,KAAKqE,GACrBgR,EAAW,GAGjB,OAAQ1F,GACN,IAAK,MAEH0F,EAASC,MAAKnR,EAAAA,EAAAA,YAAW,WAAY+N,IACrC,MAEF,IAAK,OACHmD,EAASC,KAAM,IAAGjD,EAAWH,MAASA,EAAKE,iBAC3C,MAEF,IAAK,QAEHiD,EAASC,MAAKnR,EAAAA,EAAAA,YAAW,QAAS+N,IAClC,MAEF,IAAK,UACHmD,EAASC,KAAM,IAAGhD,EAAQJ,MAASA,EAAKE,iBACxC,MAEF,IAAK,OACHiD,EAASC,KAAKpD,EAAKE,eAevB,OATApS,KAAK0R,OAAO6D,SAAQ,SAASvD,GACvBA,EAAMhC,OAAOjE,KAAKL,SAAS,SAC7B2J,EAASC,KAAK,eAAa/Q,EAAAA,EAAAA,IAAcyN,EAAMxN,IAE/C6Q,EAASC,KAAK,YAAa/Q,EAAAA,EAAAA,IAAcyN,EAAMxN,GAEnD,IAGQ,kGAEF6Q,EAAS/J,KAAKkK,GAAgB,OAAMA,WAAmBtS,KAAK,wCAGpE,EACAuS,WAAY,SAASC,EAAYC,EAAa3D,GAE5C,MAAMxN,EAAIxE,KAAKgB,MAAM4U,QAAUD,EAAc,EAG7C,MAAO,CAAEtR,EADC2N,EAAM6D,MAAQ7V,KAAKgB,MAAM8U,SAAWJ,EAAa,EAC/ClR,IACd,EACAuR,QAAQ,EAER5T,SAAS,MAajB,SAAS8O,IAGPrC,EAAiBkB,EAAU,CACzBoB,OAAQxB,EAAWyB,SAASnR,KAAKqE,EAAG,KACpC+M,YAAazB,EACbC,OACAC,aAOF,MAAMyB,EAActR,KAAKgQ,OAAOzF,MAChC,OAAOgH,WAAWC,EAA0BnS,KAAKW,KAAMsR,GAAc,EACvE,CAKA,SAASE,EAA0BF,GAEjC,MAAMtB,EAAShQ,KAAKgQ,OAAOhP,MAAMgP,OAEjC,IAAK,IAAIzQ,EAAI,EAAGA,EAAIyQ,EAAOvQ,OAAQF,IAEjC,GAAIyQ,EAAOzQ,GAAGgL,QAAU+G,EAAa,CACnC,MAAMU,EAAQhC,EAAOzQ,GAAGmS,OAAO1R,KAAKuK,OAGpCyH,EAAMtJ,UAAW,EACjBsJ,EAAM/H,SAAS,SACjB,CAEJ,CAeA,SAASgI,IACP,MAAMC,EAAO,IAAI9N,KAAKpE,KAAKmS,OAG3B,GAAmB,SAAfxC,EAAyB,OAAOuC,EAAKE,cAEzC,IAAIpE,EAEJ,OAAQ2B,GACN,IAAK,MACH3B,GAAQ7J,EAAAA,EAAAA,YAAW,QAAS+N,GAC5B,MAEF,IAAK,OACHlE,EAAS,IAAGqE,EAAWH,KACvB,MAEF,IAAK,UACHlE,EAAS,IAAGsE,EAAQJ,KACpB,MAEF,IAAK,OACHlE,EAAQkE,EAAKE,cACb,MAEF,QACEpE,GAAQ7J,EAAAA,EAAAA,YAAW,KAAM+N,GAK7B,MAAMK,EAAQL,EAAKM,WACbC,EAAaP,EAAKQ,UAClBC,EAA4B,IAAVJ,IAA+B,QAAf5C,GAAuC,IAAf8C,GAShE,OANEzS,KAAK4S,SACLD,KAEA3E,EAAS,GAAEA,MAmCf,SAAmBkE,GACjB,OAAOA,EAAKE,cAAcrN,WAAW8N,MAAM,SAC7C,CArCyBC,CAAUZ,MAG1BlE,CACT,CAoBA,SAASqE,EAAWH,GAClB,MAAMa,EAAS,IAAI3O,KAAK8N,EAAKE,cAAe,EAAG,GAC/C,OAAO9B,KAAKM,OAAQsB,EAAOa,GAAU,MAAYA,EAAOC,SAAW,GAAK,EAC1E,CAEA,SAASV,EAAQJ,GAEf,OAAuB,KADTA,EAAKM,WACD,EACpB,CA9HIxR,EAAMgP,OAAO,GAAG0B,OAAOjS,OAAS,GAClCuB,EAAMgP,OAAO,GAAG0B,OAAOwV,OAAO,GAAG,GAAGhlB,OAAO,MAAM,EAmIrD,CC/Xe,MAAMolB,WAAqCvgB,EAAAA,GACxDC,cAAgB,CACdwI,QAASrQ,OACTsQ,QAAStQ,OACTuQ,WAAYuG,MACZtG,WAAY1I,OACZ2I,KAAM3I,OACN4I,SAAU5I,OACVuF,IAAKvF,QAWPQ,OAAAA,GAEE4f,GACErnB,KAAKkW,aACLlW,KAAKmW,aACLnW,KAAKoW,gBACLpW,KAAKqW,gBACLrW,KAAKsW,UACLtW,KAAKuW,cACLvW,KAAKwW,UAIPhR,SAASiR,iBAAiB,oBAAoB,WAC5C,MAAMC,EAAYlR,SAAS4J,eAAe,sBACxB9N,IAAdoV,GAAyC,OAAdA,GAE/BA,EAAUD,iBAAiB,SAAS,SAASnI,GAC3C,GAAiB,OAAbA,EAAEhP,OAAiB,OACvB,MAAMA,EAASgP,EAAEhP,QACbA,EAAOqX,QAAQ,qBAAuBrX,EAAOqX,QAAQ,WACvDrI,EAAEsI,iBAGFhI,EAAiBtP,EAAO6I,MAE5B,GACF,GACF,ECrBF1B,EAAY8gB,SAAS,SAAUzgB,GAC/BL,EAAY8gB,SAAS,WAAY/f,GACjCf,EAAY8gB,SAAS,oBAAqB9Y,GAC1ChI,EAAY8gB,SAAS,oCAAqCvR,GAC1DvP,EAAY8gB,SAAS,YAAa1Q,GAClCpQ,EAAY8gB,SAAS,WAAY7P,GACjCjR,EAAY8gB,SAAS,mBAAoB3N,GACzCnT,EAAY8gB,SAAS,OAAQnL,GAC7B3V,EAAY8gB,SAAS,uBAAwB9L,GAC7ChV,EAAY8gB,SAAS,eAAgBzK,GACrCrW,EAAY8gB,SAAS,sBAAuB9J,GAC5ChX,EAAY8gB,SAAS,+BAAgC7J,GACrDjX,EAAY8gB,SAAS,kBAAmB/I,GACxC/X,EAAY8gB,SAAS,QAASzI,GAC9BrY,EAAY8gB,SAAS,eAAgBxI,IACrCtY,EAAY8gB,SAAS,gBAAiBjI,IACtC7Y,EAAY8gB,SAAS,UAAW/G,IAChC/Z,EAAY8gB,SAAS,QAAS5G,IAC9Bla,EAAY8gB,SAAS,iBAAkBzG,IACvCra,EAAY8gB,SAAS,0BAA2BvG,IAChDva,EAAY8gB,SAAS,qBAAsBjB,IAC3C7f,EAAY8gB,SAAS,uBAAwBJ,IAC7C1gB,EAAY8gB,SAAS,wBAAyBD,G,uDCnD/B,MAAMzd,EACnBV,WAAAA,CAAYE,EAAOme,GACjBxnB,KAAKqJ,MAAQA,EACbrJ,KAAKwnB,YAAcA,CACrB,CASA3c,YAAAA,CAAaqM,EAAQxM,GACnB,OAAQwM,GACN,IAAK,SACH,OAAQxM,EAAWC,gBACjB,IAAK,QACH3K,KAAKynB,mBAAmB/c,GACxB,MACF,IAAK,WACH1K,KAAK0nB,wBAAwBhd,GAGjC,MACF,IAAK,aACH1K,KAAK2nB,0BAA0Bjd,GAC/B,MACF,IAAK,WACH,OAAQA,EAAWC,gBACjB,IAAK,QACH3K,KAAK4nB,qBAAqBld,GAC1B,MACF,IAAK,WACH1K,KAAK6nB,0BAA0Bnd,IAKzC,CAOAe,eAAAA,GACE,MAAMqc,EAAS,GASf,OARA3oB,OAAOgN,OAAOnM,KAAKqJ,OAAOkM,SAAQ/L,IAC5BA,EAAMd,UACRc,EAAMF,UAAUiM,SAAQhK,GAAYuc,EAAOxS,KAAK/J,EAASI,gBACzDmc,EAAOxS,KAAK9L,EAAMmC,eAElBnC,EAAMue,kBAAkBxS,SAAQhK,GAAYuc,EAAOxS,KAAK/J,EAASI,eACnE,IAEKmc,CACT,CAGA3a,SAAAA,GACE,MAAMD,EAAS/N,OAAOgN,OAAOnM,KAAKqJ,OAClC,OAAOrJ,KAAKgoB,YAAY9a,EAC1B,CAIAua,kBAAAA,CAAmBQ,GAqBjBjoB,KAAKwnB,YAAY,CAAEhe,MAAO,CAAEY,OApBX8C,IACf,MAAMtC,EAAYqd,EAAelc,KAgBjC,OAbKmB,EAAOtC,KACVsC,EAAOtC,GAAa,CAClBD,eAAgB,QAChBa,GAAIyc,EAAezc,GACnBO,KAAMkc,EAAelc,KACrBJ,aAAcsc,EAAetc,eAKjCuB,EAAOtC,GAAWlC,UAAW,EAC7BwE,EAAOtC,GAAWmd,kBAAoB,GACtC7a,EAAOtC,GAAWtB,UAAY2e,EAAe3e,UACtC4D,CAAM,IAIjB,CAGA0a,oBAAAA,CAAqBpe,GASnBxJ,KAAKwnB,YAAY,CAAEhe,MAAO,CAAEY,OARR8C,WAIXA,EAAO1D,EAAMuC,MACbmB,KAIX,CAGAwa,uBAAAA,CAAwBQ,GAEtBloB,KAAK2nB,0BAA0B,CAACO,GAClC,CAGAP,yBAAAA,CAA0BQ,GA6BxBnoB,KAAKwnB,YAAY,CAAEhe,MAAO,CAAEY,OA5BJ8C,IACtBib,EAAmB5S,SAAQ2S,IACzB,MAAME,EAAelb,EAAOgb,EAAkBtd,WAK9C,GAAIwd,EAAJ,CACE,MAAMC,EAAuB,IAAID,EAAaL,kBAAmBG,GACjEE,EAAaL,kBAAoB/nB,KAAKgoB,YAAYK,EAEpD,MAGAnb,EAAOgb,EAAkBtd,WAAa,CACpCD,eAAgB,QAChBa,GAAI0c,EAAkBI,QACtBvc,KAAMmc,EAAkBtd,UACxBe,aAAe,iBAAgBuc,EAAkBI,UACjD5f,UAAU,EACVqf,kBAAmB,CAACG,GACpB5e,UAAW,GACZ,IAGI4D,KAIX,CAGA2a,yBAAAA,CAA0BU,GAyBxBvoB,KAAKwnB,YAAY,CAAEhe,MAAO,CAAEY,OAxBL8C,IACrB,MAAMkb,EAAelb,EAAOqb,EAAiB3d,WAGzCwd,EAAa1f,WACf0f,EAAa1f,UAAW,EAExB0f,EAAaL,kBAAoBK,EAAa9e,WAIhD,MAAMkf,EAAqBJ,EAAaL,kBAAkB/d,QAAOuB,GAAYA,EAASC,KAAO+c,EAAiB/c,KAU9G,OATkC,IAA9Bgd,EAAmB/oB,cAIdyN,EAAOqb,EAAiB3d,WAE/Bwd,EAAaL,kBAAoBS,EAG5Btb,CAAM,IAIjB,CAGA8a,WAAAA,CAAYlF,GACV,OAAOA,EAAY2F,MAAK,CAACrd,EAAGsd,IACtBtd,EAAEW,KAAO2c,EAAE3c,MAAgB,EAC3BX,EAAEW,KAAO2c,EAAE3c,KAAe,EACvB,GAEX,E,iGC/Ka,SAASsC,EAAOpO,GAC7B,MAAM,KAAEoF,EAAI,QAAE6C,EAAO,SAAEd,EAAQ,SAAEgB,GAAanI,EAExCoI,EAAa,8DAEbC,EAAS,CACbC,QAAU,GAAEF,iDACZG,UAAY,GAAEH,gDACdI,SAAW,GAAEJ,gDACbK,SAAW,GAAEL,iDACbjB,SAAW,GAAEiB,kDAKf,IAAIM,EAAe,UASnB,OAPEA,EADEvB,EACakB,EAAOlB,SACJ,aAAT/B,EACMiD,EAAOI,SAEPJ,EAAOjD,GAItBuD,IAAAA,cAAA,UACEC,UAAWF,EACXT,QAASA,EACTd,SAAUA,GAETgB,EAGP,CAEAiG,EAAOvF,UAAY,CACjBzD,KAAM0D,IAAAA,OAAiBC,WACvBd,QAASa,IAAAA,KAAeC,WACxB5B,SAAU2B,IAAAA,KACVX,SAAUW,IAAAA,K,2DC7CR/J,EAAOC,E,gDACX,SAASC,IAAiS,OAApRA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAUJ,EAASa,MAAMC,KAAMR,UAAY,CAgBlV,MAdyBS,GAAsB,gBAAoB,MAAOf,EAAS,CACjFgB,MAAO,6BACPC,MAAO,GACPC,OAAQ,GACRC,KAAM,QACLJ,GAAQjB,IAAUA,EAAqB,gBAAoB,OAAQ,CACpEqB,KAAM,UACNC,EAAG,6EACArB,IAAWA,EAAsB,gBAAoB,OAAQ,CAChE0pB,OAAQ,UACRC,cAAe,QACfC,YAAa,IACbvoB,EAAG,cCTL,SAASwoB,EAAqB7oB,GAC5B,OACE2I,IAAAA,cAAA,SAAOC,UAAU,0CACfD,IAAAA,cAAA,SACEvD,KAAK,WACLsI,SAAU1N,EAAM8oB,SAChBC,gBAAgB,EAChBngB,UAAU,WAEZD,IAAAA,cAAA,OAAKC,UAAU,kDACbD,IAAAA,cAACqgB,EAAK,CAACpgB,UAAU,gCACjBD,IAAAA,cAAA,OAAKC,UAAU,oEACZ5I,EAAM+N,QAKjB,CAEA8a,EAAqBhgB,UAAY,CAC/BkF,MAAOjF,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,SAAmBC,WACjE+f,SAAUhgB,IAAAA,KAAeC,YAG3B,Q,UC5BA,MAFgBkgB,IAAIC,IAASxjB,SAASwjB,GAAMjjB,MAAKkjB,GAAOA,EAAI9R,SCgB5D,IChBI,EDgBJ,EAbA,SAA0BgR,EAASe,GAAc,GAC/C,MAAM,KAAE5c,EAAI,MAAEtH,EAAK,UAAEmkB,IAAcC,EAAAA,EAAAA,IAChC,oBAAmBjB,uBAA6Be,IACjDH,GAGF,MAAO,CACL1f,MAAOiD,EACP6c,YACAE,QAASrkB,EAEb,ECbA,SAAS,IAAiS,OAApR,EAAWhG,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAU,EAASS,MAAMC,KAAMR,UAAY,CAYlV,ICbI,EDaJ,EAViBS,GAAsB,gBAAoB,MAAO,EAAS,CACzEC,MAAO,6BACPC,MAAO,EACPC,OAAQ,GACPH,GAAQ,IAAU,EAAqB,gBAAoB,OAAQ,CACpEI,KAAM,OACNopB,SAAU,UACVd,OAAQ,OACRroB,EAAG,wBCVL,SAAS,IAAiS,OAApR,EAAWnB,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcP,OAAOS,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,GAAU,CAAE,OAAOL,CAAQ,EAAU,EAASS,MAAMC,KAAMR,UAAY,CAYlV,MAVgBS,GAAsB,gBAAoB,MAAO,EAAS,CACxEC,MAAO,6BACPC,MAAO,EACPC,OAAQ,GACPH,GAAQ,IAAU,EAAqB,gBAAoB,OAAQ,CACpEI,KAAM,OACNopB,SAAU,UACVd,OAAQ,OACRroB,EAAG,wBCFU,SAAS4N,EAAcjO,GACpC,MAAOypB,EAAkBC,IAAuBC,EAAAA,EAAAA,WAAS,IACnD,MAAEpgB,EAAK,aAAE2E,EAAY,aAAEtD,EAAY,MAAEmD,EAAK,YAAEqb,EAAW,gBAAEjb,GAAkB,GAASnO,GAClFuJ,MAAOqgB,GAAcC,EAAiBtgB,EAAMgC,GAAI6d,GAClDU,EAAkBvgB,EAAMd,SAaxBshB,EAAUN,EAAmB9gB,IAAAA,cAACqhB,EAAQ,MAAMrhB,IAAAA,cAACshB,EAAS,MAEtDC,EAAgBJ,EAClBnhB,IAAAA,cAACkF,EAAAA,EAAgB,CACjBnO,IAAK6J,EAAMuC,KACXgC,WAAYA,IAAMlD,EAAa,WAAYrB,GAC3CwE,MAAOA,IACPpF,IAAAA,cAACkgB,EAAoB,CACrBnpB,IAAK6J,EAAMuC,KACXgd,SAAUA,IAAMle,EAAa,SAAUrB,GACvCwE,MAAOA,IAQLpD,EAAYwD,EAAkB+b,EALlCvhB,IAAAA,cAAA,OAAKC,UAAU,oEACZmF,GAKCoc,EAAe5gB,EAAMd,SAAYmhB,GAAWvgB,WAAa,GAAME,EAAMue,kBAE3E,OACEnf,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,OAAKC,UAAU,QACbD,IAAAA,cAAA,KAAGT,KAAK,qBAAqBU,UAAU,oDAAoDX,QAzB3EmiB,IAAMV,GAAqBD,IA0BxCM,GAEFpf,GAEHhC,IAAAA,cAAA,OAAKC,UAAU,0CACZ6gB,GAAoBU,EAAa9e,KAAIC,GACpC3C,IAAAA,cAACkF,EAAAA,EAAgB,CACfnO,IAAK4L,EAASQ,KACdgC,WAAYA,IA5CKxC,KACzB,GAAI/B,EAAMd,SAAU,CAClBmC,EAAa,WAAYrB,GACzB,MAAMgf,EAAqBqB,EAAUvgB,UAAUU,QAAOsgB,GAAKA,EAAE9e,KAAOD,EAASC,KAC7EX,EAAa,aAAc2d,EAC7B,MACE3d,EAAa,WAAYU,EAC3B,EAqC0Bgf,CAAmBhf,GACrCyC,MAAOG,EAAa5C,EAAU,IAC9B0C,aAAa,sBAMzB,CAEAC,EAAcsc,aAAe,CAC3BnB,aAAa,GAGfnb,EAAcpF,UAAY,CACxBsF,gBAAiBrF,IAAAA,KACjBS,MAAOT,IAAAA,OAAiBC,WACxBmF,aAAcpF,IAAAA,KAAeC,WAC7B6B,aAAc9B,IAAAA,KAAeC,WAC7BgF,MAAOjF,IAAAA,OAAiBC,WACxBqgB,YAAatgB,IAAAA,K","sources":["webpack://app/./app/assets/images/icons/group.svg","webpack://app/./app/javascript/highchart_options.ts","webpack://app/./app/javascript/controllers/application.ts","webpack://app/./app/javascript/controllers/button_controller.ts","webpack://app/./app/javascript/controllers/checkbox_controller.ts","webpack://app/./app/assets/images/icons/arrow-left.svg","webpack://app/./app/javascript/ui/link.jsx","webpack://app/./app/javascript/competitors_list_autosuggest/index.jsx","webpack://app/./app/javascript/controllers/competitors_controller.ts","webpack://app/./app/javascript/controllers/tables/data_table.js","webpack://app/./app/javascript/controllers/charts/competitors_value_volume_chart.js","webpack://app/./app/javascript/controllers/competitors_trend_over_time_chart_controller.ts","webpack://app/./app/javascript/controllers/downloads_controller.ts","webpack://app/./app/javascript/controllers/dropdown_controller.ts","webpack://app/./app/javascript/controllers/element_download_controller.ts","webpack://app/./app/javascript/controllers/enable_action_button_controller.ts","webpack://app/./app/javascript/controllers/form_controller.ts","webpack://app/./app/javascript/controllers/hide_element_controller.ts","webpack://app/./app/javascript/controllers/tables/key_decision_maker_module.js","webpack://app/./app/javascript/controllers/key_decision_makers_controller.ts","webpack://app/./app/javascript/controllers/key_decision_makers_download_controller.ts","webpack://app/./app/javascript/controllers/loading_overlay_controller.ts","webpack://app/./app/javascript/controllers/modal_controller.ts","webpack://app/./app/javascript/controllers/modal_reveal_controller.ts","webpack://app/./app/javascript/controllers/notifications_controller.ts","webpack://app/./app/javascript/controllers/popover_controller.ts","webpack://app/./app/javascript/controllers/popup_controller.ts","webpack://app/./app/javascript/controllers/reveal_content_controller.ts","webpack://app/./app/javascript/controllers/semi_circle_donut_chart_controller.ts","webpack://app/./app/javascript/ui/textarea.jsx","webpack://app/./app/assets/images/icons/envelope.svg","webpack://app/./app/assets/images/icons/link.svg","webpack://app/./app/javascript/share_notice/index.jsx","webpack://app/./app/javascript/controllers/share_notice_modal_controller.ts","webpack://app/./app/javascript/controllers/charts/area_chart.js","webpack://app/./app/javascript/controllers/trend_by_buyer_chart_controller.ts","webpack://app/./app/javascript/controllers/charts/value_volume_chart.js","webpack://app/./app/javascript/controllers/trend_over_time_chart_controller.ts","webpack://app/./app/javascript/controllers/index.ts","webpack://app/./app/javascript/supplier_group_state_manager.js","webpack://app/./app/javascript/ui/button.jsx","webpack://app/./app/assets/images/icons/checkbox-minus.svg","webpack://app/./app/javascript/ui/half_selected_checkbox.jsx","webpack://app/./app/javascript/hooks/fetcher.js","webpack://app/./app/javascript/hooks/useSupplierGroup.js","webpack://app/./app/assets/images/right.svg","webpack://app/./app/assets/images/down.svg","webpack://app/./app/javascript/ui/supplier_group.jsx"],"sourcesContent":["var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nconst SvgGroup = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 21,\n height: 21,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DEE3DF\",\n d: \"M4 21a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4h13a4 4 0 0 1 4 4v13a4 4 0 0 1-4 4H4Z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#505D52\",\n d: \"M15.046 11.864h-.91V10.5a.454.454 0 0 0-.454-.454h-2.728v-.91h.91a.454.454 0 0 0 .454-.454V5.955a.454.454 0 0 0-.454-.455H9.136a.455.455 0 0 0-.454.455v2.727a.455.455 0 0 0 .454.454h.91v.91H7.318a.454.454 0 0 0-.454.454v1.364h-.91a.454.454 0 0 0-.454.454v2.728a.455.455 0 0 0 .455.454h2.727a.455.455 0 0 0 .454-.454v-2.728a.454.454 0 0 0-.454-.454h-.91v-.91h5.455v.91h-.909a.454.454 0 0 0-.454.454v2.728a.455.455 0 0 0 .454.454h2.728a.455.455 0 0 0 .454-.454v-2.728a.455.455 0 0 0-.454-.454Zm-6.819.909v1.818H6.41v-1.818h1.818Zm1.364-4.546V6.41h1.818v1.818H9.591Zm5 6.364h-1.818v-1.818h1.818v1.818Z\"\n})));\nexport default SvgGroup;","import type { Options } from 'highcharts';\nimport * as Highcharts from 'highcharts';\nimport { merge as deepMerge } from 'lodash';\n// @ts-expect-error chartFontFamily is an array of strings\nimport { chartFontFamily } from './constants';\nimport exporting from 'highcharts/modules/exporting';\nimport offlineExporting from 'highcharts/modules/offline-exporting';\nimport accessibility from 'highcharts/modules/accessibility';\n\n// Create a type alias for Highcharts to avoid circular reference issues\ntype HighchartsType = typeof Highcharts;\n\nexport const highchartsOptionsWithExporting = function(Highcharts: HighchartsType, overrides: Options = {}): Options {\n exporting(Highcharts);\n offlineExporting(Highcharts);\n accessibility(Highcharts);\n\n const options = highchartsOptions(Highcharts, {\n // See https://api.highcharts.com/highcharts/exporting\n exporting: {\n chartOptions: {\n chart: {\n backgroundColor: 'white',\n },\n plotOptions: {\n column: {\n pointPadding: 0.2,\n pointWidth: undefined, // Ensure this value is not defined.\n }\n }\n },\n scale: 1.25,\n sourceWidth: 1280,\n sourceHeight: 540,\n buttons: {\n contextButton: {\n enabled: false \n },\n // Frustratingly, this is undocumented in the Highcharts API.\n exportButton: {\n // See https://api.highcharts.com/highcharts/exporting.buttons.contextButton.menuItems\n menuItems: [\n 'downloadPNG',\n 'downloadPDF'\n ],\n theme: {\n fill: 'transparent',\n // See https://api.highcharts.com/highcharts/plotOptions.series.states\n states: {\n hover: {\n fill: 'transparent'\n },\n select: {\n fill: 'transparent'\n }\n }\n },\n useHTML: true,\n text: `\n \n Export\n
\n \n \n \n \n
\n \n `\n }\n },\n // See https://api.highcharts.com/highcharts/exporting.menuItemDefinitions\n menuItemDefinitions: {\n // viewFullscreen: {},\n // printChart: {},\n // separator: {},\n downloadPNG: {\n onclick: onDownload({ exportFormat: 'PNG' }),\n text: 'Download chart as a PNG image'\n },\n // downloadJPEG: {},\n // downloadSVG: {},\n downloadPDF: {\n onclick: onDownload({ exportFormat: 'PDF' }),\n text: 'Download chart as a PDF'\n }\n }\n },\n navigation: {\n buttonOptions: {\n align: 'left',\n verticalAlign: 'bottom'\n },\n menuItemStyle: {\n fontFamily: chartFontFamily.join(','),\n fontSize: '14px',\n letterSpacing: '0',\n lineHeight: '18px',\n padding: '0.5em'\n },\n menuStyle: {\n padding: '0',\n backgroundColor: 'rgb(249 250 251)',\n border: '1px solid rgb(249 250 251)',\n color: 'rgb(75 85 99)',\n boxShadow: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)'\n },\n menuItemHoverStyle: {\n backgroundColor: 'rgb(229 231 235)',\n color: 'rgb(17 24 39)'\n }\n }\n });\n\n return deepMerge(options, overrides);\n};\n\nexport const highchartsOptions = function(Highcharts: HighchartsType, overrides: Options = {}): Options {\n // Set default options for Highcharts.\n const options: Options = {\n // Tussell green\n colors: ['#0e9c1b'],\n chart: { backgroundColor: 'none' },\n lang: { numericSymbols: ['K', 'M', 'B', 'T', 'Q', 'Qi'] },\n tooltip: {\n backgroundColor: '#000000',\n borderColor: '#000000',\n formatter: function() {\n const date = Highcharts.dateFormat('%Y', new Date(this.x).getTime());\n return '

' + date + ': £' + toHumanNumber(typeof this.y === 'number' ? this.y : 0) + '

';\n }\n },\n // Removes highcharts.com credit link\n credits: { enabled: false }\n };\n\n return deepMerge(options, overrides);\n};\n\n// Convert a number to a human-readable format with abbreviated units (K, M, B)\nexport const toHumanNumber = (number: number): string => {\n const units = ['B', 'M', 'K'];\n const divisors = [1e9, 1e6, 1e3];\n\n for (let i = 0; i < divisors.length; i++) {\n if (number >= divisors[i]) {\n return (number / divisors[i]).toFixed(1).replace(/\\.0$/, '') + units[i];\n }\n }\n\n return number.toString();\n};\n\n// Map the export format to the MIME type\nconst formatMapper = (exportFormat: string): string => {\n switch (exportFormat) {\n case 'PNG':\n return 'image/png';\n case 'PDF':\n return 'application/pdf';\n default:\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== 'undefined') {\n // @ts-expect-error as above.\n window.Rollbar.error(`Unknown export format: ${exportFormat}`);\n }\n return 'image/png';\n }\n};\n\n\n// Download the chart as a file\nconst onDownload = (options: { exportFormat: string }) => function() {\n this.exportChart(\n {\n type: formatMapper(options.exportFormat),\n filename: 'chart'\n }\n );\n const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content');\n\n fetch('/charts/downloads', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': typeof csrfToken === 'string' ? csrfToken : ''\n },\n body: JSON.stringify({\n export_format: options.exportFormat\n })\n })\n .then(response => {\n if (!response.ok) {\n throw new Error('Failed to log chart download event');\n }\n })\n .catch(error => {\n console.error(error.message);\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== 'undefined') {\n // @ts-expect-error Rollbar as above.\n window.Rollbar.error(error.message);\n }\n });\n};\n\nexport default {\n highchartsOptions,\n highchartsOptionsWithExporting,\n toHumanNumber\n};\n","import { Application } from '@hotwired/stimulus';\n\ndeclare global {\n interface Window {\n Stimulus: Application;\n }\n}\n\nconst application = Application.start();\n\n// Configure Stimulus development experience\napplication.debug = false;\nwindow.Stimulus = application;\n\nexport { application };\n","import { Controller } from \"@hotwired/stimulus\";\n\nexport default class ButtonController extends Controller{\n static targets = ['button'];\n static values = { text: String };\n\n declare buttonTarget: HTMLButtonElement;\n declare textValue: string;\n\n disable(): void {\n this.buttonTarget.disabled = true;\n this.buttonTarget.innerText = this.textValue;\n }\n\n enable(): void {\n this.buttonTarget.disabled = false;\n }\n}\n","// This controller is for changing the opacity of the svg we use for our\n// personalised checkboxes.\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class CheckboxController extends Controller {\n static targets = ['checkbox', 'svg'];\n\n declare checkboxTarget: HTMLInputElement;\n declare svgTarget: HTMLImageElement;\n\n // Upon connection, this displays the checkbox correctly if checked\n connect(): void {\n if (this.checkboxTarget.checked) {\n this.svgTarget.style.opacity = '1';\n }\n }\n\n changeCheckbox(): void {\n if (this.checkboxTarget.checked) {\n this.svgTarget.style.opacity = '1';\n } else {\n this.svgTarget.style.opacity = '0';\n }\n }\n}\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nconst SvgArrowLeft = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 10 10\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M8.75 4.25H3.058l2.475-2.467A.753.753 0 0 0 4.468.718l-3.75 3.75a.75.75 0 0 0-.158.247.75.75 0 0 0 0 .57.75.75 0 0 0 .158.248l3.75 3.75a.75.75 0 0 0 1.065 0 .75.75 0 0 0 0-1.065L3.058 5.75H8.75a.75.75 0 0 0 0-1.5Z\"\n})));\nexport default SvgArrowLeft;","import React from 'react';\nimport PropTypes from 'prop-types';\n\n// Component to render primary, secondary, tertiary and disabled buttons\n// Usage:\n// Submit\nexport default function Link(props) {\n const { type, onClick, href, disabled, children } = props;\n\n const baseStyles = 'flex items-center gap-x-1.5 py-1.5 px-2 rounded font-medium';\n\n const styles = {\n primary: `${baseStyles} bg-green-500 hover:bg-green-700 text-grey-50`,\n secondary: `${baseStyles} bg-grey-700 hover:bg-grey-800 text-grey-500`,\n tertiary: `${baseStyles} bg-grey-200 hover:bg-grey-400 text-grey-700`,\n selected: `${baseStyles} bg-green-700 hover:bg-green-900 text-grey-50`,\n disabled: `${baseStyles} bg-grey-200 text-grey-500 cursor-not-allowed`\n };\n\n // Set button styles based on type.\n // Default to primary.\n let buttonStyles = 'primary';\n if (disabled) {\n buttonStyles = styles.disabled;\n } else if (type === 'selected') {\n buttonStyles = styles.selected;\n } else {\n buttonStyles = styles[type];\n }\n\n return (\n \n {children}\n \n );\n}\n\nLink.propTypes = {\n type: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n href: PropTypes.string,\n disabled: PropTypes.bool,\n children: PropTypes.node\n};\n","// This file is based on `SupplierAutosuggestFilter`, but with key differences:\n// - It only handles `exact` and `group` supplier selections.\n// - Users cannot deselect a list of suppliers by clicking on their supplier group name.\n// - Includes form submission logic with AJAX and error handling.\n// The refactoring extracts shared logic while simplifying the competitor selection process.\n\nimport React, { Component } from \"react\";\nimport $ from 'jquery';\nimport Rails from '@rails/ujs';\nimport update from \"immutability-helper\";\n\nimport SupplierGroupStateManager from \"../supplier_group_state_manager\";\n\nimport AutosuggestWrapper from \"../filters/autosuggest/autosuggest_wrapper\";\nimport Button from \"../ui/button\";\nimport BackIcon from \"../../assets/images/icons/arrow-left.svg\";\nimport Link from \"../ui/link\";\nimport SupplierGroupIcon from \"../../assets/images/icons/group.svg\";\nimport SelectedCheckbox from \"../ui/selected_checkbox\";\nimport SupplierGroup from \"../ui/supplier_group\";\n\nexport default class CompetitorsListAutosuggest extends Component {\n constructor(props) {\n super(props);\n this.state = {\n suppliers: {\n exact: [],\n group: {}\n },\n alertMessage: null,\n loading: false\n };\n }\n\n // Initialize the group manager to track the selected supplier groups.\n componentDidMount() {\n this.groupManager = new SupplierGroupStateManager(\n this.state.suppliers.group,\n (updateObj) => this.handleGroupInputChange(\"group\", updateObj)\n );\n }\n\n // Updates the state when a supplier group is selected/modified. \n handleGroupInputChange = (filter, updateObj) => {\n this.setState((prevState) =>\n update(prevState, {\n suppliers: {\n [filter]: {\n $apply: (existingGroups = {}) => updateObj.group.$apply(existingGroups)\n },\n },\n })\n );\n };\n\n // Removes the suppliers from the selected list.\n handleDeselect = (filter, index) => {\n this.setState((prevState) =>\n update(prevState, {\n suppliers: { [filter]: { $splice: [[index, 1]] } }\n })\n );\n };\n\n // Adds a supplier or a supplier_groups' suppliers to the selected list.\n handleFieldChange = (suggestion) => {\n if (suggestion.suggestionType === \"group\" || suggestion.groupName) {\n return this.groupManager.handleChange(\"select\", suggestion);\n }\n this.setState((prevState) =>\n update(prevState, { suppliers: { exact: { $push: [suggestion] } } })\n );\n };\n\n renderLocation(option) {\n const location = [option.city, option.country]\n .filter((a) => { return a !== null; })\n .join(', ');\n\n return
\n {location}\n
;\n }\n\n // Prevent already selected suppliers from appearing in the supplier auto suggestions.\n shouldRenderSuggestion = (suggestion) => {\n if (typeof suggestion === \"string\") return true;\n const { exact } = this.state.suppliers;\n const buildSuggestionId = (supplier) => `supplier-${supplier.id}`;\n const suggestionsToIgnore = [\n ...exact.map(buildSuggestionId),\n ...this.groupManager.resultsToIgnore(),\n ];\n return !suggestionsToIgnore.includes(suggestion.suggestionId);\n };\n\n // Display the selected suppliers.\n renderSuggestion = (option, additionalClasses = \"\") => {\n return (\n
\n {option.suggestionType === \"group\" && (\n \n )}\n
\n
{option.name}
\n {option.suggestionType === \"supplier\" && this.renderLocation(option)}\n
\n
\n );\n };\n\n handleSubmit = () => {\n const { suppliers } = this.state;\n this.setState({ loading: true })\n\n const exactSupplierIds = suppliers.exact.map((supplier) => supplier.id);\n const groupSupplierIds = Object.values(suppliers.group).flatMap(group =>\n group.suppliers.map(supplier => supplier.id)\n );\n const supplierIds = [...exactSupplierIds, ...groupSupplierIds];\n\n this.request = $.ajax({\n type: \"POST\",\n url: \"/saved_competitors/bulk_create\",\n data: {\n authenticity_token: Rails.csrfToken() || \"\",\n supplier_ids: supplierIds,\n origin: \"Competitors page\",\n },\n success: () => {\n window.location.reload();\n },\n error: () => {\n this.setState({\n loading: false,\n alertMessage: \"Whoops! Something went wrong. Please try again.\"\n })\n },\n });\n }\n\n render = () => {\n const { suppliers, loading, alertMessage } = this.state;\n const handleGroupChange = this.groupManager?.handleChange.bind(this.groupManager);\n const groups = this.groupManager?.getGroups() || [];\n const hasSelectedSuppliers = suppliers.exact.length > 0 || Object.keys(suppliers.group).length > 0;\n // If the user navigated from a page within the Tussell website, allow them to go back normally. \n // Otherwise, redirect them to the suppliers page.\n const backUrl = document.referrer.includes(window.location.origin) ? document.referrer : \"/suppliers\";\n\n if (alertMessage) alert(alertMessage)\n\n return (\n
\n

Build your competitors list below to get started

\n option.name || option}\n itemsProps=\"py-1\"\n renderSuggestion={(suggestion) => this.renderSuggestion(suggestion, \"py-1 px-2 items-center hover:bg-grey-200\")}\n shouldRenderSuggestion={this.shouldRenderSuggestion}\n />\n { hasSelectedSuppliers && \n
\n
Supplier name
\n {suppliers.exact.map((supplier, i) => (\n
\n this.handleDeselect(\"exact\", i)}\n label={supplier.name}\n labelClasses=\"text-grey-900\"\n />\n {this.renderLocation(supplier)}\n \n ))}\n {groups.map((group) => (\n (\n
\n {supplier.name}\n {this.renderLocation(supplier)}\n
\n )}\n handleChange={handleGroupChange}\n label={this.renderSuggestion(group)}\n displayCheckbox={false}\n />\n ))}\n
\n }\n
\n this.handleSubmit(e)}\n >\n Confirm\n \n \n \n Back\n \n
\n
\n );\n };\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\nimport CompetitorsListAutosuggest from \"../competitors_list_autosuggest\";\n\n// Controller to render the competitors search input\nexport default class CompetitorsModalController extends Controller {\n static targets = [\"content\"];\n\n declare contentTarget: HTMLElement;\n\n connect(): void { \n ReactDOM.render(\n React.createElement(CompetitorsListAutosuggest),\n this.contentTarget,\n );\n }\n}\n","import $ from 'jquery';\n\n// AJAX request for displaying the data table below the value-volume or area\n// graph. Fetches the data for a selected point on the graph, and the\n// reordered data when a user clicks on a sortable column title.\nexport default function displayDataTable(url, data) {\n $.ajax({\n url,\n data,\n dataType: 'html',\n beforeSend: toggleOverlay,\n success: function(html) {\n $('#js-data-table').html(html);\n },\n error: function() {\n console.error('Failed to load data table');\n if (window.Rollbar) {\n window.Rollbar.error('Failed to load data table');\n }\n },\n complete: function() {\n $('#js-data-table').css({ opacity: 1 });\n toggleOverlay();\n }\n });\n}\n\n// Function to reveal or hide the loading overlay.\nfunction toggleOverlay() {\n const loadingOverlay = document.getElementById('js-table-loading');\n if (loadingOverlay) {\n loadingOverlay.classList.toggle('hidden');\n loadingOverlay.classList.toggle('absolute');\n }\n}\n","import Highcharts, { Chart, dateFormat } from \"highcharts\";\nimport { highchartsOptions, toHumanNumber } from \"../../highchart_options\";\nimport { map as lodashMap, max as lodashMax } from \"lodash\";\nimport displayDataTable from \"../tables/data_table\";\nimport { chartFontFamily } from \"../../constants\";\n\n/*\n * Constructs a value/volume chart (based on value_volume_chart),\n * but without automatically selecting a bucket (bar) on initial render.\n *\n * By default, no bucket is selected, so the table displays all contracts\n * within the full time range of the chart.\n *\n * Users can manually select a bucket to filter results for that time period,\n * or deselect it to remove the filter and return to the full dataset.\n*/\n/*\n - seriesA & seriesB: hashes containing the title (string) and\n data (nested arrays) for each series\n e.g. seriesA = {title: \"Contract values\", data: @values_array]}\n\n Highcharts expects to receive an array for each series, with nested array\n points e.g. @values_array = [[y], [y], [y]\n\n - categories: The x-axis values. These are separate from the y-axis values\n to force Highcharts to treat it as discrete data and label it correctly.\n\n - bucketSize: Size of the column widths as a string e.g. \"day\", \"month\",\n \"quarter\".\n\n - uuid: The uuid to identify the search. Passed through when sending AJAX\n requests for drilled down data.\n\n - tableUrl: The URL to request a table of data (when clicking on a point in\n the chart).\n*/\nexport default function competitorsValueVolumeChart(\n seriesA,\n seriesB,\n categories,\n bucketSize,\n uuid,\n dateline,\n tableUrl\n) {\n // 🤯\n const magnitude = (n) => {\n const order = Math.floor(Math.log(n) / Math.LN10 + 0.000000001);\n return Math.pow(10, order);\n }\n\n // Maximum tick position is the maximum n rounded to the nearest magnitude(n)-1\n const maximumTickForSeries = (series) => {\n const max = lodashMax(series);\n const mag = magnitude(max) / 10;\n\n return Math.ceil(max / mag) * mag;\n }\n\n const seriesAMax = maximumTickForSeries(lodashMap(seriesA.data, function(x) { return parseFloat(x); }));\n const seriesBMax = maximumTickForSeries(seriesB.data);\n\n // Top margin above plot\n const TOP_MARGIN = 25;\n\n // Render Highcharts chart\n const chart = new Chart(\n \"js-chart-container\",\n highchartsOptions(\n Highcharts,\n {\n accessibility: {\n enabled: false\n },\n chart: {\n // Magic height number from Figma\n height: 304,\n marginTop: TOP_MARGIN\n },\n // Remove default title\n title: { text: \"\" },\n xAxis: {\n type: \"datetime\",\n tickLength: 0,\n crosshair: true,\n categories: parseDateSeries(categories),\n labels: {\n style: {\n fontSize: \"10px\",\n color: \"#99A89B\",\n fontFamily: chartFontFamily.join(\", \")\n },\n formatter: function() {\n return xAxisFormatter.call(this);\n }\n }\n },\n yAxis: [{\n // y-axis label for the first series, displayed on the left hand side\n title: { text: null },\n tickAmount: 3,\n tickPositions: [0, seriesAMax / 2, seriesAMax],\n min: 0,\n labels: {\n style: {\n fontSize: \"10px\",\n color: \"#99A89B\",\n fontFamily: chartFontFamily.join(\", \")\n },\n formatter: function() {\n return \"£\" + toHumanNumber(this.value);\n }\n }\n }, {\n // y-axis label for second series, displayed on the right hand side\n title: { text: null },\n tickPositions: [0, seriesBMax / 2, seriesBMax],\n opposite: true,\n gridLineWidth: 0,\n labels: {\n style: {\n fontSize: \"10px\",\n color: \"#99A89B\",\n fontFamily: chartFontFamily.join(\", \")\n },\n formatter: function() {\n return toHumanNumber(this.value);\n }\n }\n }],\n plotOptions: {\n series: {\n borderRadius: 0,\n allowPointSelect: true,\n cursor: \"pointer\",\n marker: {\n enabled: false,\n states: {\n hover: {\n lineWidth: 0,\n radius: 0\n },\n select: {\n enabled: false\n }\n }\n },\n point: {\n events: {\n select: function() {\n onPointSelect.call(this);\n },\n unselect: function() {\n onPointDeselect.call(this);\n }\n }\n }\n }\n },\n series: [{\n name: seriesA.title,\n data: parseStringToInteger(seriesA.data),\n type: \"line\",\n color: \"#005E09\",\n zIndex: 1\n }, {\n name: seriesB.title,\n data: seriesB.data,\n type: \"column\",\n // Light green column\n color: \"#D1F2CF\",\n borderWidth: 0,\n yAxis: 1,\n groupPadding: 0,\n pointPadding: 0.2,\n states: {\n // Selected column\n select: { color: \"#0E9C1B\" },\n hover: {\n color: \"#0E9C1B\"\n }\n }\n }],\n legend: {\n itemStyle: {\n fontWeight: \"normal\",\n fontSize: \"12px\",\n color: \"#99A89B\",\n fontFamily: chartFontFamily.join(\", \")\n },\n align: \"right\"\n },\n tooltip: {\n backgroundColor: \"#FAFBFA\",\n borderColor: \"#E9ECE9\",\n borderRadius: 4,\n borderWidth: 1,\n outside: true,\n stickOnContact: true,\n padding: 5,\n shadow: {\n color: \"#005E09\",\n opacity: 0.02,\n offsetX: 0,\n offsetY: 0,\n width: 8\n },\n formatter: function() {\n const date = new Date(this.x);\n const dataInfo = [];\n\n // First, add a date\n switch (bucketSize) {\n case \"day\": {\n // A full date\n dataInfo.push(dateFormat(\"%e %b %Y\", date));\n break;\n }\n case \"week\": {\n dataInfo.push(`W${weekNumber(date)} ${date.getFullYear()}`);\n break;\n }\n case \"month\": {\n // A full-ish date\n dataInfo.push(dateFormat(\"%b %Y\", date));\n break;\n }\n case \"quarter\": {\n dataInfo.push(`Q${quarter(date)} ${date.getFullYear()}`);\n break;\n }\n case \"year\": {\n dataInfo.push(date.getFullYear());\n break;\n }\n }\n\n // Then the values from each plot\n this.points.forEach(function(point) {\n if (point.series.name.includes(\"value\")) {\n dataInfo.push(\"Value: £\" + toHumanNumber(point.y));\n } else {\n dataInfo.push(\"Volume: \" + toHumanNumber(point.y));\n }\n });\n\n // Combine them in a
\n return `\n
\n ${dataInfo.map((dataString) => `
${dataString}
`).join(\"\")}\n
\n `;\n },\n positioner: function(labelWidth, labelHeight, point) {\n // Offset the tooltip to be above the top of the actual graph area.\n const y = this.chart.plotTop - labelHeight - 6;\n // Center the tooltip horizontally on the point.\n const x = point.plotX + this.chart.plotLeft - labelWidth / 2;\n return { x, y };\n },\n shared: true,\n // Support rendering HTML in the tooltip\n useHTML: true\n }\n }\n )\n );\n\n // On initial load, no buckets should be selected.\n // This ensures the graph and all contracts are shown without any filters applied.\n if (chart.series[0].points.length > 0) {\n showFullDataset();\n }\n\n // Internal: Handles when a point is selected on a series.\n function onPointSelect() {\n // Trigger AJAX send\n displayDataTable(tableUrl, {\n bucket: categories[parseInt(this.x, 10)],\n bucket_size: bucketSize,\n uuid,\n dateline,\n mixpanel_clicked_event: true\n });\n\n // After this event has finished, set the state of corresponding series\n // points to selected.\n //\n // This is a little quirky!\n const seriesIndex = this.series.index;\n return setTimeout(selectCorrespondingSeries.bind(this, seriesIndex), 0);\n }\n\n // Internal: Handles when a point is unselected on a series.\n function onPointDeselect() {\n const point = this.series.points[parseInt(this.x, 10)]\n if (point.selected) {\n showFullDataset();\n }\n }\n\n // Internal: Handles when the page first loads or when a point is unselected.\n // No buckets are selected.\n function showFullDataset() {\n const bucket_start_date = categories.at(0)\n const bucket_end_date = categories.at(-1)\n displayDataTable(tableUrl, {\n bucket: bucket_start_date,\n bucket_end: bucket_end_date,\n uuid,\n dateline\n });\n }\n\n // Internal: Loop through all the other series on the chart and select them.\n //\n // seriesIndex - index of the series that was selected\n function selectCorrespondingSeries(seriesIndex) {\n // Get all the series in the chart\n const series = this.series.chart.series;\n // Loop over them\n for (let i = 0; i < series.length; i++) {\n // If its not the series that was just clicked...\n if (series[i].index !== seriesIndex) {\n const point = series[i].points[this.index];\n // This is a little undocumented. Take a look at what Highcharts\n // does: https://github.com/highcharts/highcharts/blob/6c73edc2e561a950abbbe5d5d5eeeea410cfe99c/js/parts/Interaction.js#L500\n point.selected = true;\n point.setState(\"select\");\n }\n }\n }\n\n // Internal: Format an x-axis label. They\"re similar to the tooltip labels\n // but also include the short year if its the first item in the x axis,\n // or the first month of the year.\n //\n // Example:\n //\n // // When the value is in January\n // xAxisFormatter()\n // \"Jan 17\"\n //\n // // When the value is half way through a year and not the first element\n // xAxisFormatter()\n // \"Mar\"\n function xAxisFormatter() {\n const date = new Date(this.value);\n\n // Do nothing with year labels\n if (bucketSize === \"year\") { return date.getFullYear(); }\n\n let label;\n\n switch (bucketSize) {\n case \"day\": {\n label = dateFormat(\"%e %b\", date);\n break;\n }\n case \"week\": {\n label = `W${weekNumber(date)}`;\n break;\n }\n case \"quarter\": {\n label = `Q${quarter(date)}`;\n break;\n }\n case \"year\": {\n label = date.getFullYear();\n break;\n }\n default: {\n label = dateFormat(\"%b\", date);\n break;\n }\n }\n\n const month = date.getMonth();\n const dayOfMonth = date.getDate();\n const shouldShowYear = (month === 0 && (bucketSize !== \"day\" || dayOfMonth === 1));\n\n if (\n this.isFirst ||\n shouldShowYear\n ) {\n label = `${label} \"${shortYear(date)}`;\n }\n\n return label;\n }\n\n // Date parses the first argument of each point in the data array. Returns\n // number of milliseconds since epoch, which is formatted by Highcharts by\n // specifying x-axis type of \"datetime\" (see above config)\n function parseDateSeries(data) {\n if (!data) { return []; }\n return data.map(function(date) {\n return Date.parse(date);\n });\n }\n\n // Parses all elements of array from string to integer.\n function parseStringToInteger(data) {\n if (!data) { return []; }\n return data.map(function(str) {\n return parseInt(str, 10);\n });\n }\n\n function weekNumber(date) {\n const onejan = new Date(date.getFullYear(), 0, 1);\n return Math.ceil((((date - onejan) / 86400000) + onejan.getDay() + 1) / 7);\n }\n\n function quarter(date) {\n const month = date.getMonth();\n return ~~(month / 3) + 1;\n }\n\n // Last two digits of the year\n function shortYear(date) {\n return date.getFullYear().toString().match(/\\d{2}$/);\n } \n}","import { Controller } from \"@hotwired/stimulus\";\nimport competitorsValueVolumeChart from \"./charts/competitors_value_volume_chart\";\nimport displayDataTable from \"./tables/data_table\";\n\n// Controller to load the Trend over Time graph on the competitors feed.\nexport default class CompetitorsTrendOverTimeChartController extends Controller {\n static values = {\n seriesA: Object,\n seriesB: Object,\n categories: Array,\n bucketSize: String,\n uuid: String,\n dateline: String,\n url: String\n };\n\n declare seriesAValue: object;\n declare seriesBValue: object;\n declare categoriesValue: string[];\n declare bucketSizeValue: string;\n declare uuidValue: string;\n declare datelineValue: string;\n declare urlValue: string;\n\n connect(): void {\n // Render the chart and the table\n competitorsValueVolumeChart(\n this.seriesAValue,\n this.seriesBValue,\n this.categoriesValue,\n this.bucketSizeValue,\n this.uuidValue,\n this.datelineValue,\n this.urlValue\n );\n\n // Paginate the data table below the value-volume graph.\n document.addEventListener(\"DOMContentLoaded\", function () {\n const dataTable = document.getElementById(\"js-data-table\");\n if (dataTable === null) return;\n dataTable.addEventListener(\"click\", function (e) {\n if (e.target === null) return;\n const target = e.target as HTMLAnchorElement;\n if (target.matches(\"#js-pagination a\") || target.matches(\"th a\")) {\n e.preventDefault();\n displayDataTable(target.href);\n }\n });\n });\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport type NotificationsController from './notifications_controller';\nimport Rails from '@rails/ujs';\n\n// This controller is used to create a download, update the notifications pane,\n// and open then pane.\nexport default class DownloadsController extends Controller {\n BUTTON_TIMEOUT = 3000;\n static targets = ['button'];\n declare buttonTarget: HTMLButtonElement;\n static outlets = [ 'notifications' ];\n declare notificationsOutlet: NotificationsController;\n\n // This function submits the form, updates the notifications pane content,\n // and opens the pane.\n async submitAndRender(): Promise {\n const form = this.element;\n // First, disable the button so we don't submit the form twice.\n this.buttonTarget.disabled = true;\n try {\n const response = await fetch(form.action, {\n method: form.method,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-TOKEN': Rails.csrfToken(),\n },\n // This as any is a hack to get around the fact that FormData might\n // contain a File object. In that case, FormData cannot be turned\n // into a URLSearchParams. We know that this form doesn't contain\n // a File object, but Typescript doesn't.\n // See: https://github.com/microsoft/TypeScript/issues/30584\n body: new URLSearchParams(new FormData(form) as any)\n });\n const parsedResponse = await response.json();\n // update the DOM first so we don't see a random flash of the new content\n this.notificationsOutlet.updateDOM(parsedResponse);\n } catch (error) {\n // This isn't such a big issue as we open the notifications pane anyway.\n // And it starts polling the server for updates.\n console.log(error);\n }\n // Finally open the pane\n void this.notificationsOutlet.open();\n // Re-enable the button after 3 seconds\n setTimeout(() => { this.buttonTarget.disabled = false; }, this.BUTTON_TIMEOUT);\n }\n}","import { Controller } from '@hotwired/stimulus';\nimport {\n computePosition, offset, flip, shift, type Placement, type Middleware\n} from '@floating-ui/dom';\n\n// This is the type of the CustomEvent that is dispatched when a dropdown\n// is opened. It contains a reference to the dropdown controller that is\n// opening the dropdown and the groupKey of the dropdown group that the\n// dropdown belongs to.\ntype DropdownCustomEvent = CustomEvent<{\n openingDropdownController: DropdownController,\n groupKey: string\n}>;\n\n// StimulusJS controller to handle the dropdown component.\nexport default class DropdownController extends Controller {\n // There is a slight delay between hovering over the button and the dropdown\n // opening. This is to prevent the dropdown from opening when the user is\n // just passing over the button on their way to something else.\n OPEN_DELAY = 50;\n // There is a slight delay between hovering out of the dropdown and the\n // dropdown closing. This is to prevent the dropdown from closing when the\n // user is moving their mouse from the button to the dropdown.\n CLOSE_DELAY = 250;\n // The options passed to the computePosition function.\n POSITION_OPTIONS: {\n placement: Placement,\n middleware: Middleware[]\n } = {\n placement: 'bottom-start', // Default to bottom-start\n middleware: [offset(6), flip(), shift({ padding: 5 })]\n };\n\n // Holding a reference to the timer allows us to cancel clear it if the user\n // hovers back over the button before the dropdown has closed.\n timer: NodeJS.Timeout | undefined;\n\n static targets = [ \"button\", \"dropdown\" ];\n declare dropdownTarget: HTMLDivElement;\n declare buttonTarget: HTMLLinkElement;\n\n static classes = [ \"hover\" ];\n declare hoverClasses: string[];\n\n static values = { position: String, groupKey: String };\n declare positionValue: Placement;\n declare groupKeyValue: string;\n\n // The #update method is calculates the correct position for the dropdown\n // and is called when the dropdown is opened.\n async update(): Promise {\n const options = this.POSITION_OPTIONS;\n options.placement = this.positionValue;\n const button = this.buttonTarget;\n const dropdown = this.dropdownTarget;\n \n try {\n const { x, y } = await computePosition(button, dropdown, options);\n Object.assign(dropdown.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n } catch (error) {\n console.error('Error computing position:', { cause: error });\n }\n }\n \n\n // Open the dropdown when the user hovers over the button.\n open(): void {\n clearTimeout(this.timer);\n setTimeout(\n () => {\n // Transition the button's styling to the hover state\n this.buttonTarget.classList.add(...this.hoverClasses);\n // Reveal the dropdown\n this.dropdownTarget.style.display = 'block';\n // Position the dropdown\n void this.update();\n },\n this.OPEN_DELAY\n );\n // Close any other dropdowns in the same group\n this.dispatch('open', {\n target: window,\n detail: { openingDropdownController: this, groupKey: this.groupKeyValue }\n });\n }\n\n // This is the CustomEvent handler that is called when another dropdown\n // is opened. If the other dropdown is in the same group, then we close\n // this dropdown.\n onGroupOpen(e: DropdownCustomEvent): void {\n const isCorrectGroup = e.detail.groupKey === this.groupKeyValue;\n const isNotThisDropdown = e.detail.openingDropdownController !== this;\n if (isCorrectGroup && isNotThisDropdown) {\n this.closeImmediately();\n }\n }\n\n // There is a slight delay between hovering out of the dropdown and\n // the dropdown closing. This is to prevent the dropdown from closing\n // when the user is moving their mouse from the button to the dropdown.\n close(): void {\n this.timer = setTimeout(\n this.closeImmediately.bind(this),\n this.CLOSE_DELAY\n );\n }\n\n // We also expose a way to close the dropdown immediately. This is used\n // when the user hovers on another dropdown button.\n closeImmediately(): void {\n // Transition the button's styling from the hover state\n this.buttonTarget.classList.remove(...this.hoverClasses);\n // Remove the dropdown\n this.dropdownTarget.style.display = 'none';\n }\n}\n","import { Controller } from \"@hotwired/stimulus\";\nimport { toPng } from \"html-to-image\";\n\nconst CANVAS_MARGIN = 16;\nexport default class ElementDownloadController extends Controller {\n static targets = [\"button\"];\n static values = { filename: String };\n\n declare buttonTarget: HTMLButtonElement;\n declare filenameValue: string;\n\n connect(): void {\n this.buttonTarget.addEventListener(\"click\", this.onButtonClick.bind(this));\n }\n\n onButtonClick(): void {\n this.buttonTarget.disabled = true; // Disable the button.\n setTimeout(() => {\n this.downloadImage()\n .then(() => {\n console.log(`Downloaded \"${this.filenameValue}.png\" successfully`);\n \n const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content');\n \n fetch('/charts/downloads', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-TOKEN': typeof csrfToken === 'string' ? csrfToken : ''\n },\n body: JSON.stringify({\n export_format: 'PNG'\n })\n })\n .then(response => {\n if (!response.ok) {\n throw new Error('Failed to log chart download event');\n }\n })\n .catch(error => {\n console.error(error.message);\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== 'undefined') {\n // @ts-expect-error Rollbar as above.\n window.Rollbar.error(error.message);\n }\n });\n })\n .catch(error => {\n console.error(\"Error in onButtonClick:\", error);\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== \"undefined\") {\n // @ts-expect-error Rollbar is a global object as above.\n window.Rollbar.error(error);\n }\n })\n .finally(() => {\n setTimeout(() => {\n this.buttonTarget.disabled = false; // Re-enable the button after a short delay.\n }, 250);\n });\n }, 0);\n }\n\n duplicateElement(element: HTMLElement): HTMLElement {\n const duplicate = element.cloneNode(true) as HTMLElement;\n duplicate.style.width = `${element.offsetWidth}px`;\n document.body.appendChild(duplicate);\n return duplicate;\n }\n\n async downloadImage(): Promise {\n let element: HTMLElement | null = document.getElementById(\"element_download_wrapper_target\");\n if (element === null) {\n throw new Error(\"Element element_download_wrapper_target not found\");\n }\n element = this.duplicateElement(element);\n this.addLogoIcon(element);\n try {\n await this.withHiddenNoPrintElements(element, async () => {\n // See: https://www.npmjs.com/package/html-to-image#topng\n const dataUrl = await toPng(element, {\n cacheBust: true,\n backgroundColor: \"white\",\n width: element.offsetWidth + (CANVAS_MARGIN * 2),\n height: element.offsetHeight + (CANVAS_MARGIN * 5),\n style: {\n margin: `${CANVAS_MARGIN}px`,\n marginTop: `${CANVAS_MARGIN * 3}px`,\n width: `${element.offsetWidth}px`,\n height: `${element.offsetHeight}px`\n }\n });\n const link = document.createElement(\"a\");\n link.href = dataUrl;\n link.download = typeof this.filenameValue === \"string\" ? this.filenameValue : \"data.png\";\n link.click();\n });\n } finally {\n element.remove();\n }\n }\n\n async withHiddenNoPrintElements(element, callback: () => Promise): Promise {\n const noPrintElements = element.querySelectorAll(\".no-print\");\n noPrintElements.forEach(element => {\n (element as HTMLElement).style.display = \"none\";\n });\n\n await callback().finally(() => {\n noPrintElements.forEach(element => {\n (element as HTMLElement).style.removeProperty(\"display\");\n });\n });\n }\n\n addLogoIcon(element: HTMLElement): void {\n const svgElement = document.getElementById(\"site-logo\")?.cloneNode(true) as HTMLElement;\n if (svgElement === null) {\n console.error(\"Site logo not found\");\n // @ts-expect-error Rollbar is a global object.\n if (typeof window.Rollbar !== \"undefined\") {\n // @ts-expect-error Rollbar is a global object as above.\n window.Rollbar.error(\"Site logo not found for chart download\");\n }\n return;\n }\n svgElement.style.position = 'absolute';\n svgElement.style.top = `-${CANVAS_MARGIN * 2.5}px`;\n svgElement.style.right = `0`;\n svgElement.style.height = `${CANVAS_MARGIN * 2}px`;\n\n element.style.position = 'relative';\n element.appendChild(svgElement);\n }\n}\n","// This controller is used to enable a button once something has been selected.\n// This will be used in SavedContracts and SavedSearches\n\nimport { Controller } from \"@hotwired/stimulus\";\nexport default class EnableActionButtonController extends Controller {\n static targets = ['allCheckbox', 'checkbox', 'button', 'svg'];\n declare checkboxTargets: HTMLInputElement[];\n declare buttonTargets: HTMLButtonElement[];\n declare allCheckboxTarget: HTMLInputElement;\n declare svgTargets: HTMLElement[];\n\n select(): void {\n const someChecked = this.checkboxTargets.some(c => c.checked);\n \n if (someChecked) {\n this.buttonTargets.forEach(button => {\n button.disabled = false;\n this.svgClass('fill-grey-50');\n });\n } else {\n this.buttonTargets.forEach(button => {\n button.disabled = true;\n this.svgClass('fill-grey-500');\n });\n }\n }\n\n selectAll(): void {\n if (this.allCheckboxTarget.checked) {\n this.buttonTargets.forEach(button => {\n button.disabled = false;\n this.svgClass('fill-grey-50');\n });\n } else {\n this.buttonTargets.forEach(button => {\n button.disabled = true;\n this.svgClass('fill-grey-500');\n });\n }\n }\n\n svgClass(className: string): void {\n this.svgTargets.forEach(svg => {\n const orginalClass = svg.classList.value;\n svg.classList.remove(orginalClass);\n svg.classList.add(className);\n });\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\n// Controller to auto-submit a form on specific actions\nexport default class FormController extends Controller{\n static values = { action: String, method: String };\n declare readonly actionValue: string;\n declare readonly methodValue: string;\n declare readonly hasActionValue: boolean;\n declare readonly hasMethodValue: boolean;\n\n // Submit the form.\n // NOTE: You should use the Stimulus :prevent modifier to prevent the default\n // action of the element.\n // ie