{"version":3,"file":"static/js/components.8f71f6f8.js","mappings":"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,IACrB,MAAM,QAAEkS,GAAYlS,EAWpB,GATgB,KAAZkS,GAAkBJ,EAAS,IAC7B9R,EAAEgL,iBACF+G,EAAUD,EAAS,IAEL,KAAZI,GAAkBJ,EAASjN,EAAQ7H,OAAS,IAC9CgD,EAAEgL,iBAEF+G,EAAUD,EAAS,IAEL,KAAZI,GAAkBJ,GAAU,GAAKA,GAAUjN,EAAQ7H,OAAS,EAAG,CACjE,MAAMmV,EAAOtN,EAAQiE,QAAQkJ,IAC3BzW,GAA+B,IAAvByW,EAAI7E,QAAQ5R,KACpBuW,GAEFD,GAAc,GACdF,EAASQ,EACV,GAQD,WACE,SAACC,EAAA,EAAD,CACE9W,KAAK,SACLC,MAAOA,EACP0J,YAAaA,EACbzJ,SAAWwE,IACT6R,GAAc,GACVrW,aAAoB2O,UACtB3O,EAASwE,EACV,IAGJ0K,EAAO1N,OAAS,IACf,SAAC,SAAD,CACE8B,KAAMvD,GAASqW,EACfhW,UAAU,4BACVwJ,MAAO,CAAEiN,UAAW,OAAQC,UAAW,SAHzC,SAIG5H,EAAOzN,KAAI,CAAC+U,EAAK/N,KAEd,SAAC,SAAD,CAEErI,UAAY,IAAEkW,IAAW7N,EAAQ,SAAW,IAC5CzH,QAAUwD,IACRA,EAAEgL,iBACF6G,GAAc,GACdF,EAASK,EAAT,EANJ,SAQGA,GAPIA,SArBnB,ECzCIO,EAAmB,CACvB,OACA,KACA,MACA,IACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,SACA,KACA,SACA,KACA,UACA,MACA,SACA,eACA,OACA,OACA,MACA,OACA,MACA,SACA,KACA,SACA,KACA,UACA,OACA,MACA,MACA,QACA,MACA,OACA,MACA,MACA,QACA,MACA,MACA,OACA,QACA,MACA,OACA,OACA,MACA,KACA,aACA,MACA,MACA,MACA,OACA,SACA,KACA,QACA,MACA,OACA,OACA,MACA,WACA,KACA,MACA,WACA,KACA,SACA,MACA,SACA,aACA,KACA,OACA,QACA,QACA,KACA,SACA,SACA,MACA,MACA,MACA,aACA,UACA,MACA,MACA,KACA,OACA,KACA,MACA,OACA,OACA,OACA,OACA,OACA,eACA,WACA,KACA,SACA,MACA,UACA,IACA,KACA,OACA,UACA,UACA,OACA,MACA,KACA,OACA,QACA,SACA,OACA,QACA,UACA,MACA,QACA,aACA,KACA,OACA,QACA,KACA,OACA,OAGF,IAAIzD,EACJ,MAAM0D,EAAO,KACX,MAAM,EAAE/V,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,WAEnDqH,EAAO,CACXM,MAAO,OACPgK,OAAQ,CAAC,UACTH,IAAM,GAAE1R,EAAE,0BAGLgW,EAAMC,IAAWxM,EAAAA,EAAAA,UAAS,CAC/B3K,MAAO,GACPwI,WAAW,EACXU,SAAU,MAEL1G,EAAS4U,IAAczM,EAAAA,EAAAA,WAAS,IAChCiM,EAAMS,IAAW1M,EAAAA,EAAAA,UAAS,IAC3B2M,GAAWC,EAAAA,EAAAA,QAA4B,OAuB7CvL,EAAAA,EAAAA,YAAU,KACJxJ,GAAW8U,EAASE,SACtBF,EAASE,QAAQjD,OAClB,GACA,CAAC/R,IAkCJ,OACE,SAAC,EAAD,IAAciG,EAAMxH,QA3DLyS,IACfH,EAAUG,EAEV,MAAM,SAAER,EAAF,OAAYR,GAAWa,EAEvBtJ,EAAOsJ,EAAQb,OAAO+E,eAEvBxN,GAKDA,EAAKxI,OAbiB,GAcxB8R,EAAQL,SAAS,QAAS,SAE1BA,EAAS,IAAK,KAEhBR,EAAO6B,SATL6C,GAAW,EASb,EA0CA,UACE,UAAC9T,EAAA,EAAD,CACEC,KAAMf,EACNgB,OAPS,IAAM4T,GAAW,GAQ1BM,SAPW,4BAAMnE,EAAQb,cAAd,aAAM,EAAgB6B,OAAtB,EAQX9Q,WAAW,UAJb,WAKE,SAACH,EAAA,SAAD,CAAcI,aAAW,EAAzB,UACE,eAAIrD,UAAU,OAAd,SAAsBa,EAAE,sBAE1B,UAACoC,EAAA,OAAD,YACE,UAACyE,EAAA,QAAD,CAAYkI,UAAU,cAAc5P,UAAU,OAA9C,WACE,SAAC0H,EAAA,QAAD,UAAa7G,EAAE,kCACf,SAAC6G,EAAA,UAAD,CACEoF,IAAKmK,EACL1V,GAAG,WACH+H,KAAM,EACN3J,MAAOkX,EAAKlX,MACZwI,UAAW0O,EAAK1O,UAChBnI,UAAU,iBACVwJ,MAAO,CAAEpJ,OAAQ,SACjBR,SAAWwE,GAAM0S,EAAQ,IAAKD,EAAMlX,MAAOyE,EAAEyM,OAAOlR,UAErDkX,EAAK1O,YACJ,SAACT,EAAA,mBAAD,CAAuBhI,KAAK,UAA5B,SACGmX,EAAKhO,eAIZ,UAACnB,EAAA,QAAD,CAAYkI,UAAU,0BAA0B5P,UAAU,OAA1D,WACE,SAAC0H,EAAA,QAAD,UAAc,GAAE7G,EAAE,sCAAsCA,EACtD,WACA,CACEE,UAAW,cAGf,SAAC,EAAD,CACEkI,QAAS0N,EACThX,MAAO4W,EACP3W,SAAWwE,GAAM4S,EAAQ5S,EAAEyM,OAAOlR,OAClCoW,SAAWuB,GAAQN,EAAQM,GAC3BjO,YAAaxI,EAAE,kDAIrB,UAACoC,EAAA,SAAD,YACE,SAACK,EAAA,EAAD,CACE3C,QAAQ,OACRC,QAAS,KACPmW,GAAW,GACXD,EAAQ,CACNnX,MAAO,GACPwI,WAAW,EACXU,SAAU,IAHZ,EAJJ,SAUGhI,EAAE,sBAEL,SAACyC,EAAA,EAAD,CAAQ3C,QAAQ,UAAUC,QA1Fd,KAClB,IAAKiW,EAAKlX,MAAM8V,OAMd,YALAqB,EAAQ,IACHD,EACHhO,SAAUhI,EAAE,mCACZsH,WAAW,IAKf,IAAIxI,EAMFA,EAHAkX,EAAKlX,MAAM4X,MAAM,MAAMnW,OAAS,GAChCyV,EAAKlX,MAAMyB,QAzCa,GA2Cf,WAAUmV,MAASM,EAAKlX,kBAExB,KAAIkX,EAAKlX,UAEpBuT,EAAQb,OAAO4B,iBAAiBtU,GAChCmX,EAAQ,CACNnX,MAAO,GACPwI,WAAW,EACXU,SAAU,KAEZmO,EAAQ,IACRD,GAAW,EAAX,EA+DM,SACGlW,EAAE,6BA3Db,EAmEF,GAAe4Q,EAAAA,EAAAA,MAAKmF,GC/QpB,IAAI1D,EACJ,MAAM1R,EAAO,KACX,MAAM,EAAEX,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,WACnDqH,EAAO,CACXM,MAAO,OACPgK,OAAQ,CAAC,UACTH,IAAM,GAAE1R,EAAE,0BAELsB,EAAS4U,IAAczM,EAAAA,EAAAA,WAAS,IAChCkN,EAAMC,IAAWnN,EAAAA,EAAAA,UAAS,CAC/B3K,MAAO,WACPwI,WAAW,EACXU,SAAU,MAELnI,EAAMgX,IAAWpN,EAAAA,EAAAA,UAAS,CAC/B3K,MAAO,GACPwI,WAAW,EACXU,SAAU,KAENoO,GAAWC,EAAAA,EAAAA,QAAyB,OAE1CvL,EAAAA,EAAAA,YAAU,KACJxJ,GAAW8U,EAASE,UACtBF,EAASE,QAAQQ,kBAAkB,EAAGV,EAASE,QAAQxX,MAAMyB,QAC7D6V,EAASE,QAAQjD,QAClB,GACA,CAAC/R,IAEJ,MAUMwT,EAAc,KAClB,MAAM,OAAEtD,GAAWa,EAEnB,IAAKsE,EAAK7X,MAER,YADA8X,EAAQ,IAAKD,EAAMrP,WAAW,IAGhC,MAAMyP,EAASlX,EAAKf,MACf,IAAGe,EAAKf,UAAU6X,EAAK7X,SACvB,IAAG6X,EAAK7X,SAEb0S,EAAO4B,iBAAiB2D,GAExBb,GAAW,GAEX1E,EAAO6B,QACPuD,EAAQ,IAAKD,EAAM7X,MAAO,KAC1B+X,EAAQ,IAAKhX,EAAMf,MAAO,IAA1B,EAQF,OACE,iCACE,SAAC,EAAD,IAAcyI,EAAMxH,QArCPyS,IACfH,EAAUG,EACV,MAAM,OAAEhB,GAAWa,EAEbtJ,EAAOyI,EAAO+E,eAEpBM,EAAQ,IAAKhX,EAAMf,MAAOiK,IAE1BmN,GAAW,EAAX,KA8BE,UAAC9T,EAAA,EAAD,CACEC,KAAMf,EACNgB,OAXS,IAAM4T,GAAW,GAY1BM,SAXW,KACf,MAAM,OAAEhF,GAAWa,EACnBb,EAAO6B,OAAP,EAUI9Q,WAAW,UAJb,WAKE,SAACH,EAAA,SAAD,CAAcI,aAAW,EAAzB,UACE,eAAIrD,UAAU,OAAd,SAAsBa,EAAE,sBAE1B,SAACoC,EAAA,OAAD,WACE,UAACyE,EAAA,EAAD,CAAMkF,SAAU+I,EAAhB,WACE,UAACjO,EAAA,QAAD,CAAYkI,UAAU,sBAAsB5P,UAAU,OAAtD,WACE,SAAC0H,EAAA,QAAD,UAAa7G,EAAE,iCACf,SAAC6G,EAAA,UAAD,CACEoF,IAAKmK,EACLvX,KAAK,OACLC,MAAO6X,EAAK7X,MACZC,SAAWwE,GAAMqT,EAAQ,IAAKD,EAAM7X,MAAOyE,EAAEyM,OAAOlR,QACpDwI,UAAWqP,EAAKrP,gBAIpB,UAACT,EAAA,QAAD,CAAYkI,UAAU,0BAA0B5P,UAAU,OAA1D,WACE,SAAC0H,EAAA,QAAD,UAAc,GAAE7G,EAAE,kCAAkCA,EAClD,WACA,CACEE,UAAW,cAGf,SAAC2G,EAAA,UAAD,CACEhI,KAAK,OACLC,MAAOe,EAAKf,MACZC,SAAWwE,GAAMsT,EAAQ,IAAKhX,EAAMf,MAAOyE,EAAEyM,OAAOlR,QACpDwI,UAAWzH,EAAKyH,qBAKxB,UAAClF,EAAA,SAAD,YACE,SAACK,EAAA,EAAD,CAAQ3C,QAAQ,OAAOC,QAAS,IAAMmW,GAAW,GAAjD,SACGlW,EAAE,sBAEL,SAACyC,EAAA,EAAD,CAAQ3C,QAAQ,UAAUC,QAAS+U,EAAnC,SACG9U,EAAE,8BA7Cb,EAqDF,IAAe4Q,EAAAA,EAAAA,MAAKjQ,GCrHpB,IAAI0R,GACJ,MAAM2E,GAAa,KACjB,MAAM,EAAEhX,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,WAEnDqH,EAAO,CACXM,MAAO,aACPgK,OAAQ,CAAC,UACTH,IAAM,GAAE1R,EAAE,+BAoBZ,OAAO,SAAC,EAAD,IAAcuH,EAAMxH,QAjBNyS,IAAS,IAAD,EAC3BH,GAAUG,EACVH,GAAQJ,cAAcsB,IACpB,MAAM0D,EAAqB,UAS3B,OANE1D,EADEA,IAAU,KAAIvT,EAAE,qBACX,GACEuT,EAAKG,MAAMuD,GACb1D,EAAKL,QAAQ+D,EAAoB,IAEhC,KAAI1D,GAAQvT,EAAE,oBAExB,GACC,GACH,UAAAqS,GAAQb,cAAR,SAAgB6B,OAAhB,GAGF,EAGF,IAAezC,EAAAA,EAAAA,MAAKoG,I,wCCzBpB,IAAI3E,GACJ,MAAM6E,GAAQ,EAAGC,qBACf,MAAO3F,EAAQ4F,IAAa3N,EAAAA,EAAAA,UAAiB0N,IACvC,EAAEnX,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,WAEnD8K,EAAe,KAAIhL,EAAE,2BAErBuH,EAAO,CACXM,MAAO,QACPgK,OAAQ,CAAC,UACTH,IAAM,GAAE1R,EAAE,2BAELqX,EAAYC,IAAiB7N,EAAAA,EAAAA,UAAS,eACtCnI,EAAS4U,IAAczM,EAAAA,EAAAA,WAAS,IAChCkN,EAAMC,IAAWnN,EAAAA,EAAAA,UAAS,CAC/B3K,MAAO,GACPwI,WAAW,EACXU,SAAU,GACVnJ,KAAM,MAGD0Y,EAAWC,IAAgB/N,EAAAA,EAAAA,UAAS,CACzC3K,MAAO,GACPwI,WAAW,EACXU,SAAU,KAENyP,EAAmBC,IACvB,GAAqB,IAAjBA,EAAMnX,OACR,OAAO,EAMT,GAJsB8F,MAAMsR,KAAKD,GAAOrL,QACrCuL,IAAyC,IAAhCA,EAAK/Y,KAAK6R,QAAQ,WAGZnQ,OAAS,EAIzB,OAHAsX,GAAAA,EAAAA,QAAoB,CAClB5U,QAASjD,EAAE,kDAEN,EAMT,QAJuBqG,MAAMsR,KAAKD,GAAOrL,QACtCuL,GAASA,EAAK5O,KAAO,KAAO,KAAO,IAGnBzI,OAAS,KAC1BsX,GAAAA,EAAAA,QAAoB,CAClB5U,QAASjD,EAAE,gDAEN,EAET,EAEI8X,EACJJ,IAEA,MAAM9J,EAAWvH,MAAMsR,KAAKD,GAAOlX,KAAI0M,UACrC,MAAMhD,QAAY6N,EAAAA,GAAAA,IAAY,CAAEH,OAAM/Y,KAAM,SAE5C,MAAO,CACLgB,KAAM+X,EAAK/X,KACXqK,MAFF,IAMF,OAAO4D,QAAQkK,IAAIpK,EAAnB,EAEF,SAASqK,EAAUlU,EAAGR,GACpBA,EAAEY,kBACFZ,EAAEgL,gBACH,CAED,SAAS2J,EAASnU,EAAGR,GACnBA,EAAEY,kBACFZ,EAAEgL,gBACH,CACD,MAAM4J,EAAOjL,MAAOnJ,EAAGR,KACrB,MAAM6U,EAAW7U,EAAE8U,aAAaX,MAIhC,IAFaD,EAAgBW,GAG3B,OAGF,MAAME,EAAW9G,EAAO+G,YAClBC,EAAS,IAAKF,EAAUG,GAAIH,EAASG,GAAKzN,EAAYzK,QAE5DiR,EAAO4B,iBAAiBpI,GACxB,MAAM0N,QAAaZ,EAAOM,GAAUzN,OAAOC,IACzCxB,QAAQmD,MAAM,sBAAuB3B,EAArC,IAGI7B,EAAiB,GACnB1C,MAAMC,QAAQoS,IAChBA,EAAK/L,SAAQ,EAAG9M,OAAMqK,UAChBrK,GAAQqK,GACVnB,EAAKqE,KAAM,KAAIvN,MAASqK,KACzB,IAGDnB,EAAKxI,OACPiR,EAAOmH,aAAa5P,EAAKyD,KAAK,MAAO8L,EAAUE,GAG/ChH,EAAOmH,aAAa,GAAIL,EAAUE,EACnC,EAGGI,EAAQ1L,MAAOnJ,EAAGrB,KACtB,MAAMmW,EAAYnW,EAAMoW,cAIxB,GAFarB,EAAgBoB,EAAUnB,OAE7B,CACRhV,EAAM6L,iBACNiD,EAAOuH,UAAU,YAAY,GAC7B,MAAMT,EAAW9G,EAAO+G,UAAU,IAC5BC,EAAS,IAAKF,EAAUG,GAAIH,EAASG,GAAKzN,EAAYzK,QAE5DiR,EAAO4B,iBAAiBpI,GACxB,MACMjC,SADa+O,EAAOe,EAAUnB,QAClBlX,KAAI,EAAGX,OAAMqK,SACrB,KAAIrK,MAASqK,OAMvB,OAHAsH,EAAOmH,aAAa5P,EAAKyD,KAAK,MAAO8L,EAAUE,QAE/ChH,EAAOuH,UAAU,YAAY,EAE9B,CAED,MAAMC,EAAUH,EAAUI,QAAQ,aAGlC,IAAKD,EAAQtF,MAFI,uDAGf,OAEFhR,EAAM6L,iBAEN,IAAI2K,EAAY,GAChB,MAAMC,GAAU,IAAIC,WACjBC,gBACCL,EAAQ9F,QACN,wDACC,QAAOlT,EAAE,8BAEZ,aAEDsZ,iBAAiB,UAEpBH,EAAQxM,SAAQ,CAAC4M,EAAG/R,KAClB,MAAMuB,EAAOwQ,EAAEC,aAAe,GACjB,KAATzQ,IACEvB,IAAU2R,EAAQ5Y,OAAS,EAC7B2Y,GAAc,GAAEK,EAAEC,cAElBN,GAAc,GAAEK,EAAEC,cAAczQ,EAAK0Q,SAAS,MAAQ,GAAK,SAE9D,IAGHjI,EAAO4B,iBAAiB8F,EAAxB,EAEIpE,EAAc,KAClB,IAAK6B,EAAK7X,MAER,YADA8X,EAAQ,IAAKD,EAAMrP,WAAW,IAGhCsP,EAAQ,IAAKD,EAAM9X,KAAM,KAEzB,MAAMkK,EAAQ,KAAIwO,EAAUzY,UAAU6X,EAAK7X,SAE3C0S,EAAO4B,iBAAiBrK,GAExBmN,GAAW,GAEX1E,EAAO6B,QACPuD,EAAQ,IAAKD,EAAM7X,MAAO,KAC1B0Y,EAAa,IAAKD,EAAWzY,MAAO,IAApC,GAEFgM,EAAAA,EAAAA,YAAU,KACF,OAAN0G,QAAM,IAANA,GAAAA,EAAQkI,GAAG,YAAazB,GAClB,OAANzG,QAAM,IAANA,GAAAA,EAAQkI,GAAG,WAAYxB,GACjB,OAAN1G,QAAM,IAANA,GAAAA,EAAQkI,GAAG,OAAQvB,GACb,OAAN3G,QAAM,IAANA,GAAAA,EAAQkI,GAAG,QAASd,GACb,KACC,OAANpH,QAAM,IAANA,GAAAA,EAAQmI,IAAI,YAAa1B,GACnB,OAANzG,QAAM,IAANA,GAAAA,EAAQmI,IAAI,WAAYzB,GAClB,OAAN1G,QAAM,IAANA,GAAAA,EAAQmI,IAAI,OAAQxB,GACd,OAAN3G,QAAM,IAANA,GAAAA,EAAQmI,IAAI,QAASf,EAArB,IAED,CAACpH,KAEJ1G,EAAAA,EAAAA,YAAU,KACJ6L,EAAK7X,OAAuB,SAAd6X,EAAK9X,MACrBiW,GACD,GACA,CAAC6B,EAAK7X,QAkCT,OACE,SAAC,EAAD,IAAcyI,EAAMxH,QAjCLyS,IAAS,IAAD,EACvBH,GAAUG,EACV4E,EAAU/E,GAAQb,QAClB,MAAMzI,EAAI,UAAGsJ,GAAQb,cAAX,aAAG,EAAgB+E,eAE7BiB,EAAa,IAAKD,EAAWzY,MAAOiK,IAEpCmN,GAAW,EAAX,EA0BA,UACE,UAAC9T,EAAA,EAAD,CACEC,KAAMf,EACNgB,OAVS,IAAM4T,GAAW,GAW1BM,SAVW,WAAMhF,QAAN,IAAMA,OAAN,EAAMA,EAAQ6B,QAWzB9Q,WAAW,UAJb,WAKE,SAACH,EAAA,SAAD,CAAcI,aAAW,EAAzB,UACE,eAAIrD,UAAU,OAAd,SAAsBa,EAAE,wBAE1B,SAACoC,EAAA,OAAD,WACE,UAACwX,GAAA,EAAD,CAAM1E,SAdQ2E,IACpBvC,EAAcuC,EAAd,EAaM,WACE,SAACC,GAAA,EAAD,CAAKC,SAAS,aAAa9Y,MAAOjB,EAAE,mBAApC,UACE,UAAC6G,EAAA,EAAD,CAAM1H,UAAU,OAAO4M,SAAU+I,EAAjC,WACE,UAACjO,EAAA,QAAD,CAAYkI,UAAU,iBAAiB5P,UAAU,OAAjD,WACE,SAAC0H,EAAA,QAAD,UACG7G,EAAE,yCAEL,SAAC6G,EAAA,UAAD,CACEhI,KAAK,OACLE,SA1CDmO,UAAc,IAAD,EAC5B,IAAKsE,EACH,OAEF,MAAMkG,GAAQ,UAAAnU,EAAEyM,cAAF,eAAU0H,QAAS,GACpBD,EAAgBC,KAM7BK,EAAAA,GAAAA,IAAY,CAAEH,KAAMrU,EAAEyM,OAAO0H,MAAM,GAAI7Y,KAAM,SAAUuL,MAAMF,IAC3D0M,EAAQ,IAAKD,EAAM7X,MAAOoL,GAA1B,GADF,EAgCgB5C,UAA0B,eAAf+P,GAA+BV,EAAKrP,aAGjD,SAACT,EAAA,mBAAD,CAAuBhI,KAAK,UAA5B,SACGmB,EAAE,gDAIP,UAAC6G,EAAA,QAAD,CAAYkI,UAAU,wBAAwB5P,UAAU,OAAxD,WACE,SAAC0H,EAAA,QAAD,UACI,GAAE7G,EAAE,yCAAyCA,EAC7C,WACA,CACEE,UAAW,cAIjB,SAAC2G,EAAA,UAAD,CACEhI,KAAK,OACLC,MAAOyY,EAAUzY,MACjBC,SAAWwE,GACTiU,EAAa,IAAKD,EAAWzY,MAAOyE,EAAEyM,OAAOlR,QAE/CwI,UAAWiQ,EAAUjQ,qBAK7B,SAACwS,GAAA,EAAD,CAAKC,SAAS,cAAc9Y,MAAOjB,EAAE,iBAArC,UACE,UAAC6G,EAAA,EAAD,CAAM1H,UAAU,OAAO4M,SAAU+I,EAAjC,WACE,UAACjO,EAAA,QAAD,CAAYkI,UAAU,gBAAgB5P,UAAU,OAAhD,WACE,SAAC0H,EAAA,QAAD,UACG7G,EAAE,sCAEL,SAAC6G,EAAA,UAAD,CACEhI,KAAK,OACLC,MAAO6X,EAAK7X,MACZC,SAAWwE,GACTqT,EAAQ,IAAKD,EAAM7X,MAAOyE,EAAEyM,OAAOlR,QAErCwI,UAA0B,gBAAf+P,GAAgCV,EAAKrP,aAElD,SAACT,EAAA,mBAAD,CAAuBhI,KAAK,UAA5B,SACGmB,EAAE,6CAIP,UAAC6G,EAAA,QAAD,CAAYkI,UAAU,iBAAiB5P,UAAU,OAAjD,WACE,SAAC0H,EAAA,QAAD,UACI,GAAE7G,EAAE,uCAAuCA,EAAE,WAAY,CACzDE,UAAW,cAGf,SAAC2G,EAAA,UAAD,CACEhI,KAAK,OACLC,MAAOyY,EAAUzY,MACjBC,SAAWwE,GACTiU,EAAa,IAAKD,EAAWzY,MAAOyE,EAAEyM,OAAOlR,QAE/CwI,UAAWiQ,EAAUjQ,0BAOjC,UAAClF,EAAA,SAAD,YACE,SAACK,EAAA,EAAD,CAAQ3C,QAAQ,OAAOC,QAAS,IAAMmW,GAAW,GAAjD,SACGlW,EAAE,uBAEL,SAACyC,EAAA,EAAD,CAAQ3C,QAAQ,UAAUC,QAAS+U,EAAnC,SACG9U,EAAE,8BA5Fb,EAoGF,IAAe4Q,EAAAA,EAAAA,MAAKsG,ICjVd8C,GAAO,KACX,MAAM,EAAEha,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,WAEnDqH,EAAO,CACXM,MAAO,OACP6J,IAAK1R,EAAE,cAMT,OAAO,SAAC,EAAD,IAAcuH,EAAMxH,QAJP,KAClBka,OAAOC,KAAK,+BAAZ,GAGF,EAGF,IAAetJ,EAAAA,EAAAA,MAAKoJ,I,SC8Db,SAASG,GAAWC,GACpBA,IAGLA,EAAGd,iBAAiB,KAAK3M,SAAS4M,IAChC,GAAIA,EAAEc,UAAUC,WAAW,OAASf,EAAEc,UAAUZ,SAAS,MAAO,CAC9D,MAAMc,EAAMhB,EAAEc,UAAUnH,QAAQ,QAAS,MACzCqG,EAAEc,UAAYE,CACf,KAKHH,EAAGd,iBAAiB,SAAS3M,SAAS8F,IAAW,IAAD,IAC9C,aACGA,EAAM+H,kBADT,OACE,EAAsCC,UAAUC,SAC9C,oBAGF,OAGFjI,EAAMgI,UAAUE,IAAI,QAAS,kBAC7B,MAAM/X,EAAMC,SAASC,cAAc,OACnCF,EAAIzD,UAAY,mBAChB,UAAAsT,EAAM+H,kBAAN,SAAkBI,aAAahY,EAAK6P,GACpC7P,EAAIiY,YAAYpI,EAAhB,IAIF2H,EAAGd,iBAAiB,KAAK3M,SAASmO,IAChC,MAAMC,EAAOd,OAAOe,SAAS/K,OACX,IAAIgL,IAAIH,EAAEI,KAAMH,GAEpB9K,SAAW8K,IACvBD,EAAEK,IAAM,WACT,IAEJ,CAEM,MAAMC,GAAY,EACvBC,YACA7S,cACA8S,YACAvc,WACAwc,UACAzJ,aAEA,MAAON,EAAQ4F,IAAa3N,EAAAA,EAAAA,UAAmC,OACxD3K,EAAO0c,IAAY/R,EAAAA,EAAAA,UAAiB,IACrCgS,GAAepF,EAAAA,EAAAA,SAAO,GAEtBqF,EAAWC,IACf,MAAMtG,EAASsG,EAAGpD,YACZxP,EAAO4S,EAAGC,QAAQvG,EAAO9B,MACzBsI,EAAMF,EAAGG,SAETC,EAAchT,EAAK2K,MAAM,sBACzBsI,EAAcjT,EAAK2K,MAAM,qBACzBuI,EAAiBlT,EAAK2K,MAAM,WAElC,GAAIqI,GAAehT,IAASgT,EAAY,GAAI,CAC1C,MAAMG,EAAMH,EAAY,GAExBF,EAAIzI,iBAAkB,KAAI2I,EAAY,KAAK5W,OAAO+W,GAAO,MAC1D,MAAUF,GAAejT,IAASiT,EAAY,GAC7CH,EAAIzI,iBAAkB,KAAI4I,EAAY,KAAKA,EAAY,OAC9CC,GAAkBlT,IAASkT,EAAe,GACnDJ,EAAIzI,iBAAkB,QAEN,MAAhBrK,EAAK6L,QACL7L,EAAK6L,OAAOlB,MAAM,eAClB3K,EAAK6L,OAAOlB,MAAM,YAElBmI,EAAIlD,aAAc,KAAK,IAAKtD,EAAQoD,GAAI,GAAKpD,GAE7CwG,EAAIzI,iBAAkB,KACvB,EA0DH,OAXAtI,EAAAA,EAAAA,YAAU,KACA,OAAR/L,QAAQ,IAARA,GAAAA,EAAWD,EAAX,GACC,CAACA,KAEJgM,EAAAA,EAAAA,YAAU,KACFuQ,EAAU/E,mBAAmB6F,aAjDxBjP,WACX,GAAIuO,EAAanF,QACf,OAAO,EAETmF,EAAanF,SAAU,EAEvB,MAAQxG,QAASsM,SAAqB,2CAChC,2CACA,qCAEN,MAAMT,EAAKS,EAAU,OAACf,QAAD,IAACA,OAAD,EAACA,EAAW/E,QAAS,CACxC+F,KAAM,WACNC,cAAc,EACd9T,gBAGE8S,GACFiB,YAAW,KACTZ,EAAGtI,OAAH,GACC,IAGLsI,EAAGjC,GAAG,UAAWnW,IACf,MAAMiZ,EAAWjZ,EAAEkZ,WACnBjB,EAASgB,EAAT,IAGFb,EAAGjC,GAAG,SAAS,KACN,OAAP6B,QAAO,IAAPA,GAAAA,GAAO,IAETI,EAAGjC,GAAG,QAAQ,KACN,OAAN5H,QAAM,IAANA,GAAAA,GAAM,IAGRsF,EAAUuE,GA7LP,SACLe,EACAlL,GAEAA,EAAOQ,SAAW,CAAC2K,EAAgBC,EAAQD,EAAQE,KACjD,MAAMC,EAAQtL,EAAOuL,oBACjBvL,EAAOwL,iBAAiB,GACxBxL,EAAOyL,WAAWzL,EAAO+G,aAEvBZ,EAAOmF,EAAMnF,OACb/W,EAAKkc,EAAMlc,KACXmI,EAAOyI,EAAO0L,SAASvF,EAAM/W,IAAOic,EACpCM,EAAaT,EAAWU,IAAIzF,EAAKpE,KAAMoE,EAAKc,GAAKkE,EAAOpc,QACxD8c,EAAUX,EAAWU,IAAIxc,EAAG2S,KAAM3S,EAAG6X,GAAKmE,EAAMrc,QAEtD,GACEiR,EAAO0L,SAASC,EAAYxF,KAAUgF,GACtCnL,EAAO0L,SAAStc,EAAIyc,KAAaT,EAEjCpL,EAAOmH,aAAa5P,EAAMoU,EAAYE,GACtC7L,EAAO8L,aACLH,EACAT,EAAWU,IAAID,EAAW5J,KAAM4J,EAAW1E,GAAK1P,EAAKxI,aAElD,CACLiR,EAAOmH,aAAagE,EAAS5T,EAAO6T,EAAOjF,EAAM/W,GACjD,MAAMyU,EAAS7D,EAAO+G,YAEtB/G,EAAO8L,aACLZ,EAAWU,IAAI/H,EAAO9B,KAAM8B,EAAOoD,GAAKmE,EAAMrc,OAASwI,EAAKxI,QAC5Dmc,EAAWU,IAAI/H,EAAO9B,KAAM8B,EAAOoD,GAAKmE,EAAMrc,QAEjD,GAEHiR,EAAOS,aAAe,CACpBiB,EACAqK,EAAY,KAEZ,MAAOC,GAAahM,EAAOwL,iBAErBF,EAAQ,CACZJ,EAAWU,IAAII,EAAU7F,OAAOpE,KAAM,GACtCmJ,EAAWU,IAAII,EAAU5c,KAAK2S,OAE1BkK,EAAQjM,EAAO0L,YAAYJ,GAAOpG,MAAM,MAE9ClF,EAAOmH,aAAa8E,EAAMjd,IAAI0S,GAAS1G,KAAK,SAAUsQ,GACtD,MAAMY,EAAWZ,EAEbS,EAAY,IACdG,EAAS,GAAGjF,GAAK8E,GAEnB/L,EAAO8L,gBAAgBI,EAAvB,EAEFlM,EAAOU,YAAejP,IAGpB,IAAI0a,GAAa,EAEjB,IAAK,IAAInK,EAJMhC,EAAO+G,YAIFhF,KAAMC,EAAIhC,EAAOoM,YAAapK,GAAK,EACrD,IAAKhC,EAAOoK,QAAQpI,GAAGoB,OAAQ,CAC7B+I,EAAYnK,EACZ,KACD,CAQH,OANmB,IAAfmK,IACFnM,EAAOmH,aAAa,KAAM+D,EAAWU,IAAI5L,EAAOoM,cAChDD,EAAYnM,EAAOoM,aAGrBpM,EAAOmH,aAAc,KAAI1V,IAAWyZ,EAAWU,IAAIO,IAC5CjB,EAAWU,IAAIO,EAAY,EAAG,EAArC,CAEH,CAqHGE,CAAkBzB,EAAYT,GAE9BA,EAAGmC,QAAQ,OAAQ,QACnBnC,EAAG5J,UAAU,CACXgM,MAAOrC,GAET,EAWAsC,EAAM,GACL,CAAC3C,IAEG7J,CAAP,ECpIF,GA3EK,EAAG/P,WAAUtC,gBAChB,MAAOmC,EAAS4U,IAAczM,EAAAA,EAAAA,WAAS,IAChCwU,EAAQC,IAAazU,EAAAA,EAAAA,UAAS,IAC/BvG,EAAU,KACdgT,GAAW,GACXgI,EAAU,GAAV,EAwCF,OANApT,EAAAA,EAAAA,YAAU,IACD,KACL5H,GAAS,GAEV,KAID,iBACE/D,UAAWuJ,IAAW,aAAcvJ,GACpCY,QA5B0BmE,IAC5B,MAAM,OAAE8L,GAAW9L,EAEnB,GAAsC,QAAlC8L,EAAOmO,SAASC,cAClB,OAEF,MAAMC,EAAMrO,EACZ,IAAKqO,EAAIC,eAAiBD,EAAIE,cAE5B,YADAF,EAAI5D,UAAUE,IAAI,UAGpB,MAAMtb,EAAMgf,EAAIG,YAAcH,EAAIhf,IAC9BA,IAA8B,IAzBb2Q,KACrB,IAAIyO,GAAM,EACNrE,EAAKpK,EAAO0O,cAChB,KAAOtE,GAAI,CACT,GAAkC,MAA9BA,EAAG+D,SAASC,cAAuB,CACrCK,GAAM,EACN,KACD,CACDrE,EAAKA,EAAGsE,aACT,CACD,OAAOD,CAAP,EAeWE,CAAcN,KACvBH,EAAU7e,GACV6W,GAAW,GACZ,EAWD,UAGGzU,GACD,SAACW,EAAA,EAAD,CACEC,KAAMf,EACNiB,YAAU,EACVhB,UAAQ,EACRY,YAAU,EACVyc,iBAAiB,iBACjBtc,OAAQY,EANV,UAOE,SAACd,EAAA,OAAD,CAAYrC,QAASmD,EAAS/D,UAAU,wBAAxC,UAEE,gBACEA,UAAU,mCACVY,QAAUmE,IACRA,EAAIC,kBACJjB,GAAS,EAEX7D,IAAK4e,EACL3e,IAAK2e,UAtBf,ECxCF,IACIY,GADAC,GAAY,EAGhB,MAAMzd,GAAQ,EAAGvC,SAASmN,KACxB,MAAO8S,EAAMC,IAAWvV,EAAAA,EAAAA,UAAS,IAC3BwV,GAAa5I,EAAAA,EAAAA,QAAuB,MAiC1C,OArBAvL,EAAAA,EAAAA,YAAU,KAVcoU,QAWPpgB,EAVfqgB,aAAaN,IAEbA,GAActC,YAAW,MACvB6C,EAAAA,GAAAA,IAAeF,GAAU9U,MAAMC,IAAU,IAAD,EACtCyU,IAAY,UAAAG,EAAW3I,eAAX,eAAoBwI,YAAa,EAC7CE,EAAQ3U,EAAR,GAFF,GAFcwU,GAAc,IAAO,EASrC,GACC,CAAC/f,KAEJgM,EAAAA,EAAAA,YAAU,KAAO,IAAD,EACTiU,IAIL,UAAAE,EAAW3I,eAAX,SAAoB+I,SAAS,EAAGP,IAEhC3E,GAAW8E,EAAW3I,SAAtB,GACC,CAACyI,KAEJ3Q,EAAAA,EAAAA,qBAAoBnC,GAAK,KAChB,CACLqT,QAAS,IAAMP,EACfQ,QAASN,EAAW3I,aAKtB,SAAC,GAAD,WACE,gBACErK,IAAKgT,EACL9f,UAAU,oFACVqE,wBAAyB,CAAEC,OAAQsb,MALzC,EAWF,IAAenO,EAAAA,EAAAA,OAAKT,EAAAA,EAAAA,YAAW9O,KCZzBme,GAAuD,EAEzDC,oBAAoB,GACpBtgB,YAAY,GACZL,QACAC,WACAwc,UACAzJ,SACAwJ,aAAY,GAEdrP,KACI,IAAD,EACH,MAAMoP,GAAYhF,EAAAA,EAAAA,QAAuB,MACnC4I,GAAa5I,EAAAA,EAAAA,QAAoC,MAEjD7E,EAAS4J,GAAU,CACvBC,YACAtc,WACAwc,UACAzJ,SACAtJ,YAAaiX,EACbnE,cAGIgE,EAAU,KAAO,IAAD,EACpB,iBAAOL,EAAW3I,eAAlB,aAAO,EAAoBgJ,SAA3B,EAgBF,OAbAlR,EAAAA,EAAAA,qBAAoBnC,GAAK,MACvBqT,eAGFxU,EAAAA,EAAAA,YAAU,KACH0G,GAGDA,EAAOiL,aAAe3d,GACxB0S,EAAOgK,SAAS1c,GAAS,GAC1B,GACA,CAAC0S,EAAQ1S,KAGV,iCACE,iBAAKK,UAAWC,IAAW,yBAA0BD,GAArD,WACE,SAACoS,EAAcmO,SAAf,CAAwB5gB,MAAO0S,EAA/B,SACGA,IACC,UAACmO,EAAD,CACE9gB,KAAK,SACLM,UAAU,wDACVqS,OAAQA,EACRoO,eAAc,UAAEX,EAAW3I,eAAb,aAAE,EAAoBiJ,QAJtC,WAKE,SAAC,EAAD,KACA,SAAC,EAAD,KACA,SAAC,EAAD,KACA,gBAAKpgB,UAAU,qBACf,SAAC,EAAD,KACA,SAAC,GAAD,KACA,SAAC,GAAD,KACA,SAAC,GAAD,CAAOgY,eAAgB3F,KACvB,SAAC,EAAD,KACA,gBAAKrS,UAAU,qBACf,SAAC,EAAD,KACA,SAAC,EAAD,KACA,SAAC,EAAD,KACA,SAAC,EAAD,KACA,SAAC,EAAD,KACA,gBAAKA,UAAU,qBACf,SAAC,GAAD,UAKN,gBAAKA,UAAU,eAAf,UACE,gBACEA,UAAU,0CACV8M,IAAKoP,UAIX,SAACwE,GAAD,CAAQ5T,IAAKgT,EAAYngB,MAAOA,MAtCpC,EA2CF,IAAeqR,EAAAA,EAAAA,YAAWqP,I,oGCvH1B,MAAMne,GAAmB,EAAGye,SAAQC,WAAUC,aAAc,IAAD,UACzD,MAAM,EAAEhgB,IAAMC,EAAAA,EAAAA,KAERggB,GAAWC,EAAAA,GAAAA,OACTC,MAAOC,IAAYC,EAAAA,GAAAA,MACrBC,EAAmBpc,IACvB,GAAIE,GAAAA,GAAAA,uBAAwCF,GAAM,CAChDA,EAAIqK,iBACJ,MAAM2M,EAAOhX,EAAIkD,cAAcmZ,aAAa,QAC5CN,EAAS/E,EACV,GAEH,OACE,iCACE,UAACsF,GAAA,EAAD,CAAKrhB,UAAU,WAAf,WACE,UAACqhB,GAAA,OAAD,CACE9f,GAAI+f,GAAAA,GACJ7f,GAAG,6BACHK,MAAOjB,EAAE,QAAS,CAAEE,UAAW,kBAC/Bf,UAAU,wFAJZ,WAKE,SAAC,GAAD,CAAMU,KAAK,YAAYV,UAAU,WACzB,OAAN2gB,QAAM,IAANA,OAAA,EAAAA,EAAQY,QAAS,GAAK,IACtB,gBAAKvhB,UAAU,uBAAf,UACE,iBAAMA,UAAU,kBAAhB,SACGa,EAAE,aAAc,CAAEE,UAAW,0BAMtC,UAACsgB,GAAA,OAAD,CACE9f,GAAI+f,GAAAA,GACJ7f,GAAG,mCACHK,MAAOjB,EAAE,cAAe,CAAEE,UAAW,kBACrCf,UAAU,wFAJZ,WAKE,SAAC,GAAD,CAAMU,KAAK,cAAcV,UAAU,WAC3B,OAAN2gB,QAAM,IAANA,OAAA,EAAAA,EAAQa,cAAe,GAAK,IAC5B,gBAAKxhB,UAAU,uBAAf,UACE,iBAAMA,UAAU,kBAAhB,SACGa,EAAE,aAAc,CAAEE,UAAW,6BAOxC,UAAC,IAAD,CAAU0gB,MAAM,MAAhB,WACE,SAAC,WAAD,CACE9gB,QAAQ,UACRgB,GAAG,iBACHJ,GAAG,IACHmgB,KAAK,SACL1hB,UAAU,oBALZ,UAME,SAAC2hB,EAAD,CACE9X,KAAK,OACLoH,OAAM,OAAE2P,QAAF,IAAEA,OAAF,EAAEA,EAAU3P,OAClB9Q,IAAG,OAAEygB,QAAF,IAAEA,OAAF,EAAEA,EAAUgB,aACf1Q,UAAU,YAId,UAAC,SAAD,YACE,SAAC,SAAD,CACE6K,KAAO,UAAS6E,EAASiB,WACzBjhB,QAASugB,EAFX,SAGGtgB,EAAE,yBAEL,SAAC,SAAD,CACEkb,KAAO,UAAS6E,EAASiB,qBACzBjhB,QAASugB,EAFX,SAGGtgB,EAAE,0BAEL,SAAC,SAAD,CACEkb,KAAK,0BACLnb,QAASugB,EAFX,SAGGtgB,EAAE,yBAEL,SAAC,YAAD,KACA,SAAC,SAAD,CAAekb,KAAK,gBAAgBnb,QAAUwD,GAAMyc,EAAOzc,GAA3D,SACGvD,EAAE,6BAKD,OAAPogB,QAAO,IAAPA,GAAAA,EAASa,UACF,OAAPb,QAAO,IAAPA,GAAA,UAAAA,EAASc,kBAAT,SAAqBhX,KAArB,OACCkW,QADD,IACCA,GADD,UACCA,EAASc,kBADV,iBACC,EAAqBC,sBADtB,OACC,EAAqC5gB,SACrC,UAAC,IAAD,CAAUqgB,MAAM,MAAhB,WACE,SAAC,WAAD,CACE9gB,QAAQ,UACRgB,GAAG,eACHJ,GAAG,OACHvB,UAAU,YAJZ,UAKE,SAACqhB,GAAA,EAAD,WACE,SAAC,GAAD,CACE3gB,KAAK,oBACLV,UAAU,wCAKhB,UAAC,SAAD,WACGihB,EAAQc,WAAWhX,KAClB,SAAC,SAAD,CAAegR,KAAMkF,EAAQc,WAAWhX,IAAxC,SACGkW,EAAQc,WAAWrhB,OAEpB,KACHugB,EAAQc,WAAWhX,KAAnB,UACDkW,EAAQc,WAAWC,sBADlB,OACD,EAAmC5gB,QACjC,SAAC,YAAD,IACE,KATN,UAUG6f,EAAQc,WAAWC,sBAVtB,aAUG,EAAmC3gB,KAAK4gB,IAErC,SAAC,SAAD,CAA+BlG,KAAMkG,EAAKlX,IAA1C,SACGkX,EAAKvZ,OADYuZ,EAAKvhB,cAO/B,OA5GR,EAiHF,IAAe+Q,EAAAA,EAAAA,MAAKvP,ICzGdggB,GAAa,KAAO,IAAD,EACvB,MAAMpB,GAAWC,EAAAA,GAAAA,MACXlF,GAAWsG,EAAAA,GAAAA,OACVC,IAAa1c,EAAAA,GAAAA,MACd2c,EAAID,EAAUtc,IAAI,MAClB,KAAEwc,EAAMC,MAAOC,IAAmBC,EAAAA,GAAAA,OAClC,EAAE5hB,IAAMC,EAAAA,EAAAA,MACPoQ,EAAWwR,IAAapY,EAAAA,EAAAA,UAAS,IAClC5F,GAAWC,EAAAA,GAAAA,KAAeuD,GAAUA,EAAMxD,WAC1Cie,GAAeC,EAAAA,GAAAA,KAAe1a,GAAUA,EAAM2a,WAC9CC,GAAeC,EAAAA,GAAAA,KAAmB7a,GAAUA,EAAM8a,SAClD,aAAEC,EAAF,cAAgBC,IAAkBC,EAAAA,GAAAA,OAChCniB,KAAM2f,IAAWyC,EAAAA,GAAAA,MAInBC,GAAWC,EAAAA,GAAAA,IAAS,mBAC1B,IAAIC,EAAS,iBACTF,GAAYA,EAASG,OAAOC,WAC9BF,EAAU,GAAEA,UAAeG,mBAAmBL,EAASG,OAAOC,cAGhE9X,EAAAA,EAAAA,YAAU,KACRsX,EAAa,CACXU,aAAcC,QAAO,OAACjD,QAAD,IAACA,OAAD,EAACA,EAAQgD,cAC9BE,SAAU7d,OAAM,OAAC2a,QAAD,IAACA,OAAD,EAACA,EAAQkD,WAF3B,GAIC,CAAClD,IAEJ,MAAMmD,EAAexM,IACnBoL,EAAUpL,EAAV,EAWIyM,EAAehW,UACnBhJ,EAAIqK,uBACE4U,EAAAA,GAAAA,MACNxB,IACA1H,OAAOe,SAAS9H,QAAQ+G,OAAOe,SAASE,KAAxC,GAGFpQ,EAAAA,EAAAA,YAAU,KACJ0W,GAA2B,YAAtBxG,EAAS3V,UAChB4d,EAAYzB,EACb,GACA,CAACA,KAEJ1W,EAAAA,EAAAA,YAAU,KACR,MAAMsY,EAAWvgB,SAASwgB,cAAc,kBACxC,GAAID,GAAYA,EAAS3I,UAAUC,SAAS,QAAS,CACnD,MAAM4I,EAASzgB,SAASwgB,cAAc,iBAClCC,IACI,OAANA,QAAM,IAANA,GAAAA,EAAQC,QAEX,CAGyB,YAAtBvI,EAAS3V,UAA0BgL,GACrCwR,EAAU,GACX,GACA,CAAC7G,EAAS3V,WAEb,IAAIme,EAAc,gBAClB,MAAM,MAAEC,EAAF,aAASC,IAAiBC,EAAAA,GAAAA,KAAmB5f,GAAMA,IAKzD,OAJA,OAAI2f,QAAJ,IAAIA,GAAJ,UAAIA,EAAeD,UAAnB,OAAI,EAAuBG,eACzBJ,EAAe,SAAQE,EAAaD,GAAOG,iBAI3C,SAACC,GAAA,EAAD,CACE/jB,QAAyB,kBAAhB0jB,EAAkC,OAAS,GACpDM,OAAO,KACP3kB,UAAWuJ,IAAW,aAAc8a,GACpC1iB,GAAG,SAJL,UAKE,UAACijB,GAAA,EAAD,CAAW5kB,UAAU,4BAArB,WACE,SAAC0kB,GAAA,SAAD,CACE,gBAAc,gBACd1kB,UAAU,qBACV2B,GAAG,eACHf,QAAS,KACPsiB,GAAe,KAInB,iBAAKljB,UAAU,yEAAf,WACE,SAAC0kB,GAAA,QAAD,CAAcjjB,GAAG,IAAIF,GAAIC,GAAAA,GAAMxB,UAAU,wBAAzC,SACG2iB,EAAakC,MACZ,iCACE,gBACE7kB,UAAU,8BACVE,IAAKyiB,EAAakC,KAClB1kB,IAAKuE,EAAShE,QAGhB,gBACEV,UAAU,oBACVE,IAAKyiB,EAAamC,aAAenC,EAAakC,KAC9C1kB,IAAKuE,EAAShE,WAIlB,0BAAOgE,EAAShE,UAKpB,gBAAKV,UAAU,mDAAf,SACO,OAAJsiB,QAAI,IAAJA,GAAAA,EAAMT,UACL,SAACkD,GAAD,CACEpE,OAAQA,EACRC,SAAU0B,EACVzB,OAASzc,GAAM2f,EAAa3f,MAG9B,iCACE,SAACd,EAAA,EAAD,CACE3C,QAAQ,OACRX,UAAWuJ,IAAW,OAAQ,CAC5B,aAA8B,kBAAhB8a,EACd,eAAgC,kBAAhBA,IAElBzjB,QAAS,IAAMqE,GAAAA,GAAAA,uBACf8W,KAAMiJ,GAAAA,GAAAA,cAPR,SAQGnkB,EAAE,gBAEJiiB,EAAamC,0BACZ,SAAC3hB,EAAA,EAAD,CACE3C,QACkB,kBAAhB0jB,EAAkC,QAAU,UAE9CtI,KAAMiJ,GAAAA,GAAAA,eAJR,SAKGnkB,EAAE,0BAQf,UAAC6jB,GAAA,WAAD,CAAiB/iB,GAAG,gBAAgB3B,UAAU,UAA9C,WACE,eAAIA,UAAU,kBAAkBwJ,MAAO,CAAE0b,UAAW,WACpD,SAACC,GAAA,EAAD,CAAKC,GAAI,EAAGplB,UAAU,OAAtB,UACE,SAAC0H,EAAA,EAAD,CACE7F,OAAO,UACP7B,UAAU,iBACV4M,SAxHU7H,IAEpB,GADAA,EAAIqK,kBACC8B,EACH,OAEF,MAAMmU,EAAa,aAAY3B,mBAAmBxS,KAClD4P,EAASuE,EAAT,EA+GQ,UAIE,SAAC7O,EAAA,EAAD,CACE9W,KAAK,SACL2J,YAAaxI,EAAE,6BACfb,UAAU,qBACVL,MAAOuR,EACPxQ,KAAK,IACLd,SAAWwE,GAAM0f,EAAY1f,EAAEyM,OAAOlR,cAK5C,SAAC0hB,GAAA,OAAD,CAAUrhB,UAAU,oBAApB,UACE,SAAC,MAAD,CACEyB,GAAI8hB,EACJvjB,UAAU,4CAFZ,SAGGa,EAAE,0BAIP,SAACskB,GAAA,EAAD,CACEC,GAAI,EACJplB,UAAU,gEAFZ,SAGO,OAAJsiB,QAAI,IAAJA,GAAAA,EAAMT,UACL,UAACR,GAAA,EAAD,CAAKrhB,UAAU,2CAAf,WACE,SAACqhB,GAAA,OAAD,CAAUrhB,UAAU,OAApB,UACE,SAAC,MAAD,CACEyB,GAAI8hB,EACJvjB,UAAWuJ,IAAW,kCAAmC,CACvD,YAA6B,gBAAhB8a,EACb,cAA+B,gBAAhBA,IAJnB,SAMGxjB,EAAE,0BAIP,SAACkkB,GAAD,CACEpE,OAAQA,EACRC,SAAU0B,EACVzB,OAAQkD,QAIZ,iCACE,SAACzgB,EAAA,EAAD,CACE3C,QAAQ,OACRX,UAAWuJ,IAAW,OAAQ,CAC5B,aAA8B,kBAAhB8a,EACd,eAAgC,kBAAhBA,IAElBzjB,QAAS,IAAMqE,GAAAA,GAAAA,uBACf8W,KAAMiJ,GAAAA,GAAAA,cAPR,SAQGnkB,EAAE,gBAEJiiB,EAAamC,0BACZ,SAAC3hB,EAAA,EAAD,CACE3C,QACkB,kBAAhB0jB,EAAkC,QAAU,UAE9CtI,KAAMiJ,GAAAA,GAAAA,eAJR,SAKGnkB,EAAE,6BAzIrB,EAqJF,IAAe4Q,EAAAA,EAAAA,MAAKyQ,I,uCC5PpB,MAAMhgB,GAAQ,KACZ,MAEMojB,EAAM,GAFKC,OAAQC,OAAO,YACf7gB,EAAAA,GAAAA,KAAeuD,GAAUA,EAAMxD,SAAShE,SAEzD,OACE,mBAAQV,UAAU,WAAlB,UACE,SAAC4kB,GAAA,EAAD,CAAW5kB,UAAU,OAArB,UACE,cAAGA,UAAU,wCAAb,UACE,UAACylB,GAAA,EAAD,CAAOC,QAAQ,kBAAkBC,OAAQ,CAAEL,MAA3C,wBAGE,cAAGvJ,KAAK,4BAA4BlL,OAAO,SAA3C,2BAHF,2DAOE,kBAPF,4CAJR,EAoBF,GAAerN,EAAAA,KAAWtB,ICA1B,GAnByB,EACvBxC,OAAO,KACPgB,OACAV,YACA6J,OACAjJ,UACAkB,YAGE,cACE9B,UAAWC,IAAWP,EAAO,MAAKgB,IAAQV,GAC1CwJ,MAAO,IAAMK,GAAQ,CAAE+b,SAAU/b,IACjCjJ,QAASA,EACTyV,UAAWzV,EACXkB,MAAOA,ICTb,GAVyB,EAAG+jB,SAAS,GAAIC,eAAe,MAC/CD,GACL,iBACExhB,wBAAyB,CACvBC,QAAQyhB,EAAAA,GAAAA,IAAYF,EAAQC,MAG9B,K,wCCUN,IAAIE,GAEJ,MA+XA,GA/XgC,EAC9BrmB,QAAQ,GACRC,WACAqmB,qBAAoB,EACpBC,mBAAkB,EAClBC,eAAe,EACfC,mBAAkB,EAClBjK,aAAY,MACP,IAAD,EACJ,MAAMkK,GAAenP,EAAAA,EAAAA,QAAuB,MACtCD,GAAWC,EAAAA,EAAAA,QAAyB,OACnCoP,EAAaC,IAAkBjc,EAAAA,EAAAA,WAAS,IACxCkc,EAAYvQ,IAAiB3L,EAAAA,EAAAA,UAAS6R,IACtCsK,EAAUC,IAAepc,EAAAA,EAAAA,WAAS,IAClCqc,EAAcC,IAAmBtc,EAAAA,EAAAA,UAAiB,IAClDuc,EAAaC,IAAkBxc,EAAAA,EAAAA,WAAU,IACzCyc,EAAaC,IAAkB1c,EAAAA,EAAAA,UAAiB,KAChDlD,EAAM6f,IAAW3c,EAAAA,EAAAA,UAA4B,OAC7C4c,EAAcC,IAAmB7c,EAAAA,EAAAA,UAA4B,OAC9D,EAAEzJ,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,kBACjDC,KAAMomB,IAAmBC,EAAAA,GAAAA,IAAkB,WAC7CC,EACHnB,EAAe,IAAU,OAALxmB,QAAK,IAALA,OAAA,EAAAA,EAAOyB,QAAS+kB,GAAkC,IAAjBA,EAClDoB,GAAQnd,EAAAA,GAAAA,MACRod,GAAWC,EAAAA,GAAAA,IAAY,CAC3BllB,UAAYvB,IACV,KAAMpB,aAAoB2O,UACxB,OAEF,MAAMmZ,EAAY/nB,EAAM+nB,WACrBtf,GAASA,EAAKd,UAAU2X,gBAAkBje,EAAKsG,UAAU2X,iBAEzC,IAAfyI,GACF9nB,EAAS,IACJD,EACH,IACKqB,EACH2mB,aAAaC,EAAAA,GAAAA,IAAO5mB,EAAK6mB,kBAG7Bb,EAAe,MAEfF,EAAeY,GACf1H,aAAagG,IACbA,GAAQ5I,YAAW,KACjB0J,GAAgB,EAAhB,GACC,KACJ,IAICgB,EAAchZ,IAClB,MAAMiZ,EAAuB,GAgB7B,OAfM,OAANjZ,QAAM,IAANA,GAAAA,EAAQtB,SAASpF,KAWI,IAVDzI,EAAM+nB,WAAWM,GAChBA,EAAE1gB,UAAU2X,iBAEX,kBAAT7W,EACHA,EAAK6W,cACL7W,EAAKd,UAAU2X,kBAMrB8I,EAAS9Z,KAAqB,kBAAT7F,EAAoB,CAAEd,UAAWc,GAASA,EAChE,IAEI2f,CAAP,EAGIE,EAAkBC,IACtBxB,EAAYwB,GACZ,MAAMC,EAAMzkB,SAAS0kB,eAAe,mBAChCD,IACED,EACFC,EAAI7M,UAAUE,IAAI,QAElB2M,EAAI7M,UAAUpX,OAAO,QAExB,EAQGmkB,EAAwB,KAC5BpS,GAAc,GACd2Q,EAAgB,GAChBqB,GAAe,EAAf,EAGIK,EAAalN,IACZgL,GAAoBhL,GAIzBmN,EAAAA,GAAAA,IAAUnN,GAAKnQ,MAAMud,IACnB,MAAMT,EAAuBD,EAAWU,GAAO,IACnC,KAARpN,GACF+L,GAAmB,OAAHqB,QAAG,IAAHA,OAAA,EAAAA,EAAKpnB,QAAS,EAAIonB,EAAIC,MAAM,EAAG,GAAKD,GAEtDP,EAAeF,EAAS3mB,OAAS,GACjC6lB,GAAgB,OAARc,QAAQ,IAARA,OAAA,EAAAA,EAAU3mB,QAAS,EAAI2mB,EAASU,MAAM,EAAG,GAAKV,EAAtD,IATAd,EAAQ,GAGV,EAoBItR,EAAe2B,IACnB,MAAMoQ,EAAY/nB,EAAM+nB,WACrBtf,GAASA,EAAKd,UAAU2X,gBAAkB3H,EAAIhQ,UAAU2X,gBAEvDrf,aAAoB2O,WAA2B,IAAfmZ,EAClC9nB,EAAS,IACJD,EACH,CACEkoB,cAAe,GACfF,YAAa,MACVrQ,MAIPwP,EAAeY,GACf1H,aAAagG,IACbA,GAAQ5I,YAAW,KACjB0J,GAAgB,EAAhB,GACC,MA5Ba,MAGlB,GAFAF,EAAgB,GAChBI,EAAe,IACXM,EAAW,CACb,MAAMS,EAAuBD,EAAWZ,GACxCD,EAAQc,EAAS3mB,OAAS,EAAI2mB,EAAW,GAC1C,MACCd,EAAQ,GACT,EAsBDyB,EAAa,EAGTC,EAAgBrR,IAChB1X,aAAoB2O,UACtB3O,EACED,EAAMuN,QAAQ8a,GACRA,aAAaza,OACRya,EAAE1gB,UAAU2X,gBAAkB3H,EAAIhQ,UAAU2X,cAE9C+I,IAAM1Q,IAGlB,EA0IH,OApEA3L,EAAAA,EAAAA,YAAU,KACR,GAAI2b,EAAW,CACb,MAAMS,EAAuBD,EAAWZ,GACxCD,EAAQc,EAAS3mB,OAAS,EAAI2mB,EAAW,GAC1C,MACCd,EAAQ,GACT,GACA,CAACtnB,KAEJgM,EAAAA,EAAAA,YAAU,KAC4B,IAAD,EAA/B6a,GAAcJ,IAChBkC,EAAUvB,GACV,UAAA9P,EAASE,eAAT,SAAkBjD,QACnB,GACA,CAACsS,KAEJ7a,EAAAA,EAAAA,YAAU,KACR4a,GAAe,EAAf,GACC,KAEH5a,EAAAA,EAAAA,YAAU,KACR,MAAMid,EAAsBrlB,IAAW,IAAD,GAElC+iB,IACAD,EAAalP,SACb,UAACkP,EAAalP,eAAd,OAAC,EAAsBoE,SAAShY,EAAMsN,SAEtCwX,GACD,EAGH,OADA3kB,SAASmlB,iBAAiB,QAASD,GAC5B,KACLllB,SAASolB,oBAAoB,QAASF,EAAtC,CADF,GAGC,CAACtC,KAEJ3a,EAAAA,EAAAA,YAAU,KAER,MAAMod,EACH3hB,IAAY,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAMhG,QAAS,GACvB2lB,GAAgC,KAAb,OAAJ3f,QAAI,IAAJA,OAAA,EAAAA,EAAMhG,SACrB2lB,IAAgBb,EAQsC,IAAD,EAPpDM,IAEAyB,KADEX,IAAayB,KAMZ3hB,IAAY,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAMhG,QAAS,GAAuB,IAAjB+kB,KAChC,UAAAlP,EAASE,eAAT,SAAkBjD,SAErB,GACA,CAACsS,EAAYpf,EAAM8e,EAAiBa,EAAaZ,KAEpDxa,EAAAA,EAAAA,YAAU,KAER,MAAMwc,EAAMzkB,SAASwgB,cAAc,kBACR,IAAD,EAKnB,EALHiE,EAAIa,YAAc,GACpB,UAAA/R,EAASE,eAAT,SAAkB8R,aAChB,QACC,SAAQd,EAAIa,YAAc,QAG7B,UAAA/R,EAASE,eAAT,SAAkB8R,aAAa,QAAS,cACzC,GACA,CAAClC,KAGF,iBAAKja,IAAKuZ,EAAcrmB,UAAU,oBAAlC,WACE,iBACEiT,SAAU,EACVjT,UAAWC,IACT,uDACAumB,EAAa,2BAA6B,IAE5CpK,QAvNyB,KAAO,IAAD,EACnCnG,GAAc,GACd,UAAAgB,EAASE,eAAT,SAAkBjD,OAAlB,EAsNImC,UA1IiBjS,IACrBA,EAAEY,kBACF,MAAM,QAAEsR,GAAYlS,EACpB,GAAgB,IAAZkS,GAQJ,GAJI3W,EAAMyB,OAAS,GAAiB,IAAZkV,IAAkByQ,GACxC4B,EAAahpB,EAAMA,EAAMyB,OAAS,IAG/BgG,IAIW,KAAZkP,GAAkBqQ,EAAe,GACnCC,EAAgBD,EAAe,GAEjB,KAAZrQ,GAAkBqQ,EAAevf,EAAKhG,OAAS,GACjDwlB,EAAgBD,EAAe,GAGjB,KAAZrQ,GAAkBqQ,GAAgB,GAAG,CAEvC,GADAviB,EAAEgL,iBACkB,IAAhBhI,EAAKhG,QAAgB2lB,EAEvB,YADAS,EAAS7c,OAAOoc,GAGdJ,GAAgBvf,EAAKhG,OAAS,GAChCuU,EAAYvO,EAAKuf,GAKpB,OA9BC0B,GA8BD,EAiGC,WAQE,gBAAKznB,QA1Fe,KACxB,MAAMmoB,EACH3hB,IAAY,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAMhG,QAAS,GACvB2lB,GAAgC,KAAb,OAAJ3f,QAAI,IAAJA,OAAA,EAAAA,EAAMhG,SACrB2lB,IAAgBb,EAEjB+B,KADEX,IAAayB,GAIhB,EAiFG,UACE,iBACE/oB,UAAU,wBACVwJ,MAAO,CAAE0f,QAAS,oBAFpB,iBAGGvpB,QAHH,IAGGA,OAHH,EAGGA,EAAO0B,KAAI,CAAC+G,EAAMC,KAEf,kBAEErI,UAAWC,IACT,wCACAmI,EAAK+gB,UAAY,qBACjB/gB,EAAKghB,WAAa,qBAClB/gB,IAAUwe,GAAe,eAN7B,UAQGze,EAAKwZ,cACN,iBACE5hB,UAAU,kBACVqpB,UAAW,IAAMV,EAAavgB,GAFhC,oBARKA,EAAKd,aAgBfggB,GACC,SAAC5f,EAAA,UAAD,CAEE4hB,aAAa,MACb9f,MAAO,CAAEnJ,MAAO,QAChByM,IAAKmK,EACLjX,UAAU,cACVqJ,YAAaxI,EAAE,WACflB,MAAOonB,EACPnnB,SAjLOmO,UACnB,MAAMmD,EAAY9M,EAAE6D,cAActI,MAAMoU,QAAQ,IAAK,IACrDiT,EAAe9V,GACfoX,EAAUpX,EAAV,KAiLU,SAACxJ,EAAA,UAAD,CACE4hB,aAAa,MACbtpB,UAAU,UACVwJ,MAAO,CAAEnJ,MAAO,OAAQkpB,SAAU,WAAYC,QAAS,GACvDrN,WAAS,KAGb,iBAAMnc,UAAU,gBAAhB,SAAiC+mB,UAGrC,UAAC,SAAD,CAAeplB,GAAG,kBAAkB3B,UAAU,QAAQkD,KAAMujB,EAA5D,WACIM,GACAX,GACAhf,IACA,UAAAA,EAAK8F,QAAQ8a,GAAMA,EAAEoB,mBAArB,eAAiChoB,QAAS,IACxC,eAAIpB,UAAU,kBAAd,SAAiCa,EAAE,uBALzC,OAQGuG,QARH,IAQGA,OARH,EAQGA,EAAM/F,KAAI,CAAC+G,EAAMC,KAEd,SAAC,SAAD,CAEEohB,OAAQphB,IAAUse,EAClB/lB,QAAS,IAAM+U,EAAYvN,GAH7B,SAIGA,EAAKwZ,cAHDxZ,EAAKd,aAOfyf,GAAgC,KAAb,OAAJ3f,QAAI,IAAJA,OAAA,EAAAA,EAAMhG,UACpB,SAAC,SAAD,CAAeX,UAAQ,EAACT,UAAU,iBAAlC,SACGa,EAAE,gBAGLqlB,GAAmBa,IACnB,UAACzjB,EAAA,EAAD,CACE3C,QAAQ,OACRX,UAAU,sCACVY,QA9KS,KACnB,MAAM8oB,EAAgB,OAAGtC,QAAH,IAAGA,OAAH,EAAGA,EAAiB,YACrCsC,GAAD,OAAqBA,QAArB,IAAqBA,GAAAA,EAAkBC,eACzCnC,EAAS7c,OAAOoc,GACX,OAAI2C,QAAJ,IAAIA,GAAAA,EAAkBE,mBAC3BrC,EAAM5c,OAAO,CACXH,IAAKkf,EAAiBE,kBACtBjpB,QAAS,UAEZ,EAkKO,eAIKE,EAAE,wBAKXolB,IAAqB,SAACve,EAAA,OAAD,UAAY7G,EAAE,YAxFzC,EC9SIqB,GAA0B,KAC9B,MAAM,EAAErB,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,cAClD8oB,EAAWC,IAAcxf,EAAAA,EAAAA,WAAS,IACnC,OAAEyf,IAAWtH,EAAAA,GAAAA,KAAqBva,GAAUA,EAAMoa,QACjDva,EAAUiiB,IAAe1f,EAAAA,EAAAA,UAAuB,CACrD2f,aAAc,CACZtqB,MAAO,GACPwI,WAAW,EACXU,SAAU,MAIRqhB,GAAeC,EAAAA,GAAAA,IAAgB,SAgCrC,OACE,SAAChF,GAAA,EAAD,CAAKiF,GAAI,EAAGpqB,UAAU,sBAAtB,SACG6pB,GACC,wBACE,SAACpE,GAAA,EAAD,CACEC,QAAQ,mBACRC,OAAQ,CAAE0E,KAAMN,GAChBO,WAAY,CAAEC,MAAM,4BAIxB,iCACE,wBACE,SAAC9E,GAAA,EAAD,CACEC,QAAQ,iBACRC,OAAQ,CAAE0E,KAAMN,GAChBO,WAAY,CAAEC,MAAM,4BAGxB,uBAAI1pB,EAAE,WACN,SAACyC,EAAA,EAAD,CAAQ3C,QAAQ,OAAOC,QA3BVmE,IACnBA,EAAIqK,iBACJ8a,EAAaM,OAAM,KAzBN,MACb,IAAIC,EAAkB,CAAC,EACvB,MAAMC,EAAUR,EAAaS,aACzBD,EAAQE,SACVH,EAAM,CACJR,aAAcS,EAAQT,aACtBY,WAAYH,EAAQG,cAGxBC,EAAAA,GAAAA,IAAYL,GACTxf,MAAK8C,gBACEmc,EAAaa,QACnBjB,GAAW,EAAX,IAEDte,OAAOwf,IACN,GAAIA,EAAIC,QAAS,CACff,EAAagB,mBAAmBF,EAAI7pB,MACpC,MAAMH,GAAOmqB,EAAAA,GAAAA,IAAgBH,EAAKjjB,GAClCiiB,EAAY,IAAKhpB,GAClB,IAVL,EAiBEoqB,EAAQ,GADV,EAyBM,SACGvqB,EAAE,eAEL,SAAC,MAAD,CAAMY,GAAG,sBAAsBsS,SAAO,EAAC/T,UAAU,oBAAjD,SACGa,EAAE,yBAxBb,EAgCF,GAAe2C,EAAAA,KAAWtB,IC1EpBA,GAA0B,EAC9BxC,OACAa,iBACA+B,WACAzC,aAAa,GACbG,YACAS,YAAW,MAEX,MAAM,EAAEI,IAAMC,EAAAA,EAAAA,MACPuF,EAAQglB,IAAa/gB,EAAAA,EAAAA,WAAS,GA0BrC,OACE,mBACEtK,UAAWuJ,IAAW,4BAA6BvJ,EAAW,CAC5DS,WAAYA,IAFhB,UAIG6B,GAAsBzB,EAATwF,EAAW,qBAA0B,oBACnD,kBACE3G,KAAK,OACLM,UAAU,SACVS,SAAUA,EACV6qB,OAAS,4CAA2CzrB,IACpDD,SAnCYwE,IACZiC,GAGAjC,EAAEyM,OAAO0H,MAAM,KASjB8S,GAAU,IACVzS,EAAAA,GAAAA,IAAY,CAAEH,KAAMrU,EAAEyM,OAAO0H,MAAM,GAAI7Y,SACpCuL,MAAMud,IACLjoB,EAAeioB,EAAf,IAED9c,SAAQ,KACP2f,GAAU,EAAV,IAEL,MAGH,EAiBF,GAAe7nB,EAAAA,KAAWtB,I,4BCzC1B,MAAMA,GAAmB,EAAGlC,YAAWgB,OAAMsE,aAC3C,MAAOsB,EAAO2kB,IAAYjhB,EAAAA,EAAAA,UAAS,IAC5BkhB,EAAMC,IAAWnhB,EAAAA,EAAAA,WAAS,IAC1BohB,EAAMC,IAAYrhB,EAAAA,EAAAA,WAAS,IAC3BshB,EAAeC,IAAevhB,EAAAA,EAAAA,UAAS,CAC5CpC,MAAK,OAAElH,QAAF,IAAEA,OAAF,EAAEA,EAAM8qB,UACb7pB,MAAK,OAAEjB,QAAF,IAAEA,OAAF,EAAEA,EAAM+qB,gBAET,SAAElK,EAAW,KAAOY,EAAAA,GAAAA,KAAqBva,GAAUA,EAAMoa,OACzDiF,GAAQnd,EAAAA,GAAAA,OACR,EAAEvJ,IAAMC,EAAAA,EAAAA,KACRkrB,GAAW7B,EAAAA,GAAAA,IAAgB,SAEjCxe,EAAAA,EAAAA,YAAU,KACJ3K,IACFuqB,EAASvqB,EAAKirB,YACdR,EAAQzqB,EAAKkrB,QACbP,EAAS3qB,EAAKmrB,QACdN,EAAY,CACV3jB,MAAK,OAAElH,QAAF,IAAEA,OAAF,EAAEA,EAAM8qB,UACb7pB,MAAK,OAAEjB,QAAF,IAAEA,OAAF,EAAEA,EAAM+qB,eAEhB,GACA,IAEH,MAAMK,EAAc1sB,IAClB,KAAK2sB,EAAAA,GAAAA,kBAAgB,GACnB,OAGF,GAAIrrB,EAAK6gB,WAAaA,EAKpB,YAJA0F,EAAM5c,OAAO,CACXH,IAAK3J,EAAE,wBACPF,QAAS,WAIb,MAAM2rB,EAAqB,OAAT5sB,GAAiB8rB,GAAmB,SAAT9rB,GAAmBgsB,EAChEM,EAASxB,OAAM,KACb,MAAME,EAA4B,CAChCG,gBAAY1e,EACZ8d,kBAAc9d,GAEhB6f,EAASO,kBAAkB7B,IAC3B8B,EAAAA,GAAAA,IACE,CACEC,UAAS,OAAEzrB,QAAF,IAAEA,OAAF,EAAEA,EAAMW,GACjB+qB,UAAWJ,KACR5B,GAELhrB,GAECuL,MAAK8C,gBACEie,EAASjB,QACfQ,EAAS/C,EAAI5hB,OACb6kB,EAA4B,YAApBjD,EAAImE,aACZhB,EAA6B,cAApBnD,EAAImE,YAAb,IAEDnhB,OAAOwf,IACN,OAAIA,QAAJ,IAAIA,GAAAA,EAAKC,SACPe,EAASd,mBAAmBF,EAAI7pB,MAElC,MAAMyrB,EAAM,OAAG5B,QAAH,IAAGA,OAAH,EAAGA,EAAKrrB,MAChBitB,GACFrF,EAAM5c,OAAO,CACXH,IAAKoiB,EACLjsB,QAAS,UAEZ,GAxBL,GANF,EAmDF,OACE,iBAAKX,UAAWC,IAAWD,GAA3B,WACE,UAAC6sB,GAAA,EAAD,YACE,SAACvpB,EAAA,EAAD,CACExB,MAEMjB,EADO,aAAXyE,EACM,kCACA,iCAER3E,QAAQ,oBACR8oB,OAAQ+B,EACR5qB,QAAS,IAAMwrB,EAAW,MAR5B,UASE,SAAC,GAAD,CAAM1rB,KAAK,2BAEb,SAAC4C,EAAA,EAAD,CAAQ3C,QAAQ,oBAAoBX,UAAU,cAAcS,UAAQ,EAApE,SACGmG,KAEH,SAACtD,EAAA,EAAD,CACExB,MAEMjB,EADO,aAAXyE,EACM,qCACA,oCAER3E,QAAQ,oBACR8oB,OAAQiC,EACR9qB,QAAS,IAAMwrB,EAAW,QAR5B,UASE,SAAC,GAAD,CAAM1rB,KAAK,iCAGd,OAACM,QAAD,IAACA,GAAAA,EAAM8rB,eACN,UAACxpB,EAAA,EAAD,CACE3C,QAAQ,yBACRmB,MAAOjB,EAAE,qCACT4oB,OAAQmC,EAAc1jB,MACtBtH,QAlDe,MAChByrB,EAAAA,GAAAA,kBAAgB,KAGrBU,EAAAA,GAAAA,IAAS,CACPC,SAAU,IACVP,UAAS,OAAEzrB,QAAF,IAAEA,OAAF,EAAEA,EAAMW,GACjBorB,UAAWnB,EAAc1jB,QACxB+C,MAAMud,IACPqD,EAAY,CACV3jB,OAAQ0jB,EAAc1jB,MACtBjG,MAAOumB,EAAIyE,yBAFb,GALF,EA0CI,WAKE,SAAC,GAAD,CAAMvsB,KAAK,mBACX,iBAAM8I,MAAO,CAAE0jB,YAAa,QAA5B,SAAuCtB,EAAc3pB,aApC7D,EA2CF,IAAewP,EAAAA,EAAAA,MAAKvP,I,gBCjJpB,MAAMA,GAAoB,EACxBlB,OACA+a,OACA/b,YAAY,GACZmtB,gBAAgB,OAEhBpR,IAASra,GAAAA,EAAAA,WAAuBgiB,mBAAmB1iB,EAAKsG,aAGtD,SAAC,MAAD,CACE7F,GAAIsa,EACJ/b,UAAWC,IACT,sBACAe,EAAKmoB,UAAY,qBACjBnoB,EAAKooB,WAAa,qBAClBppB,GANJ,UAQE,iBAAMA,UAAWmtB,EAAjB,SACGnsB,EAAK4gB,cAAgB5gB,EAAKsG,eAMnC,IAAemK,EAAAA,EAAAA,MAAKvP,I,+DCtBpB,MAAMA,GAAoB,EAAGxC,OAAM0tB,MAAKC,MAAKvrB,YAC3C,MAAMwgB,GAAOG,EAAAA,GAAAA,KAAqBva,GAAUA,EAAMoa,QAC3Cpf,EAAMoqB,IAAWhjB,EAAAA,EAAAA,WAAS,IAC1BijB,EAASC,IAAcljB,EAAAA,EAAAA,WAAS,IAChCmjB,EAAgBC,IAAuBpjB,EAAAA,EAAAA,WAAS,IACjD,EAAEzJ,IAAMC,EAAAA,EAAAA,KACd,IAAI6sB,EACO,aAATjuB,EACK,GAAEob,OAAOe,SAAS/K,oBAAoBsc,IACtC,GAAEtS,OAAOe,SAAS/K,oBAAoBsc,KAAOC,IAChD/K,EAAK3gB,KACPgsB,EAAW,GAAEA,iBAAuBrL,EAAKT,YAG3C,MAAM+L,EAAa,KACjBJ,GAAW,GACXF,GAAQ,EAAR,EA2BF,OALA3hB,EAAAA,EAAAA,YAAU,KAAO,IAAD,IACd,UAAImP,OAAO+S,iBAAX,iBAAI,EAAkBC,gBAAtB,OAAI,SAA6B,CAAElkB,KAAM,eACvC8jB,GAAoB,EACrB,GACA,KAED,UAAC,IAAD,CAAUxqB,KAAMA,EAAM6qB,SAAUH,EAAhC,WACE,SAAC,WAAD,CACEjsB,GAAG,iBACHJ,GAAG,IACHvB,UAAU,gDACVY,QAAS,IAAM0sB,GAAQ,GACvB9jB,MAAO,CAAEwkB,WAAY,QALvB,SAMGntB,EAAE,iBAEL,UAAC,SAAD,CAAe2I,MAAO,CAAEnJ,MAAO,SAA/B,WACE,SAAC4tB,GAAA,EAAD,CACEC,QAAQ,QACRC,UAAU,OACVjrB,KAAMqqB,EACNa,SAAS,SAACC,GAAA,EAAD,UAAUxtB,EAAE,kBAJvB,UAKE,SAAC,SAAD,CAAeD,QAxCHmE,IAClBA,EAAIqK,iBACJrK,EAAIC,kBACJ,IAAIspB,EAAWX,EACX7rB,IACFwsB,EAAY,GAAExsB,KAAS6rB,KAEzBY,KAAKD,GACLd,GAAW,GACXpQ,WAAWwQ,EAAY,IAAvB,EA+B0ChT,SAAS,OAA7C,SACG/Z,EAAE,mBAGP,SAAC,SAAD,CAAe+Z,SAAS,WAAxB,UACE,SAAC,MAAD,CACE9Y,MAAOA,EACPiJ,IAAK4iB,EACL3tB,UAAU,6BAHZ,SAIGa,EAAE,uBAGP,SAAC,SAAD,WACE,SAAC,KAAD,CACEiB,MAAOA,EACPiJ,IAAK4iB,EACL3tB,UAAU,6BAHZ,SAIGa,EAAE,qBAGN4sB,IACC,SAAC,SAAD,CAAe7sB,QAjDH,KAClBitB,UAAUW,MAAM,CACd1sB,QACA8H,KAAO,GAAE9H,mBACTiJ,IAAK4iB,GAHP,EAgDM,SAAsC9sB,EAAE,oBArChD,EA4CF,IAAe4Q,EAAAA,EAAAA,MAAKvP,ICxEdA,GAAoB,EACxBxC,OACA0tB,MACAC,MAAM,GACNvrB,QACAmF,cAAa,EACbwnB,aAAY,EACZC,gBAAgB,GAChBtjB,eAEA,MAAM,EAAEvK,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,WACnDwmB,GAAQnd,EAAAA,GAAAA,MACR0W,GAAWC,EAAAA,GAAAA,MACX4N,GAAcC,EAAAA,GAAAA,MACdC,GAAW1E,EAAAA,GAAAA,IAAgB,UAE3B2E,EAAkB,KACd,OAAR1jB,QAAQ,IAARA,GAAAA,EAAW,UAAX,EAEIvG,GAAa+pB,EAAAA,GAAAA,IAAeE,GAC5BC,EACK,WAATrvB,EAAqB,UAAS0tB,KAAOC,SAAc,UAASD,SAoJxD4B,EAAejhB,gBACbkhB,EAAAA,GAAAA,GAAkBzL,GACxB,IAAIhZ,EAAM,GACe,QAArBgZ,EAAO0L,YACT1kB,EAAM3J,EAAE,WAAY,CAAEE,UAAW,cAEV,UAArByiB,EAAO0L,YACT1kB,EAAM3J,EAAE,aAAc,CAAEE,UAAW,cAEZ,SAArByiB,EAAO0L,YACT1kB,EAAM3J,EAAE,iBAAkB,CAAEE,UAAW,cAEhB,SAArByiB,EAAO0L,YACT1kB,EAAM3J,EAAE,iBAAkB,CAAEE,UAAW,cAEzCouB,GAAAA,GAAAA,WAAsBjsB,KAAK,CACzBsH,MACA7J,QAAS,YAEXyc,YAAW,KACT0R,GAAiB,GAChB,IAFH,EA0BIlkB,EAAgB/I,KACfwqB,EAAAA,GAAAA,kBAAgB,KAGN,WAAXxqB,IAlLS,aAATnC,GACFuD,GAAAA,EAAAA,QAAc,CACZnB,MAAOjB,EAAE,SACTiD,QAAqBjD,EAAZ4tB,EAAc,WAAgB,SACvC/rB,iBAAkB,OAClBG,kBAAmB,SACnBF,YAAa9B,EAAE,SAAU,CAAEE,UAAW,SACtCwB,UAAW,KACTssB,EAASrE,OAAM,KACb,MAAMC,EAAM,CACV9oB,GAAIyrB,EACJnD,kBAAc9d,EACd0e,gBAAY1e,GAEd0iB,EAAStC,kBAAkB9B,IAE3B2E,EAAAA,GAAAA,IAAe3E,GACZxf,MAAK8C,gBACE8gB,EAAS9D,QACfxD,EAAM5c,OAAO,CACXH,IAAK3J,EAAE,eAAgB,CAAEE,UAAW,aACpCJ,QAAS,YAEH,OAARyK,QAAQ,IAARA,GAAAA,EAAW,kBAAX,IAEDI,OAAOC,IACFA,EAAGwf,SACL4D,EAAS3D,mBAAmBzf,EAAGtK,KAChC,GAZL,GARF,IA2BO,WAATzB,GAAqB2tB,GACvBpqB,GAAAA,EAAAA,QAAc,CACZnB,MAAOjB,EAAE,SACTiD,QAAsBjD,EAAboG,EAAe,kBAAuB,SAC/CvE,iBAAkB,OAClBG,kBAAmB,SACnBF,YAAa9B,EAAE,SAAU,CAAEE,UAAW,SACtCwB,UAAW,KACTssB,EAASrE,OAAM,KACb,MAAMC,EAAM,CACV9oB,GAAI0rB,EACJpD,kBAAc9d,EACd0e,gBAAY1e,GAEd0iB,EAAStC,kBAAkB9B,IAE3B4E,EAAAA,GAAAA,GAAa5E,GACVxf,MAAK8C,gBACE8gB,EAAS9D,QAEfxD,EAAM5c,OAAO,CACXH,IAAK3J,EAAE,sBACPF,QAAS,YAEH,OAARyK,QAAQ,IAARA,GAAAA,EAAW,gBAAX,IAEDI,OAAOC,IACFA,EAAGwf,SACL4D,EAAS3D,mBAAmBzf,EAAGtK,KAChC,GAbL,GARF,KA2IS,aAAXU,GA7GJoB,GAAAA,EAAAA,QAAc,CACZnB,MAAOjB,EAAE,kBACTiD,QAASjD,EAAE,iBACX6B,iBAAkB,OAClBG,kBAAmB,SACnBF,YAAa9B,EAAE,WAAY,CAAEE,UAAW,SACxCwB,UAAW,KACI,aAAT7C,IACF4vB,EAAAA,GAAAA,IAAiBlC,GAAKniB,MAAK,KACjB,OAARG,QAAQ,IAARA,GAAAA,EAAW,UAAX,IAIS,WAAT1L,IACF6vB,EAAAA,GAAAA,IAAelC,GAAKpiB,MAAK,KACf,OAARG,QAAQ,IAARA,GAAAA,EAAW,MAAX,GAEH,IAgGU,WAAXvJ,GA1MJ8sB,EAAYhkB,OAAO,CACjBjL,OACAiC,GAAa,WAATjC,EAAoB2tB,EAAMD,EAC9BvrB,OAAQ,SA2MK,UAAXA,GAtMJgD,EAAW8F,OAAO,CAChBjL,OACAiC,GAAIyrB,EACJvrB,OAAQ,UAuMK,WAAXA,GApFJoB,GAAAA,EAAAA,QAAc,CACZnB,MAAOjB,EAAE,QAAS,CAAEE,UAAW,2BAC/B+C,QAASjD,EAAE,UAAW,CAAEE,UAAW,2BACnC2B,iBAAkB,OAClBC,YAAa9B,EAAE,cAAe,CAAEE,UAAW,2BAC3CwB,UAAW,MACTitB,EAAAA,GAAAA,IAAe,CACbC,YAAarC,IACZniB,MAAK,KACNsc,EAAM5c,OAAO,CACXH,IAAK3J,EAAE,cAAe,CAAEE,UAAW,aACnCJ,QAAS,YAEXmuB,GAAiB,GAPnB,IAmFS,QAAXjtB,GACW,UAAXA,GACW,SAAXA,GACW,SAAXA,GAjDuBA,KACzB,MAAM2hB,EAA+B,CACnC7hB,GAAIyrB,EACJ8B,UAAWrtB,GAGE,QAAXA,EACFoB,GAAAA,EAAAA,QAAc,CACZnB,MAAOjB,EAAE,QAAS,CAAEE,UAAW,wBAC/B+C,QAASjD,EAAE,UAAW,CAAEE,UAAW,wBACnC2B,iBAAkB,OAClBC,YAAa9B,EAAE,cAAe,CAAEE,UAAW,wBAC3CwB,UAAW,KACTysB,EAAaxL,EAAb,IAIJwL,EAAaxL,EACd,EAiCCkM,CAAkB7tB,GACnB,EAGG8tB,GACS,OAAbjB,QAAa,IAAbA,OAAA,EAAAA,EAAexhB,QACZ8a,GACc,WAAbA,EAAEnmB,QACW,SAAbmmB,EAAEnmB,QACW,WAAbmmB,EAAEnmB,QACW,aAAbmmB,EAAEnmB,WACD,GACD+tB,GACS,OAAblB,QAAa,IAAbA,OAAA,EAAAA,EAAexhB,QACZ8a,GACc,UAAbA,EAAEnmB,QACW,WAAbmmB,EAAEnmB,QACW,QAAbmmB,EAAEnmB,QACW,UAAbmmB,EAAEnmB,QACW,SAAbmmB,EAAEnmB,QACW,SAAbmmB,EAAEnmB,WACD,GAEP,OACE,iBAAK7B,UAAU,4BAAf,WACE,SAAC6vB,GAAD,CAAOnwB,KAAMA,EAAM0tB,IAAKA,EAAKC,IAAKA,EAAKvrB,MAAOA,IADhD,OAEG6tB,QAFH,IAEGA,OAFH,EAEGA,EAAatuB,KAAK+G,GACG,SAAhBA,EAAKvG,QAEL,SAAC,MAAD,CAEEJ,GAAIstB,EACJ/uB,UAAU,gCACVY,QAAUmE,GA9IH,EAACA,EAAK+qB,KACvB,IAAK7qB,GAAAA,GAAAA,uBAAwCF,GAC3C,OAEFA,EAAIqK,iBACJ,IAAI2gB,EAAgB3C,EACP,WAAT1tB,IACFqwB,EAAgB1C,IAElB2C,EAAAA,GAAAA,IAAUD,GAAe9kB,MAAK,KAC5B6V,EAASgP,EAAT,GADF,EAqI4BG,CAAWlrB,EAAKgqB,GAClCvlB,MAAO,CAAEwkB,WAAY,QALvB,SAMG5lB,EAAK1H,MALD0H,EAAKvG,SAUd,SAACyB,EAAA,EAAD,CAEE3C,QAAQ,OACRkJ,KAAK,KACL7J,UAAU,0BACVY,QAAS,IAAMgK,EAAaxC,EAAKvG,QALnC,SAMGuG,EAAK1H,MALD0H,EAAKvG,UASf+tB,EAAaxuB,OAAS,IACrB,UAAC,IAAD,CAAUpB,UAAU,cAApB,WACE,SAAC,WAAD,CACEW,QAAQ,OACRkJ,KAAK,KACL7J,UAAU,+BAHZ,SAIGa,EAAE,SAAU,CAAEE,UAAW,uBAE5B,SAAC,SAAD,UACG6uB,EAAavuB,KAAK+G,IAEf,SAAC,SAAD,CAEExH,QAAS,IAAMgK,EAAaxC,EAAKvG,QAFnC,SAGGuG,EAAK1H,MAFD0H,EAAKvG,iBAvC1B,EAoDF,IAAe4P,EAAAA,EAAAA,MAAKvP,IC9UdA,GAAmB,EACvBlB,OACAwF,OACAE,SACAwpB,WACAC,eACAnwB,YAAY,OAGV,iBAAKA,UAAWuJ,IAAW,SAAUvJ,GAArC,UACoB,aAAb,OAAJgB,QAAI,IAAJA,OAAA,EAAAA,EAAMqF,SACL,UAAC,MAAD,CAAM5E,GAAK,UAAD,OAAUT,QAAV,IAAUA,OAAV,EAAUA,EAAM6gB,WAA1B,WACE,SAACF,EAAD,CACE1Q,OAAM,OAAEjQ,QAAF,IAAEA,OAAF,EAAEA,EAAMiQ,OACdpH,KAAK,OACL7J,UAAU,yBACVkR,UAAU,OACV/Q,IAAG,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAM4gB,gBAGb,SAACD,EAAD,CACE1Q,OAAM,OAAEjQ,QAAF,IAAEA,OAAF,EAAEA,EAAMiQ,OACdpH,KAAK,OACL7J,UAAU,yBACVkR,UAAU,OACV/Q,IAAG,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAM4gB,mBAIf,iCACE,SAACD,EAAD,CACE1Q,OAAM,OAAEjQ,QAAF,IAAEA,OAAF,EAAEA,EAAMiQ,OACdpH,KAAK,OACL7J,UAAU,yBACVkR,UAAU,OACV/Q,IAAG,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAM4gB,gBAGb,SAACD,EAAD,CACE1Q,OAAM,OAAEjQ,QAAF,IAAEA,OAAF,EAAEA,EAAMiQ,OACdpH,KAAK,OACL7J,UAAU,yBACVkR,UAAU,OACV/Q,IAAG,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAM4gB,mBAIjB,iBAAK5hB,UAAU,8FAAf,WACE,iBAAKA,UAAU,yCAAf,UACoB,aAAb,OAAJgB,QAAI,IAAJA,OAAA,EAAAA,EAAMqF,SACL,SAAC,MAAD,CACE5E,GAAK,UAAD,OAAUT,QAAV,IAAUA,OAAV,EAAUA,EAAM6gB,WACpB7hB,UAAU,gCACVwJ,MAAO,CAAE4mB,SAAU,SAHrB,gBAIGpvB,QAJH,IAIGA,OAJH,EAIGA,EAAM4gB,gBAGT,iBAAM5hB,UAAU,kBAAhB,gBAAmCgB,QAAnC,IAAmCA,OAAnC,EAAmCA,EAAM4gB,gBAE3C,iBAAM5hB,UAAU,UAAU8B,MAAM,aAAhC,UACGuuB,EAAAA,GAAAA,IAAW,OAACrvB,QAAD,IAACA,OAAD,EAACA,EAAMsvB,WAGtB9pB,IACE0pB,GACC,SAAC,MAAD,CAAMzuB,GAAI0uB,EAAV,UACE,SAACI,GAAD,CACE/pB,KAAMA,EACNE,OAAQA,EACR1G,UAAU,sBAId,SAACuwB,GAAD,CAAY/pB,KAAMA,EAAME,OAAQA,WAO5C,IAAe+K,EAAAA,EAAAA,MAAKvP,I,gBC7EpB,MAAMsuB,GAAU,CACd,CACEzU,KAAM,IACN0U,KAAM,GAER,CACE1U,KAAM,KACN0U,KAAM,GAER,CACE1U,KAAM,KACN0U,KAAM,GAER,CACE1U,KAAM,KACN0U,KAAM,GAER,CACE1U,KAAM,KACN0U,KAAM,IAIJC,GAAW,EAAGD,OAAMlpB,cAAaopB,WACrC,MAAM7P,GAAWC,EAAAA,GAAAA,MACjB,OACE,SAAC6P,GAAA,OAAD,CACEnH,OAAQliB,IAAgBkpB,EACxB1U,KAAM4U,EACN/vB,QAAUwD,IACJa,GAAAA,GAAAA,uBAAwCb,KAC1CA,EAAEgL,iBACFhL,EAAEY,kBACF8b,EAAS6P,IACTE,EAAAA,GAAAA,MACD,EATL,SAWGJ,GAZL,EAgKF,GA/IyB,EACvBlpB,cAAc,EACdE,WAAW,GACXD,YAAY,EACZtB,WAAW,OAEX,MAAM,EAAErF,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,eACnD8a,GAAWsG,EAAAA,GAAAA,MACZjc,IACHA,EAAW2V,EAAS3V,UAEtB,MAAO4qB,IAAgBprB,EAAAA,GAAAA,MACjBob,GAAWC,EAAAA,GAAAA,MACXgQ,EAAYC,KAAKC,KAAKzpB,EAAYC,GAClCypB,EAAW3pB,EAAcwpB,EAAYA,EAAYxpB,EAEjD4pB,EAAUX,GAAQtjB,QAAQmH,GAAMA,EAAEoc,MAAQM,IAEhD,GAAIA,GAAa,EACf,OAAO,KAGT,MAAMK,EAAgBC,IACpBP,EAAaQ,IAAI,OAAQhpB,OAAO+oB,IAChC,MAAMngB,EAAY4f,EAAaS,WAC/B,MAAQ,GAAErrB,KAAYgL,GAAtB,EAEF,OACE,UAAC0f,GAAA,EAAD,CAAY/mB,KAAK,KAAK7J,UAAU,qBAAhC,UACGuH,EAAc,IACb,SAACqpB,GAAA,OAAD,CACE7U,KAAMqV,EAAa7pB,EAAc,GACjC3G,QAAUwD,IACJa,GAAAA,GAAAA,uBAAwCb,KAC1CA,EAAEgL,iBACF0R,EAASsQ,EAAa7pB,EAAc,KACpCspB,EAAAA,GAAAA,MACD,EAPL,SASGhwB,EAAE,UAGN0G,GAAe,GAAKA,GAAe,IAClC,8BACG4pB,EAAQ9vB,KAAK+G,IAEV,SAACsoB,GAAD,CAEED,KAAMroB,EAAKqoB,KACXlpB,YAAaA,EACbopB,KAAMS,EAAahpB,EAAKqoB,OAHnBroB,EAAKqoB,UASH,IAAhBlpB,GAAqBwpB,EAAY,IAChC,SAACL,GAAD,CAEED,KAAM,EACNlpB,YAAaA,EACbopB,KAAMS,EAAa,IAHf,SAOP7pB,EAAc,IACb,iCACE,SAACmpB,GAAD,CAEED,KAAM,EACNlpB,YAAaA,EACbopB,KAAMS,EAAa,IAHf,UAMN,SAACR,GAAA,WAAD,CAAqB5wB,UAAU,eAGlCuH,GAAe,IACd,iCACE,SAACmpB,GAAD,CAEED,KAAMS,EAAW,EACjB3pB,YAAaA,EACbopB,KAAMS,EAAaF,EAAW,IAHzBA,EAAW,IAKlB,SAACR,GAAD,CAEED,KAAMS,EAAW,EACjB3pB,YAAaA,EACbopB,KAAMS,EAAaF,EAAW,IAHzBA,EAAW,MAQrB3pB,EAAcwpB,IACb,SAACL,GAAD,CAEED,KAAMS,EACN3pB,YAAaA,EACbopB,KAAMS,EAAaF,IAHdA,GAOR3pB,GAAe,GACdwpB,GAAaxpB,GACb,IAAIL,MACF6pB,GAAa,EACTA,EAAYxpB,EAAc,EAC1BypB,KAAKQ,IAAIT,EAAYxpB,EAAc,EAAG,IAEzCkqB,KAAK,IACLpwB,KAAI,CAAC2mB,EAAG3T,KAEL,SAACqc,GAAD,CAEED,KAAMlpB,EAAc8M,EACpB9M,YAAaA,EACbopB,KAAMS,EAAa7pB,EAAc8M,IAH3B,GAAE9M,EAAc8M,OAO/B0c,EAAY,GAAKG,EAAW,EAAIH,IAC/B,SAACH,GAAA,WAAD,CAAqB5wB,UAAU,YAGhC+wB,EAAY,GAAKxpB,EAAcwpB,IAC9B,SAACH,GAAA,OAAD,CACEnwB,SAAU8G,IAAgBwpB,EAC1BhV,KAAMqV,EAAa7pB,EAAc,GACjC3G,QAAUwD,IACJa,GAAAA,GAAAA,uBAAwCb,KAC1CA,EAAEgL,iBACF0R,EAASsQ,EAAa7pB,EAAc,KACpCspB,EAAAA,GAAAA,MACD,EARL,SAUGhwB,EAAE,YA7GX,E,2BC/EF,MAAMqB,GAAQ,EACZlC,YAAY,GACZL,MAAO+xB,EAAe,GACtBC,cACAjyB,OAAO,GACP2C,WACA6a,WAEA,MAAOvd,EAAO0c,IAAY/R,EAAAA,EAAAA,UAAS,KAC5BsnB,EAASC,IAAcvnB,EAAAA,EAAAA,UAAS,IACjCwnB,GAAYC,EAAAA,GAAAA,OACZ,EAAElxB,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,aAClDixB,EAAoBC,IAAyB3nB,EAAAA,EAAAA,UAAS,KAE7D4nB,EAAAA,GAAAA,IAAoB,CAClBC,KAAe,SAATzyB,EAAkBkyB,IAAYjyB,EAAQikB,QAAQjkB,MAEtDgM,EAAAA,EAAAA,YAAU,KACH+lB,IAGLG,EAAWH,GACXrV,EAASqV,GAAT,GACC,CAACA,IAEJ,MAMMU,EAAkB,KACtBT,EAAYhyB,GAAO6L,OAAOC,IACpBA,EAAGwf,SACLgH,EAAsBxmB,EAAGjB,IAC1B,GAHH,EAMF,OACE,iBACExK,UAAWC,IACT,mDACAD,GAHJ,WAKE,iBAAKA,UAAU,QAAf,WACE,iBACEA,UAAWC,IAAW,sBAAuB,CAC3C,aAAc+xB,IAFlB,WAIE,SAAC,GAAD,CACEF,UAAWA,EAAUO,WACrBC,WAvBchb,IACtB+E,EAAS/E,EAAT,EAoBM,UAGE,SAAC,GAAD,CACEzN,KAAK,KACLlK,MAAgB,SAATD,GAAkB6yB,EAAAA,GAAAA,IAAqB5yB,GAASA,EACvDC,SA9BUwE,IACpBiY,EAASjY,EAAEyM,OAAOlR,MAAlB,OAgCM,gBAAKK,UAAU,YAAf,SAA4Ba,EAAG,OAAMqc,WAEvC,SAACxV,EAAA,mBAAD,CAAuBhI,KAAK,UAA5B,SACGsyB,OAGK,SAATtyB,GACC,iBAAKM,UAAU,2DAAf,WACE,SAACsD,EAAA,EAAD,CACEuG,KAAK,KACL7J,UAAU,eACVY,QAAS,IAAMwxB,IAHjB,SAIGvxB,EAAE,qBAEL,SAACyC,EAAA,EAAD,CACE3C,QAAQ,OACRkJ,KAAK,KACL7J,UAAU,yCACVY,QAASyB,EAJX,SAKGxB,EAAE,oBAIP,SAACyC,EAAA,EAAD,CACEuG,KAAK,KACL7J,UAAU,wCACVY,QAAS,IAAMwxB,IAHjB,SAIGvxB,EAAE,uBA/CX,EAsDF,IAAe4Q,EAAAA,EAAAA,MAAKvP,IC7FdswB,GAAY,EAChBC,WACA5Q,WACA6Q,YACAC,SACAC,YAAY,EACZlE,gBACAmE,UACAC,SACAC,WACAC,aAAa,OAEb,MAAM,EAAEnyB,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,YAEzD,OACE,iBAAKf,UAAU,iDAAf,WACE,iBAAKA,UAAU,qDAAf,UACkB,YAAfgzB,GACC,SAAC,MAAD,CACEvxB,GAAK,UAASogB,IACd7hB,UAAU,gBACVwJ,MAAO,CAAE4mB,SAAU,SAHrB,SAIGqC,KAGH,0BAAOA,KAET,iBAAMzyB,UAAU,OAAhB,qBACA,SAACuwB,GAAD,CAAY/pB,KAAMksB,EAAW1yB,UAAU,wBACvC,UAACsD,EAAA,EAAD,CACExB,MAAOjB,EAAE,YACTF,QAAQ,OACRkJ,KAAK,KACL7J,UAAY,yCACV2yB,EAAS,GAAK,kBAEhB/xB,QAASkyB,EAPX,WAQE,SAAC,GAAD,CAAMpyB,KAAK,wBACVkyB,EAAY,IAAK,iBAAM5yB,UAAU,OAAhB,SAAwB4yB,QAE5C,SAACtvB,EAAA,EAAD,CACE3C,QAAQ,OACRkJ,KAAK,KACL7J,UAAU,uCACVY,QAASiyB,EAJX,SAKGhyB,EAAE,mBAGP,gBAAKb,UAAU,yCAAf,SACG0uB,EAAcrtB,KAAI,CAACQ,EAAQwG,KAExB,SAAC/E,EAAA,EAAD,CAEE3C,QAAQ,OACRkJ,KAAK,KACL7J,UAAWC,IACT,uCACAoI,EAAQ,GAAK,QAEfzH,QAAS,IAAMmyB,EAASlxB,GAR1B,SASGA,EAAOnB,MARHmB,EAAOnB,WAapB,UAAC,IAAD,CAAUV,UAAU,oBAApB,WACE,SAAC,WAAD,CACEuB,GAAG,MACHZ,QAAQ,UACRX,UAAU,YACV2B,GAAG,mBAJL,UAKE,SAAC,GAAD,CAAMjB,KAAK,aAAaV,UAAU,sBAGpC,SAAC,SAAD,CAAeyhB,MAAM,MAArB,SACGiN,EAAcrtB,KAAKQ,IAEhB,SAAC,SAAD,CAAiCjB,QAAS,IAAMmyB,EAASlxB,GAAzD,SACGA,EAAOnB,MADUmB,EAAOnB,eA/DvC,EA0EF,IAAe+Q,EAAAA,EAAAA,MAAK+gB,ICxFdtwB,GAAQ,EAAG+wB,WAAUtB,cAAatvB,WAAU6a,WAChD,MAAOvd,EAAO0c,IAAY/R,EAAAA,EAAAA,UAAS,IAC7BwnB,GAAYC,EAAAA,GAAAA,OACZ,EAAElxB,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,aAClDixB,EAAoBC,IAAyB3nB,EAAAA,EAAAA,UAAS,KAE7D4nB,EAAAA,GAAAA,IAAoB,CAClBC,KAAMvO,QAAQjkB,KAiBhB,OACE,iBAAKK,UAAU,OAAf,WACE,iBAAKA,UAAU,aAAf,UACGa,EAAE,YADL,IACmBoyB,MAEnB,iBAAKjzB,UAAU,wDAAf,WACE,iBAAKA,UAAU,QAAf,WACE,iBACEA,UAAWC,IAAW,sBAAuB,CAC3C,aAAc+xB,IAFlB,WAIE,SAAC,GAAD,CACEF,UAAWA,EAAUO,WACrBC,WAxBYhb,IACtB+E,EAAS/E,EAAT,EAqBQ,UAGE,SAAC,GAAD,CAAUzN,KAAK,KAAKlK,MAAOA,EAAOC,SA5BxBwE,IACpBiY,EAASjY,EAAEyM,OAAOlR,MAAlB,OA6BQ,gBAAKK,UAAU,YAAf,SAA4Ba,EAAG,OAAMqc,WAEvC,SAACxV,EAAA,mBAAD,CAAuBhI,KAAK,UAA5B,SACGsyB,QAGL,iBAAKhyB,UAAU,2DAAf,WACE,SAACsD,EAAA,EAAD,CACEuG,KAAK,KACL7J,UAAU,cACVY,QAAS,KAjCjB+wB,EAAYhyB,GAAO6L,OAAOC,IACpBA,EAAGwf,SACLgH,EAAsBxmB,EAAGjB,IAC1B,GA2BG,WAIG3J,EAAE,sBAEL,SAACyC,EAAA,EAAD,CACE3C,QAAQ,OACRkJ,KAAK,KACL7J,UAAU,yCACVY,QAASyB,EAJX,SAKGxB,EAAE,wBAlCb,EA0CF,IAAe4Q,EAAAA,EAAAA,MAAKvP,IC+VpB,GA3YgB,EAAGgxB,WAAUhW,OAAMiW,gBACjC,MAAMrB,GAAYC,EAAAA,GAAAA,OACXqB,EAAWC,IAAgB/oB,EAAAA,EAAAA,UAAS,IACpCgpB,EAAgBC,IAAqBjpB,EAAAA,EAAAA,WAAS,IAC7C3I,GAAI6xB,EAAgBjvB,OAAQkvB,IAClCC,EAAAA,GAAAA,MACIjsB,EAAyB,IAAd2rB,EAAkB,EAAI,IACjC,KAAEpyB,EAAF,OAAQ2yB,IAAWC,EAAAA,GAAAA,IAAiB,CACxCnH,UAAWyG,EACXW,WAAYV,EACZ1C,KAAM2C,EACNU,UAAWrsB,KAENssB,EAAUC,IAAe1pB,EAAAA,EAAAA,UAAc,IAExCqkB,GAAcC,EAAAA,GAAAA,MAEdqF,GAAa9J,EAAAA,GAAAA,IAAgB,WAC7B+J,GAAc/J,EAAAA,GAAAA,IAAgB,QAC9B0E,GAAW1E,EAAAA,GAAAA,IAAgB,UAC3B6B,GAAW7B,EAAAA,GAAAA,IAAgB,SAE3B,EAAEtpB,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,aAEzD4K,EAAAA,EAAAA,YAAU,KACU,IAAdynB,GAAmBD,GACrB/V,YAAW,KACT,MAAMnC,EAAKvX,SAAS0kB,eAAe+K,IACnCgB,EAAAA,GAAAA,IAAmBlZ,IACnBmZ,EAAAA,GAAAA,GAAUnZ,EAAV,GACC,KAGE,KACLwY,EAAqB,GAArB,IAED,KAEH9nB,EAAAA,EAAAA,YAAU,KACR,IAAK3K,EACH,OAEEA,EAAKiB,OAAS,GAChBjB,EAAKG,KAAKkzB,MAAK,CAAC1Y,EAAG2Y,IAAM3Y,EAAE4Y,WAAaD,EAAEC,aAG1CP,EADgB,IAAdZ,GAAiC,IAAdA,EACV,OAACpyB,QAAD,IAACA,OAAD,EAACA,EAAMG,KAEN,IAAI4yB,KAAa/yB,EAAKG,OAEpC,MAAMmhB,EAAyB,GAC/BthB,EAAKG,KAAKqM,SAASpF,IACjBka,EAAKrU,KAAK,CACRtM,GAAIyG,EAAKosB,QACTC,YAAarsB,EAAKssB,kBAClBzB,SAAU7qB,EAAKyZ,WAEjBS,EAAKrU,KAAK,CACRtM,GAAIyG,EAAKusB,iBACTF,YAAarsB,EAAKwsB,wBAClB3B,SAAU7qB,EAAKyZ,UAHjB,IAMFiQ,EAAU+C,SAASvS,EAAnB,GACC,CAACthB,IAEJ,MAsBMoxB,EAAmBhqB,IACvB,MAAM0sB,GAAQC,EAAAA,GAAAA,IAAa3sB,EAAKzI,OAC1Bq1B,EAAYC,KAAQH,EAAMzzB,KAAKihB,GAASA,EAAK2Q,YAC7CiC,GAAkBC,EAAAA,GAAAA,IAAc/sB,EAAKzI,OAErC6jB,EAAS,CACbiJ,UAAWyG,EACXrL,cAAeqN,EACfE,sBAAuBJ,KACL,UAAd5sB,EAAK1I,KACL,CACEi1B,iBAAkBvsB,EAAKyrB,YAEzB,CAAC,GAGP,MAAkB,SAAdzrB,EAAK1I,KACAw0B,EAAY1J,OAAM,KACvB,MAAM6K,EAAK,IACN7R,EACHqQ,WAAYzrB,EAAKyrB,WACjB5J,kBAAc9d,EACd0e,gBAAY1e,GAId,OAFA+nB,EAAY3H,kBAAkB8I,IAEvBC,EAAAA,GAAAA,IAAcD,GAClBpqB,MAAK8C,gBACEmmB,EAAYnJ,QAClBiJ,EACED,EAAS1yB,KAAKk0B,IACRA,EAAQ1B,aAAezrB,EAAKyrB,aAC9B0B,EAAQC,UAAW,EACnBD,EAAQ5N,YAAca,EAAIb,YAC1B4N,EAAQ1N,cAAgBW,EAAIX,eAEvB0N,KAPX,IAWD/pB,OAAOwf,IACFA,EAAIC,SACNiJ,EAAYhJ,mBAAmBF,EAAI7pB,KACpC,GAjBL,IAsBG8yB,EAAWzJ,OAAM,KACtB,MAAMC,EAAM,IACPjH,EACHyG,kBAAc9d,EACd0e,gBAAY1e,GAId,OAFA8nB,EAAW1H,kBAAkB9B,IAEtBgL,EAAAA,GAAAA,IAAWhL,GACfxf,MAAK8C,UAEJ,SADMkmB,EAAWlJ,QACC,UAAd3iB,EAAK1I,KAAkB,CACzB,MAAM2I,EAAQ0rB,EAASrM,WACpB6N,GAAYA,EAAQ1B,aAAezrB,EAAKyrB,aAE3CJ,EAAqB,IACrBM,EAAS2B,OAAOrtB,EAAQ,EAAG,EAAGmgB,GAC9BwL,EAAY,IAAID,GACjB,MACCC,EAAY,IACPD,EAAS1yB,KAAKk0B,IACXA,EAAQ1B,aAAezrB,EAAKyrB,YAC9BJ,EAAqB,IAEhB8B,KAET/M,IAIJ+K,GAAkB,EAAlB,IAED/nB,OAAOC,IACN,GAAIA,EAAGwf,QAAS,CAGd,IAFmBgJ,EAAW/I,mBAAmBzf,EAAGtK,OAEb,IAAnBsK,EAAGtK,KAAKC,OAC1B,OAAOuN,QAAQgnB,OAAOlqB,EAEzB,CACD,OAAOkD,QAAQinB,SAAf,GAhCJ,GARF,EAoHIhrB,EAAe,EAAG/I,UAAUuG,KAvEZzG,OAwEf0qB,EAAAA,GAAAA,kBAAgB,KAGN,WAAXxqB,EACF8sB,EAAYhkB,OAAO,CACjBhJ,GAAIyG,EAAKyrB,WACTn0B,KAAM,UACNmC,OAAQ,SAEU,WAAXA,GAjFSF,EAkFLyG,EAAKyrB,WAjFpB5wB,GAAAA,EAAAA,QAAc,CACZnB,MAAOjB,EAAE,QAAS,CAAEE,UAAW,WAC/B+C,QAASjD,EAAE,QAAS,CAAEE,UAAW,WACjC8B,kBAAmB,SACnBF,YAAa9B,EAAE,SAAU,CAAEE,UAAW,SACtCwB,UAAW,KACTssB,EAASrE,OAAM,KACb,MAAME,EAAU,CAAEG,gBAAY1e,EAAW8d,kBAAc9d,GACvD0iB,EAAStC,kBAAkB7B,IAE3BmL,EAAAA,GAAAA,IAAcl0B,EAAI+oB,GACfzf,MAAK8C,gBACE8gB,EAAS9D,QACG,IAAdqI,GACFO,IAEFK,EAAYD,EAAS7mB,QAAQ9E,GAASA,EAAKyrB,aAAelyB,IAA1D,IAED6J,OAAOC,IACFA,EAAGwf,SACL4D,EAAS3D,mBAAmBzf,EAAGtK,KAChC,GAXL,GAJF,KA4EkB,SAAXU,GA3LOF,KAClBqyB,EACED,EAAS1yB,KAAK+G,IACRA,EAAKyrB,aAAelyB,IACtByG,EAAKotB,UAAYptB,EAAKotB,UAEjBptB,KALX,EA2LE6nB,CAAW7nB,EAAKyrB,YACjB,EAGGiC,EAAgBn0B,IACpBqyB,EACED,EAAS1yB,KAAK+G,IACRA,EAAKyrB,aAAelyB,IACtByG,EAAKotB,UAAW,EAChB/B,EAAqB,KAEhBrrB,KANX,EAUF,OACE,iBACEpI,UAAWC,IACT,gBACA8zB,EAAS3yB,OAAS,GAAK,8BAH3B,UAKG2yB,EAAS1yB,KAAK+G,IAEX,iBAEEzG,GAAIyG,EAAKyrB,WACT7zB,UAAU,oBAHZ,UAIGoI,EAAKotB,UACJ,SAAC,GAAD,CACEx1B,UAAU,OACVL,MAAOyI,EAAKyf,cACZnoB,KAAK,OACLwd,KAAMA,EACNyU,YAAchyB,GACZyyB,EAAgB,IAAKhqB,EAAMzI,QAAOD,KAAM,SAE1C2C,SAAU,IAAMyzB,EAAa1tB,EAAKyrB,eAGpC,iBAAK7zB,UAAU,UAAf,UACGoI,EAAKwsB,0BACJ,UAAC,MAAD,CAAMnzB,GAAG,IAAIzB,UAAU,yBAAvB,cACIoI,EAAKwsB,4BAIX,gBACE50B,UAAU,iCACVqE,wBAAyB,CAAEC,OAAQ8D,EAAKuf,kBAK7C6L,IAAmBprB,EAAKyrB,YACvB,SAACkC,GAAD,CACE9C,SAAU7qB,EAAKssB,kBACfxX,KAAMA,EACNyU,YAAchyB,GACZyyB,EAAgB,IAAKhqB,EAAMzI,QAAOD,KAAM,UAE1C2C,SAAU,IAAMyzB,EAAa1tB,EAAKyrB,cAElC,KACHzrB,EAAKotB,UAAYhC,IAAmBprB,EAAKyrB,WAAa,MACrD,SAAC,GAAD,CACEpB,SAAUrqB,EAAKssB,kBACf7S,SAAUzZ,EAAKyZ,SACf6Q,UAAWtqB,EAAKmsB,WAChB3B,UAAWxqB,EAAKvB,WAChB8rB,OAAQvqB,EAAK4tB,QACbtH,cAAetmB,EAAK6tB,eACpBjD,WAAY5qB,EAAK8tB,YACjBrD,QAAS,KA/QFlxB,QAgROyG,EAAKyrB,YA/Q1BxH,EAAAA,GAAAA,kBAAgB,IAGrB0H,EAASvmB,SAASpF,IACZA,EAAKyrB,aAAelyB,GACtB8xB,EAAqB9xB,EACtB,GAyQW,EAEFoxB,SAAWlxB,GAAW+I,EAAa/I,EAAQuG,GAC3C0qB,OAAS1uB,IAnIJ,IAACzC,EAAI+qB,EAoIRtoB,EAAEgL,iBApIEzN,EAqIOyG,EAAKyrB,WArIRnH,EAqIoBtkB,EAAK4tB,SApI1C3J,EAAAA,GAAAA,kBAAgB,IAIrBL,EAASxB,OAAM,KACb,MAAME,EAA4B,CAChCG,gBAAY1e,EACZ8d,kBAAc9d,GAEhB6f,EAASO,kBAAkB7B,IAE3B8B,EAAAA,GAAAA,IACE,CACEC,UAAW9qB,EACX+qB,eACGhC,GAEL,MAECzf,MAAK8C,gBACEie,EAASjB,QACfiJ,EACED,EAAS1yB,KAAK+G,IACRA,EAAKyrB,aAAelyB,IACtByG,EAAKvB,WAAa6lB,EACdtkB,EAAKvB,WAAa,EAClBuB,EAAKvB,WAAa,EACtBuB,EAAK4tB,SAAWtJ,GAEXtkB,KARX,IAYDoD,OAAOC,IACFA,EAAGwf,SACLe,EAASd,mBAAmBzf,EAAGtK,KAChC,GAzBL,GAyHY,MAtDDiH,EAAKyrB,eA8DhB,iBAAK7zB,UAAWC,IAAW8zB,EAAS3yB,OAAS,GAAK,QAAlD,WACE,SAACkC,EAAA,EAAD,CACE3C,QAAQ,OACRX,UAAU,oBACV6J,KAAK,KACLjJ,QAAS,MACHyrB,EAAAA,GAAAA,kBAAgB,IAClBkH,GAAmBD,EACpB,EAPL,SASGzyB,EAAE,qBAEJG,IACEoyB,GAAa,GAAKpC,KAAKC,OAAU,OAAJjwB,QAAI,IAAJA,OAAA,EAAAA,EAAMiB,QAAS,GAAKwF,KAChD,SAACnE,EAAA,EAAD,CACE3C,QAAQ,OACRkJ,KAAK,KACL7J,UAAU,yBACVY,QAAS,KACPyyB,EAAaD,EAAY,EAAzB,EALJ,SAOGvyB,EAAE,YAAa,CACdoB,MACEjB,EAAKiB,OAAuB,IAAdmxB,EAAkB,EAAIA,EAAY3rB,UAM3D6rB,IACC,SAAC,GAAD,CACEpW,KAAMA,EACNld,UAAWC,IACT,OACA8zB,EAAS3yB,QAAU,GAAK,wBAE1BuwB,YAAchyB,GAAUyyB,EAAgB,CAAEzyB,QAAOD,KAAM,YACvD2C,SAAU,IAAMkxB,GAAmBD,OA5G3C,ECpTI6C,GAEF,EAAGx2B,QAAOC,WAAUiK,OAAMP,OAAO,EAAG6S,aAAY,KAASia,MAC3D,MAAMtpB,GAAMoK,EAAAA,EAAAA,QAA4B,MAElCmf,EAAW,KACXvpB,EAAIqK,UACNrK,EAAIqK,QAAQ3N,MAAMpJ,OAAS,OAC3B0M,EAAIqK,QAAQ3N,MAAMpJ,OAAU,GAAE0M,EAAIqK,QAAQmf,iBAC3C,EASH,OANA3qB,EAAAA,EAAAA,YAAU,KACJmB,EAAIqK,SAAWxX,GACjB02B,GACD,GACA,CAACvpB,EAAKnN,KAGP,SAAC6W,EAAA,EAAD,CACEjV,GAAG,WACHvB,UAAU,6BACVsJ,KAAMA,EACNO,KAAMA,EACNlK,MAAOA,EACPC,SAAUA,EACVuc,UAAWA,EACXrP,IAAKA,EACLypB,QAASF,KACLD,GAXR,EAeF,IAAe3kB,EAAAA,EAAAA,MAAK0kB,IC0GpB,GAjI6B,EAAG7zB,WAAUwvB,YAAWQ,iBACnD,MAAMkE,GAAUtf,EAAAA,EAAAA,QAAuB,MACjCuf,GAAcvf,EAAAA,EAAAA,QAAuB,OACpCI,EAAK+E,IAAY/R,EAAAA,EAAAA,UAAS,KAC1BwqB,EAAOD,IAAYvqB,EAAAA,EAAAA,UAA2B,KAC9C4L,EAAQC,IAAa7L,EAAAA,EAAAA,UAAS,IAC9BosB,EAAaC,IAAqBrsB,EAAAA,EAAAA,WAAS,GAE5CssB,EAAa,KAAO,IAAD,EACvB,MAAMxW,EAAO,UAAGqW,EAAYtf,eAAf,aAAG,EAAqB7U,SAAS,IACxC,MAAE3C,EAAF,eAASk3B,EAAiB,GAAMzW,EAKtC,GAHIzgB,EAAM4R,QAAQ,KAAO,GACvB8K,EAAS,KAENwa,EACH,OAGF,MAAMzb,EAAMzb,EAAMmV,UAChBnV,EAAMmV,UAAU,EAAG+hB,GAAgBC,YAAY,KAC/CD,GAGEzb,EAAItG,UAAUsG,EAAI0b,YAAY,KAAMD,GAAgBtlB,QAAQ,KAAO,IAGvE8K,EAASjB,EAAItG,UAAU,IAElBsG,EAAItG,UAAU,KAGf4hB,GAGJC,GAAkB,IAAlB,GAGFhrB,EAAAA,EAAAA,YAAU,KAAO,IAAD,EACd,MAAMyU,EAAO,UAAGqW,EAAYtf,eAAf,aAAG,EAAqB7U,SAAS,GAK9C,OAHI8d,GACFA,EAAQyI,iBAAiB,QAAS+N,GAE7B,KACLxW,EAAQ0I,oBAAoB,QAAS8N,EAArC,CADF,GAGC,CAACH,KAEJ9qB,EAAAA,EAAAA,YAAU,KACRkpB,EAAS/C,EAAT,GACC,CAACA,EAAWxa,IAEf,MAAM3B,EAAevN,IAAU,IAAD,EAC5B,MAAMgY,EAAO,UAAGqW,EAAYtf,eAAf,aAAG,EAAqB7U,SAAS,IAExC,MAAE3C,EAAF,eAASk3B,EAAiB,GAAMzW,EAEtC,IAAKyW,EACH,OAGF,MAAMjtB,EAAQ,IAAD,OAAIxB,QAAJ,IAAIA,OAAJ,EAAIA,EAAM6qB,WACvBX,EACG,GAAE3yB,EAAMmV,UACP,EACAnV,EAAMmV,UAAU,EAAG+hB,GAAgBC,YAAY,QAC7CltB,IAAOjK,EAAMmV,UAAU+hB,MAE7BhC,EAAS,IACTxY,EAAS,GAAT,EAEI0a,EAAazf,EACfwd,EAAM5nB,QACH9E,IAAD,eACqC,KAAnC,UAAAA,EAAKqsB,mBAAL,eAAkBljB,QAAQ+F,KACM,KAAhC,UAAAlP,EAAK6qB,gBAAL,eAAe1hB,QAAQ+F,GAFzB,IAIF,GAuBJ,OACE,UAAC,IAAD,CACExK,IAAK2pB,EACLz2B,UAAU,gBACVkD,KAAM6zB,EAAW31B,OAAS,EAC1BiV,UA3BmBjS,IACrB,MAAM,QAAEkS,GAAYlS,EAWpB,GATgB,KAAZkS,GAAkBJ,EAAS,IAC7B9R,EAAEgL,iBACF+G,EAAUD,EAAS,IAEL,KAAZI,GAAkBJ,EAAS6gB,EAAW31B,OAAS,IACjDgD,EAAEgL,iBAEF+G,EAAUD,EAAS,IAEL,KAAZI,GAAkBJ,GAAU,GAAKA,GAAU6gB,EAAW31B,OAAS,EAAG,CACpEgD,EAAEgL,iBAEF,MAAMhH,EAAO2uB,EAAW7gB,GAExBP,EAAYvN,GACZ+N,EAAU,EACX,GAID,UAKG7T,GACD,SAAC,SAAD,CACEtC,UAAW+2B,EAAW31B,OAAS,EAAI,UAAY,YAC/C0L,IAAK0pB,EAFP,SAGGO,EACE7pB,QAAO,CAACtI,EAAGyD,IAAUA,EAlHb,IAmHRhH,KAAI,CAAC+G,EAAMC,KAER,UAAC,SAAD,CACErI,UAAY,IAAEkW,IAAW7N,EAAQ,cAAgB,IAEjDzH,QAAS,IAAM+U,EAAYvN,GAH7B,WAIE,iBAAMpI,UAAU,iBAAhB,SAAkCoI,EAAKqsB,eACvC,mBAAOz0B,UAAU,iBAAjB,cAAoCoI,EAAK6qB,cAHpC7qB,EAAKqsB,mBAhBxB,ECtGIvyB,GAAmB,EAAGsE,OAAME,SAAQ1G,gBACxC,MAAM,EAAEa,IAAMC,EAAAA,EAAAA,KAgCd,OAAK0F,GAKH,kBACExG,UAAWC,IAAW,GAAID,GAC1Bg3B,SAAUzR,KAAAA,KAAW/e,GAAMywB,KAAKC,cAChCp1B,MAAOyjB,KAAAA,KAAW/e,GAAMywB,KAAKzR,OAAO3kB,EAAE,8BAHxC,UAIG6F,EAAU,GAAEA,KAAY,GAxCT8R,KAClB,MAAM2e,EAAMnG,KAAKoG,MAAM7R,OAAQ8R,UAAY,KACrCC,EAAUH,EAAM3e,EAAO2e,EAAM3e,EAAO,EAE1C,GAAI8e,GAAW,EACb,OAAOz2B,EAAE,aAEX,GAAIy2B,EAAU,GAAKA,EAAU,GAC3B,OAAOz2B,EAAE,sBAAuB,CAAEoB,MAAOq1B,IAG3C,GAAIA,GAAW,IAAMA,EAAU,KAAM,CACnC,MAAM9F,EAAMR,KAAKoG,MAAME,EAAU,IACjC,OAAOz2B,EAAE,sBAAuB,CAAEoB,MAAOuvB,GAC1C,CACD,GAAI8F,GAAW,MAAQA,EAAU,MAAW,CAC1C,MAAMC,EAAIvG,KAAKoG,MAAME,EAAU,MAC/B,OAAOz2B,EAAE,oBAAqB,CAAEoB,MAAOs1B,GACxC,CAED,OACED,GAAW,OACXA,EAAU,UACV/R,KAAAA,KAAW/M,GAAMgN,OAAO,UAAYD,KAAAA,KAAW4R,GAAK3R,OAAO,QAEpDD,KAAAA,KAAW/M,GAAMye,KAAKzR,OAAO3kB,EAAE,oBAGjC0kB,KAAAA,KAAW/M,GAAMye,KAAKzR,OAAO3kB,EAAE,6BAAtC,EAaG22B,CAAWhxB,MATP,IAGT,EAWF,IAAeiL,EAAAA,EAAAA,MAAKvP,I,gBChDpB,MAAMA,GAAoB,EAAGsI,MAAK7J,UAAU,UAAWoD,cAEnD,gBACE/D,UAAU,gCACVwJ,MAAO,CACL+f,SAAU,QACVkO,IAAK,OACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,OACRpO,OAAQ,GARZ,UAUE,SAACrf,GAAA,EAAD,CACEnK,UAAU,8BACV63B,MAAO,IACPC,GAAIn3B,EACJuC,KAAM0gB,QAAQpZ,GACdutB,UAAQ,EACRh0B,QAASA,EANX,UAOE,iBAAK/D,UAAU,SAAf,WACE,SAACmK,GAAA,OAAD,CACE9F,wBAAyB,CAAEC,OAAQkG,GACnCxK,UAAY,IAAc,YAAZW,EAAwB,aAAe,OAEvD,mBACEX,UAAY,0BACE,YAAZW,EAAwB,kBAAoB,IAE9CC,QAASmD,EACT,kBAAgB,QAChB,aAAW,iBAQvB,IAAe0N,EAAAA,EAAAA,MAAKvP,I,gBCvCpB,SAAS81B,IAAS,KAChBC,EADgB,SAEhB7sB,EAFgB,UAGhB8sB,EAHgB,UAIhBC,GAAY,EAJI,KAKhBxH,EAAO,MAEP,MAAM,EAAE9vB,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,cACnDq3B,GAAUH,EAAK31B,SAASlB,OACxB2a,EAAOqc,EAAU,GAAEzH,IAAOsH,EAAKtH,OAAS,IAE9C,OACE,UAACtP,GAAA,OAAD,CAA0BrhB,UAAU,QAApC,WACE,UAACqhB,GAAA,OAAD,CACEzG,SAAUqd,EAAKtH,KACfpvB,GAAI62B,EAAS,IAAM,SACnBx3B,QAAUmE,IACRqG,EAASrG,EAAKkzB,EAAMlc,EAAMqc,EAA1B,EAEFrc,KAAMA,EACN/b,UAAWC,IACT,0DACA,CAAEk4B,YAAW,YAAaD,IAAcD,EAAKtH,OATjD,WAWE,iBAAM3wB,UAAU,wBAAhB,SACGi4B,EAAKxD,YAAcwD,EAAKxD,YAAc5zB,EAAEo3B,EAAKv3B,QAE/Cu3B,EAAKI,cACJ,iBAAMr4B,UAAU,qBAAhB,SAAsCi4B,EAAKI,eACzC,MACFD,IACA,SAAC,GAAD,CAAMp4B,UAAU,qBAAqBU,KAAK,qBAG7Cu3B,EAAK31B,SAASlB,QACb,SAACk3B,GAAA,WAAD,CAAoB1d,SAAUqd,EAAKtH,KAAM3wB,UAAU,OAAnD,UACE,8BACGi4B,EAAK31B,SAASjB,KAAKk3B,IAEhB,SAACP,GAAD,CACEC,KAAMM,EACNntB,SAAUA,EACV8sB,UAAWA,EACXvH,KAAMA,GACD4H,EAAK5H,YAMlB,OAtCSsH,EAAKtH,KAyCvB,CAMD,MA4EA,GA5EyC,EAAG6H,QAAQ,GAAI7H,OAAO,QAC7D,MAAM7P,GAAWC,EAAAA,GAAAA,MACX0X,GAAYnV,EAAAA,GAAAA,IAAU,GAAEqN,MAE9B6H,EAAMhrB,SAASkrB,IACRA,EAAE/H,OACL+H,EAAE/H,KAAO+H,EAAEh4B,MAERwG,MAAMC,QAAQuxB,EAAEp2B,YACnBo2B,EAAEp2B,SAAW,IAEfo2B,EAAEp2B,SAASkL,SAASmrB,IACbA,EAAGhI,OACNgI,EAAGhI,KAAOgI,EAAGj4B,MAEVwG,MAAMC,QAAQwxB,EAAGr2B,YACpBq2B,EAAGr2B,SAAW,GACf,GANH,IAUF,MAAMs2B,EAAQH,GAAaA,EAAUjV,OAAO,KAC5C,IAAI0U,EAAYM,EAAM,GAAG7H,KACrBiI,IACFV,EAAYU,GAEd,MAAMC,EAAa,KACjB,IAAIC,EAAU,GAWd,OAVAN,EAAMhrB,SAASlM,IACb,GAAIA,EAAGgB,SAASlB,OAAQ,CACDE,EAAGgB,SAASy2B,MAAM9d,GAC9BA,EAAG0V,OAASuH,MAGnBY,EAAUx3B,EAAGqvB,KAEhB,KAEImI,CAAP,GAGKA,EAASE,IAAc1uB,EAAAA,EAAAA,UAASuuB,KACjCI,EAAY,CAACl0B,EAAKkzB,EAAMlc,EAAMqc,KAClCrzB,EAAIC,kBACAozB,EACEnzB,GAAAA,GAAAA,uBAAwCF,KAC1CA,EAAIqK,iBACJ0R,EAAS/E,IAGXid,EAAWF,IAAYb,EAAKtH,KAAO,GAAKsH,EAAKtH,KAC9C,EAKH,OAHAhlB,EAAAA,EAAAA,YAAU,KACRqtB,EAAWH,IAAX,GACC,CAACX,EAAWM,KAEb,SAACF,GAAA,EAAD,CAAWJ,UAAWY,EAASI,OAAK,EAApC,UACE,SAAC7X,GAAA,EAAD,CAAK1gB,QAAQ,QAAQX,UAAU,cAAck4B,UAAWA,EAAxD,SACGM,EAAMn3B,KAAKC,IAER,SAAC02B,GAAD,CACEC,KAAM32B,EACNqvB,KAAMA,EACNvlB,SAAU6tB,EACVf,UAAWA,EACXC,UAAWW,IAAYx3B,EAAGqvB,MACrBrvB,EAAGqvB,WAXpB,EC3HIzuB,GAAsC,EAAGI,eAE3C,gBAAKtC,UAAU,mBAAf,SACGsC,IACC,UAACmjB,GAAA,EAAD,CAAOC,QAAQ,sBAAf,yCAC6B,kBAD7B,iDASR,IAAejU,EAAAA,EAAAA,MAAKvP,ICCdA,GAAmB,EACvBlB,OACAuF,cAAa,EACb4yB,cAAc,GACdC,aAAa,OACbp5B,YAAY,QACZq5B,kBAAkB,OAClBC,kBAAiB,EACjBC,eAAe,YAGb,iBAAKv5B,UAAY,6CAA4CA,IAA7D,UACoB,aAAb,OAAJgB,QAAI,IAAJA,OAAA,EAAAA,EAAMqF,SACL,UAAC,MAAD,CACE5E,GAAK,UAAD,OAAUT,QAAV,IAAUA,OAAV,EAAUA,EAAM6gB,WACpB7hB,UAAU,4BAFZ,UAGGuG,IACC,SAACob,EAAD,CACE1Q,OAAM,OAAEjQ,QAAF,IAAEA,OAAF,EAAEA,EAAMiQ,OACdpH,KAAMuvB,EACNp5B,UAAY,QAAOm5B,IACnBjoB,UAAWmoB,EACXl5B,IAAG,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAM4gB,gBAGf,iBACE5hB,UAAU,qBACVwJ,MAAO,CAAE4mB,SAAUmJ,GAFrB,gBAGGv4B,QAHH,IAGGA,OAHH,EAGGA,EAAM4gB,mBAIX,gCACGrb,IACC,SAACob,EAAD,CACE1Q,OAAM,OAAEjQ,QAAF,IAAEA,OAAF,EAAEA,EAAMiQ,OACdpH,KAAMuvB,EACNp5B,UAAY,QAAOm5B,IACnBjoB,UAAWmoB,EACXl5B,IAAG,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAM4gB,gBAGf,iBAAM5hB,UAAU,qBAAhB,gBAAsCgB,QAAtC,IAAsCA,OAAtC,EAAsCA,EAAM4gB,kBAI/C0X,IACC,iBAAMt5B,UAAU,UAAU8B,MAAM,aAAhC,UACGuuB,EAAAA,GAAAA,IAAW,OAACrvB,QAAD,IAACA,OAAD,EAACA,EAAMsvB,WAO7B,IAAe7e,EAAAA,EAAAA,MAAKvP,I,gBChEpB,MAAMA,GAAY,KAChB,MAAM,EAAErB,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,cAClDy4B,EAAQC,IAAgBnvB,EAAAA,EAAAA,WAAS,IAChCtJ,KAAM04B,EAAR,OAAuB/F,IAAWgG,EAAAA,GAAAA,MAElCC,EAAY,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAer4B,KAAK+G,GACnCA,EAAKd,UACAc,EAAKd,UAEPc,IAgBT,OAAKyxB,EAAAA,GAAAA,yBAAwBC,GAGtBN,GACL,UAACO,GAAA,EAAD,CAAM/5B,UAAU,OAAhB,WACE,UAAC+5B,GAAA,SAAD,CAAa/5B,UAAU,6CAAvB,UACGa,EAAE,mBACH,SAACyC,EAAA,EAAD,CACE3C,QAAQ,OACRX,UAAU,wBACVY,QAvBiB,MACvBo5B,EAAAA,GAAAA,IAAW,CACTC,eAAgBL,IAElBH,GAAa,EAAb,EAgBI,SAIG54B,EAAE,cAGP,SAACk5B,GAAA,OAAD,WACE,SAAC,GAAD,CACEp6B,MAAO+5B,EACP95B,SAvBkBD,IACxBg0B,EAAO,IAAIh0B,GAAQ,CACjBu6B,YAAY,GADd,EAuBMjU,mBAAiB,EACjBC,iBAAe,EACf/J,WAAS,UAKf,UAAC4d,GAAA,EAAD,CAAM/5B,UAAU,OAAhB,WACE,UAAC+5B,GAAA,SAAD,CAAa/5B,UAAU,6DAAvB,UACGa,EAAE,mBACH,SAACyC,EAAA,EAAD,CACE3C,QAAQ,OACRX,UAAU,oCACVY,QAAS,IAAM64B,GAAa,GAH9B,SAIG54B,EAAE,cAGP,SAACk5B,GAAA,OAAD,UACgB,OAAbL,QAAa,IAAbA,GAAAA,EAAet4B,QACd,gBAAKpB,UAAU,OAAf,SACG05B,EAAcr4B,KAAK+G,IAClB,MAAMqb,EAAQ,OAAGrb,QAAH,IAAGA,OAAH,EAAGA,EAAMd,UACvB,OAAO,SAAC6yB,GAAD,CAAoBn6B,UAAU,MAAMgB,KAAMoH,GAAhCqb,EAAjB,OAIJ,iCACE,gBAAKzjB,UAAU,aAAf,SAA6Ba,EAAE,qBAC/B,SAACyC,EAAA,EAAD,CACEuG,KAAK,KACL7J,UAAU,OACVW,QAAQ,kBACRC,QAAS,IAAM64B,GAAa,GAJ9B,SAKG54B,EAAE,0BAlDN,IAET,EAyDF,IAAe4Q,EAAAA,EAAAA,MAAKvP,I,gBC3EpB,MACMA,GAAmB,EACvBlB,OAAO,GACPiF,cAAc,GACdm0B,UAAU,QACVj0B,gBAAgB,GAChBnG,YAAY,GACZkG,WAAW,GACXm0B,gBAAgB,OAEhB,MAAOvJ,EAAcwJ,IAAsB50B,EAAAA,GAAAA,MACrCob,GAAWC,EAAAA,GAAAA,OAEX,EAAElgB,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAC1CC,UAAWoF,IAGPirB,EAAgB7rB,IACpBurB,EAAayJ,OAAO,QACpBzJ,EAAaQ,IAAI8I,EAAS70B,GAE1B,MAAQ,IADUurB,EAAaS,YAC/B,EAGI5b,EAAc,CAACvR,EAAG1E,KACtB,MAAM0b,EAAMgW,EAAa1xB,GACrBuF,GAAAA,GAAAA,uBAAwCb,KAC1CA,EAAEgL,iBACElJ,EACF4a,EAAU,GAAE5a,IAAWkV,KAEvBkf,EAAmBlf,GAEtB,EAGGof,EAAex5B,EAAKkM,QAAO,CAACtI,EAAGyD,IAAUA,EAAQoyB,IACjDC,EAAaF,EAAazB,MAAM4B,IACb,kBAARA,EAAmBA,EAAMA,EAAIj6B,QAAUuF,IAExD,OACE,UAAC4mB,GAAA,EAAD,CAAahjB,KAAK,KAAK7J,UAAWq6B,EAAlC,UACGr5B,EAAKK,KAAI,CAACs5B,EAAKtyB,KACd,MAAM8E,EAAqB,kBAARwtB,EAAmBA,EAAMA,EAAItG,KAC1C3zB,EAAsB,kBAARi6B,EAAmBA,EAAMA,EAAIj6B,KACjD,OACE,SAAC4C,EAAA,EAAD,CACE/B,GAAG,IAEHZ,QAAQ,oBACR8oB,OAAQxjB,IAAgBvF,EACxBV,UAAWC,IACT,8BACAe,EAAKI,OArDM,GAsDTiH,EAAQoyB,GACR,oBACFz6B,GAEFwJ,MACExI,EAAKI,OA3DM,GA2DuBiH,IAAUrH,EAAKI,OAAS,EACtD,CACEw5B,qBAAsB,UACtBC,wBAAyB,WAE3B,CAAC,EAEP9e,KACE7V,EAAY,GAAEA,IAAWkrB,EAAajkB,KAASikB,EAAajkB,GAE9DvM,QAAUmE,GAAQ4Q,EAAY5Q,EAAKoI,GAvBrC,SAwBGtM,EAAEH,IAtBEyM,EAHT,IA6BDnM,EAAKI,OA1Ea,IA2EjB,SAAC05B,GAAA,EAAD,CACEjxB,KAAK,KACLlJ,QAAS+5B,EAAa,YAAc,oBACpC16B,UAAU,oBACVuB,GAAIsrB,GAAAA,EACJ/qB,MAAoBjB,EAAb65B,EAAez0B,EAAiB,QALzC,SAMGu0B,EAAan5B,KAAKs5B,IACjB,MAAMxtB,EAAqB,kBAARwtB,EAAmBA,EAAMA,EAAItG,KAC1C3zB,EAAsB,kBAARi6B,EAAmBA,EAAMA,EAAIj6B,KACjD,OACE,SAAC,SAAD,CACEa,GAAG,IAEHkoB,OAAQxjB,IAAgBvF,EACxBV,UAAWC,IACT,kBACA,oBACAD,GAEF+b,KACE7V,EACK,GAAEA,IAAWkrB,EAAajkB,KAC3BikB,EAAajkB,GAEnBvM,QAAUmE,GAAQ4Q,EAAY5Q,EAAKoI,GAdrC,SAeGtM,EAAEH,IAbEyM,EAHT,QA5CV,EAsEF,IAAesE,EAAAA,EAAAA,MAAKvP,I,yBC9GpB,MAAMA,GAAmB,EACvB64B,aACAC,UACAC,UACAj7B,YAAY,GACZk7B,OAAO,CACLC,WAAW,EACXC,gBAAgB,OAEb,IAAD,MACJ,IAAKJ,EAAS,OAAO,KAErB,IAAI3zB,EAAM2zB,EAAQ5zB,KAClB,GAAmB,aAAf2zB,GAAA,OAA6BE,QAA7B,IAA6BA,GAAAA,EAAS7zB,KAAM,CAAC,IAAD,EAC9C,MAAMi0B,EAAUL,EAAQ5zB,KAAK8F,QAC1BouB,IAAD,cAAO,OAACL,QAAD,IAACA,GAAD,UAACA,EAAS7zB,YAAV,OAAC,EAAe2xB,MAAM3e,GAAMA,EAAE9S,YAAcg0B,EAAEh0B,YAArD,IAGF,IAAIi0B,EAAU,OAAGN,QAAH,IAAGA,OAAH,EAAGA,EAAS7zB,KACvB8F,QAAQouB,KAAM,OAACN,QAAD,IAACA,GAAAA,EAAS5zB,KAAK2xB,MAAM3e,GAAMA,EAAE9S,YAAcg0B,EAAEh0B,eAC3DjG,KAAK2mB,IAAD,IAAaA,EAAG9f,MAAO,aAE9BqzB,EAAU,UAAGA,SAAH,aAAG,EAAYl6B,KAAK2mB,IAAO,IAAD,EAClC,MAAM3f,EAAK,OAAG4yB,QAAH,IAAGA,GAAH,UAAGA,EAAS7zB,YAAZ,aAAG,EAAesgB,WAC1B4T,GAAMA,EAAEh0B,YAAc0gB,EAAE1gB,YAE3B,MAAO,IACF0gB,EACHwT,UAAWnzB,EAFb,IAMFhB,EAAM2zB,EAAQ5zB,KAAK/F,KAAK+G,IACtB,MAAM2wB,EAAOsC,EAAQtC,MAAMuC,GAAMA,EAAEh0B,YAAcc,EAAKd,YACtD,OAAIyxB,EACK,IACFA,EACH7wB,MAAO,OAGJE,CAAP,IAGFmzB,EAAW/tB,SAASwa,IAClB3gB,EAAIquB,OAAO1N,EAAEwT,UAAW,EAAGxT,EAA3B,GAEH,CAED,OACE,iBAAKhoB,UAAWA,EAAhB,UACkB,WAAf+6B,IAAA,OAA2BG,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAMC,aAChC,eACE92B,wBAAyB,CACvBC,QAAQm3B,EAAAA,GAAAA,IAAQ,UACdT,EAAQl5B,aADM,aACd,EAAeiS,QAAQ,MAAO,QADhB,OAEdknB,QAFc,IAEdA,GAFc,UAEdA,EAASn5B,aAFK,aAEd,EAAgBiS,QAAQ,MAAO,UAGnC/T,UAAU,SAGE,aAAf+6B,IACC,gBAAK/6B,UAAU,OAAf,mBACGqH,SADH,aACG,EAAKhG,KAAK+G,IAEP,SAAC+xB,GAAD,CAEEn6B,UAAU,OACVgB,KAAMoH,EACN+kB,cAAgB,8BAA6B/kB,EAAKF,SAH7CE,EAAKd,eASJ,QAAfyzB,IAAA,OAAwBG,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAME,kBAC7B,gBACEp7B,UAAWuJ,IACT,uBACAyxB,EAAQnT,eAAiB,QAE3BxjB,wBAAyB,CACvBC,OAAS,SACA,OAAP02B,QAAO,IAAPA,GAAAA,EAASU,oBACLD,EAAAA,GAAAA,IACET,EAAQU,mBADF,OAENT,QAFM,IAENA,OAFM,EAENA,EAASS,qBAEXD,EAAAA,GAAAA,IAAST,EAAQ1zB,UAAT,OAAoB2zB,QAApB,IAAoBA,OAApB,EAAoBA,EAAS3zB,iBAKjD,gBACEjD,wBAAyB,CACvBC,QAAQm3B,EAAAA,GAAAA,IAAST,EAAQnT,cAAT,OAAwBoT,QAAxB,IAAwBA,OAAxB,EAAwBA,EAASpT,gBAEnD7nB,UAAU,+CAjDhB,EAuDF,IAAeyR,EAAAA,EAAAA,MAAKvP,ICjHdy5B,GAAcC,GACV,UAAMA,UAuCVC,GAAmB,CAAC5gB,EAAI6gB,EAAMC,EAAUj4B,EAAkB,MAC9D,IAAIk4B,EACAC,EACJ,MAAM,WAAEC,GAAejhB,EACvB,IAAK,IAAI5G,EAAI,EAAGA,EAAI6nB,EAAW96B,OAAQiT,GAAK,EAAG,CAC7C,MAAM8nB,EAAOD,EAAW7nB,GACxB,GAAsB,IAAlB8nB,EAAKC,UAAkBD,EAAKE,YAAcP,EAAM,CAClD,GAAKE,EAEE,CACLC,EAAcE,EACd,KACD,CAJCH,EAAgBG,CAKnB,CACF,CACD,GAAIH,GAAiBC,EACnB,KACED,EAAcM,aACdN,EAAcM,cAAgBL,GAE9BhhB,EAAGshB,YAAYP,EAAcM,aAG7BN,GACF/gB,EAAGshB,YAAYP,GAEbC,GACFhhB,EAAGshB,YAAYN,GAEjBhhB,EAAGuhB,mBAAmBT,EAAKJ,GAAWG,IACtC7gB,EAAGuhB,mBAAmBT,EAAKj4B,GAC3BmX,EAAGuhB,mBAAmBT,EAAKJ,GAAWG,IAnEZ,EAAC7gB,EAAI6gB,KAC/B,IAAIE,EACJ,MAAMS,EAAkC,IAClC,WAAEP,GAAejhB,EACvB,IAAK,IAAI5G,EAAI,EAAGA,EAAI6nB,EAAW96B,OAAQiT,GAAK,EAAG,CAC7C,MAAM8nB,EAAOD,EAAW7nB,GACxB,GAAsB,IAAlB8nB,EAAKC,UAAkBD,EAAKE,YAAcP,EAAM,CAClD,GAAKE,EAIH,MAHAA,EAAgBG,CAKnB,CAECH,GACkB,IAAlBG,EAAKC,UAC2B,WAAhCD,EAAKnd,SAASC,eAEdwd,EAAWxuB,KAAKkuB,EAEnB,CACS,OAAVM,QAAU,IAAVA,GAAAA,EAAYjvB,SAASkvB,IACnB,MAAMC,EAASj5B,SAASC,cAAc,UACtCg5B,EAAO/yB,KAAQ,mBACX8yB,EAAG9yB,kBAEP,IAAK,IAAIyK,EAAI,EAAGA,EAAIqoB,EAAGE,WAAWx7B,OAAQiT,GAAK,EAAG,CAChD,MAAMwoB,EAAOH,EAAGE,WAAWvoB,GAC3BsoB,EAAO1T,aAAa4T,EAAKn8B,KAAMm8B,EAAKl9B,MACrC,CACDsb,EAAGQ,aAAakhB,EAAQD,EAAxB,GATF,EA8CAI,CAAoB7hB,EAAI6gB,EAAxB,EAiBI55B,GAAY,KAChB,MAAM,YAAE66B,EAAF,cAAeC,EAAf,cAA8BC,IAAkBC,EAAAA,GAAAA,KACnDh1B,GAAUA,IASb,OAPAyD,EAAAA,EAAAA,YAAU,KACRyR,YAAW,KApBWtZ,KACxB,MAAMmX,EAAKvX,SAASy5B,KACpBtB,GAAiB5gB,EAhFM,iBAgFgB,YAAanX,EAApD,EAmBIs5B,CAAiBL,EAAjB,GACC,KAjBqBj5B,KAC1B,MAAMmX,EAAKvX,SAASkQ,KACpBioB,GAAiB5gB,EApFQ,mBAoFgB,aAAcnX,EAAvD,EAgBEu5B,CAAmBL,GAbKl5B,KAC1B,MAAMmX,EAAKvX,SAASkQ,KACpBioB,GAAiB5gB,EAxFQ,mBAwFgB,YAAanX,EAAtD,EAYEw5B,CAAmBL,EAAnB,GACC,CAACF,EAAaC,EAAeC,IACzB,IAAP,EAGF,IAAexrB,EAAAA,EAAAA,MAAKvP,I,uCCvGpB,MAmJA,GAnJkB,KAAO,IAAD,EACtB,MAAM,MAAEoiB,EAAF,aAASC,IAAiBC,EAAAA,GAAAA,KAAmB5f,GAAMA,IACzD,IAAI24B,EACJ,OAAIhZ,QAAJ,IAAIA,GAAJ,UAAIA,EAAeD,UAAnB,OAAI,EAAuBkZ,gBACzBD,EAAeE,KAAMlZ,EAAaD,GAAOkZ,gBAa3C,OAJAE,EAAAA,EAAAA,kBAAgB,KAPM,MACpB,MAAMC,EAAgBj6B,SAASwgB,cAAc,4BAC7C,GAAIyZ,EAAe,CACjB,MAAMC,EAAaL,EAAeA,EAAaM,MAAQ,UACvDF,EAAc1U,aAAa,UAAW2U,EACvC,GAGDE,EAAe,GACd,CAACP,KAGF,SAAC,MAAD,UACGA,IACC,2BACI,uDAEiBA,EAAaM,yCACVN,EAAaM,6CACTN,EAAaQ,MAAMC,QAAQ3wB,KAAK,2CACjCkwB,EAAaM,gDACTN,EAAaQ,MAAMC,QAAQ3wB,KAAK,kDAC9B4wB,EAAAA,GAAAA,IAAWV,EAAc,IAAKM,uDAC1BI,EAAAA,GAAAA,IAAWV,EAAc,IACnDW,QACAF,4GAGgBG,EAAAA,GAAAA,IAAUZ,EAAc,IAAKM,iDACzBM,EAAAA,GAAAA,IAAUZ,EAAc,IAC5CW,QACAF,qDACsBC,EAAAA,GAAAA,KACvBE,EAAAA,GAAAA,IAAUZ,EAAc,KACvB,IACDM,uDAC2BI,EAAAA,GAAAA,KAC3BE,EAAAA,GAAAA,IAAUZ,EAAc,KACvB,IAEAW,QACAF,yGAG8BT,EAAaM,uFAG/BN,EAAaM,kDACHN,EAAaM,+CACjBM,EAAAA,GAAAA,IAAUZ,EAAc,wDACdY,EAAAA,GAAAA,IAAUZ,EAAc,qDAC1Ba,EAAAA,GAAAA,IAAWb,EAAc,+CAChCY,EAAAA,GAAAA,IAAUZ,EAAc,wDACdY,EAAAA,GAAAA,IAAUZ,EAAc,+CAChCA,EAAaM,2DACHN,EAAaM,kGAG7BN,EAAaM,kDACNN,EAAaM,8CACjBN,EAAaM,wDACHN,EAAaM,+CACtBN,EAAaM,yDACHN,EAAaM,oDAClBN,EAAaM,2DACNN,EAAaM,yFAG7BN,EAAaM,sDACFN,EAAaM,gEACHN,EAAaM,kLAKxBN,EACzBc,KAAK,KACLC,wDACaH,EAAAA,GAAAA,IAAUZ,EAAc,kHAGpBA,EAAaM,yCACjBN,EAAaM,oGAGbM,EAAAA,GAAAA,IAAUZ,EAAc,2TAIwGY,EAAAA,GAAAA,IAC9IZ,EACA,kIAI0BA,EACzBc,KAAK,KACLC,wDACaH,EAAAA,GAAAA,IAAUZ,EAAc,uNAM/BA,EAAaM,wHAGbO,EAAAA,GAAAA,IAAWb,EAAc,IAAKM,wJAGdM,EAAAA,GAAAA,IAAUZ,EAAc,IAC9CQ,MACAC,QACA3wB,KAAK,uCACC+wB,EAAAA,GAAAA,IAAWb,EAAc,IAAKM,+IAGlBM,EAAAA,GAAAA,IAAUZ,EAAc,IAAKM,2KAIzBO,EAAAA,GAAAA,IAAWb,EAAc,IAC/CQ,MACAC,QACA3wB,KAAK,kDACC8wB,EAAAA,GAAAA,IAAUZ,EAAc,IAAKM,sLAGbM,EAAAA,GAAAA,IACvBZ,EACA,IACAM,oDACOM,EAAAA,GAAAA,IAAUZ,EAAc,IAAKM,sDAzHpD,E,gBCnBF,MAAMU,IAAqB76B,SAASwgB,cAAc,4BAmElD,GAjEkB,KAChB,MAAM,QAAEsa,EAAF,YAAWC,IAAgB7b,EAAAA,GAAAA,KAAe1a,GAAUA,EAAM2a,YAC1D,UAAE6b,EAAF,SAAaC,EAAb,YAAuBz5B,IAAgB05B,EAAAA,GAAAA,KAC1C12B,GAAUA,EAAM22B,QAEbC,GAAan6B,EAAAA,GAAAA,KAAeC,GAAMA,EAAEm6B,UACpCC,GAAcr6B,EAAAA,GAAAA,KAAeC,GAAMA,EAAEif,WAqBrCob,GAAcC,EAAAA,GAAAA,kBAmBpB,OATAvzB,EAAAA,EAAAA,YAAU,KARJszB,GACFv7B,SAASy7B,gBAAgBlW,aACvB,OACAgW,EAAYlrB,QAAQ,IAAK,KAMjB,GACX,CAACkrB,KACJtzB,EAAAA,EAAAA,YAAU,KAjCc,MACtB,IAAKmzB,EACH,OAEF,MAAMM,EAAoB17B,SAASwgB,cAAc,0BAC7Ckb,GACFA,EAAkBnW,aAChB,UACC,UAAS6V,0DAAmEE,IAEhF,EAwBDK,EAAiB,GAChB,CAACP,KACJpB,EAAAA,EAAAA,kBAAgB,KAxBI,MAClB,IACMgB,IACFh7B,SAAS5B,MAAQ48B,EAGN,CAAb,MAAOjzB,GAAM,GAmBf6zB,EAAa,GACZ,CAACZ,KAEF,UAAC,MAAD,YACE,iBACE1iB,IAAI,OACJtc,KAAK,YACLqc,KAAMyiB,GAAWC,GAAe,kBAElC,iBAAMziB,IAAI,OAAOtc,KAAK,YAAY6/B,MAAM,UAAUxjB,KAAM0iB,KACxD,iBAAMziB,IAAI,mBAAmBtc,KAAK,YAAYqc,KAAM0iB,KACpD,2BAAQC,IACPC,IAAY,iBAAMj+B,KAAK,WAAWoD,QAAS66B,IAC3Cz5B,IAAe,iBAAMxE,KAAK,cAAcoD,QAASoB,IACjDq5B,KACC,iBAAMviB,IAAI,aAAaD,KAAO,kBAbpC,E,gBC/CF,MAAM7Z,GAAmB,EAAGD,QAAQ,OAClC,MAAMd,EAAO,IAAI+F,MAAMjF,GAAOwvB,KAAK,GAAGpwB,KAAI,CAAC2mB,EAAG3T,IAAM2T,EAAI3T,IACxD,OACE,8BACGlT,EAAKE,KAAK2mB,IACT,UAACwX,GAAA,EAAD,CACEx/B,UAAU,wEADZ,WAGE,gBACEA,UAAU,iCACVwJ,MAAO,CAAEpJ,OAAQ,WAGnB,gBACEJ,UAAU,0CACVwJ,MAAO,CAAEpJ,OAAQ,WAGnB,gBACEJ,UAAU,6BACVwJ,MAAO,CAAEpJ,OAAQ,YAbd4nB,MALb,EA0BF,IAAevW,EAAAA,EAAAA,MAAKvP,IC5BdA,GAAmB,EAAGD,QAAQ,OAClC,MAAMd,EAAO,IAAI+F,MAAMjF,GAAOwvB,KAAK,GAAGpwB,KAAI,CAAC2mB,EAAG3T,IAAM2T,EAAI3T,IACxD,OACE,8BACGlT,EAAKE,KAAK2mB,IACT,SAAC7C,GAAA,EAAD,CAEEsa,GAAI,GACJra,GAAI,EACJgF,GAAI,EACJuO,GAAI,EACJ34B,UAAU,wBANZ,UAOE,SAAC+5B,GAAA,EAAD,CAAM/5B,UAAU,QAAhB,UACE,UAAC+5B,GAAA,OAAD,CAAW/5B,UAAU,uCAArB,WACE,gBACEA,UAAU,kCACVwJ,MAAO,CAAEpJ,OAAQ,WAGnB,cACEJ,UAAU,0CACVwJ,MAAO,CAAEpJ,OAAQ,WAEnB,iBAAKJ,UAAU,4BAAf,WACE,gBACEA,UAAU,mBACVwJ,MAAO,CAAEnJ,MAAO,OAAQD,OAAQ,WAElC,iBACEJ,UAAU,+CACVwJ,MAAO,CAAEnJ,MAAO,QAASD,OAAQ,mBAxBpC4nB,MAJb,EAuCF,IAAevW,EAAAA,EAAAA,MAAKvP,ICpCdA,GAAmB,EAAGX,GAAIm+B,EAAY,KAAM1/B,YAAY,WAC5D,MAAM,EAAEa,IAAMC,EAAAA,EAAAA,MACNJ,KAAMi/B,IAAah7B,EAAAA,GAAAA,KAAeC,GAAMA,EAAEF,WAClD,OACE,SAACg7B,EAAD,CAAW1/B,UAAWuJ,IAAW,cAAevJ,GAAhD,SACGa,EAAE,kBAAmB,CAAE++B,UAAWD,KAFvC,EAOF,IAAeluB,EAAAA,EAAAA,MAAKvP,ICFdA,GAAmB,EACvBlB,OACA6+B,aAAY,EACZC,eAAc,EACdC,aAAY,EACZ94B,cAAa,EACb+4B,gBAAe,EACfhgC,YAAY,OAEZ,MAAM,EAAEa,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,WAEzD,OACE,iBAAKf,UAAWigC,IAAU,4BAA6BjgC,GAAvD,UACG6/B,IACC,iBAAK7/B,UAAU,0CAAf,WACE,SAAC,GAAD,CAAMU,KAAK,8BACX,4BACGM,EAAK4F,MADR,IACgB/F,EAAE,eAKrBm/B,IACC,iBAAKhgC,UAAU,4DAAf,WACE,SAAC,GAAD,CAAMU,KAAK,4BACX,0BAAOG,EAAE,iBAIZi/B,IACC,iBACE9/B,UAAY,iDACViH,EAAa,eAAiB,IAFlC,UAIGA,GACC,SAAC,GAAD,CAAMvG,KAAK,4BAEX,SAAC,GAAD,CAAMA,KAAK,gCAEb,4BACGM,EAAK8F,QADR,IACkBjG,EAAE,iBAIvBk/B,IACC,kBAAM//B,UAAU,kCAAhB,WACE,SAAC,GAAD,CAAMU,KAAK,cACX,gBAAIV,UAAU,kBAAd,UACGgB,EAAK+F,MADR,IACgBlG,EAAE,iBArC1B,EA6CF,IAAe4Q,EAAAA,EAAAA,MAAKvP,I,4BCtEpB,MAAMA,GAAQ,EACZg+B,WAAW,GACXp+B,QAAQ,GACR8qB,SAAS,GACTuT,iBAAgB,MAEhB,MAAM,EAAEt/B,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,eAmBzD,OAlBA4K,EAAAA,EAAAA,YAAU,KAER,MAAMy0B,EAAW18B,SAASwgB,cAAc,cAKxC,OAJIkc,IACFA,EAAS52B,MAAM62B,QAAU,YAGpB,KACDD,IACFA,EAAS52B,MAAM62B,QAAU,QAC1B,CAHH,GAKC,KAEHC,EAAAA,GAAAA,IAAY,CACVx+B,MAAOjB,EAAG,QAAOq/B,IAAY,CAAEn/B,UAAW,kBAI1C,iBAAKf,UAAU,yFAAf,WACE,gBACEA,UAAU,sBACVwJ,MAAO,CAAEoc,SAAU,QAASoI,WAAY,KAF1C,+BAKCmS,IACC,eAAIngC,UAAU,cAAd,SAA6Ba,EAAE,aAAc,CAAEgW,KAAMqpB,MAEtDp+B,IAAS,eAAI9B,UAAU,cAAd,SAA6B8B,KACvC,gBAAK9B,UAAU,wBAAf,SACG4sB,GAAU/rB,EAAG,QAAOq/B,QAEvB,gBAAKlgC,UAAU,cAAf,UACE,SAAC,MAAD,CAAMyB,GAAG,IAAIzB,UAAU,eAAvB,SACGa,EAAE,mBAhBX,EAuBF,IAAe4Q,EAAAA,EAAAA,MAAKvP,IClDdA,GAAQ,KACZ,MAAM,eAAEq+B,IAAmBrD,EAAAA,GAAAA,KAAgBh1B,GAAUA,IACrD,OAAKq4B,GACE,gBAAKl8B,wBAAyB,CAAEC,OAAQi8B,KADnB,IAC5B,EAGF,IAAe9uB,EAAAA,EAAAA,MAAKvP,IC0EpB,GAzEkB,KAChB,MAAM,EAAErB,IAAMC,EAAAA,EAAAA,KACRggB,GAAWC,EAAAA,GAAAA,OACX,SAAE7a,IAAaic,EAAAA,GAAAA,OACbG,KAAM1B,IAAa6B,EAAAA,GAAAA,OACrB,QAAEtgB,EAAF,aAAWwhB,EAAX,SAAyBE,IAAaV,EAAAA,GAAAA,MAM5C,OACE,UAACgC,GAAA,EAAD,CACEqb,GAAI,EACJpb,GAAI,EACJgF,GAAI,GACJpqB,UAAWuJ,IACT,oBACApH,EAAU,GAAK,qBAEjBR,GAAG,UARL,WASE,gBAAK3B,UAAU,gBAAf,UACE,UAACqhB,GAAA,EAAD,CAAK1gB,QAAQ,QAAQX,UAAU,cAA/B,WACE,UAAC,MAAD,CACEyB,GAAG,aACHzB,UAAW,EAAGygC,cACZA,GAAyB,MAAbv6B,EAAmB,kBAAoB,WAHvD,WAKE,SAAC,GAAD,CAAMxF,KAAK,uBAAuBV,UAAU,UAC5C,0BAAOa,EAAE,6BAGX,UAACwgB,GAAA,OAAD,CACEtF,KAAK,QACL0N,OAAqB,UAAbvjB,EACRtF,QAAUwD,GA5BG,EAACA,EAAGusB,KACzBvsB,EAAEgL,iBACF0R,EAAS6P,EAAT,EA0BwB+P,CAAet8B,EAAG,SAHpC,WAIE,SAAC,GAAD,CAAM1D,KAAK,YAAYV,UAAU,UACjC,0BAAOa,EAAE,wBAGX,UAAC,MAAD,CAASY,GAAG,SAASzB,UAAU,WAA/B,WACE,SAAC,GAAD,CAAMU,KAAK,cAAcV,UAAU,UACnC,0BAAOa,EAAE,wBAGV8iB,GAAsC,KAAd,OAAR/C,QAAQ,IAARA,OAAA,EAAAA,EAAU+f,UACzB,iCACE,gBAAK3gC,UAAU,+BAAf,SACGa,EAAE,2BAEJ8iB,IACC,UAAC,MAAD,CAASliB,GAAG,UAAUzB,UAAU,WAAhC,WACE,0BAAOa,EAAE,wBACT,iBAAMb,UAAU,YAAhB,SACG6jB,EAAW,GAAK,MAAQA,EAAW,EAAIA,EAAW,QAKlC,KAAd,OAARjD,QAAQ,IAARA,OAAA,EAAAA,EAAU+f,UACT,SAAC,MAAD,CAASl/B,GAAG,SAASzB,UAAU,WAA/B,SACGa,EAAE,sBAEH,QAEJ,WAGR,gBAAKb,UAAU,0BAzDnB,ECbIkC,GAAoB,EAAG0H,OAAO,GAAI+0B,WAAW,OACjD,MAAMiC,EAAQ,IAAIC,OAAQ,IAAGlC,EAAStxB,KAAK,QAAS,MAEpD,OACE,iBAAMrN,UAAU,iBAAhB,SACG4J,EAAK2N,MAAMqpB,GAAOv/B,KAAI,CAACy/B,EAAez4B,KACrC,MAAM8E,EAAO,GAAE2zB,EAAMhsB,UAAU,EAAG,MAAMzM,IACxC,OAAOs2B,EAAS5F,MACbgI,GAAeA,EAAGC,sBAAwBF,EAAME,uBAEjD,0BAAiBF,GAAN3zB,GAEX2zB,CALF,KAJN,EAgBF,IAAervB,EAAAA,EAAAA,MAAKvP,G","sources":["components/BrandUpload/index.tsx","components/HotQuestions/index.tsx","components/Modal/Modal.tsx","components/Modal/Confirm.tsx","components/Modal/LoginToContinueModal.tsx","components/Modal/index.tsx","components/QuestionList/index.tsx","components/SchemaForm/components/Legend.tsx","components/SchemaForm/components/Select.tsx","components/SchemaForm/components/Check.tsx","components/SchemaForm/components/Switch.tsx","components/TimeZonePicker/index.tsx","components/SchemaForm/components/Timezone.tsx","components/SchemaForm/components/Upload.tsx","components/SchemaForm/components/Textarea.tsx","components/SchemaForm/components/Input.tsx","components/SchemaForm/components/Button.tsx","components/SchemaForm/components/InputGroup.tsx","components/SchemaForm/index.tsx","components/Avatar/index.tsx","components/PluginRender/index.tsx","components/Editor/EditorContext.ts","components/Editor/toolItem.tsx","components/Editor/ToolBars/table.tsx","components/Editor/ToolBars/ol.tsx","components/Editor/ToolBars/ul.tsx","components/Editor/ToolBars/indent.tsx","components/Editor/ToolBars/outdent.tsx","components/Editor/ToolBars/hr.tsx","components/Editor/ToolBars/heading.tsx","components/Editor/ToolBars/bold.tsx","components/Editor/ToolBars/italic.tsx","components/Editor/Select/index.tsx","components/Editor/ToolBars/code.tsx","components/Editor/ToolBars/link.tsx","components/Editor/ToolBars/blockquote.tsx","components/Editor/ToolBars/image.tsx","components/Editor/ToolBars/help.tsx","components/Editor/utils/index.ts","components/ImgViewer/index.tsx","components/Editor/Viewer.tsx","components/Editor/index.tsx","components/Header/components/NavItems/index.tsx","components/Header/index.tsx","components/Footer/index.tsx","components/Icon/index.tsx","components/Icon/svg.tsx","components/TagSelector/index.tsx","components/Unactivate/index.tsx","components/UploadImg/index.tsx","components/Actions/index.tsx","components/Tag/index.tsx","components/Share/index.tsx","components/Operate/index.tsx","components/UserCard/index.tsx","components/Pagination/index.tsx","components/Comment/components/Form/index.tsx","components/Comment/components/ActionBar/index.tsx","components/Comment/components/Reply/index.tsx","components/Comment/index.tsx","components/TextArea/index.tsx","components/Mentions/index.tsx","components/FormatTime/index.tsx","components/Toast/index.tsx","components/AccordionNav/index.tsx","components/Empty/index.tsx","components/BaseUserCard/index.tsx","components/FollowingTags/index.tsx","components/QueryGroup/index.tsx","components/DiffContent/index.tsx","components/Customize/index.tsx","components/CustomizeTheme/index.tsx","components/PageTags/index.tsx","components/QuestionListLoader/index.tsx","components/TagsLoader/index.tsx","components/WelcomeTitle/index.tsx","components/Counts/index.tsx","components/HttpErrorContent/index.tsx","components/CustomSidebar/index.tsx","components/SideNav/index.tsx","components/HighlightText/index.tsx"],"sourcesContent":["/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC } from 'react';\r\nimport { ButtonGroup, Button } from 'react-bootstrap';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport { Icon, UploadImg } from '@/components';\r\nimport { UploadType } from '@/common/interface';\r\n\r\ninterface Props {\r\n type: UploadType;\r\n value: string;\r\n onChange: (value: string) => void;\r\n acceptType?: string;\r\n readOnly?: boolean;\r\n imgClassNames?: classNames.Argument;\r\n}\r\n\r\nconst Index: FC = ({\r\n type = 'post',\r\n value,\r\n onChange,\r\n acceptType,\r\n readOnly = false,\r\n imgClassNames = '',\r\n}) => {\r\n const onUpload = (imgPath: string) => {\r\n onChange(imgPath);\r\n };\r\n\r\n const onRemove = () => {\r\n onChange('');\r\n };\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC } from 'react';\r\nimport { Card, ListGroup, ListGroupItem } from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { pathFactory } from '@/router/pathFactory';\r\nimport { Icon } from '@/components';\r\nimport { useHotQuestions } from '@/services';\r\n\r\nconst HotQuestions: FC = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'question' });\r\n const { data: questionRes } = useHotQuestions();\r\n if (!questionRes?.list?.length) {\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n {t('hot_questions')}\r\n \r\n \r\n {questionRes?.list?.map((li) => {\r\n return (\r\n \r\n
{li.title}
\r\n {li.answer_count > 0 ? (\r\n 0\r\n ? 'link-success'\r\n : 'link-secondary'\r\n }`}>\r\n {li.accepted_answer_id >= 1 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {t('x_answers', { count: li.answer_count })}\r\n \r\n \r\n ) : null}\r\n \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n};\r\nexport default HotQuestions;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC } from 'react';\r\nimport { Button, Modal } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport interface Props {\r\n /** header title */\r\n title?: string;\r\n children?: React.ReactNode;\r\n /** visible */\r\n visible?: boolean;\r\n centered?: boolean;\r\n onCancel?: () => void;\r\n onConfirm?: (event: any) => void;\r\n cancelText?: string;\r\n showCancel?: boolean;\r\n cancelBtnVariant?: string;\r\n confirmText?: string;\r\n showConfirm?: boolean;\r\n confirmBtnDisabled?: boolean;\r\n confirmBtnVariant?: string;\r\n /** body style */\r\n bodyClass?: string;\r\n scrollable?: boolean;\r\n className?: string;\r\n}\r\nconst Index: FC = ({\r\n title = 'title',\r\n visible = false,\r\n centered = true,\r\n onCancel,\r\n children,\r\n onConfirm,\r\n cancelText = '',\r\n showCancel = true,\r\n cancelBtnVariant = 'primary',\r\n confirmText = '',\r\n showConfirm = true,\r\n confirmBtnVariant = 'link',\r\n confirmBtnDisabled = false,\r\n bodyClass = '',\r\n scrollable = false,\r\n className = '',\r\n}) => {\r\n const { t } = useTranslation();\r\n return (\r\n \r\n \r\n \r\n {title || t('title', { keyPrefix: 'modal_confirm' })}\r\n \r\n \r\n {children}\r\n {(showCancel || showConfirm) && (\r\n \r\n {showCancel && (\r\n \r\n )}\r\n {showConfirm && (\r\n {\r\n onConfirm?.(event);\r\n }}\r\n id=\"ok_button\"\r\n disabled={confirmBtnDisabled}>\r\n {confirmText === 'OK'\r\n ? t('btns.ok')\r\n : confirmText || t('btns.confirm')}\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default React.memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport * as React from 'react';\r\n\r\nimport ReactDOM from 'react-dom/client';\r\n\r\nimport Modal from './Modal';\r\nimport type { Props } from './Modal';\r\n\r\nconst div = document.createElement('div');\r\n\r\nconst root = ReactDOM.createRoot(div);\r\n\r\nexport interface Config extends Props {\r\n content: string;\r\n}\r\n\r\nconst Index = ({\r\n title = '',\r\n confirmText = '',\r\n content,\r\n onCancel: onClose,\r\n onConfirm,\r\n cancelBtnVariant = 'link',\r\n confirmBtnVariant = 'primary',\r\n ...props\r\n}: Config) => {\r\n const onCancel = () => {\r\n if (typeof onClose === 'function') {\r\n onClose();\r\n }\r\n render({ visible: false });\r\n div.remove();\r\n };\r\n const onOk = (e) => {\r\n if (typeof onConfirm === 'function') {\r\n onConfirm(e);\r\n }\r\n onCancel();\r\n };\r\n function render({ visible }: { visible: boolean }) {\r\n root.render(\r\n \r\n

\r\n ,\r\n );\r\n }\r\n render({ visible: true });\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { loginToContinueStore, siteInfoStore } from '@/stores';\r\nimport { floppyNavigation } from '@/utils';\r\nimport { WelcomeTitle } from '@/components';\r\n\r\ninterface IProps {\r\n visible: boolean;\r\n}\r\n\r\nconst Index: React.FC = ({ visible = false }) => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'login' });\r\n const { update: updateStore } = loginToContinueStore();\r\n const { siteInfo } = siteInfoStore((_) => _);\r\n const closeModal = () => {\r\n updateStore({ show: false });\r\n };\r\n const linkClick = (evt) => {\r\n evt.stopPropagation();\r\n floppyNavigation.storageLoginRedirect();\r\n closeModal();\r\n };\r\n return (\r\n \r\n \r\n {t('login_to_continue')}\r\n \r\n \r\n

\r\n \r\n

{siteInfo.description}

\r\n
\r\n
\r\n \r\n {t('login', { keyPrefix: 'btns' })}\r\n \r\n \r\n {t('signup', { keyPrefix: 'btns' })}\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport DefaultModal from './Modal';\r\nimport confirm, { Config } from './Confirm';\r\nimport LoginToContinueModal from './LoginToContinueModal';\r\n\r\ntype ModalType = typeof DefaultModal & {\r\n confirm: (config: Config) => void;\r\n};\r\nconst Modal = DefaultModal as ModalType;\r\n\r\nModal.confirm = function (props: Config) {\r\n return confirm(props);\r\n};\r\n\r\nexport default Modal;\r\n\r\nexport { LoginToContinueModal };\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC } from 'react';\r\nimport { ListGroup } from 'react-bootstrap';\r\nimport { NavLink, useSearchParams } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport type { QuestionOrderBy } from '@/common/interface';\r\nimport { pathFactory } from '@/router/pathFactory';\r\nimport {\r\n Tag,\r\n Pagination,\r\n FormatTime,\r\n Empty,\r\n BaseUserCard,\r\n QueryGroup,\r\n QuestionListLoader,\r\n Counts,\r\n Icon,\r\n} from '@/components';\r\nimport * as Type from '@/common/interface';\r\nimport { useSkeletonControl } from '@/hooks';\r\n\r\nexport const QUESTION_ORDER_KEYS: Type.QuestionOrderBy[] = [\r\n 'active',\r\n 'newest',\r\n 'frequent',\r\n 'score',\r\n 'unanswered',\r\n];\r\ninterface Props {\r\n source: 'questions' | 'tag';\r\n order?: QuestionOrderBy;\r\n data;\r\n isLoading: boolean;\r\n}\r\n\r\nconst QuestionList: FC = ({\r\n source,\r\n order,\r\n data,\r\n isLoading = false,\r\n}) => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'question' });\r\n const [urlSearchParams] = useSearchParams();\r\n const { isSkeletonShow } = useSkeletonControl(isLoading);\r\n const curOrder =\r\n order || urlSearchParams.get('order') || QUESTION_ORDER_KEYS[0];\r\n const curPage = Number(urlSearchParams.get('page')) || 1;\r\n const pageSize = 20;\r\n const count = data?.count || 0;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {source === 'questions'\r\n ? t('all_questions')\r\n : t('x_questions', { count })}\r\n
\r\n \r\n
\r\n \r\n {isSkeletonShow ? (\r\n \r\n ) : (\r\n data?.list?.map((li) => {\r\n return (\r\n \r\n
\r\n {li.pin === 2 && (\r\n \r\n )}\r\n \r\n {li.title}\r\n {li.status === 2 ? ` [${t('closed')}]` : ''}\r\n \r\n
\r\n
\r\n
\r\n \r\n •\r\n \r\n
\r\n = 1}\r\n className=\"mt-2 mt-md-0\"\r\n />\r\n
\r\n
\r\n {Array.isArray(li.tags)\r\n ? li.tags.map((tag) => {\r\n return (\r\n \r\n );\r\n })\r\n : null}\r\n
\r\n \r\n );\r\n })\r\n )}\r\n
\r\n {count <= 0 && !isLoading && }\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\nexport default QuestionList;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\ninterface Props {\r\n title: string;\r\n className?: string | undefined;\r\n}\r\nconst Index: FC = ({ title, className }) => {\r\n return {title};\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport type * as Type from '@/common/interface';\r\n\r\ninterface Props {\r\n desc: string | undefined;\r\n fieldName: string;\r\n onChange?: (fd: Type.FormDataType) => void;\r\n enumValues: (string | boolean | number)[];\r\n enumNames: string[];\r\n formData: Type.FormDataType;\r\n readOnly: boolean;\r\n}\r\nconst Index: FC = ({\r\n desc,\r\n fieldName,\r\n onChange,\r\n enumValues,\r\n enumNames,\r\n formData,\r\n readOnly = false,\r\n}) => {\r\n const fieldObject = formData[fieldName];\r\n const handleChange = (evt: React.ChangeEvent) => {\r\n const { name, value } = evt.currentTarget;\r\n const state = {\r\n ...formData,\r\n [name]: {\r\n ...formData[name],\r\n value,\r\n isInvalid: false,\r\n },\r\n };\r\n if (typeof onChange === 'function') {\r\n onChange(state);\r\n }\r\n };\r\n return (\r\n \r\n {enumValues?.map((item, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC } from 'react';\r\nimport { Form, Stack } from 'react-bootstrap';\r\n\r\nimport type * as Type from '@/common/interface';\r\n\r\ninterface Props {\r\n type: 'radio' | 'checkbox';\r\n fieldName: string;\r\n onChange?: (fd: Type.FormDataType) => void;\r\n enumValues: (string | boolean | number)[];\r\n enumNames: string[];\r\n formData: Type.FormDataType;\r\n readOnly?: boolean;\r\n}\r\nconst Index: FC = ({\r\n type = 'radio',\r\n fieldName,\r\n onChange,\r\n enumValues,\r\n enumNames,\r\n formData,\r\n readOnly = false,\r\n}) => {\r\n const fieldObject = formData[fieldName];\r\n const handleCheck = (\r\n evt: React.ChangeEvent,\r\n index: number,\r\n ) => {\r\n const { name, checked } = evt.currentTarget;\r\n enumValues[index] = checked;\r\n\r\n const state = {\r\n ...formData,\r\n [name]: {\r\n ...formData[name],\r\n value: enumValues,\r\n isInvalid: false,\r\n },\r\n };\r\n if (typeof onChange === 'function') {\r\n onChange(state);\r\n }\r\n };\r\n return (\r\n \r\n {enumValues?.map((item, index) => {\r\n return (\r\n handleCheck(evt, index)}\r\n />\r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport type * as Type from '@/common/interface';\r\n\r\ninterface Props {\r\n title: string;\r\n label: string | undefined;\r\n fieldName: string;\r\n onChange?: (fd: Type.FormDataType) => void;\r\n formData: Type.FormDataType;\r\n readOnly?: boolean;\r\n}\r\nconst Index: FC = ({\r\n title,\r\n fieldName,\r\n onChange,\r\n label,\r\n formData,\r\n readOnly = false,\r\n}) => {\r\n const fieldObject = formData[fieldName];\r\n const handleChange = (evt: React.ChangeEvent) => {\r\n const { name, checked } = evt.currentTarget;\r\n const state = {\r\n ...formData,\r\n [name]: {\r\n ...formData[name],\r\n value: checked,\r\n isInvalid: false,\r\n },\r\n };\r\n if (typeof onChange === 'function') {\r\n onChange(state);\r\n }\r\n };\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport { TIMEZONES } from '@/common/constants';\r\n\r\nconst TimeZonePicker = (props) => {\r\n return (\r\n \r\n {TIMEZONES?.map((item) => {\r\n return (\r\n \r\n {item.options.map((option) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default TimeZonePicker;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC } from 'react';\r\n\r\nimport type * as Type from '@/common/interface';\r\nimport TimeZonePicker from '@/components/TimeZonePicker';\r\n\r\ninterface Props {\r\n fieldName: string;\r\n onChange?: (fd: Type.FormDataType) => void;\r\n formData: Type.FormDataType;\r\n readOnly?: boolean;\r\n}\r\nconst Index: FC = ({\r\n fieldName,\r\n onChange,\r\n formData,\r\n readOnly = false,\r\n}) => {\r\n const fieldObject = formData[fieldName];\r\n const handleChange = (evt: React.ChangeEvent) => {\r\n const { name, value } = evt.currentTarget;\r\n const state = {\r\n ...formData,\r\n [name]: {\r\n ...formData[name],\r\n value,\r\n isInvalid: false,\r\n },\r\n };\r\n if (typeof onChange === 'function') {\r\n onChange(state);\r\n }\r\n };\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport type * as Type from '@/common/interface';\r\nimport BrandUpload from '@/components/BrandUpload';\r\n\r\ninterface Props {\r\n type: Type.UploadType | undefined;\r\n acceptType: string | undefined;\r\n fieldName: string;\r\n onChange?: (fd: Type.FormDataType) => void;\r\n formData: Type.FormDataType;\r\n readOnly?: boolean;\r\n imgClassNames?: classNames.Argument;\r\n}\r\nconst Index: FC = ({\r\n type = 'avatar',\r\n acceptType = '',\r\n fieldName,\r\n onChange,\r\n formData,\r\n readOnly = false,\r\n imgClassNames = '',\r\n}) => {\r\n const fieldObject = formData[fieldName];\r\n const handleChange = (name: string, value: string) => {\r\n const state = {\r\n ...formData,\r\n [name]: {\r\n ...formData[name],\r\n value,\r\n },\r\n };\r\n if (typeof onChange === 'function') {\r\n onChange(state);\r\n }\r\n };\r\n return (\r\n <>\r\n handleChange(fieldName, value)}\r\n imgClassNames={imgClassNames}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport type * as Type from '@/common/interface';\r\n\r\ninterface Props {\r\n placeholder: string | undefined;\r\n rows: number | undefined;\r\n className: classnames.Argument;\r\n fieldName: string;\r\n onChange?: (fd: Type.FormDataType) => void;\r\n formData: Type.FormDataType;\r\n readOnly: boolean;\r\n}\r\nconst Index: FC = ({\r\n placeholder = '',\r\n rows = 3,\r\n className,\r\n fieldName,\r\n onChange,\r\n formData,\r\n readOnly = false,\r\n}) => {\r\n const fieldObject = formData[fieldName];\r\n const handleChange = (evt: React.ChangeEvent) => {\r\n const { name, value } = evt.currentTarget;\r\n const state = {\r\n ...formData,\r\n [name]: {\r\n ...formData[name],\r\n value,\r\n isInvalid: false,\r\n },\r\n };\r\n if (typeof onChange === 'function') {\r\n onChange(state);\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC } from 'react';\r\nimport { Form } from 'react-bootstrap';\r\n\r\nimport type * as Type from '@/common/interface';\r\n\r\ninterface Props {\r\n type: string | undefined;\r\n placeholder: string | undefined;\r\n fieldName: string;\r\n onChange?: (fd: Type.FormDataType) => void;\r\n formData: Type.FormDataType;\r\n readOnly: boolean;\r\n}\r\nconst Index: FC = ({\r\n type = 'text',\r\n placeholder = '',\r\n fieldName,\r\n onChange,\r\n formData,\r\n readOnly = false,\r\n}) => {\r\n const fieldObject = formData[fieldName];\r\n const handleChange = (evt: React.ChangeEvent) => {\r\n const { name, value } = evt.currentTarget;\r\n const state = {\r\n ...formData,\r\n [name]: {\r\n ...formData[name],\r\n value,\r\n isInvalid: false,\r\n },\r\n };\r\n if (typeof onChange === 'function') {\r\n onChange(state);\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC, useEffect, useState } from 'react';\r\nimport { Button, ButtonProps, Spinner } from 'react-bootstrap';\r\n\r\nimport { request } from '@/utils';\r\nimport type { UIAction, FormKit } from '../types';\r\nimport { useToast } from '@/hooks';\r\nimport { Icon } from '@/components';\r\n\r\ninterface Props {\r\n fieldName: string;\r\n text: string;\r\n action: UIAction | undefined;\r\n actionType?: 'submit' | 'click';\r\n clickCallback?: () => void;\r\n formKit: FormKit;\r\n readOnly: boolean;\r\n variant?: ButtonProps['variant'];\r\n size?: ButtonProps['size'];\r\n iconName?: string;\r\n nowrap?: boolean;\r\n title?: string;\r\n}\r\nconst Index: FC = ({\r\n fieldName,\r\n action,\r\n actionType = 'submit',\r\n formKit,\r\n text = '',\r\n readOnly = false,\r\n variant = 'primary',\r\n size,\r\n iconName = '',\r\n nowrap = false,\r\n clickCallback,\r\n title,\r\n}) => {\r\n console.log('Button.tsx: action:', title);\r\n const Toast = useToast();\r\n const [isLoading, setLoading] = useState(false);\r\n const handleToast = (msg, type: 'success' | 'danger' = 'success') => {\r\n const tm = action?.on_complete?.toast_return_message;\r\n if (tm === false || !msg) {\r\n return;\r\n }\r\n Toast.onShow({\r\n msg,\r\n variant: type,\r\n });\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const handleCallback = (resp) => {\r\n const callback = action?.on_complete;\r\n if (callback?.refresh_form_config) {\r\n formKit.refreshConfig();\r\n }\r\n };\r\n const handleAction = () => {\r\n if (actionType === 'click') {\r\n if (typeof clickCallback === 'function') {\r\n clickCallback();\r\n }\r\n return;\r\n }\r\n if (!action) {\r\n return;\r\n }\r\n setLoading(true);\r\n request\r\n .request({\r\n method: action.method,\r\n url: action.url,\r\n timeout: 0,\r\n })\r\n .then((resp) => {\r\n if ('message' in resp) {\r\n handleToast(resp.message, 'success');\r\n }\r\n handleCallback(resp);\r\n })\r\n .catch((ex) => {\r\n if (ex && 'msg' in ex) {\r\n handleToast(ex.msg, 'danger');\r\n }\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n };\r\n useEffect(() => {\r\n if (action?.loading?.state === 'pending') {\r\n setLoading(true);\r\n }\r\n }, []);\r\n const loadingText = action?.loading?.text || text;\r\n const disabled = isLoading || readOnly;\r\n if (nowrap) {\r\n return (\r\n \r\n {isLoading ? (\r\n <>\r\n \r\n {loadingText}\r\n \r\n ) : (\r\n text\r\n )}\r\n {iconName && }\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n {isLoading ? (\r\n <>\r\n \r\n {loadingText}\r\n \r\n ) : (\r\n text\r\n )}\r\n {iconName && }\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC } from 'react';\r\nimport { InputGroup } from 'react-bootstrap';\r\n\r\nimport type { FormKit, InputGroupOptions } from '../types';\r\n\r\nimport Button from './Button';\r\n\r\ninterface Props {\r\n formKitWithContext: FormKit;\r\n uiOpt: InputGroupOptions;\r\n prefixText?: string;\r\n suffixText?: string;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst InputGroupBtn = ({\r\n formKitWithContext,\r\n uiOpt,\r\n}: {\r\n formKitWithContext: FormKit;\r\n uiOpt:\r\n | InputGroupOptions['prefixBtnOptions']\r\n | InputGroupOptions['suffixBtnOptions'];\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst Index: FC = ({\r\n formKitWithContext,\r\n uiOpt,\r\n prefixText = null,\r\n suffixText = null,\r\n children,\r\n}) => {\r\n return (\r\n \r\n {prefixText && {prefixText}}\r\n {uiOpt && 'prefixBtnOptions' in uiOpt && (\r\n \r\n )}\r\n {children}\r\n {uiOpt && 'suffixBtnOptions' in uiOpt && (\r\n \r\n )}\r\n {suffixText ? {suffixText} : null}\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, {\r\n ForwardRefRenderFunction,\r\n forwardRef,\r\n useImperativeHandle,\r\n useEffect,\r\n} from 'react';\r\nimport { Form, Button } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport classnames from 'classnames';\r\n\r\nimport type * as Type from '@/common/interface';\r\n\r\nimport type {\r\n JSONSchema,\r\n FormProps,\r\n FormRef,\r\n BaseUIOptions,\r\n FormKit,\r\n InputGroupOptions,\r\n} from './types';\r\nimport {\r\n Legend,\r\n Select,\r\n Check,\r\n Switch,\r\n Timezone,\r\n Upload,\r\n Textarea,\r\n Input,\r\n Button as SfButton,\r\n InputGroup,\r\n} from './components';\r\n\r\nexport * from './types';\r\n\r\n/**\r\n * TODO:\r\n * - [!] Standardised `Admin/Plugins/Config/index.tsx` method for generating dynamic form configurations.\r\n * - Normalize and document `formData[key].hidden && 'd-none'`\r\n * - Normalize and document `hiddenSubmit`\r\n * - Improving field hints for `formData`\r\n * - Optimise form data updates\r\n * * Automatic field type conversion\r\n * * Dynamic field generation\r\n */\r\n\r\n/**\r\n * json schema form\r\n * @param schema json schema\r\n * @param uiSchema ui schema\r\n * @param formData form data\r\n * @param onChange change event\r\n * @param onSubmit submit event\r\n */\r\nconst SchemaForm: ForwardRefRenderFunction = (\r\n {\r\n schema,\r\n uiSchema = {},\r\n refreshConfig,\r\n formData,\r\n onChange,\r\n onSubmit,\r\n hiddenSubmit = false,\r\n },\r\n ref,\r\n) => {\r\n const { t } = useTranslation('translation', {\r\n keyPrefix: 'form',\r\n });\r\n const { required = [], properties = {} } = schema || {};\r\n // check required field\r\n const excludes = required.filter((key) => !properties[key]);\r\n if (excludes.length > 0) {\r\n console.error(t('not_found_props', { key: excludes.join(', ') }));\r\n }\r\n formData ||= {};\r\n const keys = Object.keys(properties);\r\n /**\r\n * Prevent components such as `select` from having default values,\r\n * which are not generated on `formData`\r\n */\r\n const setDefaultValueAsDomBehaviour = () => {\r\n keys.forEach((k) => {\r\n const fieldVal = formData![k]?.value;\r\n const metaProp = properties[k];\r\n const uiCtrl = uiSchema[k]?.['ui:widget'];\r\n if (!metaProp || !uiCtrl || fieldVal !== undefined) {\r\n return;\r\n }\r\n if (uiCtrl === 'select' && metaProp.enum?.[0] !== undefined) {\r\n formData![k] = {\r\n errorMsg: '',\r\n isInvalid: false,\r\n value: metaProp.enum?.[0],\r\n };\r\n }\r\n });\r\n };\r\n useEffect(() => {\r\n setDefaultValueAsDomBehaviour();\r\n }, [formData]);\r\n\r\n const formKitWithContext: FormKit = {\r\n refreshConfig() {\r\n if (typeof refreshConfig === 'function') {\r\n refreshConfig();\r\n }\r\n },\r\n };\r\n\r\n /**\r\n * Form validation\r\n * - Currently only dynamic forms are in use, the business form validation has been handed over to the server\r\n */\r\n const requiredValidator = () => {\r\n const errors: string[] = [];\r\n required.forEach((key) => {\r\n if (!formData![key] || !formData![key].value) {\r\n errors.push(key);\r\n }\r\n });\r\n return errors;\r\n };\r\n\r\n const syncValidator = () => {\r\n const errors: Array<{ key: string; msg: string }> = [];\r\n const promises: Array<{\r\n key: string;\r\n promise;\r\n }> = [];\r\n keys.forEach((key) => {\r\n const { validator } = uiSchema[key]?.['ui:options'] || {};\r\n if (validator instanceof Function) {\r\n const value = formData![key]?.value;\r\n promises.push({\r\n key,\r\n promise: validator(value, formData),\r\n });\r\n }\r\n });\r\n return Promise.allSettled(promises.map((item) => item.promise)).then(\r\n (results) => {\r\n results.forEach((result, index) => {\r\n const { key } = promises[index];\r\n if (result.status === 'rejected') {\r\n errors.push({\r\n key,\r\n msg: result.reason.message,\r\n });\r\n }\r\n\r\n if (result.status === 'fulfilled') {\r\n const msg = result.value;\r\n if (typeof msg === 'string') {\r\n errors.push({\r\n key,\r\n msg,\r\n });\r\n }\r\n }\r\n });\r\n return errors;\r\n },\r\n );\r\n };\r\n\r\n const validator = async (): Promise => {\r\n const errors = requiredValidator();\r\n if (errors.length > 0) {\r\n formData = errors.reduce((acc, cur) => {\r\n acc[cur] = {\r\n ...formData![cur],\r\n isInvalid: true,\r\n errorMsg:\r\n uiSchema[cur]?.['ui:options']?.empty ||\r\n `${properties[cur]?.title} ${t('empty')}`,\r\n };\r\n return acc;\r\n }, formData || {});\r\n if (onChange instanceof Function) {\r\n onChange({ ...formData });\r\n }\r\n return false;\r\n }\r\n const syncErrors = await syncValidator();\r\n if (syncErrors.length > 0) {\r\n formData = syncErrors.reduce((acc, cur) => {\r\n acc[cur.key] = {\r\n ...formData![cur.key],\r\n isInvalid: true,\r\n errorMsg: cur.msg || `${properties[cur.key].title} ${t('invalid')}`,\r\n };\r\n return acc;\r\n }, formData || {});\r\n if (onChange instanceof Function) {\r\n onChange({ ...formData });\r\n }\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n const isValid = await validator();\r\n if (!isValid) {\r\n return;\r\n }\r\n\r\n Object.keys(formData!).forEach((key) => {\r\n formData![key].isInvalid = false;\r\n formData![key].errorMsg = '';\r\n });\r\n if (onChange instanceof Function) {\r\n onChange(formData!);\r\n }\r\n if (onSubmit instanceof Function) {\r\n onSubmit(e);\r\n }\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n validator,\r\n }));\r\n if (!formData || !schema || isEmpty(schema.properties)) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {keys.map((key) => {\r\n const {\r\n title,\r\n description,\r\n enum: enumValues = [],\r\n enumNames = [],\r\n } = properties[key];\r\n const { 'ui:widget': widget = 'input', 'ui:options': uiOpt } =\r\n uiSchema?.[key] || {};\r\n formData ||= {};\r\n const fieldState = formData[key];\r\n if (uiOpt?.class_name) {\r\n uiOpt.className = uiOpt.class_name;\r\n }\r\n\r\n const uiSimplify = widget === 'legend' || uiOpt?.simplify;\r\n let groupClassName: BaseUIOptions['field_class_name'] = uiOpt?.simplify\r\n ? 'mb-2'\r\n : 'mb-3';\r\n if (widget === 'legend') {\r\n groupClassName = 'mb-0';\r\n }\r\n if (uiOpt?.field_class_name) {\r\n groupClassName = uiOpt.field_class_name;\r\n }\r\n\r\n const readOnly = uiOpt?.readOnly || false;\r\n\r\n return (\r\n \r\n {/* Uniform processing `label` */}\r\n {title && !uiSimplify ? {title} : null}\r\n {/* Handling of individual specific controls */}\r\n {widget === 'legend' ? (\r\n \r\n ) : null}\r\n {widget === 'select' ? (\r\n \r\n ) : null}\r\n {widget === 'radio' || widget === 'checkbox' ? (\r\n \r\n ) : null}\r\n {widget === 'switch' ? (\r\n \r\n ) : null}\r\n {widget === 'timezone' ? (\r\n \r\n ) : null}\r\n {widget === 'upload' ? (\r\n \r\n ) : null}\r\n {widget === 'textarea' ? (\r\n \r\n ) : null}\r\n {widget === 'input' ? (\r\n \r\n ) : null}\r\n {widget === 'button' ? (\r\n \r\n ) : null}\r\n {widget === 'input_group' ? (\r\n \r\n \r\n \r\n ) : null}\r\n {/* Unified handling of `Feedback` and `Text` */}\r\n \r\n {fieldState?.errorMsg}\r\n \r\n {description ? (\r\n \r\n ) : null}\r\n \r\n );\r\n })}\r\n {!hiddenSubmit && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport const initFormData = (schema: JSONSchema): Type.FormDataType => {\r\n const formData: Type.FormDataType = {};\r\n const props: JSONSchema['properties'] = schema?.properties || {};\r\n Object.keys(props).forEach((key) => {\r\n const prop = props[key];\r\n let defaultVal: any = '';\r\n if (Array.isArray(prop.default) && prop.enum && prop.enum.length > 0) {\r\n // for checkbox default values\r\n defaultVal = prop.enum;\r\n } else {\r\n defaultVal = prop?.default;\r\n }\r\n formData[key] = {\r\n value: defaultVal,\r\n isInvalid: false,\r\n errorMsg: '',\r\n };\r\n });\r\n return formData;\r\n};\r\n\r\nexport const mergeFormData = (\r\n target: Type.FormDataType | null,\r\n origin: Type.FormDataType | null,\r\n) => {\r\n if (!target) {\r\n return origin;\r\n }\r\n if (!origin) {\r\n return target;\r\n }\r\n Object.keys(target).forEach((k) => {\r\n const oi = origin[k];\r\n if (oi && oi.value !== undefined) {\r\n target[k] = {\r\n value: oi.value,\r\n isInvalid: false,\r\n errorMsg: '',\r\n };\r\n }\r\n });\r\n return target;\r\n};\r\n\r\nexport default forwardRef(SchemaForm);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo, FC } from 'react';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport DefaultAvatar from '@/assets/images/default-avatar.svg';\r\n\r\ninterface IProps {\r\n /** avatar url */\r\n avatar: string | { type: string; gravatar: string; custom: string };\r\n /** size 48 96 128 256 */\r\n size: string;\r\n searchStr?: string;\r\n className?: string;\r\n alt: string;\r\n}\r\n\r\nconst Index: FC = ({\r\n avatar,\r\n size,\r\n className,\r\n searchStr = '',\r\n alt,\r\n}) => {\r\n let url = '';\r\n if (typeof avatar === 'string') {\r\n if (avatar.length > 1) {\r\n url = `${avatar}?${searchStr}${\r\n avatar?.includes('gravatar') ? '&d=identicon' : ''\r\n }`;\r\n }\r\n } else if (avatar?.type === 'gravatar' && avatar.gravatar) {\r\n url = `${avatar.gravatar}?${searchStr}&d=identicon`;\r\n } else if (avatar?.type === 'custom' && avatar.custom) {\r\n url = `${avatar.custom}?${searchStr}`;\r\n }\r\n\r\n const roundedCls =\r\n className && className.indexOf('rounded') !== -1 ? '' : 'rounded';\r\n\r\n return (\r\n <>\r\n {/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role,jsx-a11y/control-has-associated-label */}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { FC, ReactNode } from 'react';\r\n\r\nimport PluginKit, { Plugin, PluginType } from '@/utils/pluginKit';\r\n/**\r\n * Note:Please set at least either of the `slug_name` and `type` attributes, otherwise no plugins will be rendered.\r\n *\r\n * @field slug_name: The `slug_name` of the plugin needs to be rendered.\r\n * If this property is set, `PluginRender` will use it first (regardless of whether `type` is set)\r\n * to find the corresponding plugin and render it.\r\n * @field type: Used to formulate the rendering of all plugins of this type.\r\n * (if the `slug_name` attribute is set, it will be ignored)\r\n * @field prop: Any attribute you want to configure, e.g. `className`\r\n */\r\n\r\ninterface Props {\r\n slug_name?: string;\r\n type?: PluginType;\r\n children?: ReactNode;\r\n [prop: string]: any;\r\n}\r\n\r\nconst Index: FC = ({\r\n slug_name,\r\n type,\r\n children = null,\r\n className,\r\n ...props\r\n}) => {\r\n const pluginSlice: Plugin[] = [];\r\n const plugins = PluginKit.getPlugins().filter((plugin) => plugin.activated);\r\n\r\n plugins.forEach((plugin) => {\r\n if (type && slug_name) {\r\n if (plugin.info.slug_name === slug_name && plugin.info.type === type) {\r\n pluginSlice.push(plugin);\r\n }\r\n } else if (type) {\r\n if (plugin.info.type === type) {\r\n pluginSlice.push(plugin);\r\n }\r\n } else if (slug_name) {\r\n if (plugin.info.slug_name === slug_name) {\r\n pluginSlice.push(plugin);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * TODO: Rendering control for non-builtin plug-ins\r\n * ps: Logic such as version compatibility determination can be placed here\r\n */\r\n if (pluginSlice.length === 0) {\r\n if (type === 'editor') {\r\n return
{children}
;\r\n }\r\n return null;\r\n }\r\n\r\n if (type === 'editor') {\r\n const nodes = React.Children.map(children, (child, index) => {\r\n if (index === 15) {\r\n return (\r\n <>\r\n {child}\r\n {pluginSlice.map((ps) => {\r\n const PluginFC = ps.component;\r\n return (\r\n // @ts-ignore\r\n \r\n );\r\n })}\r\n
\r\n \r\n );\r\n }\r\n return child;\r\n });\r\n\r\n return
{nodes}
;\r\n }\r\n\r\n return (\r\n <>\r\n {pluginSlice.map((ps) => {\r\n const PluginFC = ps.component;\r\n return (\r\n // @ts-ignore\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React from 'react';\r\n\r\nimport { IEditorContext } from './types';\r\n\r\nexport const EditorContext = React.createContext({});\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC, useContext, useEffect } from 'react';\r\nimport { Dropdown, Button } from 'react-bootstrap';\r\n\r\nimport { EditorContext } from './EditorContext';\r\nimport { IEditorContext } from './types';\r\n\r\ninterface IProps {\r\n keyMap?: string[];\r\n onClick?: ({\r\n editor,\r\n wrapText,\r\n replaceLines,\r\n appendBlock,\r\n }: IEditorContext) => void;\r\n tip?: string;\r\n className?: string;\r\n as?: any;\r\n children?;\r\n label?: string;\r\n disable?: boolean;\r\n isShow?: boolean;\r\n onBlur?: ({\r\n editor,\r\n wrapText,\r\n replaceLines,\r\n appendBlock,\r\n }: IEditorContext) => void;\r\n}\r\nconst ToolItem: FC = (props) => {\r\n const editor = useContext(EditorContext);\r\n\r\n const {\r\n label,\r\n tip,\r\n disable = false,\r\n isShow,\r\n keyMap,\r\n onClick,\r\n className,\r\n as,\r\n children,\r\n onBlur,\r\n } = props;\r\n\r\n useEffect(() => {\r\n if (!editor) {\r\n return;\r\n }\r\n if (!keyMap) {\r\n return;\r\n }\r\n\r\n keyMap.forEach((key) => {\r\n editor?.addKeyMap({\r\n [key]: () => {\r\n onClick?.({\r\n editor,\r\n wrapText: editor?.wrapText,\r\n replaceLines: editor?.replaceLines,\r\n appendBlock: editor?.appendBlock,\r\n });\r\n },\r\n });\r\n });\r\n }, [editor]);\r\n\r\n const btnRender = () => (\r\n {\r\n e.preventDefault();\r\n onClick?.({\r\n editor,\r\n wrapText: editor?.wrapText,\r\n replaceLines: editor?.replaceLines,\r\n appendBlock: editor?.appendBlock,\r\n });\r\n }}\r\n onBlur={(e) => {\r\n e.preventDefault();\r\n onBlur?.({\r\n editor,\r\n wrapText: editor?.wrapText,\r\n replaceLines: editor?.replaceLines,\r\n appendBlock: editor?.appendBlock,\r\n });\r\n }}\r\n />\r\n );\r\n\r\n if (!editor) {\r\n return null;\r\n }\r\n return (\r\n
\r\n {as === 'dropdown' ? (\r\n \r\n \r\n {btnRender()}\r\n \r\n {children}\r\n \r\n ) : (\r\n <>\r\n {btnRender()}\r\n {children}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default ToolItem;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst Table = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'table',\r\n tip: t('table.text'),\r\n };\r\n const tableData = [\r\n [`${t('table.heading')} A`],\r\n [`${t('table.heading')} B`],\r\n [`${t('table.cell')} 1`],\r\n [`${t('table.cell')} 2`],\r\n [`${t('table.cell')} 3`],\r\n [`${t('table.cell')} 4`],\r\n ];\r\n\r\n const makeHeader = (col, data) => {\r\n let header = '|';\r\n let border = '|';\r\n let index = 0;\r\n\r\n while (col) {\r\n if (data) {\r\n header += ` ${data[index]} |`;\r\n index += 1;\r\n } else {\r\n header += ' |';\r\n }\r\n\r\n border += ' ----- |';\r\n\r\n col -= 1;\r\n }\r\n\r\n return `${header}\\n${border}\\n`;\r\n };\r\n\r\n const makeBody = (col, row, data) => {\r\n let body = '';\r\n let index = col;\r\n\r\n for (let irow = 0; irow < row; irow += 1) {\r\n body += '|';\r\n\r\n for (let icol = 0; icol < col; icol += 1) {\r\n if (data) {\r\n body += ` ${data[index]} |`;\r\n index += 1;\r\n } else {\r\n body += ' |';\r\n }\r\n }\r\n\r\n body += '\\n';\r\n }\r\n\r\n body = body.replace(/\\n$/g, '');\r\n\r\n return body;\r\n };\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n const { editor } = context;\r\n let table = '\\n';\r\n\r\n table += makeHeader(2, tableData);\r\n table += makeBody(2, 2, tableData);\r\n editor?.replaceSelection(table);\r\n editor?.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(Table);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst OL = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'orderedList',\r\n keyMap: ['Ctrl-O'],\r\n tip: `${t('ordered_list.text')} (Ctrl+O)`,\r\n };\r\n\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n const { editor, replaceLines } = context;\r\n\r\n replaceLines((line, i) => {\r\n const FIND_OL_RX = /^(\\s{0,})(\\d+)\\.\\s/;\r\n\r\n if (line.match(FIND_OL_RX)) {\r\n line = line.replace(FIND_OL_RX, '');\r\n } else {\r\n line = `${i + 1}. ${line}`;\r\n }\r\n return line;\r\n });\r\n editor.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(OL);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst UL = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'unorderedList',\r\n keyMap: ['Ctrl-U'],\r\n tip: `${t('unordered_list.text')} (Ctrl+U)`,\r\n };\r\n\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n const { editor, replaceLines } = context;\r\n\r\n replaceLines((line) => {\r\n const FIND_UL_RX = /^(\\s{0,})(-|\\*)\\s/;\r\n\r\n if (line.match(FIND_UL_RX)) {\r\n line = line.replace(FIND_UL_RX, '');\r\n } else {\r\n line = `* ${line}`;\r\n }\r\n return line;\r\n });\r\n editor.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(UL);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst Indent = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'indent',\r\n tip: t('indent.text'),\r\n };\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n const { editor, replaceLines } = context;\r\n\r\n replaceLines((line) => {\r\n line = ` ${line}`;\r\n return line;\r\n });\r\n editor?.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(Indent);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst Outdent = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'outdent',\r\n keyMap: ['Shift-Tab'],\r\n tip: t('outdent.text'),\r\n };\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n const { editor, replaceLines } = context;\r\n replaceLines((line) => {\r\n line = line.replace(/^(\\s{0,})/, (_1, $1) => {\r\n return $1.length > 4 ? $1.substring(4) : '';\r\n });\r\n return line;\r\n });\r\n editor?.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(Outdent);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst Hr = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'hr',\r\n keyMap: ['Ctrl-R'],\r\n tip: `${t('hr.text')} (Ctrl+R)`,\r\n };\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n const { appendBlock, editor } = context;\r\n appendBlock('----------\\n');\r\n editor?.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(Hr);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { useState, memo } from 'react';\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst Heading = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const headerList = [\r\n {\r\n text: `

${t('heading.options.h1')}

`,\r\n level: 1,\r\n label: t('heading.options.h1'),\r\n },\r\n {\r\n text: `

${t('heading.options.h2')}

`,\r\n level: 2,\r\n label: t('heading.options.h2'),\r\n },\r\n {\r\n text: `

${t('heading.options.h3')}

`,\r\n level: 3,\r\n label: t('heading.options.h3'),\r\n },\r\n {\r\n text: `

${t('heading.options.h4')}

`,\r\n level: 4,\r\n label: t('heading.options.h4'),\r\n },\r\n {\r\n text: `
${t('heading.options.h5')}
`,\r\n level: 5,\r\n label: t('heading.options.h5'),\r\n },\r\n {\r\n text: `
${t('heading.options.h6')}
`,\r\n level: 6,\r\n label: t('heading.options.h6'),\r\n },\r\n ];\r\n const item = {\r\n label: 'heading',\r\n keyMap: ['Ctrl-H'],\r\n tip: `${t('heading.text')} (Ctrl+H)`,\r\n };\r\n const [isShow, setShowState] = useState(false);\r\n const [isLocked, setLockState] = useState(false);\r\n\r\n const handleClick = (level = 2, label = '大标题') => {\r\n const { replaceLines } = context;\r\n\r\n replaceLines((line) => {\r\n line = line.trim().replace(/^#*/, '').trim();\r\n line = `${'#'.repeat(level)} ${line || label}`;\r\n return line;\r\n }, level + 1);\r\n setShowState(false);\r\n };\r\n const onAddHeader = (ctx) => {\r\n context = ctx;\r\n if (isLocked) {\r\n return;\r\n }\r\n setShowState(!isShow);\r\n };\r\n\r\n const handleMouseEnter = () => {\r\n setLockState(true);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setLockState(false);\r\n };\r\n return (\r\n \r\n \r\n {headerList.map((header) => {\r\n return (\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n handleClick(header.level, header.label);\r\n }}\r\n dangerouslySetInnerHTML={{ __html: header.text }}\r\n />\r\n );\r\n })}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default memo(Heading);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst Bold = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'bold',\r\n keyMap: ['Ctrl-B'],\r\n tip: `${t('bold.text')} (Ctrl+B)`,\r\n };\r\n const DEFAULTTEXT = t('bold.text');\r\n\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n context.wrapText('**', '**', DEFAULTTEXT);\r\n context.editor?.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(Bold);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst Italic = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'italic',\r\n keyMap: ['Ctrl-I'],\r\n tip: `${t('italic.text')} (Ctrl+I)`,\r\n };\r\n const DEFAULTTEXT = t('italic.text');\r\n\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n const { editor, wrapText } = context;\r\n wrapText('*', '*', DEFAULTTEXT);\r\n editor?.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(Italic);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC, useEffect, useState } from 'react';\r\nimport { Dropdown, FormControl } from 'react-bootstrap';\r\n\r\ninterface IProps {\r\n options;\r\n value?;\r\n onChange?;\r\n placeholder?;\r\n onSelect?;\r\n}\r\nconst Select: FC = ({\r\n options = [],\r\n value = '',\r\n onChange,\r\n placeholder = '',\r\n onSelect,\r\n}) => {\r\n const [isFocus, setFocusState] = useState(false);\r\n const [cursor, setCursor] = useState(0);\r\n\r\n useEffect(() => {\r\n setCursor(0);\r\n }, [value]);\r\n const handleKeyDown = (e) => {\r\n const { keyCode } = e;\r\n\r\n if (keyCode === 38 && cursor > 0) {\r\n e.preventDefault();\r\n setCursor(cursor - 1);\r\n }\r\n if (keyCode === 40 && cursor < options.length - 1) {\r\n e.preventDefault();\r\n\r\n setCursor(cursor + 1);\r\n }\r\n if (keyCode === 13 && cursor > -1 && cursor <= options.length - 1) {\r\n const lang = options.filter((opt) =>\r\n value ? opt.indexOf(value) === 0 : true,\r\n )[cursor];\r\n\r\n setFocusState(false);\r\n onSelect(lang);\r\n }\r\n };\r\n\r\n const result = options.filter((opt) =>\r\n value ? opt.indexOf(value) === 0 : true,\r\n );\r\n\r\n return (\r\n
\r\n {\r\n setFocusState(true);\r\n if (onChange instanceof Function) {\r\n onChange(e);\r\n }\r\n }}\r\n />\r\n {result.length > 0 && (\r\n \r\n {result.map((opt, index) => {\r\n return (\r\n {\r\n e.preventDefault();\r\n setFocusState(false);\r\n onSelect(opt);\r\n }}>\r\n {opt}\r\n \r\n );\r\n })}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Select;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { useEffect, useRef, useState, memo } from 'react';\r\nimport { Button, Form, Modal } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Select from '../Select';\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nconst codeLanguageType = [\r\n 'bash',\r\n 'sh',\r\n 'zsh',\r\n 'c',\r\n 'h',\r\n 'cpp',\r\n 'hpp',\r\n 'c++',\r\n 'h++',\r\n 'cc',\r\n 'hh',\r\n 'cxx',\r\n 'hxx',\r\n 'c-like',\r\n 'cs',\r\n 'csharp',\r\n 'c#',\r\n 'clojure',\r\n 'clj',\r\n 'coffee',\r\n 'coffeescript',\r\n 'cson',\r\n 'iced',\r\n 'css',\r\n 'dart',\r\n 'erl',\r\n 'erlang',\r\n 'go',\r\n 'golang',\r\n 'hs',\r\n 'haskell',\r\n 'html',\r\n 'xml',\r\n 'xsl',\r\n 'xhtml',\r\n 'rss',\r\n 'atom',\r\n 'xjb',\r\n 'xsd',\r\n 'plist',\r\n 'wsf',\r\n 'svg',\r\n 'http',\r\n 'https',\r\n 'ini',\r\n 'toml',\r\n 'java',\r\n 'jsp',\r\n 'js',\r\n 'javascript',\r\n 'jsx',\r\n 'mjs',\r\n 'cjs',\r\n 'json',\r\n 'kotlin',\r\n 'kt',\r\n 'latex',\r\n 'tex',\r\n 'less',\r\n 'lisp',\r\n 'lua',\r\n 'makefile',\r\n 'mk',\r\n 'mak',\r\n 'markdown',\r\n 'md',\r\n 'mkdown',\r\n 'mkd',\r\n 'matlab',\r\n 'objectivec',\r\n 'mm',\r\n 'objc',\r\n 'obj-c',\r\n 'ocaml',\r\n 'ml',\r\n 'pascal',\r\n 'delphi',\r\n 'dpr',\r\n 'dfm',\r\n 'pas',\r\n 'freepascal',\r\n 'lazarus',\r\n 'lpr',\r\n 'lfm',\r\n 'pl',\r\n 'perl',\r\n 'pm',\r\n 'php',\r\n 'php3',\r\n 'php4',\r\n 'php5',\r\n 'php6',\r\n 'php7',\r\n 'php-template',\r\n 'protobuf',\r\n 'py',\r\n 'python',\r\n 'gyp',\r\n 'ipython',\r\n 'r',\r\n 'rb',\r\n 'ruby',\r\n 'gemspec',\r\n 'podspec',\r\n 'thor',\r\n 'irb',\r\n 'rs',\r\n 'rust',\r\n 'scala',\r\n 'scheme',\r\n 'scss',\r\n 'shell',\r\n 'console',\r\n 'sql',\r\n 'swift',\r\n 'typescript',\r\n 'ts',\r\n 'vhdl',\r\n 'vbnet',\r\n 'vb',\r\n 'yaml',\r\n 'yml',\r\n];\r\n\r\nlet context: IEditorContext;\r\nconst Code = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n\r\n const item = {\r\n label: 'code',\r\n keyMap: ['Ctrl-K'],\r\n tip: `${t('code.text')} (Ctrl+K)`,\r\n };\r\n\r\n const [code, setCode] = useState({\r\n value: '',\r\n isInvalid: false,\r\n errorMsg: '',\r\n });\r\n const [visible, setVisible] = useState(false);\r\n const [lang, setLang] = useState('');\r\n const inputRef = useRef(null);\r\n\r\n const SINGLELINEMAXLENGTH = 40;\r\n const addCode = (ctx) => {\r\n context = ctx;\r\n\r\n const { wrapText, editor } = context;\r\n\r\n const text = context.editor.getSelection();\r\n\r\n if (!text) {\r\n setVisible(true);\r\n\r\n return;\r\n }\r\n if (text.length > SINGLELINEMAXLENGTH) {\r\n context.wrapText('```\\n', '\\n```');\r\n } else {\r\n wrapText('`', '`');\r\n }\r\n editor.focus();\r\n };\r\n\r\n useEffect(() => {\r\n if (visible && inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, [visible]);\r\n\r\n const handleClick = () => {\r\n if (!code.value.trim()) {\r\n setCode({\r\n ...code,\r\n errorMsg: t('code.form.fields.code.msg.empty'),\r\n isInvalid: true,\r\n });\r\n return;\r\n }\r\n\r\n let value;\r\n\r\n if (\r\n code.value.split('\\n').length > 1 ||\r\n code.value.length >= SINGLELINEMAXLENGTH\r\n ) {\r\n value = `\\n\\`\\`\\`${lang}\\n${code.value}\\n\\`\\`\\`\\n`;\r\n } else {\r\n value = `\\`${code.value}\\``;\r\n }\r\n context.editor.replaceSelection(value);\r\n setCode({\r\n value: '',\r\n isInvalid: false,\r\n errorMsg: '',\r\n });\r\n setLang('');\r\n setVisible(false);\r\n };\r\n const onHide = () => setVisible(false);\r\n const onExited = () => context.editor?.focus();\r\n\r\n return (\r\n \r\n \r\n \r\n
{t('code.add_code')}
\r\n
\r\n \r\n \r\n {t('code.form.fields.code.label')}\r\n setCode({ ...code, value: e.target.value })}\r\n />\r\n {code.isInvalid && (\r\n \r\n {code.errorMsg}\r\n \r\n )}\r\n \r\n \r\n {`${t('code.form.fields.language.label')} ${t(\r\n 'optional',\r\n {\r\n keyPrefix: 'form',\r\n },\r\n )}`}\r\n setLang(e.target.value)}\r\n onSelect={(val) => setLang(val)}\r\n placeholder={t('code.form.fields.language.placeholder')}\r\n />\r\n \r\n \r\n \r\n {\r\n setVisible(false);\r\n setCode({\r\n value: '',\r\n isInvalid: false,\r\n errorMsg: '',\r\n });\r\n }}>\r\n {t('code.btn_cancel')}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default memo(Code);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { useEffect, useRef, useState, memo } from 'react';\r\nimport { Button, Form, Modal } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst Link = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n const item = {\r\n label: 'link',\r\n keyMap: ['Ctrl-L'],\r\n tip: `${t('link.text')} (Ctrl+L)`,\r\n };\r\n const [visible, setVisible] = useState(false);\r\n const [link, setLink] = useState({\r\n value: 'https://',\r\n isInvalid: false,\r\n errorMsg: '',\r\n });\r\n const [name, setName] = useState({\r\n value: '',\r\n isInvalid: false,\r\n errorMsg: '',\r\n });\r\n const inputRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (visible && inputRef.current) {\r\n inputRef.current.setSelectionRange(0, inputRef.current.value.length);\r\n inputRef.current.focus();\r\n }\r\n }, [visible]);\r\n\r\n const addLink = (ctx) => {\r\n context = ctx;\r\n const { editor } = context;\r\n\r\n const text = editor.getSelection();\r\n\r\n setName({ ...name, value: text });\r\n\r\n setVisible(true);\r\n };\r\n const handleClick = () => {\r\n const { editor } = context;\r\n\r\n if (!link.value) {\r\n setLink({ ...link, isInvalid: true });\r\n return;\r\n }\r\n const newStr = name.value\r\n ? `[${name.value}](${link.value})`\r\n : `<${link.value}>`;\r\n\r\n editor.replaceSelection(newStr);\r\n\r\n setVisible(false);\r\n\r\n editor.focus();\r\n setLink({ ...link, value: '' });\r\n setName({ ...name, value: '' });\r\n };\r\n const onHide = () => setVisible(false);\r\n const onExited = () => {\r\n const { editor } = context;\r\n editor.focus();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n
{t('link.add_link')}
\r\n
\r\n \r\n
\r\n \r\n {t('link.form.fields.url.label')}\r\n setLink({ ...link, value: e.target.value })}\r\n isInvalid={link.isInvalid}\r\n />\r\n \r\n\r\n \r\n {`${t('link.form.fields.name.label')} ${t(\r\n 'optional',\r\n {\r\n keyPrefix: 'form',\r\n },\r\n )}`}\r\n setName({ ...name, value: e.target.value })}\r\n isInvalid={name.isInvalid}\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(Link);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\n\r\nlet context: IEditorContext;\r\nconst BlockQuote = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n\r\n const item = {\r\n label: 'blockquote',\r\n keyMap: ['Ctrl-Q'],\r\n tip: `${t('blockquote.text')} (Ctrl+Q)`,\r\n };\r\n\r\n const handleClick = (ctx) => {\r\n context = ctx;\r\n context.replaceLines((line) => {\r\n const FIND_BLOCKQUOTE_RX = /^>\\s+?/g;\r\n\r\n if (line === `> ${t('blockquote.text')}`) {\r\n line = '';\r\n } else if (line.match(FIND_BLOCKQUOTE_RX)) {\r\n line = line.replace(FIND_BLOCKQUOTE_RX, '');\r\n } else {\r\n line = `> ${line || t('blockquote.text')}`;\r\n }\r\n return line;\r\n }, 2);\r\n context.editor?.focus();\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(BlockQuote);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { useEffect, useState, memo } from 'react';\r\nimport { Button, Form, Modal, Tab, Tabs } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport type { Editor } from 'codemirror';\r\n\r\nimport { Modal as AnswerModal } from '@/components';\r\nimport ToolItem from '../toolItem';\r\nimport { IEditorContext } from '../types';\r\nimport { uploadImage } from '@/services';\r\n\r\nlet context: IEditorContext;\r\nconst Image = ({ editorInstance }) => {\r\n const [editor, setEditor] = useState(editorInstance);\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n\r\n const loadingText = `![${t('image.uploading')}...]()`;\r\n\r\n const item = {\r\n label: 'image',\r\n keyMap: ['Ctrl-G'],\r\n tip: `${t('image.text')} (Ctrl+G)`,\r\n };\r\n const [currentTab, setCurrentTab] = useState('localImage');\r\n const [visible, setVisible] = useState(false);\r\n const [link, setLink] = useState({\r\n value: '',\r\n isInvalid: false,\r\n errorMsg: '',\r\n type: '',\r\n });\r\n\r\n const [imageName, setImageName] = useState({\r\n value: '',\r\n isInvalid: false,\r\n errorMsg: '',\r\n });\r\n const verifyImageSize = (files: FileList) => {\r\n if (files.length === 0) {\r\n return false;\r\n }\r\n const filteredFiles = Array.from(files).filter(\r\n (file) => file.type.indexOf('image') === -1,\r\n );\r\n\r\n if (filteredFiles.length > 0) {\r\n AnswerModal.confirm({\r\n content: t('image.form_image.fields.file.msg.only_image'),\r\n });\r\n return false;\r\n }\r\n const filteredImages = Array.from(files).filter(\r\n (file) => file.size / 1024 / 1024 > 4,\r\n );\r\n\r\n if (filteredImages.length > 0) {\r\n AnswerModal.confirm({\r\n content: t('image.form_image.fields.file.msg.max_size'),\r\n });\r\n return false;\r\n }\r\n return true;\r\n };\r\n const upload = (\r\n files: FileList,\r\n ): Promise<{ url: string; name: string }[]> => {\r\n const promises = Array.from(files).map(async (file) => {\r\n const url = await uploadImage({ file, type: 'post' });\r\n\r\n return {\r\n name: file.name,\r\n url,\r\n };\r\n });\r\n\r\n return Promise.all(promises);\r\n };\r\n function dragenter(_, e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function dragover(_, e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n const drop = async (_, e) => {\r\n const fileList = e.dataTransfer.files;\r\n\r\n const bool = verifyImageSize(fileList);\r\n\r\n if (!bool) {\r\n return;\r\n }\r\n\r\n const startPos = editor.getCursor();\r\n const endPos = { ...startPos, ch: startPos.ch + loadingText.length };\r\n\r\n editor.replaceSelection(loadingText);\r\n const urls = await upload(fileList).catch((ex) => {\r\n console.error('upload file error: ', ex);\r\n });\r\n\r\n const text: string[] = [];\r\n if (Array.isArray(urls)) {\r\n urls.forEach(({ name, url }) => {\r\n if (name && url) {\r\n text.push(`![${name}](${url})`);\r\n }\r\n });\r\n }\r\n if (text.length) {\r\n editor.replaceRange(text.join('\\n'), startPos, endPos);\r\n } else {\r\n // Clear loading text\r\n editor.replaceRange('', startPos, endPos);\r\n }\r\n };\r\n\r\n const paste = async (_, event) => {\r\n const clipboard = event.clipboardData;\r\n\r\n const bool = verifyImageSize(clipboard.files);\r\n\r\n if (bool) {\r\n event.preventDefault();\r\n editor.setOption('readOnly', true);\r\n const startPos = editor.getCursor('');\r\n const endPos = { ...startPos, ch: startPos.ch + loadingText.length };\r\n\r\n editor.replaceSelection(loadingText);\r\n const urls = await upload(clipboard.files);\r\n const text = urls.map(({ name, url }) => {\r\n return `![${name}](${url})`;\r\n });\r\n\r\n editor.replaceRange(text.join('\\n'), startPos, endPos);\r\n\r\n editor.setOption('readOnly', false);\r\n return;\r\n }\r\n\r\n const htmlStr = clipboard.getData('text/html');\r\n const imgRegex = /]*)>/;\r\n\r\n if (!htmlStr.match(imgRegex)) {\r\n return;\r\n }\r\n event.preventDefault();\r\n\r\n let innerText = '';\r\n const allPTag = new DOMParser()\r\n .parseFromString(\r\n htmlStr.replace(\r\n /]*)>/gi,\r\n `

![${t('image.text')}]($3)\\n\\n

`,\r\n ),\r\n 'text/html',\r\n )\r\n .querySelectorAll('body p');\r\n\r\n allPTag.forEach((p, index) => {\r\n const text = p.textContent || '';\r\n if (text !== '') {\r\n if (index === allPTag.length - 1) {\r\n innerText += `${p.textContent}`;\r\n } else {\r\n innerText += `${p.textContent}${text.endsWith('\\n') ? '' : '\\n\\n'}`;\r\n }\r\n }\r\n });\r\n\r\n editor.replaceSelection(innerText);\r\n };\r\n const handleClick = () => {\r\n if (!link.value) {\r\n setLink({ ...link, isInvalid: true });\r\n return;\r\n }\r\n setLink({ ...link, type: '' });\r\n\r\n const text = `![${imageName.value}](${link.value})`;\r\n\r\n editor.replaceSelection(text);\r\n\r\n setVisible(false);\r\n\r\n editor.focus();\r\n setLink({ ...link, value: '' });\r\n setImageName({ ...imageName, value: '' });\r\n };\r\n useEffect(() => {\r\n editor?.on('dragenter', dragenter);\r\n editor?.on('dragover', dragover);\r\n editor?.on('drop', drop);\r\n editor?.on('paste', paste);\r\n return () => {\r\n editor?.off('dragenter', dragenter);\r\n editor?.off('dragover', dragover);\r\n editor?.off('drop', drop);\r\n editor?.off('paste', paste);\r\n };\r\n }, [editor]);\r\n\r\n useEffect(() => {\r\n if (link.value && link.type === 'drop') {\r\n handleClick();\r\n }\r\n }, [link.value]);\r\n\r\n const addLink = (ctx) => {\r\n context = ctx;\r\n setEditor(context.editor);\r\n const text = context.editor?.getSelection();\r\n\r\n setImageName({ ...imageName, value: text });\r\n\r\n setVisible(true);\r\n };\r\n\r\n const onUpload = async (e) => {\r\n if (!editor) {\r\n return;\r\n }\r\n const files = e.target?.files || [];\r\n const bool = verifyImageSize(files);\r\n\r\n if (!bool) {\r\n return;\r\n }\r\n\r\n uploadImage({ file: e.target.files[0], type: 'post' }).then((url) => {\r\n setLink({ ...link, value: url });\r\n });\r\n };\r\n\r\n const onHide = () => setVisible(false);\r\n const onExited = () => editor?.focus();\r\n\r\n const handleSelect = (tab) => {\r\n setCurrentTab(tab);\r\n };\r\n return (\r\n \r\n \r\n \r\n
{t('image.add_image')}
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {t('image.form_image.fields.file.label')}\r\n \r\n \r\n\r\n \r\n {t('image.form_image.fields.file.msg.empty')}\r\n \r\n \r\n\r\n \r\n \r\n {`${t('image.form_image.fields.desc.label')} ${t(\r\n 'optional',\r\n {\r\n keyPrefix: 'form',\r\n },\r\n )}`}\r\n \r\n \r\n setImageName({ ...imageName, value: e.target.value })\r\n }\r\n isInvalid={imageName.isInvalid}\r\n />\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {t('image.form_url.fields.url.label')}\r\n \r\n \r\n setLink({ ...link, value: e.target.value })\r\n }\r\n isInvalid={currentTab === 'remoteImage' && link.isInvalid}\r\n />\r\n \r\n {t('image.form_url.fields.url.msg.empty')}\r\n \r\n \r\n\r\n \r\n \r\n {`${t('image.form_url.fields.name.label')} ${t('optional', {\r\n keyPrefix: 'form',\r\n })}`}\r\n \r\n \r\n setImageName({ ...imageName, value: e.target.value })\r\n }\r\n isInvalid={imageName.isInvalid}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default memo(Image);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ToolItem from '../toolItem';\r\n\r\nconst Help = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\r\n\r\n const item = {\r\n label: 'help',\r\n tip: t('help.text'),\r\n };\r\n const handleClick = () => {\r\n window.open('https://commonmark.org/help/');\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default memo(Help);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { useEffect, useState, useRef } from 'react';\r\n\r\nimport type { Editor, Position } from 'codemirror';\r\nimport type CodeMirror from 'codemirror';\r\nimport 'codemirror/lib/codemirror.css';\r\n\r\nexport function createEditorUtils(\r\n codemirror: typeof CodeMirror,\r\n editor: Editor,\r\n) {\r\n editor.wrapText = (before: string, after = before, defaultText) => {\r\n const range = editor.somethingSelected()\r\n ? editor.listSelections()[0]\r\n : editor.findWordAt(editor.getCursor());\r\n\r\n const from = range.from();\r\n const to = range.to();\r\n const text = editor.getRange(from, to) || defaultText;\r\n const fromBefore = codemirror.Pos(from.line, from.ch - before.length);\r\n const toAfter = codemirror.Pos(to.line, to.ch + after.length);\r\n\r\n if (\r\n editor.getRange(fromBefore, from) === before &&\r\n editor.getRange(to, toAfter) === after\r\n ) {\r\n editor.replaceRange(text, fromBefore, toAfter);\r\n editor.setSelection(\r\n fromBefore,\r\n codemirror.Pos(fromBefore.line, fromBefore.ch + text.length),\r\n );\r\n } else {\r\n editor.replaceRange(before + text + after, from, to);\r\n const cursor = editor.getCursor();\r\n\r\n editor.setSelection(\r\n codemirror.Pos(cursor.line, cursor.ch - after.length - text.length),\r\n codemirror.Pos(cursor.line, cursor.ch - after.length),\r\n );\r\n }\r\n };\r\n editor.replaceLines = (\r\n replace: Parameters['map']>[0],\r\n symbolLen = 0,\r\n ) => {\r\n const [selection] = editor.listSelections();\r\n\r\n const range = [\r\n codemirror.Pos(selection.from().line, 0),\r\n codemirror.Pos(selection.to().line),\r\n ] as const;\r\n const lines = editor.getRange(...range).split('\\n');\r\n\r\n editor.replaceRange(lines.map(replace).join('\\n'), ...range);\r\n const newRange = range;\r\n\r\n if (symbolLen > 0) {\r\n newRange[0].ch = symbolLen;\r\n }\r\n editor.setSelection(...newRange);\r\n };\r\n editor.appendBlock = (content: string): Position => {\r\n const cursor = editor.getCursor();\r\n\r\n let emptyLine = -1;\r\n\r\n for (let i = cursor.line; i < editor.lineCount(); i += 1) {\r\n if (!editor.getLine(i).trim()) {\r\n emptyLine = i;\r\n break;\r\n }\r\n }\r\n if (emptyLine === -1) {\r\n editor.replaceRange('\\n', codemirror.Pos(editor.lineCount()));\r\n emptyLine = editor.lineCount();\r\n }\r\n\r\n editor.replaceRange(`\\n${content}`, codemirror.Pos(emptyLine));\r\n return codemirror.Pos(emptyLine + 1, 0);\r\n };\r\n}\r\n\r\nexport function htmlRender(el: HTMLElement | null) {\r\n if (!el) return;\r\n // Replace all br tags with newlines\r\n // Fixed an issue where the BR tag in the editor block formula HTML caused rendering errors.\r\n el.querySelectorAll('p').forEach((p) => {\r\n if (p.innerHTML.startsWith('$$') && p.innerHTML.endsWith('$$')) {\r\n const str = p.innerHTML.replace(/
/g, '\\n');\r\n p.innerHTML = str;\r\n }\r\n });\r\n\r\n // change table style\r\n\r\n el.querySelectorAll('table').forEach((table) => {\r\n if (\r\n (table.parentNode as HTMLDivElement)?.classList.contains(\r\n 'table-responsive',\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n table.classList.add('table', 'table-bordered');\r\n const div = document.createElement('div');\r\n div.className = 'table-responsive';\r\n table.parentNode?.replaceChild(div, table);\r\n div.appendChild(table);\r\n });\r\n\r\n // add rel nofollow for link not inlcludes domain\r\n el.querySelectorAll('a').forEach((a) => {\r\n const base = window.location.origin;\r\n const targetUrl = new URL(a.href, base);\r\n\r\n if (targetUrl.origin !== base) {\r\n a.rel = 'nofollow';\r\n }\r\n });\r\n}\r\n\r\nexport const useEditor = ({\r\n editorRef,\r\n placeholder,\r\n autoFocus,\r\n onChange,\r\n onFocus,\r\n onBlur,\r\n}) => {\r\n const [editor, setEditor] = useState(null);\r\n const [value, setValue] = useState('');\r\n const isMountedRef = useRef(false);\r\n\r\n const onEnter = (cm) => {\r\n const cursor = cm.getCursor();\r\n const text = cm.getLine(cursor.line);\r\n const doc = cm.getDoc();\r\n\r\n const olRegexData = text.match(/^(\\s{0,})(\\d+)\\.\\s/);\r\n const ulRegexData = text.match(/^(\\s{0,})(-|\\*)\\s/);\r\n const blockquoteData = text.match(/^>\\s+?/g);\r\n\r\n if (olRegexData && text !== olRegexData[0]) {\r\n const num = olRegexData[2];\r\n\r\n doc.replaceSelection(`\\n${olRegexData[1]}${Number(num) + 1}. `);\r\n } else if (ulRegexData && text !== ulRegexData[0]) {\r\n doc.replaceSelection(`\\n${ulRegexData[1]}${ulRegexData[2]} `);\r\n } else if (blockquoteData && text !== blockquoteData[0]) {\r\n doc.replaceSelection(`\\n> `);\r\n } else if (\r\n text.trim() === '>' ||\r\n text.trim().match(/^\\d{1,}\\.$/) ||\r\n text.trim().match(/^(\\*|-)$/)\r\n ) {\r\n doc.replaceRange(`\\n`, { ...cursor, ch: 0 }, cursor);\r\n } else {\r\n doc.replaceSelection(`\\n`);\r\n }\r\n };\r\n\r\n const init = async () => {\r\n if (isMountedRef.current) {\r\n return false;\r\n }\r\n isMountedRef.current = true;\r\n\r\n const { default: codeMirror } = await import('codemirror');\r\n await import('codemirror/mode/markdown/markdown');\r\n await import('codemirror/addon/display/placeholder');\r\n\r\n const cm = codeMirror(editorRef?.current, {\r\n mode: 'markdown',\r\n lineWrapping: true,\r\n placeholder,\r\n });\r\n\r\n if (autoFocus) {\r\n setTimeout(() => {\r\n cm.focus();\r\n }, 10);\r\n }\r\n\r\n cm.on('change', (e) => {\r\n const newValue = e.getValue();\r\n setValue(newValue);\r\n });\r\n\r\n cm.on('focus', () => {\r\n onFocus?.();\r\n });\r\n cm.on('blur', () => {\r\n onBlur?.();\r\n });\r\n\r\n setEditor(cm);\r\n createEditorUtils(codeMirror, cm);\r\n\r\n cm.setSize('100%', '100%');\r\n cm.addKeyMap({\r\n Enter: onEnter,\r\n });\r\n return cm;\r\n };\r\n\r\n useEffect(() => {\r\n onChange?.(value);\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (!(editorRef.current instanceof HTMLElement)) {\r\n return;\r\n }\r\n init();\r\n }, [editorRef]);\r\n\r\n return editor;\r\n};\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC, MouseEvent, ReactNode, useEffect, useState } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\n\r\nimport './index.css';\r\nimport classnames from 'classnames';\r\n\r\nconst Index: FC<{\r\n children: ReactNode;\r\n className?: classnames.Argument;\r\n}> = ({ children, className }) => {\r\n const [visible, setVisible] = useState(false);\r\n const [imgSrc, setImgSrc] = useState('');\r\n const onClose = () => {\r\n setVisible(false);\r\n setImgSrc('');\r\n };\r\n\r\n const checkIfInLink = (target) => {\r\n let ret = false;\r\n let el = target.parentElement;\r\n while (el) {\r\n if (el.nodeName.toLowerCase() === 'a') {\r\n ret = true;\r\n break;\r\n }\r\n el = el.parentElement;\r\n }\r\n return ret;\r\n };\r\n\r\n const checkClickForImgView = (evt: MouseEvent) => {\r\n const { target } = evt;\r\n // @ts-ignore\r\n if (target.nodeName.toLowerCase() !== 'img') {\r\n return;\r\n }\r\n const img = target as HTMLImageElement;\r\n if (!img.naturalWidth || !img.naturalHeight) {\r\n img.classList.add('broken');\r\n return;\r\n }\r\n const src = img.currentSrc || img.src;\r\n if (src && checkIfInLink(img) === false) {\r\n setImgSrc(src);\r\n setVisible(true);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n onClose();\r\n };\r\n }, []);\r\n\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n \r\n {children}\r\n \r\n \r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-element-interactions */}\r\n {\r\n evt.stopPropagation();\r\n onClose();\r\n }}\r\n src={imgSrc}\r\n alt={imgSrc}\r\n />\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n useEffect,\r\n useRef,\r\n useState,\r\n memo,\r\n useImperativeHandle,\r\n} from 'react';\r\n\r\nimport { markdownToHtml } from '@/services';\r\nimport ImgViewer from '@/components/ImgViewer';\r\n\r\nimport { htmlRender } from './utils';\r\n\r\nlet scrollTop = 0;\r\nlet renderTimer;\r\n\r\nconst Index = ({ value }, ref) => {\r\n const [html, setHtml] = useState('');\r\n const previewRef = useRef(null);\r\n\r\n const renderMarkdown = (markdown) => {\r\n clearTimeout(renderTimer);\r\n const timeout = renderTimer ? 1000 : 0;\r\n renderTimer = setTimeout(() => {\r\n markdownToHtml(markdown).then((resp) => {\r\n scrollTop = previewRef.current?.scrollTop || 0;\r\n setHtml(resp);\r\n });\r\n }, timeout);\r\n };\r\n useEffect(() => {\r\n renderMarkdown(value);\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (!html) {\r\n return;\r\n }\r\n\r\n previewRef.current?.scrollTo(0, scrollTop);\r\n\r\n htmlRender(previewRef.current);\r\n }, [html]);\r\n\r\n useImperativeHandle(ref, () => {\r\n return {\r\n getHtml: () => html,\r\n element: previewRef.current,\r\n };\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(forwardRef(Index));\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport {\r\n useEffect,\r\n useRef,\r\n ForwardRefRenderFunction,\r\n forwardRef,\r\n useImperativeHandle,\r\n} from 'react';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport PluginRender from '../PluginRender';\r\n\r\nimport {\r\n BlockQuote,\r\n Bold,\r\n Code,\r\n Heading,\r\n Help,\r\n Hr,\r\n Image,\r\n Indent,\r\n Italice,\r\n Link as LinkItem,\r\n OL,\r\n Outdent,\r\n Table,\r\n UL,\r\n} from './ToolBars';\r\nimport { htmlRender, useEditor } from './utils';\r\nimport Viewer from './Viewer';\r\nimport { EditorContext } from './EditorContext';\r\n\r\nimport './index.scss';\r\n\r\nexport interface EditorRef {\r\n getHtml: () => string;\r\n}\r\n\r\ninterface EventRef {\r\n onChange?(value: string): void;\r\n onFocus?(): void;\r\n onBlur?(): void;\r\n}\r\n\r\ninterface Props extends EventRef {\r\n editorPlaceholder?;\r\n className?;\r\n value;\r\n autoFocus?: boolean;\r\n}\r\n\r\nconst MDEditor: ForwardRefRenderFunction = (\r\n {\r\n editorPlaceholder = '',\r\n className = '',\r\n value,\r\n onChange,\r\n onFocus,\r\n onBlur,\r\n autoFocus = false,\r\n },\r\n ref,\r\n) => {\r\n const editorRef = useRef(null);\r\n const previewRef = useRef<{ getHtml; element } | null>(null);\r\n\r\n const editor = useEditor({\r\n editorRef,\r\n onChange,\r\n onFocus,\r\n onBlur,\r\n placeholder: editorPlaceholder,\r\n autoFocus,\r\n });\r\n\r\n const getHtml = () => {\r\n return previewRef.current?.getHtml();\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n getHtml,\r\n }));\r\n\r\n useEffect(() => {\r\n if (!editor) {\r\n return;\r\n }\r\n if (editor.getValue() !== value) {\r\n editor.setValue(value || '');\r\n }\r\n }, [editor, value]);\r\n\r\n return (\r\n <>\r\n
\r\n \r\n {editor && (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
    \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n \r\n \r\n )}\r\n \r\n\r\n
      \r\n \r\n
      \r\n
      \r\n \r\n \r\n );\r\n};\r\nexport { htmlRender };\r\nexport default forwardRef(MDEditor);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC, memo } from 'react';\r\nimport { Nav, Dropdown } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { NavLink, useNavigate } from 'react-router-dom';\r\n\r\nimport type * as Type from '@/common/interface';\r\nimport { Avatar, Icon } from '@/components';\r\nimport { floppyNavigation } from '@/utils';\r\nimport { userCenterStore } from '@/stores';\r\n\r\ninterface Props {\r\n redDot: Type.NotificationStatus | undefined;\r\n userInfo: Type.UserInfoRes;\r\n logOut: (e) => void;\r\n}\r\n\r\nconst Index: FC = ({ redDot, userInfo, logOut }) => {\r\n const { t } = useTranslation();\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const navigate = useNavigate();\r\n const { agent: ucAgent } = userCenterStore();\r\n const handleLinkClick = (evt) => {\r\n if (floppyNavigation.shouldProcessLinkClick(evt)) {\r\n evt.preventDefault();\r\n const href = evt.currentTarget.getAttribute('href');\r\n navigate(href);\r\n }\r\n };\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {t('header.nav.profile')}\r\n \r\n \r\n {t('header.nav.bookmark')}\r\n \r\n \r\n {t('header.nav.setting')}\r\n \r\n \r\n logOut(e)}>\r\n {t('header.nav.logout')}\r\n \r\n \r\n \r\n {/* Dropdown for user center agent info */}\r\n {ucAgent?.enabled &&\r\n (ucAgent?.agent_info?.url ||\r\n ucAgent?.agent_info?.control_center?.length) ? (\r\n \r\n \r\n \r\n \r\n\r\n \r\n {ucAgent.agent_info.url ? (\r\n \r\n {ucAgent.agent_info.name}\r\n \r\n ) : null}\r\n {ucAgent.agent_info.url &&\r\n ucAgent.agent_info.control_center?.length ? (\r\n \r\n ) : null}\r\n {ucAgent.agent_info.control_center?.map((ctrl) => {\r\n return (\r\n \r\n {ctrl.label}\r\n \r\n );\r\n })}\r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nexport default memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC, memo, useState, useEffect } from 'react';\r\nimport {\r\n Navbar,\r\n Container,\r\n Nav,\r\n Form,\r\n FormControl,\r\n Button,\r\n Col,\r\n} from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {\r\n useSearchParams,\r\n Link,\r\n useNavigate,\r\n useLocation,\r\n useMatch,\r\n} from 'react-router-dom';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { userCenter, floppyNavigation } from '@/utils';\r\nimport {\r\n loggedUserInfoStore,\r\n siteInfoStore,\r\n brandingStore,\r\n loginSettingStore,\r\n themeSettingStore,\r\n sideNavStore,\r\n} from '@/stores';\r\nimport { logout, useQueryNotificationStatus } from '@/services';\r\n\r\nimport NavItems from './components/NavItems';\r\n\r\nimport './index.scss';\r\n\r\nconst Header: FC = () => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const [urlSearch] = useSearchParams();\r\n const q = urlSearch.get('q');\r\n const { user, clear: clearUserStore } = loggedUserInfoStore();\r\n const { t } = useTranslation();\r\n const [searchStr, setSearch] = useState('');\r\n const siteInfo = siteInfoStore((state) => state.siteInfo);\r\n const brandingInfo = brandingStore((state) => state.branding);\r\n const loginSetting = loginSettingStore((state) => state.login);\r\n const { updateReview, updateVisible } = sideNavStore();\r\n const { data: redDot } = useQueryNotificationStatus();\r\n /**\r\n * Automatically append `tag` information when creating a question\r\n */\r\n const tagMatch = useMatch('/tags/:slugName');\r\n let askUrl = '/questions/ask';\r\n if (tagMatch && tagMatch.params.slugName) {\r\n askUrl = `${askUrl}?tags=${encodeURIComponent(tagMatch.params.slugName)}`;\r\n }\r\n\r\n useEffect(() => {\r\n updateReview({\r\n can_revision: Boolean(redDot?.can_revision),\r\n revision: Number(redDot?.revision),\r\n });\r\n }, [redDot]);\r\n\r\n const handleInput = (val) => {\r\n setSearch(val);\r\n };\r\n const handleSearch = (evt) => {\r\n evt.preventDefault();\r\n if (!searchStr) {\r\n return;\r\n }\r\n const searchUrl = `/search?q=${encodeURIComponent(searchStr)}`;\r\n navigate(searchUrl);\r\n };\r\n\r\n const handleLogout = async (evt) => {\r\n evt.preventDefault();\r\n await logout();\r\n clearUserStore();\r\n window.location.replace(window.location.href);\r\n };\r\n\r\n useEffect(() => {\r\n if (q && location.pathname === '/search') {\r\n handleInput(q);\r\n }\r\n }, [q]);\r\n\r\n useEffect(() => {\r\n const collapse = document.querySelector('#navBarContent');\r\n if (collapse && collapse.classList.contains('show')) {\r\n const toggle = document.querySelector('#navBarToggle') as HTMLElement;\r\n if (toggle) {\r\n toggle?.click();\r\n }\r\n }\r\n\r\n // clear search input when navigate to other page\r\n if (location.pathname !== '/search' && searchStr) {\r\n setSearch('');\r\n }\r\n }, [location.pathname]);\r\n\r\n let navbarStyle = 'theme-colored';\r\n const { theme, theme_config } = themeSettingStore((_) => _);\r\n if (theme_config?.[theme]?.navbar_style) {\r\n navbarStyle = `theme-${theme_config[theme].navbar_style}`;\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n updateVisible();\r\n }}\r\n />\r\n\r\n
      \r\n \r\n {brandingInfo.logo ? (\r\n <>\r\n \r\n\r\n \r\n \r\n ) : (\r\n {siteInfo.name}\r\n )}\r\n \r\n\r\n {/* mobile nav */}\r\n
      \r\n {user?.username ? (\r\n handleLogout(e)}\r\n />\r\n ) : (\r\n <>\r\n floppyNavigation.storageLoginRedirect()}\r\n href={userCenter.getLoginUrl()}>\r\n {t('btns.login')}\r\n \r\n {loginSetting.allow_new_registrations && (\r\n \r\n {t('btns.signup')}\r\n \r\n )}\r\n \r\n )}\r\n
      \r\n
      \r\n\r\n \r\n
      \r\n
\r\n \r\n handleInput(e.target.value)}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n {t('btns.add_question')}\r\n \r\n \r\n {/* pc nav */}\r\n \r\n {user?.username ? (\r\n \r\n ) : (\r\n <>\r\n floppyNavigation.storageLoginRedirect()}\r\n href={userCenter.getLoginUrl()}>\r\n {t('btns.login')}\r\n \r\n {loginSetting.allow_new_registrations && (\r\n \r\n {t('btns.signup')}\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(Header);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React from 'react';\r\nimport { Container } from 'react-bootstrap';\r\nimport { Trans } from 'react-i18next';\r\n\r\nimport dayjs from 'dayjs';\r\n\r\nimport { siteInfoStore } from '@/stores';\r\n\r\nconst Index = () => {\r\n const fullYear = dayjs().format('YYYY');\r\n const siteName = siteInfoStore((state) => state.siteInfo.name);\r\n const cc = `${fullYear} ${siteName}`;\r\n return (\r\n
\r\n \r\n

\r\n \r\n Powered by\r\n {/* eslint-disable-next-line react/jsx-no-target-blank */}\r\n \r\n Apache Answer\r\n \r\n - the open-source software that powers Q&A communities.\r\n
\r\n Made with love. © 2022 Answer.\r\n
\r\n

\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default React.memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC } from 'react';\r\n\r\nimport classNames from 'classnames';\r\n\r\ninterface IProps {\r\n type?: 'br' | 'bi';\r\n /** icon name */\r\n name: string;\r\n className?: string;\r\n size?: string;\r\n title?: string;\r\n onClick?: () => void;\r\n}\r\nconst Icon: FC = ({\r\n type = 'br',\r\n name,\r\n className,\r\n size,\r\n onClick,\r\n title,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Icon;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC } from 'react';\r\n\r\nimport { base64ToSvg } from '@/utils';\r\n\r\ninterface IProps {\r\n svgClassName?: string;\r\n base64: string | undefined;\r\n}\r\nconst Icon: FC = ({ base64 = '', svgClassName = '' }) => {\r\n return base64 ? (\r\n \r\n ) : null;\r\n};\r\n\r\nexport default Icon;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\n/* eslint-disable no-nested-ternary */\r\nimport { FC, useState, useEffect, useRef } from 'react';\r\nimport { Dropdown, Button, Form } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { marked } from 'marked';\r\nimport classNames from 'classnames';\r\n\r\nimport { useTagModal, useToast } from '@/hooks';\r\nimport type * as Type from '@/common/interface';\r\nimport { queryTags, useUserPermission } from '@/services';\r\n// import { OutsideClickListener } from '@/components';\r\n\r\nimport './index.scss';\r\n\r\ninterface IProps {\r\n value?: Type.Tag[];\r\n onChange?: (tags: Type.Tag[]) => void;\r\n hiddenDescription?: boolean;\r\n hiddenCreateBtn?: boolean;\r\n maxTagLength?: number;\r\n showRequiredTag?: boolean;\r\n autoFocus?: boolean;\r\n}\r\n\r\nlet timer;\r\n\r\nconst TagSelector: FC = ({\r\n value = [],\r\n onChange,\r\n hiddenDescription = false,\r\n hiddenCreateBtn = false,\r\n maxTagLength = 0,\r\n showRequiredTag = false,\r\n autoFocus = false,\r\n}) => {\r\n const containerRef = useRef(null);\r\n const inputRef = useRef(null);\r\n const [initialized, setInitialized] = useState(false);\r\n const [focusState, setFocusState] = useState(autoFocus);\r\n const [showMenu, setShowMenu] = useState(false);\r\n const [currentIndex, setCurrentIndex] = useState(0);\r\n const [repeatIndex, setRepeatIndex] = useState(-1);\r\n const [searchValue, setSearchValue] = useState('');\r\n const [tags, setTags] = useState(null);\r\n const [requiredTags, setRequiredTags] = useState(null);\r\n const { t } = useTranslation('translation', { keyPrefix: 'tag_selector' });\r\n const { data: userPermission } = useUserPermission('tag.add');\r\n const canAddTag =\r\n (maxTagLength > 0 && value?.length < maxTagLength) || maxTagLength === 0;\r\n const toast = useToast();\r\n const tagModal = useTagModal({\r\n onConfirm: (data) => {\r\n if (!(onChange instanceof Function)) {\r\n return;\r\n }\r\n const findIndex = value.findIndex(\r\n (item) => item.slug_name.toLowerCase() === data.slug_name.toLowerCase(),\r\n );\r\n if (findIndex === -1) {\r\n onChange([\r\n ...value,\r\n {\r\n ...data,\r\n parsed_text: marked(data.original_text),\r\n },\r\n ]);\r\n setSearchValue('');\r\n } else {\r\n setRepeatIndex(findIndex);\r\n clearTimeout(timer);\r\n timer = setTimeout(() => {\r\n setRepeatIndex(-1);\r\n }, 2000);\r\n }\r\n },\r\n });\r\n\r\n const filterTags = (result) => {\r\n const tagArray: Type.Tag[] = [];\r\n result?.forEach((item) => {\r\n const findIndex = value.findIndex((v) => {\r\n const tagName1 = v.slug_name.toLowerCase();\r\n const tagName2 =\r\n typeof item === 'string'\r\n ? item.toLowerCase()\r\n : item.slug_name.toLowerCase();\r\n\r\n return tagName1 === tagName2;\r\n });\r\n\r\n if (findIndex === -1) {\r\n tagArray.push(typeof item === 'string' ? { slug_name: item } : item);\r\n }\r\n });\r\n return tagArray;\r\n };\r\n\r\n const handleMenuShow = (bol: boolean) => {\r\n setShowMenu(bol);\r\n const ele = document.getElementById('a-dropdown-menu');\r\n if (ele) {\r\n if (bol) {\r\n ele.classList.add('show');\r\n } else {\r\n ele.classList.remove('show');\r\n }\r\n }\r\n };\r\n\r\n const handleTagSelectorFocus = () => {\r\n setFocusState(true);\r\n inputRef.current?.focus();\r\n };\r\n\r\n const handleTagSelectorBlur = () => {\r\n setFocusState(false);\r\n setCurrentIndex(0);\r\n handleMenuShow(false);\r\n };\r\n\r\n const fetchTags = (str) => {\r\n if (!showRequiredTag && !str) {\r\n setTags([]);\r\n return;\r\n }\r\n queryTags(str).then((res) => {\r\n const tagArray: Type.Tag[] = filterTags(res || []);\r\n if (str === '') {\r\n setRequiredTags(res?.length > 5 ? res.slice(0, 5) : res);\r\n }\r\n handleMenuShow(tagArray.length > 0);\r\n setTags(tagArray?.length > 5 ? tagArray.slice(0, 5) : tagArray);\r\n });\r\n };\r\n\r\n const resetSearch = () => {\r\n setCurrentIndex(0);\r\n setSearchValue('');\r\n if (canAddTag) {\r\n const tagArray: Type.Tag[] = filterTags(requiredTags);\r\n setTags(tagArray.length > 0 ? tagArray : []);\r\n } else {\r\n setTags([]);\r\n }\r\n };\r\n const handleClick = (val: Type.Tag) => {\r\n const findIndex = value.findIndex(\r\n (item) => item.slug_name.toLowerCase() === val.slug_name.toLowerCase(),\r\n );\r\n if (onChange instanceof Function && findIndex === -1) {\r\n onChange([\r\n ...value,\r\n {\r\n original_text: '',\r\n parsed_text: '',\r\n ...val,\r\n },\r\n ]);\r\n } else {\r\n setRepeatIndex(findIndex);\r\n clearTimeout(timer);\r\n timer = setTimeout(() => {\r\n setRepeatIndex(-1);\r\n }, 2000);\r\n }\r\n resetSearch();\r\n };\r\n\r\n const handleRemove = (val: Type.Tag) => {\r\n if (onChange instanceof Function) {\r\n onChange(\r\n value.filter((v) => {\r\n if (v instanceof Object) {\r\n return v.slug_name.toLowerCase() !== val.slug_name.toLowerCase();\r\n }\r\n return v !== val;\r\n }),\r\n );\r\n }\r\n };\r\n\r\n const handleSearch = async (e: React.ChangeEvent) => {\r\n const searchStr = e.currentTarget.value.replace(';', '');\r\n setSearchValue(searchStr);\r\n fetchTags(searchStr);\r\n };\r\n\r\n const handleKeyDown = (e) => {\r\n e.stopPropagation();\r\n const { keyCode } = e;\r\n if (keyCode === 9) {\r\n handleTagSelectorBlur();\r\n return;\r\n }\r\n if (value.length > 0 && keyCode === 8 && !searchValue) {\r\n handleRemove(value[value.length - 1]);\r\n }\r\n\r\n if (!tags) {\r\n return;\r\n }\r\n\r\n if (keyCode === 38 && currentIndex > 0) {\r\n setCurrentIndex(currentIndex - 1);\r\n }\r\n if (keyCode === 40 && currentIndex < tags.length - 1) {\r\n setCurrentIndex(currentIndex + 1);\r\n }\r\n\r\n if (keyCode === 13 && currentIndex > -1) {\r\n e.preventDefault();\r\n if (tags.length === 0 && searchValue) {\r\n tagModal.onShow(searchValue);\r\n return;\r\n }\r\n if (currentIndex <= tags.length - 1) {\r\n handleClick(tags[currentIndex]);\r\n // if (currentIndex === tags.length - 1 && currentIndex > 0) {\r\n // setCurrentIndex(currentIndex - 1);\r\n // }\r\n }\r\n }\r\n };\r\n\r\n const handleCreate = () => {\r\n const tagAddPermission = userPermission?.['tag.add'];\r\n if (!tagAddPermission || tagAddPermission?.has_permission) {\r\n tagModal.onShow(searchValue);\r\n } else if (tagAddPermission?.no_permission_tip) {\r\n toast.onShow({\r\n msg: tagAddPermission.no_permission_tip,\r\n variant: 'danger',\r\n });\r\n }\r\n };\r\n\r\n const handleClickToggle = () => {\r\n const menuHasContent =\r\n (tags && tags?.length > 0) ||\r\n (searchValue && tags?.length === 0) ||\r\n (searchValue && !hiddenCreateBtn);\r\n if (canAddTag && menuHasContent) {\r\n handleMenuShow(true);\r\n } else {\r\n handleMenuShow(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (canAddTag) {\r\n const tagArray: Type.Tag[] = filterTags(requiredTags);\r\n setTags(tagArray.length > 0 ? tagArray : []);\r\n } else {\r\n setTags([]);\r\n }\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (focusState && showRequiredTag) {\r\n fetchTags(searchValue);\r\n inputRef.current?.focus();\r\n }\r\n }, [focusState]);\r\n\r\n useEffect(() => {\r\n setInitialized(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleOutsideClick = (event) => {\r\n if (\r\n initialized &&\r\n containerRef.current &&\r\n !containerRef.current?.contains(event.target)\r\n ) {\r\n handleTagSelectorBlur();\r\n }\r\n };\r\n document.addEventListener('click', handleOutsideClick);\r\n return () => {\r\n document.removeEventListener('click', handleOutsideClick);\r\n };\r\n }, [initialized]);\r\n\r\n useEffect(() => {\r\n // menu show\r\n const menuHasContent =\r\n (tags && tags?.length > 0) ||\r\n (searchValue && tags?.length === 0) ||\r\n (searchValue && !hiddenCreateBtn);\r\n if (focusState) {\r\n if (canAddTag && menuHasContent) {\r\n handleMenuShow(true);\r\n } else {\r\n handleMenuShow(false);\r\n }\r\n\r\n if ((tags && tags?.length < 5) || maxTagLength === 0) {\r\n inputRef.current?.focus();\r\n }\r\n }\r\n }, [focusState, tags, hiddenCreateBtn, searchValue, maxTagLength]);\r\n\r\n useEffect(() => {\r\n // set width of tag Form.Control\r\n const ele = document.querySelector('.a-input-width') as HTMLElement;\r\n if (ele.offsetWidth > 60) {\r\n inputRef.current?.setAttribute(\r\n 'style',\r\n `width:${ele.offsetWidth + 16}px`,\r\n );\r\n } else {\r\n inputRef.current?.setAttribute('style', 'width: 60px');\r\n }\r\n }, [searchValue]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n {value?.map((item, index) => {\r\n return (\r\n \r\n {item.display_name}\r\n handleRemove(item)}>\r\n ×\r\n \r\n \r\n );\r\n })}\r\n {canAddTag ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {searchValue}\r\n
\r\n
\r\n \r\n {!searchValue &&\r\n showRequiredTag &&\r\n tags &&\r\n tags.filter((v) => v.recommend)?.length > 0 && (\r\n
{t('tag_required_text')}
\r\n )}\r\n\r\n {tags?.map((item, index) => {\r\n return (\r\n handleClick(item)}>\r\n {item.display_name}\r\n \r\n );\r\n })}\r\n {searchValue && tags?.length === 0 && (\r\n \r\n {t('no_result')}\r\n \r\n )}\r\n {!hiddenCreateBtn && searchValue && (\r\n \r\n + {t('create_btn')}\r\n \r\n )}\r\n
\r\n \r\n {!hiddenDescription && {t('hint')}}\r\n \r\n );\r\n};\r\n\r\nexport default TagSelector;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { useState } from 'react';\r\nimport { Button, Col } from 'react-bootstrap';\r\nimport { Trans, useTranslation } from 'react-i18next';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport type { ImgCodeReq, FormDataType } from '@/common/interface';\r\nimport { loggedUserInfoStore } from '@/stores';\r\nimport { resendEmail } from '@/services';\r\nimport { handleFormError } from '@/utils';\r\nimport { useCaptchaModal } from '@/hooks';\r\n\r\ninterface IProps {\r\n visible?: boolean;\r\n}\r\n\r\nconst Index: React.FC = () => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'inactive' });\r\n const [isSuccess, setSuccess] = useState(false);\r\n const { e_mail } = loggedUserInfoStore((state) => state.user);\r\n const [formData, setFormData] = useState({\r\n captcha_code: {\r\n value: '',\r\n isInvalid: false,\r\n errorMsg: '',\r\n },\r\n });\r\n\r\n const emailCaptcha = useCaptchaModal('email');\r\n\r\n const submit = () => {\r\n let req: ImgCodeReq = {};\r\n const imgCode = emailCaptcha.getCaptcha();\r\n if (imgCode.verify) {\r\n req = {\r\n captcha_code: imgCode.captcha_code,\r\n captcha_id: imgCode.captcha_id,\r\n };\r\n }\r\n resendEmail(req)\r\n .then(async () => {\r\n await emailCaptcha.close();\r\n setSuccess(true);\r\n })\r\n .catch((err) => {\r\n if (err.isError) {\r\n emailCaptcha.handleCaptchaError(err.list);\r\n const data = handleFormError(err, formData);\r\n setFormData({ ...data });\r\n }\r\n });\r\n };\r\n\r\n const onSentEmail = (evt) => {\r\n evt.preventDefault();\r\n emailCaptcha.check(() => {\r\n submit();\r\n });\r\n };\r\n\r\n return (\r\n
\r\n {isSuccess ? (\r\n

\r\n }}\r\n />\r\n

\r\n ) : (\r\n <>\r\n

\r\n }}\r\n />\r\n

\r\n

{t('info')}

\r\n \r\n \r\n {t('change_btn_name')}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default React.memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { uploadImage } from '@/services';\r\nimport * as Type from '@/common/interface';\r\n\r\ninterface IProps {\r\n type: Type.UploadType;\r\n className?: classnames.Argument;\r\n children?: React.ReactNode;\r\n acceptType?: string;\r\n disabled?: boolean;\r\n uploadCallback: (img: string) => void;\r\n}\r\n\r\nconst Index: React.FC = ({\r\n type,\r\n uploadCallback,\r\n children,\r\n acceptType = '',\r\n className,\r\n disabled = false,\r\n}) => {\r\n const { t } = useTranslation();\r\n const [status, setStatus] = useState(false);\r\n\r\n const onChange = (e: any) => {\r\n if (status) {\r\n return;\r\n }\r\n if (e.target.files[0]) {\r\n // const fileSize = e.target.files[0].size || 0;\r\n\r\n // if (maxSize && fileSize / 1024 / 1024 > 2) {\r\n // Modal.confirm({\r\n // content: '请上传小于 2M 的图片',\r\n // });\r\n // return;\r\n // }\r\n setStatus(true);\r\n uploadImage({ file: e.target.files[0], type })\r\n .then((res) => {\r\n uploadCallback(res);\r\n })\r\n .finally(() => {\r\n setStatus(false);\r\n });\r\n }\r\n };\r\n\r\n return (\r\n \r\n {children || (status ? t('upload_img.loading') : t('upload_img.name'))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default React.memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo, FC, useState, useEffect } from 'react';\r\nimport { Button, ButtonGroup } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport { Icon } from '@/components';\r\nimport { loggedUserInfoStore } from '@/stores';\r\nimport { useToast, useCaptchaModal } from '@/hooks';\r\nimport { tryNormalLogged } from '@/utils/guard';\r\nimport { bookmark, postVote } from '@/services';\r\nimport * as Types from '@/common/interface';\r\n\r\ninterface Props {\r\n className?: string;\r\n source: 'question' | 'answer';\r\n data: {\r\n id: string;\r\n votesCount: number;\r\n isLike: boolean;\r\n isHate: boolean;\r\n hideCollect?: boolean;\r\n collected: boolean;\r\n collectCount: number;\r\n username: string;\r\n };\r\n}\r\n\r\nconst Index: FC = ({ className, data, source }) => {\r\n const [votes, setVotes] = useState(0);\r\n const [like, setLike] = useState(false);\r\n const [hate, setHated] = useState(false);\r\n const [bookmarkState, setBookmark] = useState({\r\n state: data?.collected,\r\n count: data?.collectCount,\r\n });\r\n const { username = '' } = loggedUserInfoStore((state) => state.user);\r\n const toast = useToast();\r\n const { t } = useTranslation();\r\n const vCaptcha = useCaptchaModal('vote');\r\n\r\n useEffect(() => {\r\n if (data) {\r\n setVotes(data.votesCount);\r\n setLike(data.isLike);\r\n setHated(data.isHate);\r\n setBookmark({\r\n state: data?.collected,\r\n count: data?.collectCount,\r\n });\r\n }\r\n }, []);\r\n\r\n const handleVote = (type: 'up' | 'down') => {\r\n if (!tryNormalLogged(true)) {\r\n return;\r\n }\r\n\r\n if (data.username === username) {\r\n toast.onShow({\r\n msg: t('cannot_vote_for_self'),\r\n variant: 'danger',\r\n });\r\n return;\r\n }\r\n const isCancel = (type === 'up' && like) || (type === 'down' && hate);\r\n vCaptcha.check(() => {\r\n const imgCode: Types.ImgCodeReq = {\r\n captcha_id: undefined,\r\n captcha_code: undefined,\r\n };\r\n vCaptcha.resolveCaptchaReq(imgCode);\r\n postVote(\r\n {\r\n object_id: data?.id,\r\n is_cancel: isCancel,\r\n ...imgCode,\r\n },\r\n type,\r\n )\r\n .then(async (res) => {\r\n await vCaptcha.close();\r\n setVotes(res.votes);\r\n setLike(res.vote_status === 'vote_up');\r\n setHated(res.vote_status === 'vote_down');\r\n })\r\n .catch((err) => {\r\n if (err?.isError) {\r\n vCaptcha.handleCaptchaError(err.list);\r\n }\r\n const errMsg = err?.value;\r\n if (errMsg) {\r\n toast.onShow({\r\n msg: errMsg,\r\n variant: 'danger',\r\n });\r\n }\r\n });\r\n });\r\n };\r\n\r\n const handleBookmark = () => {\r\n if (!tryNormalLogged(true)) {\r\n return;\r\n }\r\n bookmark({\r\n group_id: '0',\r\n object_id: data?.id,\r\n bookmark: !bookmarkState.state,\r\n }).then((res) => {\r\n setBookmark({\r\n state: !bookmarkState.state,\r\n count: res.object_collection_count,\r\n });\r\n });\r\n };\r\n\r\n return (\r\n
\r\n \r\n handleVote('up')}>\r\n \r\n \r\n \r\n handleVote('down')}>\r\n \r\n \r\n \r\n {!data?.hideCollect && (\r\n \r\n \r\n {bookmarkState.count}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport React, { memo, FC } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport { Tag } from '@/common/interface';\r\nimport { pathFactory } from '@/router/pathFactory';\r\n\r\ninterface IProps {\r\n data: Tag;\r\n href?: string;\r\n className?: string;\r\n textClassName?: string;\r\n}\r\n\r\nconst Index: FC = ({\r\n data,\r\n href,\r\n className = '',\r\n textClassName = '',\r\n}) => {\r\n href ||= pathFactory.tagLanding(encodeURIComponent(data.slug_name));\r\n\r\n return (\r\n \r\n \r\n {data.display_name || data.slug_name}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo, FC, useState, useEffect } from 'react';\r\nimport { Dropdown, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { FacebookShareButton, TwitterShareButton } from 'next-share';\r\nimport copy from 'copy-to-clipboard';\r\n\r\nimport { loggedUserInfoStore } from '@/stores';\r\n\r\ninterface IProps {\r\n type: 'answer' | 'question';\r\n qid: any;\r\n aid?: any;\r\n title: string;\r\n // slugTitle: string;\r\n}\r\n\r\nconst Index: FC = ({ type, qid, aid, title }) => {\r\n const user = loggedUserInfoStore((state) => state.user);\r\n const [show, setShow] = useState(false);\r\n const [showTip, setShowTip] = useState(false);\r\n const [canSystemShare, setSystemShareState] = useState(false);\r\n const { t } = useTranslation();\r\n let baseUrl =\r\n type === 'question'\r\n ? `${window.location.origin}/questions/${qid}`\r\n : `${window.location.origin}/questions/${qid}/${aid}`;\r\n if (user.id) {\r\n baseUrl = `${baseUrl}?shareUserId=${user.username}`;\r\n }\r\n\r\n const closeShare = () => {\r\n setShowTip(false);\r\n setShow(false);\r\n };\r\n\r\n const handleCopy = (evt) => {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n let copyText = baseUrl;\r\n if (title) {\r\n copyText = `${title} ${baseUrl}`;\r\n }\r\n copy(copyText);\r\n setShowTip(true);\r\n setTimeout(closeShare, 1000);\r\n };\r\n\r\n const systemShare = () => {\r\n navigator.share({\r\n title,\r\n text: `${title} - Answer:`,\r\n url: baseUrl,\r\n });\r\n };\r\n useEffect(() => {\r\n if (window.navigator?.canShare?.({ text: 'can_share' })) {\r\n setSystemShareState(true);\r\n }\r\n }, []);\r\n return (\r\n \r\n setShow(true)}\r\n style={{ lineHeight: '23px' }}>\r\n {t('share.name')}\r\n \r\n \r\n {t('share.copied')}}>\r\n \r\n {t('share.copy')}\r\n \r\n \r\n \r\n \r\n {t('share.facebook')}\r\n \r\n \r\n \r\n \r\n {t('share.twitter')}\r\n \r\n \r\n {canSystemShare && (\r\n {t('share.via')}\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo, FC } from 'react';\r\nimport { Button, Dropdown } from 'react-bootstrap';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { Modal } from '@/components';\r\nimport { useReportModal, useToast, useCaptchaModal } from '@/hooks';\r\nimport { QuestionOperationReq } from '@/common/interface';\r\nimport Share from '../Share';\r\nimport {\r\n deleteQuestion,\r\n deleteAnswer,\r\n editCheck,\r\n reopenQuestion,\r\n questionOperation,\r\n unDeleteAnswer,\r\n unDeleteQuestion,\r\n} from '@/services';\r\nimport { tryNormalLogged } from '@/utils/guard';\r\nimport { floppyNavigation } from '@/utils';\r\nimport { toastStore } from '@/stores';\r\n\r\ninterface IProps {\r\n type: 'answer' | 'question';\r\n qid: string;\r\n aid?: string;\r\n title: string;\r\n hasAnswer?: boolean;\r\n isAccepted: boolean;\r\n callback: (type: string) => void;\r\n memberActions;\r\n}\r\nconst Index: FC = ({\r\n type,\r\n qid,\r\n aid = '',\r\n title,\r\n isAccepted = false,\r\n hasAnswer = false,\r\n memberActions = [],\r\n callback,\r\n}) => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'delete' });\r\n const toast = useToast();\r\n const navigate = useNavigate();\r\n const reportModal = useReportModal();\r\n const dCaptcha = useCaptchaModal('delete');\r\n\r\n const refreshQuestion = () => {\r\n callback?.('default');\r\n };\r\n const closeModal = useReportModal(refreshQuestion);\r\n const editUrl =\r\n type === 'answer' ? `/posts/${qid}/${aid}/edit` : `/posts/${qid}/edit`;\r\n\r\n const handleReport = () => {\r\n reportModal.onShow({\r\n type,\r\n id: type === 'answer' ? aid : qid,\r\n action: 'flag',\r\n });\r\n };\r\n\r\n const handleClose = () => {\r\n closeModal.onShow({\r\n type,\r\n id: qid,\r\n action: 'close',\r\n });\r\n };\r\n\r\n const handleDelete = () => {\r\n if (type === 'question') {\r\n Modal.confirm({\r\n title: t('title'),\r\n content: hasAnswer ? t('question') : t('other'),\r\n cancelBtnVariant: 'link',\r\n confirmBtnVariant: 'danger',\r\n confirmText: t('delete', { keyPrefix: 'btns' }),\r\n onConfirm: () => {\r\n dCaptcha.check(() => {\r\n const req = {\r\n id: qid,\r\n captcha_code: undefined,\r\n captcha_id: undefined,\r\n };\r\n dCaptcha.resolveCaptchaReq(req);\r\n\r\n deleteQuestion(req)\r\n .then(async () => {\r\n await dCaptcha.close();\r\n toast.onShow({\r\n msg: t('post_deleted', { keyPrefix: 'messages' }),\r\n variant: 'success',\r\n });\r\n callback?.('delete_question');\r\n })\r\n .catch((ex) => {\r\n if (ex.isError) {\r\n dCaptcha.handleCaptchaError(ex.list);\r\n }\r\n });\r\n });\r\n },\r\n });\r\n }\r\n\r\n if (type === 'answer' && aid) {\r\n Modal.confirm({\r\n title: t('title'),\r\n content: isAccepted ? t('answer_accepted') : t('other'),\r\n cancelBtnVariant: 'link',\r\n confirmBtnVariant: 'danger',\r\n confirmText: t('delete', { keyPrefix: 'btns' }),\r\n onConfirm: () => {\r\n dCaptcha.check(() => {\r\n const req = {\r\n id: aid,\r\n captcha_code: undefined,\r\n captcha_id: undefined,\r\n };\r\n dCaptcha.resolveCaptchaReq(req);\r\n\r\n deleteAnswer(req)\r\n .then(async () => {\r\n await dCaptcha.close();\r\n // refresh page\r\n toast.onShow({\r\n msg: t('tip_answer_deleted'),\r\n variant: 'success',\r\n });\r\n callback?.('delete_answer');\r\n })\r\n .catch((ex) => {\r\n if (ex.isError) {\r\n dCaptcha.handleCaptchaError(ex.list);\r\n }\r\n });\r\n });\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleUndelete = () => {\r\n Modal.confirm({\r\n title: t('undelete_title'),\r\n content: t('undelete_desc'),\r\n cancelBtnVariant: 'link',\r\n confirmBtnVariant: 'danger',\r\n confirmText: t('undelete', { keyPrefix: 'btns' }),\r\n onConfirm: () => {\r\n if (type === 'question') {\r\n unDeleteQuestion(qid).then(() => {\r\n callback?.('default');\r\n });\r\n }\r\n\r\n if (type === 'answer') {\r\n unDeleteAnswer(aid).then(() => {\r\n callback?.('all');\r\n });\r\n }\r\n },\r\n });\r\n };\r\n\r\n const handleEdit = (evt, targetUrl) => {\r\n if (!floppyNavigation.shouldProcessLinkClick(evt)) {\r\n return;\r\n }\r\n evt.preventDefault();\r\n let checkObjectId = qid;\r\n if (type === 'answer') {\r\n checkObjectId = aid;\r\n }\r\n editCheck(checkObjectId).then(() => {\r\n navigate(targetUrl);\r\n });\r\n };\r\n\r\n const handleReopen = () => {\r\n Modal.confirm({\r\n title: t('title', { keyPrefix: 'question_detail.reopen' }),\r\n content: t('content', { keyPrefix: 'question_detail.reopen' }),\r\n cancelBtnVariant: 'link',\r\n confirmText: t('confirm_btn', { keyPrefix: 'question_detail.reopen' }),\r\n onConfirm: () => {\r\n reopenQuestion({\r\n question_id: qid,\r\n }).then(() => {\r\n toast.onShow({\r\n msg: t('post_reopen', { keyPrefix: 'messages' }),\r\n variant: 'success',\r\n });\r\n refreshQuestion();\r\n });\r\n },\r\n });\r\n };\r\n\r\n const handleCommon = async (params) => {\r\n await questionOperation(params);\r\n let msg = '';\r\n if (params.operation === 'pin') {\r\n msg = t('post_pin', { keyPrefix: 'messages' });\r\n }\r\n if (params.operation === 'unpin') {\r\n msg = t('post_unpin', { keyPrefix: 'messages' });\r\n }\r\n if (params.operation === 'hide') {\r\n msg = t('post_hide_list', { keyPrefix: 'messages' });\r\n }\r\n if (params.operation === 'show') {\r\n msg = t('post_show_list', { keyPrefix: 'messages' });\r\n }\r\n toastStore.getState().show({\r\n msg,\r\n variant: 'success',\r\n });\r\n setTimeout(() => {\r\n refreshQuestion();\r\n }, 100);\r\n };\r\n\r\n const handlOtherActions = (action) => {\r\n const params: QuestionOperationReq = {\r\n id: qid,\r\n operation: action,\r\n };\r\n\r\n if (action === 'pin') {\r\n Modal.confirm({\r\n title: t('title', { keyPrefix: 'question_detail.pin' }),\r\n content: t('content', { keyPrefix: 'question_detail.pin' }),\r\n cancelBtnVariant: 'link',\r\n confirmText: t('confirm_btn', { keyPrefix: 'question_detail.pin' }),\r\n onConfirm: () => {\r\n handleCommon(params);\r\n },\r\n });\r\n } else {\r\n handleCommon(params);\r\n }\r\n };\r\n\r\n const handleAction = (action) => {\r\n if (!tryNormalLogged(true)) {\r\n return;\r\n }\r\n if (action === 'delete') {\r\n handleDelete();\r\n }\r\n\r\n if (action === 'undelete') {\r\n handleUndelete();\r\n }\r\n\r\n if (action === 'report') {\r\n handleReport();\r\n }\r\n\r\n if (action === 'close') {\r\n handleClose();\r\n }\r\n\r\n if (action === 'reopen') {\r\n handleReopen();\r\n }\r\n\r\n if (\r\n action === 'pin' ||\r\n action === 'unpin' ||\r\n action === 'hide' ||\r\n action === 'show'\r\n ) {\r\n handlOtherActions(action);\r\n }\r\n };\r\n\r\n const firstAction =\r\n memberActions?.filter(\r\n (v) =>\r\n v.action === 'report' ||\r\n v.action === 'edit' ||\r\n v.action === 'delete' ||\r\n v.action === 'undelete',\r\n ) || [];\r\n const secondAction =\r\n memberActions?.filter(\r\n (v) =>\r\n v.action === 'close' ||\r\n v.action === 'reopen' ||\r\n v.action === 'pin' ||\r\n v.action === 'unpin' ||\r\n v.action === 'hide' ||\r\n v.action === 'show',\r\n ) || [];\r\n\r\n return (\r\n
\r\n \r\n {firstAction?.map((item) => {\r\n if (item.action === 'edit') {\r\n return (\r\n handleEdit(evt, editUrl)}\r\n style={{ lineHeight: '23px' }}>\r\n {item.name}\r\n \r\n );\r\n }\r\n return (\r\n handleAction(item.action)}>\r\n {item.name}\r\n \r\n );\r\n })}\r\n {secondAction.length > 0 && (\r\n \r\n \r\n {t('action', { keyPrefix: 'question_detail' })}\r\n \r\n \r\n {secondAction.map((item) => {\r\n return (\r\n handleAction(item.action)}>\r\n {item.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo, FC } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { Avatar, FormatTime } from '@/components';\r\nimport { formatCount } from '@/utils';\r\n\r\ninterface Props {\r\n data: any;\r\n time: number;\r\n preFix: string;\r\n isLogged: boolean;\r\n timelinePath: string;\r\n className?: string;\r\n}\r\n\r\nconst Index: FC = ({\r\n data,\r\n time,\r\n preFix,\r\n isLogged,\r\n timelinePath,\r\n className = '',\r\n}) => {\r\n return (\r\n
\r\n {data?.status !== 'deleted' ? (\r\n \r\n \r\n\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n\r\n \r\n \r\n )}\r\n
\r\n
\r\n {data?.status !== 'deleted' ? (\r\n \r\n {data?.display_name}\r\n \r\n ) : (\r\n {data?.display_name}\r\n )}\r\n \r\n {formatCount(data?.rank)}\r\n \r\n
\r\n {time &&\r\n (isLogged ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { FC } from 'react';\r\nimport { Pagination } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSearchParams, useNavigate, useLocation } from 'react-router-dom';\r\n\r\nimport { scrollToDocTop, floppyNavigation } from '@/utils';\r\n\r\ninterface Props {\r\n currentPage: number;\r\n pageSize: number;\r\n totalSize: number;\r\n pathname?: string;\r\n}\r\n\r\ninterface PageItemProps {\r\n page: number;\r\n currentPage: number;\r\n path: string;\r\n}\r\n\r\nconst pageArr = [\r\n {\r\n href: '1',\r\n page: 1,\r\n },\r\n {\r\n href: '#!',\r\n page: 2,\r\n },\r\n {\r\n href: '#!',\r\n page: 3,\r\n },\r\n {\r\n href: '#!',\r\n page: 4,\r\n },\r\n {\r\n href: '#!',\r\n page: 5,\r\n },\r\n];\r\n\r\nconst PageItem = ({ page, currentPage, path }: PageItemProps) => {\r\n const navigate = useNavigate();\r\n return (\r\n {\r\n if (floppyNavigation.shouldProcessLinkClick(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n navigate(path);\r\n scrollToDocTop();\r\n }\r\n }}>\r\n {page}\r\n \r\n );\r\n};\r\n\r\nconst Index: FC = ({\r\n currentPage = 1,\r\n pageSize = 15,\r\n totalSize = 0,\r\n pathname = '',\r\n}) => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'pagination' });\r\n const location = useLocation();\r\n if (!pathname) {\r\n pathname = location.pathname;\r\n }\r\n const [searchParams] = useSearchParams();\r\n const navigate = useNavigate();\r\n const totalPage = Math.ceil(totalSize / pageSize);\r\n const realPage = currentPage > totalPage ? totalPage : currentPage;\r\n\r\n const mapPage = pageArr.filter((i) => i.page <= totalPage);\r\n\r\n if (totalPage <= 1) {\r\n return null;\r\n }\r\n\r\n const handleParams = (pageNum): string => {\r\n searchParams.set('page', String(pageNum));\r\n const searchStr = searchParams.toString();\r\n return `${pathname}?${searchStr}`;\r\n };\r\n return (\r\n \r\n {currentPage > 1 && (\r\n {\r\n if (floppyNavigation.shouldProcessLinkClick(e)) {\r\n e.preventDefault();\r\n navigate(handleParams(currentPage - 1));\r\n scrollToDocTop();\r\n }\r\n }}>\r\n {t('prev')}\r\n \r\n )}\r\n {currentPage >= 1 && currentPage <= 4 && (\r\n <>\r\n {mapPage.map((item) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n )}\r\n {currentPage === 4 && totalPage > 6 && (\r\n \r\n )}\r\n\r\n {currentPage > 4 && (\r\n <>\r\n \r\n\r\n \r\n \r\n )}\r\n {currentPage >= 5 && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n\r\n {currentPage > totalPage && (\r\n \r\n )}\r\n\r\n {currentPage >= 5 &&\r\n totalPage >= currentPage &&\r\n new Array(\r\n totalPage <= 3\r\n ? totalPage - currentPage + 1\r\n : Math.min(totalPage - currentPage + 1, 3),\r\n )\r\n .fill('')\r\n .map((v, i) => {\r\n return (\r\n \r\n );\r\n })}\r\n {totalPage > 5 && realPage + 2 < totalPage && (\r\n \r\n )}\r\n\r\n {totalPage > 0 && currentPage < totalPage && (\r\n {\r\n if (floppyNavigation.shouldProcessLinkClick(e)) {\r\n e.preventDefault();\r\n navigate(handleParams(currentPage + 1));\r\n scrollToDocTop();\r\n }\r\n }}>\r\n {t('next')}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Index;\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { useState, useEffect, memo } from 'react';\r\nimport { Button, Form } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport { TextArea, Mentions } from '@/components';\r\nimport { usePageUsers, usePromptWithUnload } from '@/hooks';\r\nimport { parseEditMentionUser } from '@/utils';\r\n\r\nconst Index = ({\r\n className = '',\r\n value: initialValue = '',\r\n onSendReply,\r\n type = '',\r\n onCancel,\r\n mode,\r\n}) => {\r\n const [value, setValue] = useState('');\r\n const [immData, setImmData] = useState('');\r\n const pageUsers = usePageUsers();\r\n const { t } = useTranslation('translation', { keyPrefix: 'comment' });\r\n const [validationErrorMsg, setValidationErrorMsg] = useState('');\r\n\r\n usePromptWithUnload({\r\n when: type === 'edit' ? immData !== value : Boolean(value),\r\n });\r\n useEffect(() => {\r\n if (!initialValue) {\r\n return;\r\n }\r\n setImmData(initialValue);\r\n setValue(initialValue);\r\n }, [initialValue]);\r\n\r\n const handleChange = (e) => {\r\n setValue(e.target.value);\r\n };\r\n const handleSelected = (val) => {\r\n setValue(val);\r\n };\r\n const handleSendReply = () => {\r\n onSendReply(value).catch((ex) => {\r\n if (ex.isError) {\r\n setValidationErrorMsg(ex.msg);\r\n }\r\n });\r\n };\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
{t(`tip_${mode}`)}
\r\n
\r\n \r\n {validationErrorMsg}\r\n \r\n \r\n {type === 'edit' ? (\r\n
\r\n handleSendReply()}>\r\n {t('btn_save_edits')}\r\n \r\n \r\n {t('btn_cancel')}\r\n \r\n
\r\n ) : (\r\n handleSendReply()}>\r\n {t('btn_add_comment')}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default memo(Index);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { memo } from 'react';\r\nimport { Button, Dropdown } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport { Icon, FormatTime } from '@/components';\r\n\r\nconst ActionBar = ({\r\n nickName,\r\n username,\r\n createdAt,\r\n isVote,\r\n voteCount = 0,\r\n memberActions,\r\n onReply,\r\n onVote,\r\n onAction,\r\n userStatus = '',\r\n}) => {\r\n const { t } = useTranslation('translation', { keyPrefix: 'comment' });\r\n\r\n return (\r\n
\r\n
\r\n {userStatus !== 'deleted' ? (\r\n \r\n {nickName}\r\n \r\n ) : (\r\n {nickName}\r\n )}\r\n \r\n \r\n \r\n \r\n {voteCount > 0 && {voteCount}}\r\n \r\n \r\n {t('btn_reply')}\r\n \r\n
\r\n
\r\n {memberActions.map((action, index) => {\r\n return (\r\n 0 && 'ms-3',\r\n )}\r\n onClick={() => onAction(action)}>\r\n {action.name}\r\n \r\n );\r\n })}\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n {memberActions.map((action) => {\r\n return (\r\n onAction(action)}>\r\n {action.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default memo(ActionBar);\r\n","/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\n\r\nimport { useState, memo } from 'react';\r\nimport { Button, Form } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport { TextArea, Mentions } from '@/components';\r\nimport { usePageUsers, usePromptWithUnload } from '@/hooks';\r\n\r\nconst Index = ({ userName, onSendReply, onCancel, mode }) => {\r\n const [value, setValue] = useState('');\r\n const pageUsers = usePageUsers();\r\n const { t } = useTranslation('translation', { keyPrefix: 'comment' });\r\n const [validationErrorMsg, setValidationErrorMsg] = useState('');\r\n\r\n usePromptWithUnload({\r\n when: Boolean(value),\r\n });\r\n\r\n const handleChange = (e) => {\r\n setValue(e.target.value);\r\n };\r\n const handleSelected = (val) => {\r\n setValue(val);\r\n };\r\n const handleSendReply = () => {\r\n onSendReply(value).catch((ex) => {\r\n if (ex.isError) {\r\n setValidationErrorMsg(ex.msg);\r\n }\r\n });\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {t('reply_to')} {userName}\r\n
\r\n
\r\n
\r\n \r\n \r\n