{"version":3,"file":"static/js/main.53e37fdb.js","mappings":";8CAO0EA,QAGjE,WAAc,aAEnB,IAAIC,EA6HAC,EA3HJ,SAASC,IACL,OAAOF,EAAaG,MAAM,KAAMC,UACpC,CAIA,SAASC,EAAgBC,GACrBN,EAAeM,CACnB,CAEA,SAASC,EAAQC,GACb,OACIA,aAAiBC,OACyB,mBAA1CC,OAAOC,UAAUC,SAASC,KAAKL,EAEvC,CAEA,SAASM,EAASN,GAGd,OACa,MAATA,GAC0C,oBAA1CE,OAAOC,UAAUC,SAASC,KAAKL,EAEvC,CAEA,SAASO,EAAWC,EAAGC,GACnB,OAAOP,OAAOC,UAAUO,eAAeL,KAAKG,EAAGC,EACnD,CAEA,SAASE,EAAcC,GACnB,GAAIV,OAAOW,oBACP,OAAkD,IAA3CX,OAAOW,oBAAoBD,GAAKE,OAEvC,IAAIC,EACJ,IAAKA,KAAKH,EACN,GAAIL,EAAWK,EAAKG,GAChB,OAAO,EAGf,OAAO,CAEf,CAEA,SAASC,EAAYhB,GACjB,YAAiB,IAAVA,CACX,CAEA,SAASiB,EAASjB,GACd,MACqB,kBAAVA,GACmC,oBAA1CE,OAAOC,UAAUC,SAASC,KAAKL,EAEvC,CAEA,SAASkB,EAAOlB,GACZ,OACIA,aAAiBmB,MACyB,kBAA1CjB,OAAOC,UAAUC,SAASC,KAAKL,EAEvC,CAEA,SAASoB,EAAIC,EAAKC,GACd,IACIC,EADAC,EAAM,GAENC,EAASJ,EAAIP,OACjB,IAAKS,EAAI,EAAGA,EAAIE,IAAUF,EACtBC,EAAIE,KAAKJ,EAAGD,EAAIE,GAAIA,IAExB,OAAOC,CACX,CAEA,SAASG,EAAOnB,EAAGC,GACf,IAAK,IAAIc,KAAKd,EACNF,EAAWE,EAAGc,KACdf,EAAEe,GAAKd,EAAEc,IAYjB,OARIhB,EAAWE,EAAG,cACdD,EAAEJ,SAAWK,EAAEL,UAGfG,EAAWE,EAAG,aACdD,EAAEoB,QAAUnB,EAAEmB,SAGXpB,CACX,CAEA,SAASqB,EAAU7B,EAAO8B,EAAQC,EAAQC,GACtC,OAAOC,GAAiBjC,EAAO8B,EAAQC,EAAQC,GAAQ,GAAME,KACjE,CAEA,SAASC,IAEL,MAAO,CACHC,OAAO,EACPC,aAAc,GACdC,YAAa,GACbC,UAAW,EACXC,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,EAEzB,CAEA,SAASC,EAAgBC,GAIrB,OAHa,MAATA,EAAEC,MACFD,EAAEC,IAAMnB,KAELkB,EAAEC,GACb,CAqBA,SAASC,EAAQF,GACb,GAAkB,MAAdA,EAAEG,SAAkB,CACpB,IAAIC,EAAQL,EAAgBC,GACxBK,EAAcjE,EAAKY,KAAKoD,EAAMV,iBAAiB,SAAUxB,GACrD,OAAY,MAALA,CACX,IACAoC,GACKC,MAAMP,EAAEQ,GAAGC,YACZL,EAAMlB,SAAW,IAChBkB,EAAMrB,QACNqB,EAAMf,aACNe,EAAMd,eACNc,EAAMM,iBACNN,EAAMN,kBACNM,EAAMhB,YACNgB,EAAMb,gBACNa,EAAMZ,mBACLY,EAAMR,UAAaQ,EAAMR,UAAYS,GAU/C,GARIL,EAAEW,UACFL,EACIA,GACwB,IAAxBF,EAAMjB,eACwB,IAA9BiB,EAAMpB,aAAavB,aACDmD,IAAlBR,EAAMS,SAGS,MAAnBhE,OAAOiE,UAAqBjE,OAAOiE,SAASd,GAG5C,OAAOM,EAFPN,EAAEG,SAAWG,CAIrB,CACA,OAAON,EAAEG,QACb,CAEA,SAASY,EAAcX,GACnB,IAAIJ,EAAIxB,EAAUwC,KAOlB,OANa,MAATZ,EACA9B,EAAOyB,EAAgBC,GAAII,GAE3BL,EAAgBC,GAAGR,iBAAkB,EAGlCQ,CACX,CA9DI5D,EADAQ,MAAME,UAAUV,KACTQ,MAAME,UAAUV,KAEhB,SAAU6E,GACb,IAEI/C,EAFAgD,EAAIrE,OAAOsE,MACXC,EAAMF,EAAEzD,SAAW,EAGvB,IAAKS,EAAI,EAAGA,EAAIkD,EAAKlD,IACjB,GAAIA,KAAKgD,GAAKD,EAAIjE,KAAKmE,KAAMD,EAAEhD,GAAIA,EAAGgD,GAClC,OAAO,EAIf,OAAO,CACX,EAoDJ,IAAIG,EAAoBhF,EAAMgF,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAWC,EAAIC,GACpB,IAAIvD,EACAwD,EACAC,EACAC,EAAsBP,EAAiB5D,OAiC3C,GA/BKE,EAAY8D,EAAKI,oBAClBL,EAAGK,iBAAmBJ,EAAKI,kBAE1BlE,EAAY8D,EAAKK,MAClBN,EAAGM,GAAKL,EAAKK,IAEZnE,EAAY8D,EAAKM,MAClBP,EAAGO,GAAKN,EAAKM,IAEZpE,EAAY8D,EAAKO,MAClBR,EAAGQ,GAAKP,EAAKO,IAEZrE,EAAY8D,EAAKd,WAClBa,EAAGb,QAAUc,EAAKd,SAEjBhD,EAAY8D,EAAKQ,QAClBT,EAAGS,KAAOR,EAAKQ,MAEdtE,EAAY8D,EAAKS,UAClBV,EAAGU,OAAST,EAAKS,QAEhBvE,EAAY8D,EAAKU,WAClBX,EAAGW,QAAUV,EAAKU,SAEjBxE,EAAY8D,EAAKxB,OAClBuB,EAAGvB,IAAMF,EAAgB0B,IAExB9D,EAAY8D,EAAKW,WAClBZ,EAAGY,QAAUX,EAAKW,SAGlBR,EAAsB,EACtB,IAAK1D,EAAI,EAAGA,EAAI0D,EAAqB1D,IAG5BP,EADLgE,EAAMF,EADNC,EAAOL,EAAiBnD,OAGpBsD,EAAGE,GAAQC,GAKvB,OAAOH,CACX,CAGA,SAASa,EAAOC,GACZf,EAAWJ,KAAMmB,GACjBnB,KAAKX,GAAK,IAAI1C,KAAkB,MAAbwE,EAAO9B,GAAa8B,EAAO9B,GAAGC,UAAYO,KACxDG,KAAKjB,YACNiB,KAAKX,GAAK,IAAI1C,KAAKkD,OAIE,IAArBM,IACAA,GAAmB,EACnBjF,EAAMkG,aAAapB,MACnBG,GAAmB,EAE3B,CAEA,SAASkB,EAASjF,GACd,OACIA,aAAe8E,GAAkB,MAAP9E,GAAuC,MAAxBA,EAAIsE,gBAErD,CAEA,SAASY,EAAKC,IAEgC,IAAtCrG,EAAMsG,6BACa,qBAAZC,SACPA,QAAQH,MAERG,QAAQH,KAAK,wBAA0BC,EAE/C,CAEA,SAASG,EAAUH,EAAKzE,GACpB,IAAI6E,GAAY,EAEhB,OAAOxE,GAAO,WAIV,GAHgC,MAA5BjC,EAAM0G,oBACN1G,EAAM0G,mBAAmB,KAAML,GAE/BI,EAAW,CACX,IACIE,EACA9E,EACA+E,EAHAC,EAAO,GAIPC,EAAS5G,UAAUkB,OACvB,IAAKS,EAAI,EAAGA,EAAIiF,EAAQjF,IAAK,CAEzB,GADA8E,EAAM,GACsB,kBAAjBzG,UAAU2B,GAAiB,CAElC,IAAK+E,KADLD,GAAO,MAAQ9E,EAAI,KACP3B,UAAU,GACdW,EAAWX,UAAU,GAAI0G,KACzBD,GAAOC,EAAM,KAAO1G,UAAU,GAAG0G,GAAO,MAGhDD,EAAMA,EAAII,MAAM,GAAI,EACxB,MACIJ,EAAMzG,UAAU2B,GAEpBgF,EAAK7E,KAAK2E,EACd,CACAP,EACIC,EACI,gBACA9F,MAAME,UAAUsG,MAAMpG,KAAKkG,GAAMG,KAAK,IACtC,MACA,IAAIC,OAAQC,OAEpBT,GAAY,CAChB,CACA,OAAO7E,EAAG3B,MAAM6E,KAAM5E,UAC1B,GAAG0B,EACP,CAEA,IAgFIuF,EAhFAC,EAAe,CAAC,EAEpB,SAASC,EAAgBC,EAAMjB,GACK,MAA5BrG,EAAM0G,oBACN1G,EAAM0G,mBAAmBY,EAAMjB,GAE9Be,EAAaE,KACdlB,EAAKC,GACLe,EAAaE,IAAQ,EAE7B,CAKA,SAASC,EAAWjH,GAChB,MACyB,qBAAbkH,UAA4BlH,aAAiBkH,UACX,sBAA1ChH,OAAOC,UAAUC,SAASC,KAAKL,EAEvC,CAEA,SAASmH,EAAIxB,GACT,IAAIZ,EAAMxD,EACV,IAAKA,KAAKoE,EACFpF,EAAWoF,EAAQpE,KAEf0F,EADJlC,EAAOY,EAAOpE,IAEViD,KAAKjD,GAAKwD,EAEVP,KAAK,IAAMjD,GAAKwD,GAI5BP,KAAK4C,QAAUzB,EAIfnB,KAAK6C,+BAAiC,IAAIC,QACrC9C,KAAK+C,wBAAwBC,QAAUhD,KAAKiD,cAAcD,QACvD,IACA,UAAUA,OAEtB,CAEA,SAASE,EAAaC,EAAcC,GAChC,IACI7C,EADAvD,EAAMG,EAAO,CAAC,EAAGgG,GAErB,IAAK5C,KAAQ6C,EACLrH,EAAWqH,EAAa7C,KACpBzE,EAASqH,EAAa5C,KAAUzE,EAASsH,EAAY7C,KACrDvD,EAAIuD,GAAQ,CAAC,EACbpD,EAAOH,EAAIuD,GAAO4C,EAAa5C,IAC/BpD,EAAOH,EAAIuD,GAAO6C,EAAY7C,KACF,MAArB6C,EAAY7C,GACnBvD,EAAIuD,GAAQ6C,EAAY7C,UAEjBvD,EAAIuD,IAIvB,IAAKA,KAAQ4C,EAELpH,EAAWoH,EAAc5C,KACxBxE,EAAWqH,EAAa7C,IACzBzE,EAASqH,EAAa5C,MAGtBvD,EAAIuD,GAAQpD,EAAO,CAAC,EAAGH,EAAIuD,KAGnC,OAAOvD,CACX,CAEA,SAASqG,EAAOlC,GACE,MAAVA,GACAnB,KAAK2C,IAAIxB,EAEjB,CAlEAjG,EAAMsG,6BAA8B,EACpCtG,EAAM0G,mBAAqB,KAsEvBS,EADA3G,OAAO2G,KACA3G,OAAO2G,KAEP,SAAUjG,GACb,IAAIW,EACAC,EAAM,GACV,IAAKD,KAAKX,EACFL,EAAWK,EAAKW,IAChBC,EAAIE,KAAKH,GAGjB,OAAOC,CACX,EAGJ,IAAIsG,EAAkB,CAClBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAGd,SAASC,EAAS/B,EAAKgC,EAAKC,GACxB,IAAIC,EAAShE,KAAKiE,UAAUnC,IAAQ9B,KAAKiE,UAAoB,SAC7D,OAAOxB,EAAWuB,GAAUA,EAAOnI,KAAKiI,EAAKC,GAAOC,CACxD,CAEA,SAASE,EAASC,EAAQC,EAAcC,GACpC,IAAIC,EAAY,GAAKC,KAAKC,IAAIL,GAC1BM,EAAcL,EAAeE,EAAUhI,OAE3C,OADW6H,GAAU,EAERE,EAAY,IAAM,GAAM,KACjCE,KAAKG,IAAI,GAAIH,KAAKI,IAAI,EAAGF,IAAc7I,WAAWgJ,OAAO,GACzDN,CAER,CAEA,IAAIO,EACI,yMACJC,EAAwB,6CACxBC,EAAkB,CAAC,EACnBC,EAAuB,CAAC,EAM5B,SAASC,EAAeC,EAAOC,EAAQC,EAAS9J,GAC5C,IAAI+J,EAAO/J,EACa,kBAAbA,IACP+J,EAAO,WACH,OAAOrF,KAAK1E,IAChB,GAEA4J,IACAF,EAAqBE,GAASG,GAE9BF,IACAH,EAAqBG,EAAO,IAAM,WAC9B,OAAOjB,EAASmB,EAAKlK,MAAM6E,KAAM5E,WAAY+J,EAAO,GAAIA,EAAO,GACnE,GAEAC,IACAJ,EAAqBI,GAAW,WAC5B,OAAOpF,KAAKsF,aAAaF,QACrBC,EAAKlK,MAAM6E,KAAM5E,WACjB8J,EAER,EAER,CAEA,SAASK,EAAuB/J,GAC5B,OAAIA,EAAMgK,MAAM,YACLhK,EAAMiK,QAAQ,WAAY,IAE9BjK,EAAMiK,QAAQ,MAAO,GAChC,CAEA,SAASC,EAAmBpI,GACxB,IACIP,EACAT,EAFAqJ,EAAQrI,EAAOkI,MAAMX,GAIzB,IAAK9H,EAAI,EAAGT,EAASqJ,EAAMrJ,OAAQS,EAAIT,EAAQS,IACvCiI,EAAqBW,EAAM5I,IAC3B4I,EAAM5I,GAAKiI,EAAqBW,EAAM5I,IAEtC4I,EAAM5I,GAAKwI,EAAuBI,EAAM5I,IAIhD,OAAO,SAAU+G,GACb,IACI/G,EADAiH,EAAS,GAEb,IAAKjH,EAAI,EAAGA,EAAIT,EAAQS,IACpBiH,GAAUvB,EAAWkD,EAAM5I,IACrB4I,EAAM5I,GAAGlB,KAAKiI,EAAKxG,GACnBqI,EAAM5I,GAEhB,OAAOiH,CACX,CACJ,CAGA,SAAS4B,EAAa/G,EAAGvB,GACrB,OAAKuB,EAAEE,WAIPzB,EAASuI,EAAavI,EAAQuB,EAAEyG,cAChCP,EAAgBzH,GACZyH,EAAgBzH,IAAWoI,EAAmBpI,GAE3CyH,EAAgBzH,GAAQuB,IAPpBA,EAAEyG,aAAaQ,aAQ9B,CAEA,SAASD,EAAavI,EAAQC,GAC1B,IAAIR,EAAI,EAER,SAASgJ,EAA4BvK,GACjC,OAAO+B,EAAOyI,eAAexK,IAAUA,CAC3C,CAGA,IADAsJ,EAAsBmB,UAAY,EAC3BlJ,GAAK,GAAK+H,EAAsBoB,KAAK5I,IACxCA,EAASA,EAAOmI,QACZX,EACAiB,GAEJjB,EAAsBmB,UAAY,EAClClJ,GAAK,EAGT,OAAOO,CACX,CAEA,IAAI6I,EAAwB,CACxBC,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAGV,SAAST,EAAelE,GACpB,IAAIxE,EAAS0C,KAAK0G,gBAAgB5E,GAC9B6E,EAAc3G,KAAK0G,gBAAgB5E,EAAI8E,eAE3C,OAAItJ,IAAWqJ,EACJrJ,GAGX0C,KAAK0G,gBAAgB5E,GAAO6E,EACvBnB,MAAMX,GACNjI,KAAI,SAAUiK,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAI5E,MAAM,GAEd4E,CACX,IACC3E,KAAK,IAEHlC,KAAK0G,gBAAgB5E,GAChC,CAEA,IAAIgF,EAAqB,eAEzB,SAAShB,IACL,OAAO9F,KAAK+G,YAChB,CAEA,IAAIC,EAAiB,KACjBC,EAAgC,UAEpC,SAAS7B,EAAQjB,GACb,OAAOnE,KAAKkH,SAASzB,QAAQ,KAAMtB,EACvC,CAEA,IAAIgD,EAAsB,CACtBC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJ1I,EAAG,WACH2I,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAGR,SAASC,EAAahE,EAAQiE,EAAeC,EAAQC,GACjD,IAAItE,EAAShE,KAAKuI,cAAcF,GAChC,OAAO5F,EAAWuB,GACZA,EAAOG,EAAQiE,EAAeC,EAAQC,GACtCtE,EAAOyB,QAAQ,MAAOtB,EAChC,CAEA,SAASqE,GAAWC,EAAMzE,GACtB,IAAI1G,EAAS0C,KAAKuI,cAAcE,EAAO,EAAI,SAAW,QACtD,OAAOhG,EAAWnF,GAAUA,EAAO0G,GAAU1G,EAAOmI,QAAQ,MAAOzB,EACvE,CAEA,IAAI0E,GAAU,CAAC,EAEf,SAASC,GAAaC,EAAMC,GACxB,IAAIC,EAAYF,EAAKG,cACrBL,GAAQI,GAAaJ,GAAQI,EAAY,KAAOJ,GAAQG,GAAaD,CACzE,CAEA,SAASI,GAAeC,GACpB,MAAwB,kBAAVA,EACRP,GAAQO,IAAUP,GAAQO,EAAMF,oBAChCtJ,CACV,CAEA,SAASyJ,GAAqBC,GAC1B,IACIC,EACA7I,EAFA8I,EAAkB,CAAC,EAIvB,IAAK9I,KAAQ4I,EACLpN,EAAWoN,EAAa5I,KACxB6I,EAAiBJ,GAAezI,MAE5B8I,EAAgBD,GAAkBD,EAAY5I,IAK1D,OAAO8I,CACX,CAEA,IAAIC,GAAa,CAAC,EAElB,SAASC,GAAgBX,EAAMY,GAC3BF,GAAWV,GAAQY,CACvB,CAEA,SAASC,GAAoBC,GACzB,IACIC,EADAV,EAAQ,GAEZ,IAAKU,KAAKD,EACF3N,EAAW2N,EAAUC,IACrBV,EAAM/L,KAAK,CAAE0L,KAAMe,EAAGH,SAAUF,GAAWK,KAMnD,OAHAV,EAAMW,MAAK,SAAU5N,EAAGC,GACpB,OAAOD,EAAEwN,SAAWvN,EAAEuN,QAC1B,IACOP,CACX,CAEA,SAASY,GAAWC,GAChB,OAAQA,EAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,CAClE,CAEA,SAASC,GAAS5F,GACd,OAAIA,EAAS,EAEFI,KAAKyF,KAAK7F,IAAW,EAErBI,KAAK0F,MAAM9F,EAE1B,CAEA,SAAS+F,GAAMC,GACX,IAAIC,GAAiBD,EACjBE,EAAQ,EAMZ,OAJsB,IAAlBD,GAAuBE,SAASF,KAChCC,EAAQN,GAASK,IAGdC,CACX,CAEA,SAASE,GAAW3B,EAAM4B,GACtB,OAAO,SAAUH,GACb,OAAa,MAATA,GACAI,GAAMzK,KAAM4I,EAAMyB,GAClBnP,EAAMkG,aAAapB,KAAMwK,GAClBxK,MAEA0K,GAAI1K,KAAM4I,EAEzB,CACJ,CAEA,SAAS8B,GAAI5G,EAAK8E,GACd,OAAO9E,EAAI/E,UACL+E,EAAIzE,GAAG,OAASyE,EAAI/C,OAAS,MAAQ,IAAM6H,KAC3C/I,GACV,CAEA,SAAS4K,GAAM3G,EAAK8E,EAAMyB,GAClBvG,EAAI/E,YAAcK,MAAMiL,KAEX,aAATzB,GACAiB,GAAW/F,EAAIgG,SACC,IAAhBhG,EAAI6G,SACW,KAAf7G,EAAI8G,QAEJP,EAAQH,GAAMG,GACdvG,EAAIzE,GAAG,OAASyE,EAAI/C,OAAS,MAAQ,IAAM6H,GACvCyB,EACAvG,EAAI6G,QACJE,GAAYR,EAAOvG,EAAI6G,WAG3B7G,EAAIzE,GAAG,OAASyE,EAAI/C,OAAS,MAAQ,IAAM6H,GAAMyB,GAG7D,CAIA,SAASS,GAAU7B,GAEf,OAAIxG,EAAWzC,KADfiJ,EAAQD,GAAeC,KAEZjJ,KAAKiJ,KAETjJ,IACX,CAEA,SAAS+K,GAAU9B,EAAOoB,GACtB,GAAqB,kBAAVpB,EAAoB,CAE3B,IACIlM,EADAiO,EAAcvB,GADlBR,EAAQC,GAAqBD,IAGzBgC,EAAiBD,EAAY1O,OACjC,IAAKS,EAAI,EAAGA,EAAIkO,EAAgBlO,IAC5BiD,KAAKgL,EAAYjO,GAAG6L,MAAMK,EAAM+B,EAAYjO,GAAG6L,MAEvD,MAEI,GAAInG,EAAWzC,KADfiJ,EAAQD,GAAeC,KAEnB,OAAOjJ,KAAKiJ,GAAOoB,GAG3B,OAAOrK,IACX,CAEA,IAoBIkL,GApBAC,GAAS,KACTC,GAAS,OACTC,GAAS,QACTC,GAAS,QACTC,GAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BACnBC,GAAiB,uBAGjBC,GACI,wJAKR,SAASC,GAAclH,EAAOmH,EAAOC,GACjCpB,GAAQhG,GAASzC,EAAW4J,GACtBA,EACA,SAAUE,EAAUjH,GAChB,OAAOiH,GAAYD,EAAcA,EAAcD,CACnD,CACV,CAEA,SAASG,GAAsBtH,EAAO/D,GAClC,OAAKpF,EAAWmP,GAAShG,GAIlBgG,GAAQhG,GAAO/D,EAAO3B,QAAS2B,EAAOF,SAHlC,IAAI6B,OAAO2J,GAAevH,GAIzC,CAGA,SAASuH,GAAenF,GACpB,OAAOoF,GACHpF,EACK7B,QAAQ,KAAM,IACdA,QACG,uCACA,SAAUkH,EAASC,EAAIC,EAAIC,EAAIC,GAC3B,OAAOH,GAAMC,GAAMC,GAAMC,CAC7B,IAGhB,CAEA,SAASL,GAAYpF,GACjB,OAAOA,EAAE7B,QAAQ,yBAA0B,OAC/C,CAlCAyF,GAAU,CAAC,EAoCX,IAAI8B,GAAS,CAAC,EAEd,SAASC,GAAc/H,EAAO5J,GAC1B,IAAIyB,EAEAmQ,EADA7H,EAAO/J,EAWX,IATqB,kBAAV4J,IACPA,EAAQ,CAACA,IAETzI,EAASnB,KACT+J,EAAO,SAAU7J,EAAOmK,GACpBA,EAAMrK,GAAY4O,GAAM1O,EAC5B,GAEJ0R,EAAWhI,EAAM5I,OACZS,EAAI,EAAGA,EAAImQ,EAAUnQ,IACtBiQ,GAAO9H,EAAMnI,IAAMsI,CAE3B,CAEA,SAAS8H,GAAkBjI,EAAO5J,GAC9B2R,GAAc/H,GAAO,SAAU1J,EAAOmK,EAAOxE,EAAQ+D,GACjD/D,EAAOiM,GAAKjM,EAAOiM,IAAM,CAAC,EAC1B9R,EAASE,EAAO2F,EAAOiM,GAAIjM,EAAQ+D,EACvC,GACJ,CAEA,SAASmI,GAAwBnI,EAAO1J,EAAO2F,GAC9B,MAAT3F,GAAiBO,EAAWiR,GAAQ9H,IACpC8H,GAAO9H,GAAO1J,EAAO2F,EAAOmM,GAAInM,EAAQ+D,EAEhD,CAEA,IAcIqI,GAdAC,GAAO,EACPC,GAAQ,EACRC,GAAO,EACPC,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPC,GAAU,EAEd,SAASC,GAAIC,EAAGC,GACZ,OAASD,EAAIC,EAAKA,GAAKA,CAC3B,CAmBA,SAAStD,GAAYf,EAAMa,GACvB,GAAIvL,MAAM0K,IAAS1K,MAAMuL,GACrB,OAAO9K,IAEX,IAAIuO,EAAWH,GAAItD,EAAO,IAE1B,OADAb,IAASa,EAAQyD,GAAY,GACT,IAAbA,EACDvE,GAAWC,GACP,GACA,GACJ,GAAOsE,EAAW,EAAK,CACjC,CAzBIb,GADA9R,MAAME,UAAU4R,QACN9R,MAAME,UAAU4R,QAEhB,SAAUc,GAEhB,IAAItR,EACJ,IAAKA,EAAI,EAAGA,EAAIiD,KAAK1D,SAAUS,EAC3B,GAAIiD,KAAKjD,KAAOsR,EACZ,OAAOtR,EAGf,OAAQ,CACZ,EAkBJkI,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACjC,OAAOjF,KAAK2K,QAAU,CAC1B,IAEA1F,EAAe,MAAO,EAAG,GAAG,SAAU3H,GAClC,OAAO0C,KAAKsF,aAAagJ,YAAYtO,KAAM1C,EAC/C,IAEA2H,EAAe,OAAQ,EAAG,GAAG,SAAU3H,GACnC,OAAO0C,KAAKsF,aAAaiJ,OAAOvO,KAAM1C,EAC1C,IAIAqL,GAAa,QAAS,KAItBY,GAAgB,QAAS,GAIzB6C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAO,SAAUG,EAAUhP,GACrC,OAAOA,EAAOiR,iBAAiBjC,EACnC,IACAH,GAAc,QAAQ,SAAUG,EAAUhP,GACtC,OAAOA,EAAOkR,YAAYlC,EAC9B,IAEAU,GAAc,CAAC,IAAK,OAAO,SAAUzR,EAAOmK,GACxCA,EAAM8H,IAASvD,GAAM1O,GAAS,CAClC,IAEAyR,GAAc,CAAC,MAAO,SAAS,SAAUzR,EAAOmK,EAAOxE,EAAQ+D,GAC3D,IAAIyF,EAAQxJ,EAAOF,QAAQyN,YAAYlT,EAAO0J,EAAO/D,EAAO3B,SAE/C,MAATmL,EACAhF,EAAM8H,IAAS9C,EAEf/L,EAAgBuC,GAAQhD,aAAe3C,CAE/C,IAIA,IAAImT,GACI,wFAAwFC,MACpF,KAERC,GACI,kDAAkDD,MAAM,KAC5DE,GAAmB,gCACnBC,GAA0B5C,GAC1B6C,GAAqB7C,GAEzB,SAAS8C,GAAapQ,EAAGvB,GACrB,OAAKuB,EAKEtD,EAAQyE,KAAKkP,SACdlP,KAAKkP,QAAQrQ,EAAE8L,SACf3K,KAAKkP,SACAlP,KAAKkP,QAAQC,UAAYL,IAAkB5I,KAAK5I,GAC3C,SACA,cACRuB,EAAE8L,SAVCpP,EAAQyE,KAAKkP,SACdlP,KAAKkP,QACLlP,KAAKkP,QAAoB,UASvC,CAEA,SAASE,GAAkBvQ,EAAGvB,GAC1B,OAAKuB,EAKEtD,EAAQyE,KAAKqP,cACdrP,KAAKqP,aAAaxQ,EAAE8L,SACpB3K,KAAKqP,aACDP,GAAiB5I,KAAK5I,GAAU,SAAW,cAC7CuB,EAAE8L,SARCpP,EAAQyE,KAAKqP,cACdrP,KAAKqP,aACLrP,KAAKqP,aAAyB,UAO5C,CAEA,SAASC,GAAkBC,EAAWjS,EAAQE,GAC1C,IAAIT,EACAyS,EACA1L,EACA2L,EAAMF,EAAUG,oBACpB,IAAK1P,KAAK2P,aAKN,IAHA3P,KAAK2P,aAAe,GACpB3P,KAAK4P,iBAAmB,GACxB5P,KAAK6P,kBAAoB,GACpB9S,EAAI,EAAGA,EAAI,KAAMA,EAClB+G,EAAMzG,EAAU,CAAC,IAAMN,IACvBiD,KAAK6P,kBAAkB9S,GAAKiD,KAAKsO,YAC7BxK,EACA,IACF4L,oBACF1P,KAAK4P,iBAAiB7S,GAAKiD,KAAKuO,OAAOzK,EAAK,IAAI4L,oBAIxD,OAAIlS,EACe,QAAXF,GAEe,KADfkS,EAAKjC,GAAQ1R,KAAKmE,KAAK6P,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAKjC,GAAQ1R,KAAKmE,KAAK4P,iBAAkBH,IACtBD,EAAK,KAGb,QAAXlS,GAEY,KADZkS,EAAKjC,GAAQ1R,KAAKmE,KAAK6P,kBAAmBJ,MAK3B,KADfD,EAAKjC,GAAQ1R,KAAKmE,KAAK4P,iBAAkBH,IAF9BD,EAGa,MAGZ,KADZA,EAAKjC,GAAQ1R,KAAKmE,KAAK4P,iBAAkBH,MAK1B,KADfD,EAAKjC,GAAQ1R,KAAKmE,KAAK6P,kBAAmBJ,IAF/BD,EAGa,IAGpC,CAEA,SAASM,GAAkBP,EAAWjS,EAAQE,GAC1C,IAAIT,EAAG+G,EAAKuI,EAEZ,GAAIrM,KAAK+P,kBACL,OAAOT,GAAkBzT,KAAKmE,KAAMuP,EAAWjS,EAAQE,GAY3D,IATKwC,KAAK2P,eACN3P,KAAK2P,aAAe,GACpB3P,KAAK4P,iBAAmB,GACxB5P,KAAK6P,kBAAoB,IAMxB9S,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBA+G,EAAMzG,EAAU,CAAC,IAAMN,IACnBS,IAAWwC,KAAK4P,iBAAiB7S,KACjCiD,KAAK4P,iBAAiB7S,GAAK,IAAI+F,OAC3B,IAAM9C,KAAKuO,OAAOzK,EAAK,IAAI2B,QAAQ,IAAK,IAAM,IAC9C,KAEJzF,KAAK6P,kBAAkB9S,GAAK,IAAI+F,OAC5B,IAAM9C,KAAKsO,YAAYxK,EAAK,IAAI2B,QAAQ,IAAK,IAAM,IACnD,MAGHjI,GAAWwC,KAAK2P,aAAa5S,KAC9BsP,EACI,IAAMrM,KAAKuO,OAAOzK,EAAK,IAAM,KAAO9D,KAAKsO,YAAYxK,EAAK,IAC9D9D,KAAK2P,aAAa5S,GAAK,IAAI+F,OAAOuJ,EAAM5G,QAAQ,IAAK,IAAK,MAI1DjI,GACW,SAAXF,GACA0C,KAAK4P,iBAAiB7S,GAAGmJ,KAAKqJ,GAE9B,OAAOxS,EACJ,GACHS,GACW,QAAXF,GACA0C,KAAK6P,kBAAkB9S,GAAGmJ,KAAKqJ,GAE/B,OAAOxS,EACJ,IAAKS,GAAUwC,KAAK2P,aAAa5S,GAAGmJ,KAAKqJ,GAC5C,OAAOxS,CAEf,CACJ,CAIA,SAASiT,GAASlM,EAAKuG,GACnB,IAAI4F,EAEJ,IAAKnM,EAAI/E,UAEL,OAAO+E,EAGX,GAAqB,kBAAVuG,EACP,GAAI,QAAQnE,KAAKmE,GACbA,EAAQH,GAAMG,QAId,IAAK5N,EAFL4N,EAAQvG,EAAIwB,aAAaoJ,YAAYrE,IAGjC,OAAOvG,EAOnB,OAFAmM,EAAa1L,KAAK2L,IAAIpM,EAAI8G,OAAQC,GAAY/G,EAAIgG,OAAQO,IAC1DvG,EAAIzE,GAAG,OAASyE,EAAI/C,OAAS,MAAQ,IAAM,SAASsJ,EAAO4F,GACpDnM,CACX,CAEA,SAASqM,GAAY9F,GACjB,OAAa,MAATA,GACA2F,GAAShQ,KAAMqK,GACfnP,EAAMkG,aAAapB,MAAM,GAClBA,MAEA0K,GAAI1K,KAAM,QAEzB,CAEA,SAASoQ,KACL,OAAOvF,GAAY7K,KAAK8J,OAAQ9J,KAAK2K,QACzC,CAEA,SAAS6D,GAAiBjC,GACtB,OAAIvM,KAAK+P,mBACAhU,EAAWiE,KAAM,iBAClBqQ,GAAmBxU,KAAKmE,MAExBuM,EACOvM,KAAKsQ,wBAELtQ,KAAKuQ,oBAGXxU,EAAWiE,KAAM,uBAClBA,KAAKuQ,kBAAoBxB,IAEtB/O,KAAKsQ,yBAA2B/D,EACjCvM,KAAKsQ,wBACLtQ,KAAKuQ,kBAEnB,CAEA,SAAS9B,GAAYlC,GACjB,OAAIvM,KAAK+P,mBACAhU,EAAWiE,KAAM,iBAClBqQ,GAAmBxU,KAAKmE,MAExBuM,EACOvM,KAAKwQ,mBAELxQ,KAAKyQ,eAGX1U,EAAWiE,KAAM,kBAClBA,KAAKyQ,aAAezB,IAEjBhP,KAAKwQ,oBAAsBjE,EAC5BvM,KAAKwQ,mBACLxQ,KAAKyQ,aAEnB,CAEA,SAASJ,KACL,SAASK,EAAU1U,EAAGC,GAClB,OAAOA,EAAEK,OAASN,EAAEM,MACxB,CAEA,IAGIS,EACA+G,EAJA6M,EAAc,GACdC,EAAa,GACbC,EAAc,GAGlB,IAAK9T,EAAI,EAAGA,EAAI,GAAIA,IAEhB+G,EAAMzG,EAAU,CAAC,IAAMN,IACvB4T,EAAYzT,KAAK8C,KAAKsO,YAAYxK,EAAK,KACvC8M,EAAW1T,KAAK8C,KAAKuO,OAAOzK,EAAK,KACjC+M,EAAY3T,KAAK8C,KAAKuO,OAAOzK,EAAK,KAClC+M,EAAY3T,KAAK8C,KAAKsO,YAAYxK,EAAK,KAO3C,IAHA6M,EAAY/G,KAAK8G,GACjBE,EAAWhH,KAAK8G,GAChBG,EAAYjH,KAAK8G,GACZ3T,EAAI,EAAGA,EAAI,GAAIA,IAChB4T,EAAY5T,GAAK2P,GAAYiE,EAAY5T,IACzC6T,EAAW7T,GAAK2P,GAAYkE,EAAW7T,IAE3C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChB8T,EAAY9T,GAAK2P,GAAYmE,EAAY9T,IAG7CiD,KAAKyQ,aAAe,IAAI3N,OAAO,KAAO+N,EAAY3O,KAAK,KAAO,IAAK,KACnElC,KAAKuQ,kBAAoBvQ,KAAKyQ,aAC9BzQ,KAAKwQ,mBAAqB,IAAI1N,OAC1B,KAAO8N,EAAW1O,KAAK,KAAO,IAC9B,KAEJlC,KAAKsQ,wBAA0B,IAAIxN,OAC/B,KAAO6N,EAAYzO,KAAK,KAAO,IAC/B,IAER,CA+CA,SAAS4O,GAAWhH,GAChB,OAAOD,GAAWC,GAAQ,IAAM,GACpC,CA7CA7E,EAAe,IAAK,EAAG,GAAG,WACtB,IAAIgD,EAAIjI,KAAK8J,OACb,OAAO7B,GAAK,KAAO/D,EAAS+D,EAAG,GAAK,IAAMA,CAC9C,IAEAhD,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOjF,KAAK8J,OAAS,GACzB,IAEA7E,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1C0D,GAAa,OAAQ,KAIrBY,GAAgB,OAAQ,GAIxB6C,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,SAAUP,GAAWN,IAEnC0B,GAAc,CAAC,QAAS,UAAWO,IACnCP,GAAc,QAAQ,SAAUzR,EAAOmK,GACnCA,EAAM6H,IACe,IAAjBhS,EAAMc,OAAepB,EAAM6V,kBAAkBvV,GAAS0O,GAAM1O,EACpE,IACAyR,GAAc,MAAM,SAAUzR,EAAOmK,GACjCA,EAAM6H,IAAQtS,EAAM6V,kBAAkBvV,EAC1C,IACAyR,GAAc,KAAK,SAAUzR,EAAOmK,GAChCA,EAAM6H,IAAQwD,SAASxV,EAAO,GAClC,IAUAN,EAAM6V,kBAAoB,SAAUvV,GAChC,OAAO0O,GAAM1O,IAAU0O,GAAM1O,GAAS,GAAK,KAAO,IACtD,EAIA,IAAIyV,GAAa1G,GAAW,YAAY,GAExC,SAAS2G,KACL,OAAOrH,GAAW7J,KAAK8J,OAC3B,CAEA,SAASqH,GAAWlJ,EAAGpJ,EAAG8I,EAAGF,EAAGM,EAAGT,EAAG8J,GAGlC,IAAIxG,EAYJ,OAVI3C,EAAI,KAAOA,GAAK,GAEhB2C,EAAO,IAAIjO,KAAKsL,EAAI,IAAKpJ,EAAG8I,EAAGF,EAAGM,EAAGT,EAAG8J,GACpC9G,SAASM,EAAKyG,gBACdzG,EAAK0G,YAAYrJ,IAGrB2C,EAAO,IAAIjO,KAAKsL,EAAGpJ,EAAG8I,EAAGF,EAAGM,EAAGT,EAAG8J,GAG/BxG,CACX,CAEA,SAAS2G,GAActJ,GACnB,IAAI2C,EAAM7I,EAcV,OAZIkG,EAAI,KAAOA,GAAK,IAChBlG,EAAOtG,MAAME,UAAUsG,MAAMpG,KAAKT,YAE7B,GAAK6M,EAAI,IACd2C,EAAO,IAAIjO,KAAKA,KAAK6U,IAAIrW,MAAM,KAAM4G,IACjCuI,SAASM,EAAK6G,mBACd7G,EAAK8G,eAAezJ,IAGxB2C,EAAO,IAAIjO,KAAKA,KAAK6U,IAAIrW,MAAM,KAAMC,YAGlCwP,CACX,CAGA,SAAS+G,GAAgB7H,EAAM8H,EAAKC,GAChC,IACIC,EAAM,EAAIF,EAAMC,EAIpB,QAFa,EAAIN,GAAczH,EAAM,EAAGgI,GAAKC,YAAcH,GAAO,EAElDE,EAAM,CAC1B,CAGA,SAASE,GAAmBlI,EAAMmI,EAAMC,EAASN,EAAKC,GAClD,IAGIM,EACAC,EAFAC,EAAY,EAAI,GAAKJ,EAAO,IAFZ,EAAIC,EAAUN,GAAO,EACxBD,GAAgB7H,EAAM8H,EAAKC,GAgB5C,OAXIQ,GAAa,EAEbD,EAAetB,GADfqB,EAAUrI,EAAO,GACoBuI,EAC9BA,EAAYvB,GAAWhH,IAC9BqI,EAAUrI,EAAO,EACjBsI,EAAeC,EAAYvB,GAAWhH,KAEtCqI,EAAUrI,EACVsI,EAAeC,GAGZ,CACHvI,KAAMqI,EACNE,UAAWD,EAEnB,CAEA,SAASE,GAAWxO,EAAK8N,EAAKC,GAC1B,IAEIU,EACAJ,EAHAK,EAAab,GAAgB7N,EAAIgG,OAAQ8H,EAAKC,GAC9CI,EAAO1N,KAAK0F,OAAOnG,EAAIuO,YAAcG,EAAa,GAAK,GAAK,EAehE,OAXIP,EAAO,EAEPM,EAAUN,EAAOQ,GADjBN,EAAUrO,EAAIgG,OAAS,EACe8H,EAAKC,GACpCI,EAAOQ,GAAY3O,EAAIgG,OAAQ8H,EAAKC,IAC3CU,EAAUN,EAAOQ,GAAY3O,EAAIgG,OAAQ8H,EAAKC,GAC9CM,EAAUrO,EAAIgG,OAAS,IAEvBqI,EAAUrO,EAAIgG,OACdyI,EAAUN,GAGP,CACHA,KAAMM,EACNzI,KAAMqI,EAEd,CAEA,SAASM,GAAY3I,EAAM8H,EAAKC,GAC5B,IAAIW,EAAab,GAAgB7H,EAAM8H,EAAKC,GACxCa,EAAiBf,GAAgB7H,EAAO,EAAG8H,EAAKC,GACpD,OAAQf,GAAWhH,GAAQ0I,EAAaE,GAAkB,CAC9D,CAmCA,SAASC,GAAW7O,GAChB,OAAOwO,GAAWxO,EAAK9D,KAAK4S,MAAMhB,IAAK5R,KAAK4S,MAAMf,KAAKI,IAC3D,CAjCAhN,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrC0D,GAAa,OAAQ,KACrBA,GAAa,UAAW,KAIxBY,GAAgB,OAAQ,GACxBA,GAAgB,UAAW,GAI3B6C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAE/B+B,GACI,CAAC,IAAK,KAAM,IAAK,OACjB,SAAU3R,EAAOyW,EAAM9Q,EAAQ+D,GAC3B+M,EAAK/M,EAAMN,OAAO,EAAG,IAAMsF,GAAM1O,EACrC,IAWJ,IAAIqX,GAAoB,CACpBjB,IAAK,EACLC,IAAK,GAGT,SAASiB,KACL,OAAO9S,KAAK4S,MAAMhB,GACtB,CAEA,SAASmB,KACL,OAAO/S,KAAK4S,MAAMf,GACtB,CAIA,SAASmB,GAAWxX,GAChB,IAAIyW,EAAOjS,KAAKsF,aAAa2M,KAAKjS,MAClC,OAAgB,MAATxE,EAAgByW,EAAOjS,KAAKiT,IAAqB,GAAhBzX,EAAQyW,GAAW,IAC/D,CAEA,SAASiB,GAAc1X,GACnB,IAAIyW,EAAOK,GAAWtS,KAAM,EAAG,GAAGiS,KAClC,OAAgB,MAATzW,EAAgByW,EAAOjS,KAAKiT,IAAqB,GAAhBzX,EAAQyW,GAAW,IAC/D,CA+DA,SAASkB,GAAa3X,EAAO+B,GACzB,MAAqB,kBAAV/B,EACAA,EAGN4D,MAAM5D,GAKU,kBADrBA,EAAQ+B,EAAO6V,cAAc5X,IAElBA,EAGJ,KARIwV,SAASxV,EAAO,GAS/B,CAEA,SAAS6X,GAAgB7X,EAAO+B,GAC5B,MAAqB,kBAAV/B,EACA+B,EAAO6V,cAAc5X,GAAS,GAAK,EAEvC4D,MAAM5D,GAAS,KAAOA,CACjC,CAGA,SAAS8X,GAAcC,EAAIrF,GACvB,OAAOqF,EAAGtR,MAAMiM,EAAG,GAAGsF,OAAOD,EAAGtR,MAAM,EAAGiM,GAC7C,CAtFAjJ,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,GAAG,SAAU3H,GACjC,OAAO0C,KAAKsF,aAAamO,YAAYzT,KAAM1C,EAC/C,IAEA2H,EAAe,MAAO,EAAG,GAAG,SAAU3H,GAClC,OAAO0C,KAAKsF,aAAaoO,cAAc1T,KAAM1C,EACjD,IAEA2H,EAAe,OAAQ,EAAG,GAAG,SAAU3H,GACnC,OAAO0C,KAAKsF,aAAaqO,SAAS3T,KAAM1C,EAC5C,IAEA2H,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1B0D,GAAa,MAAO,KACpBA,GAAa,UAAW,KACxBA,GAAa,aAAc,KAG3BY,GAAgB,MAAO,IACvBA,GAAgB,UAAW,IAC3BA,GAAgB,aAAc,IAI9B6C,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,MAAM,SAAUG,EAAUhP,GACpC,OAAOA,EAAOqW,iBAAiBrH,EACnC,IACAH,GAAc,OAAO,SAAUG,EAAUhP,GACrC,OAAOA,EAAOsW,mBAAmBtH,EACrC,IACAH,GAAc,QAAQ,SAAUG,EAAUhP,GACtC,OAAOA,EAAOuW,cAAcvH,EAChC,IAEAY,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAU3R,EAAOyW,EAAM9Q,EAAQ+D,GACpE,IAAIgN,EAAU/Q,EAAOF,QAAQmS,cAAc5X,EAAO0J,EAAO/D,EAAO3B,SAEjD,MAAX0S,EACAD,EAAKtK,EAAIuK,EAETtT,EAAgBuC,GAAQ5B,eAAiB/D,CAEjD,IAEA2R,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAU3R,EAAOyW,EAAM9Q,EAAQ+D,GAC9D+M,EAAK/M,GAASgF,GAAM1O,EACxB,IAiCA,IAAIuY,GACI,2DAA2DnF,MAAM,KACrEoF,GAA6B,8BAA8BpF,MAAM,KACjEqF,GAA2B,uBAAuBrF,MAAM,KACxDsF,GAAuB/H,GACvBgI,GAA4BhI,GAC5BiI,GAA0BjI,GAE9B,SAASkI,GAAexV,EAAGvB,GACvB,IAAIqW,EAAWpY,EAAQyE,KAAKsU,WACtBtU,KAAKsU,UACLtU,KAAKsU,UACDzV,IAAW,IAANA,GAAcmB,KAAKsU,UAAUnF,SAASjJ,KAAK5I,GAC1C,SACA,cAEhB,OAAa,IAANuB,EACDyU,GAAcK,EAAU3T,KAAK4S,MAAMhB,KACnC/S,EACA8U,EAAS9U,EAAE0V,OACXZ,CACV,CAEA,SAASa,GAAoB3V,GACzB,OAAa,IAANA,EACDyU,GAActT,KAAKyU,eAAgBzU,KAAK4S,MAAMhB,KAC9C/S,EACAmB,KAAKyU,eAAe5V,EAAE0V,OACtBvU,KAAKyU,cACf,CAEA,SAASC,GAAkB7V,GACvB,OAAa,IAANA,EACDyU,GAActT,KAAK2U,aAAc3U,KAAK4S,MAAMhB,KAC5C/S,EACAmB,KAAK2U,aAAa9V,EAAE0V,OACpBvU,KAAK2U,YACf,CAEA,SAASC,GAAoBC,EAAavX,EAAQE,GAC9C,IAAIT,EACAyS,EACA1L,EACA2L,EAAMoF,EAAYnF,oBACtB,IAAK1P,KAAK8U,eAKN,IAJA9U,KAAK8U,eAAiB,GACtB9U,KAAK+U,oBAAsB,GAC3B/U,KAAKgV,kBAAoB,GAEpBjY,EAAI,EAAGA,EAAI,IAAKA,EACjB+G,EAAMzG,EAAU,CAAC,IAAM,IAAIkX,IAAIxX,GAC/BiD,KAAKgV,kBAAkBjY,GAAKiD,KAAKyT,YAC7B3P,EACA,IACF4L,oBACF1P,KAAK+U,oBAAoBhY,GAAKiD,KAAK0T,cAC/B5P,EACA,IACF4L,oBACF1P,KAAK8U,eAAe/X,GAAKiD,KAAK2T,SAAS7P,EAAK,IAAI4L,oBAIxD,OAAIlS,EACe,SAAXF,GAEe,KADfkS,EAAKjC,GAAQ1R,KAAKmE,KAAK8U,eAAgBrF,IACpBD,EAAK,KACN,QAAXlS,GAEQ,KADfkS,EAAKjC,GAAQ1R,KAAKmE,KAAK+U,oBAAqBtF,IACzBD,EAAK,MAGT,KADfA,EAAKjC,GAAQ1R,KAAKmE,KAAKgV,kBAAmBvF,IACvBD,EAAK,KAGb,SAAXlS,GAEY,KADZkS,EAAKjC,GAAQ1R,KAAKmE,KAAK8U,eAAgBrF,MAK3B,KADZD,EAAKjC,GAAQ1R,KAAKmE,KAAK+U,oBAAqBtF,MAK7B,KADfD,EAAKjC,GAAQ1R,KAAKmE,KAAKgV,kBAAmBvF,IAN/BD,EAOa,KACN,QAAXlS,GAEK,KADZkS,EAAKjC,GAAQ1R,KAAKmE,KAAK+U,oBAAqBtF,MAKhC,KADZD,EAAKjC,GAAQ1R,KAAKmE,KAAK8U,eAAgBrF,MAKxB,KADfD,EAAKjC,GAAQ1R,KAAKmE,KAAKgV,kBAAmBvF,IAN/BD,EAOa,MAGZ,KADZA,EAAKjC,GAAQ1R,KAAKmE,KAAKgV,kBAAmBvF,MAK9B,KADZD,EAAKjC,GAAQ1R,KAAKmE,KAAK8U,eAAgBrF,MAKxB,KADfD,EAAKjC,GAAQ1R,KAAKmE,KAAK+U,oBAAqBtF,IANjCD,EAOa,IAGpC,CAEA,SAASyF,GAAoBJ,EAAavX,EAAQE,GAC9C,IAAIT,EAAG+G,EAAKuI,EAEZ,GAAIrM,KAAKkV,oBACL,OAAON,GAAoB/Y,KAAKmE,KAAM6U,EAAavX,EAAQE,GAU/D,IAPKwC,KAAK8U,iBACN9U,KAAK8U,eAAiB,GACtB9U,KAAKgV,kBAAoB,GACzBhV,KAAK+U,oBAAsB,GAC3B/U,KAAKmV,mBAAqB,IAGzBpY,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BA+G,EAAMzG,EAAU,CAAC,IAAM,IAAIkX,IAAIxX,GAC3BS,IAAWwC,KAAKmV,mBAAmBpY,KACnCiD,KAAKmV,mBAAmBpY,GAAK,IAAI+F,OAC7B,IAAM9C,KAAK2T,SAAS7P,EAAK,IAAI2B,QAAQ,IAAK,QAAU,IACpD,KAEJzF,KAAK+U,oBAAoBhY,GAAK,IAAI+F,OAC9B,IAAM9C,KAAK0T,cAAc5P,EAAK,IAAI2B,QAAQ,IAAK,QAAU,IACzD,KAEJzF,KAAKgV,kBAAkBjY,GAAK,IAAI+F,OAC5B,IAAM9C,KAAKyT,YAAY3P,EAAK,IAAI2B,QAAQ,IAAK,QAAU,IACvD,MAGHzF,KAAK8U,eAAe/X,KACrBsP,EACI,IACArM,KAAK2T,SAAS7P,EAAK,IACnB,KACA9D,KAAK0T,cAAc5P,EAAK,IACxB,KACA9D,KAAKyT,YAAY3P,EAAK,IAC1B9D,KAAK8U,eAAe/X,GAAK,IAAI+F,OAAOuJ,EAAM5G,QAAQ,IAAK,IAAK,MAI5DjI,GACW,SAAXF,GACA0C,KAAKmV,mBAAmBpY,GAAGmJ,KAAK2O,GAEhC,OAAO9X,EACJ,GACHS,GACW,QAAXF,GACA0C,KAAK+U,oBAAoBhY,GAAGmJ,KAAK2O,GAEjC,OAAO9X,EACJ,GACHS,GACW,OAAXF,GACA0C,KAAKgV,kBAAkBjY,GAAGmJ,KAAK2O,GAE/B,OAAO9X,EACJ,IAAKS,GAAUwC,KAAK8U,eAAe/X,GAAGmJ,KAAK2O,GAC9C,OAAO9X,CAEf,CACJ,CAIA,SAASqY,GAAgB5Z,GACrB,IAAKwE,KAAKjB,UACN,OAAgB,MAATvD,EAAgBwE,KAAOH,IAElC,IAAI0U,EAAMvU,KAAKe,OAASf,KAAKX,GAAG0S,YAAc/R,KAAKX,GAAGgW,SACtD,OAAa,MAAT7Z,GACAA,EAAQ2X,GAAa3X,EAAOwE,KAAKsF,cAC1BtF,KAAKiT,IAAIzX,EAAQ+Y,EAAK,MAEtBA,CAEf,CAEA,SAASe,GAAsB9Z,GAC3B,IAAKwE,KAAKjB,UACN,OAAgB,MAATvD,EAAgBwE,KAAOH,IAElC,IAAIqS,GAAWlS,KAAKuU,MAAQ,EAAIvU,KAAKsF,aAAasN,MAAMhB,KAAO,EAC/D,OAAgB,MAATpW,EAAgB0W,EAAUlS,KAAKiT,IAAIzX,EAAQ0W,EAAS,IAC/D,CAEA,SAASqD,GAAmB/Z,GACxB,IAAKwE,KAAKjB,UACN,OAAgB,MAATvD,EAAgBwE,KAAOH,IAOlC,GAAa,MAATrE,EAAe,CACf,IAAI0W,EAAUmB,GAAgB7X,EAAOwE,KAAKsF,cAC1C,OAAOtF,KAAKuU,IAAIvU,KAAKuU,MAAQ,EAAIrC,EAAUA,EAAU,EACzD,CACI,OAAOlS,KAAKuU,OAAS,CAE7B,CAEA,SAAST,GAAcvH,GACnB,OAAIvM,KAAKkV,qBACAnZ,EAAWiE,KAAM,mBAClBwV,GAAqB3Z,KAAKmE,MAE1BuM,EACOvM,KAAKyV,qBAELzV,KAAK0V,iBAGX3Z,EAAWiE,KAAM,oBAClBA,KAAK0V,eAAiBxB,IAEnBlU,KAAKyV,sBAAwBlJ,EAC9BvM,KAAKyV,qBACLzV,KAAK0V,eAEnB,CAEA,SAAS7B,GAAmBtH,GACxB,OAAIvM,KAAKkV,qBACAnZ,EAAWiE,KAAM,mBAClBwV,GAAqB3Z,KAAKmE,MAE1BuM,EACOvM,KAAK2V,0BAEL3V,KAAK4V,sBAGX7Z,EAAWiE,KAAM,yBAClBA,KAAK4V,oBAAsBzB,IAExBnU,KAAK2V,2BAA6BpJ,EACnCvM,KAAK2V,0BACL3V,KAAK4V,oBAEnB,CAEA,SAAShC,GAAiBrH,GACtB,OAAIvM,KAAKkV,qBACAnZ,EAAWiE,KAAM,mBAClBwV,GAAqB3Z,KAAKmE,MAE1BuM,EACOvM,KAAK6V,wBAEL7V,KAAK8V,oBAGX/Z,EAAWiE,KAAM,uBAClBA,KAAK8V,kBAAoB1B,IAEtBpU,KAAK6V,yBAA2BtJ,EACjCvM,KAAK6V,wBACL7V,KAAK8V,kBAEnB,CAEA,SAASN,KACL,SAAS9E,EAAU1U,EAAGC,GAClB,OAAOA,EAAEK,OAASN,EAAEM,MACxB,CAEA,IAIIS,EACA+G,EACAiS,EACAC,EACAC,EARAC,EAAY,GACZvF,EAAc,GACdC,EAAa,GACbC,EAAc,GAMlB,IAAK9T,EAAI,EAAGA,EAAI,EAAGA,IAEf+G,EAAMzG,EAAU,CAAC,IAAM,IAAIkX,IAAIxX,GAC/BgZ,EAAOrJ,GAAY1M,KAAKyT,YAAY3P,EAAK,KACzCkS,EAAStJ,GAAY1M,KAAK0T,cAAc5P,EAAK,KAC7CmS,EAAQvJ,GAAY1M,KAAK2T,SAAS7P,EAAK,KACvCoS,EAAUhZ,KAAK6Y,GACfpF,EAAYzT,KAAK8Y,GACjBpF,EAAW1T,KAAK+Y,GAChBpF,EAAY3T,KAAK6Y,GACjBlF,EAAY3T,KAAK8Y,GACjBnF,EAAY3T,KAAK+Y,GAIrBC,EAAUtM,KAAK8G,GACfC,EAAY/G,KAAK8G,GACjBE,EAAWhH,KAAK8G,GAChBG,EAAYjH,KAAK8G,GAEjB1Q,KAAK0V,eAAiB,IAAI5S,OAAO,KAAO+N,EAAY3O,KAAK,KAAO,IAAK,KACrElC,KAAK4V,oBAAsB5V,KAAK0V,eAChC1V,KAAK8V,kBAAoB9V,KAAK0V,eAE9B1V,KAAKyV,qBAAuB,IAAI3S,OAC5B,KAAO8N,EAAW1O,KAAK,KAAO,IAC9B,KAEJlC,KAAK2V,0BAA4B,IAAI7S,OACjC,KAAO6N,EAAYzO,KAAK,KAAO,IAC/B,KAEJlC,KAAK6V,wBAA0B,IAAI/S,OAC/B,KAAOoT,EAAUhU,KAAK,KAAO,IAC7B,IAER,CAIA,SAASiU,KACL,OAAOnW,KAAKoW,QAAU,IAAM,EAChC,CAEA,SAASC,KACL,OAAOrW,KAAKoW,SAAW,EAC3B,CAgCA,SAAS3X,GAASyG,EAAOoR,GACrBrR,EAAeC,EAAO,EAAG,GAAG,WACxB,OAAOlF,KAAKsF,aAAa7G,SACrBuB,KAAKoW,QACLpW,KAAKuW,UACLD,EAER,GACJ,CAcA,SAASE,GAAcjK,EAAUhP,GAC7B,OAAOA,EAAOkZ,cAClB,CA0DA,SAASC,GAAWlb,GAGhB,MAAgD,OAAxCA,EAAQ,IAAIuN,cAAc4N,OAAO,EAC7C,CApHA1R,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGkR,IAClClR,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGoR,IAElCpR,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAKkR,GAAQhb,MAAM6E,MAAQkE,EAASlE,KAAKuW,UAAW,EAC/D,IAEAtR,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACAkR,GAAQhb,MAAM6E,MACdkE,EAASlE,KAAKuW,UAAW,GACzBrS,EAASlE,KAAK4W,UAAW,EAEjC,IAEA3R,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAKjF,KAAKoW,QAAUlS,EAASlE,KAAKuW,UAAW,EACxD,IAEAtR,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACAjF,KAAKoW,QACLlS,EAASlE,KAAKuW,UAAW,GACzBrS,EAASlE,KAAK4W,UAAW,EAEjC,IAYAnY,GAAS,KAAK,GACdA,GAAS,KAAK,GAIdkK,GAAa,OAAQ,KAGrBY,GAAgB,OAAQ,IAQxB6C,GAAc,IAAKoK,IACnBpK,GAAc,IAAKoK,IACnBpK,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAE/BgB,GAAc,MAAOX,IACrBW,GAAc,QAASV,IACvBU,GAAc,MAAOX,IACrBW,GAAc,QAASV,IAEvBuB,GAAc,CAAC,IAAK,MAAOU,IAC3BV,GAAc,CAAC,IAAK,OAAO,SAAUzR,EAAOmK,EAAOxE,GAC/C,IAAI0V,EAAS3M,GAAM1O,GACnBmK,EAAMgI,IAAmB,KAAXkJ,EAAgB,EAAIA,CACtC,IACA5J,GAAc,CAAC,IAAK,MAAM,SAAUzR,EAAOmK,EAAOxE,GAC9CA,EAAO2V,MAAQ3V,EAAOF,QAAQ8V,KAAKvb,GACnC2F,EAAO6V,UAAYxb,CACvB,IACAyR,GAAc,CAAC,IAAK,OAAO,SAAUzR,EAAOmK,EAAOxE,GAC/CwE,EAAMgI,IAAQzD,GAAM1O,GACpBoD,EAAgBuC,GAAQzB,SAAU,CACtC,IACAuN,GAAc,OAAO,SAAUzR,EAAOmK,EAAOxE,GACzC,IAAI8V,EAAMzb,EAAMc,OAAS,EACzBqJ,EAAMgI,IAAQzD,GAAM1O,EAAMoJ,OAAO,EAAGqS,IACpCtR,EAAMiI,IAAU1D,GAAM1O,EAAMoJ,OAAOqS,IACnCrY,EAAgBuC,GAAQzB,SAAU,CACtC,IACAuN,GAAc,SAAS,SAAUzR,EAAOmK,EAAOxE,GAC3C,IAAI+V,EAAO1b,EAAMc,OAAS,EACtB6a,EAAO3b,EAAMc,OAAS,EAC1BqJ,EAAMgI,IAAQzD,GAAM1O,EAAMoJ,OAAO,EAAGsS,IACpCvR,EAAMiI,IAAU1D,GAAM1O,EAAMoJ,OAAOsS,EAAM,IACzCvR,EAAMkI,IAAU3D,GAAM1O,EAAMoJ,OAAOuS,IACnCvY,EAAgBuC,GAAQzB,SAAU,CACtC,IACAuN,GAAc,OAAO,SAAUzR,EAAOmK,EAAOxE,GACzC,IAAI8V,EAAMzb,EAAMc,OAAS,EACzBqJ,EAAMgI,IAAQzD,GAAM1O,EAAMoJ,OAAO,EAAGqS,IACpCtR,EAAMiI,IAAU1D,GAAM1O,EAAMoJ,OAAOqS,GACvC,IACAhK,GAAc,SAAS,SAAUzR,EAAOmK,EAAOxE,GAC3C,IAAI+V,EAAO1b,EAAMc,OAAS,EACtB6a,EAAO3b,EAAMc,OAAS,EAC1BqJ,EAAMgI,IAAQzD,GAAM1O,EAAMoJ,OAAO,EAAGsS,IACpCvR,EAAMiI,IAAU1D,GAAM1O,EAAMoJ,OAAOsS,EAAM,IACzCvR,EAAMkI,IAAU3D,GAAM1O,EAAMoJ,OAAOuS,GACvC,IAUA,IAAIC,GAA6B,gBAK7BC,GAAa9M,GAAW,SAAS,GAErC,SAAS+M,GAAelB,EAAOG,EAASgB,GACpC,OAAInB,EAAQ,GACDmB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,CAEA,IAuBIC,GAvBAC,GAAa,CACb5T,SAAUP,EACV0C,eAAgBG,EAChBL,YAAagB,EACb1B,QAAS4B,EACT0Q,uBAAwBzQ,EACxBkB,aAAchB,EAEdoH,OAAQI,GACRL,YAAaO,GAEboD,KAAMY,GAENc,SAAUI,GACVN,YAAaQ,GACbP,cAAeM,GAEf2D,cAAeP,IAIfQ,GAAU,CAAC,EACXC,GAAiB,CAAC,EAGtB,SAASC,GAAaC,EAAMC,GACxB,IAAIjb,EACAkb,EAAO1T,KAAK2L,IAAI6H,EAAKzb,OAAQ0b,EAAK1b,QACtC,IAAKS,EAAI,EAAGA,EAAIkb,EAAMlb,GAAK,EACvB,GAAIgb,EAAKhb,KAAOib,EAAKjb,GACjB,OAAOA,EAGf,OAAOkb,CACX,CAEA,SAASC,GAAgBpW,GACrB,OAAOA,EAAMA,EAAIiH,cAActD,QAAQ,IAAK,KAAO3D,CACvD,CAKA,SAASqW,GAAaC,GAOlB,IANA,IACIC,EACAC,EACA/a,EACAqR,EAJA7R,EAAI,EAMDA,EAAIqb,EAAM9b,QAAQ,CAKrB,IAHA+b,GADAzJ,EAAQsJ,GAAgBE,EAAMrb,IAAI6R,MAAM,MAC9BtS,OAEVgc,GADAA,EAAOJ,GAAgBE,EAAMrb,EAAI,KACnBub,EAAK1J,MAAM,KAAO,KACzByJ,EAAI,GAAG,CAEV,GADA9a,EAASgb,GAAW3J,EAAM3M,MAAM,EAAGoW,GAAGnW,KAAK,MAEvC,OAAO3E,EAEX,GACI+a,GACAA,EAAKhc,QAAU+b,GACfP,GAAalJ,EAAO0J,IAASD,EAAI,EAGjC,MAEJA,GACJ,CACAtb,GACJ,CACA,OAAOya,EACX,CAEA,SAASgB,GAAiBhW,GAEtB,OAAoC,MAA7BA,EAAKgD,MAAM,cACtB,CAEA,SAAS+S,GAAW/V,GAChB,IAAIiW,EAAY,KAGhB,QACsBhZ,IAAlBmY,GAAQpV,IAERkW,GACAA,EAAO3d,SACPyd,GAAiBhW,GAEjB,IACIiW,EAAYjB,GAAamB,MAEzBC,OAAAA,WAAAA,IAAAA,EAAAA,IAAAA,MAAAA,kCAAAA,MAAAA,EAAAA,KAAAA,mBAAAA,CAAAA,CAAAA,IACAC,GAAmBJ,EACvB,CAAE,MAAOK,GAGLlB,GAAQpV,GAAQ,IACpB,CAEJ,OAAOoV,GAAQpV,EACnB,CAKA,SAASqW,GAAmB/W,EAAKiX,GAC7B,IAAIC,EAqBJ,OApBIlX,KAEIkX,EADAxc,EAAYuc,GACLE,GAAUnX,GAEVoX,GAAapX,EAAKiX,IAKzBvB,GAAewB,EAEQ,qBAAZvX,SAA2BA,QAAQH,MAE1CG,QAAQH,KACJ,UAAYQ,EAAM,2CAM3B0V,GAAamB,KACxB,CAEA,SAASO,GAAa1W,EAAMrB,GACxB,GAAe,OAAXA,EAAiB,CACjB,IAAI5D,EACA4F,EAAesU,GAEnB,GADAtW,EAAOgY,KAAO3W,EACO,MAAjBoV,GAAQpV,GACRD,EACI,uBACA,2OAKJY,EAAeyU,GAAQpV,GAAMI,aAC1B,GAA2B,MAAvBzB,EAAOiY,aACd,GAAoC,MAAhCxB,GAAQzW,EAAOiY,cACfjW,EAAeyU,GAAQzW,EAAOiY,cAAcxW,YACzC,CAEH,GAAc,OADdrF,EAASgb,GAAWpX,EAAOiY,eAWvB,OAPKvB,GAAe1W,EAAOiY,gBACvBvB,GAAe1W,EAAOiY,cAAgB,IAE1CvB,GAAe1W,EAAOiY,cAAclc,KAAK,CACrCsF,KAAMA,EACNrB,OAAQA,IAEL,KATPgC,EAAe5F,EAAOqF,OAW9B,CAeJ,OAbAgV,GAAQpV,GAAQ,IAAIa,EAAOH,EAAaC,EAAchC,IAElD0W,GAAerV,IACfqV,GAAerV,GAAM6W,SAAQ,SAAUlL,GACnC+K,GAAa/K,EAAE3L,KAAM2L,EAAEhN,OAC3B,IAMJ0X,GAAmBrW,GAEZoV,GAAQpV,EACnB,CAGI,cADOoV,GAAQpV,GACR,IAEf,CAEA,SAAS8W,GAAa9W,EAAMrB,GACxB,GAAc,MAAVA,EAAgB,CAChB,IAAI5D,EACAgc,EACApW,EAAesU,GAEE,MAAjBG,GAAQpV,IAA+C,MAA9BoV,GAAQpV,GAAM4W,aAEvCxB,GAAQpV,GAAMG,IAAIO,EAAa0U,GAAQpV,GAAMI,QAASzB,KAIrC,OADjBoY,EAAYhB,GAAW/V,MAEnBW,EAAeoW,EAAU3W,SAE7BzB,EAAS+B,EAAaC,EAAchC,GACnB,MAAboY,IAIApY,EAAOgY,KAAO3W,IAElBjF,EAAS,IAAI8F,EAAOlC,IACbiY,aAAexB,GAAQpV,GAC9BoV,GAAQpV,GAAQjF,GAIpBsb,GAAmBrW,EACvB,MAEyB,MAAjBoV,GAAQpV,KAC0B,MAA9BoV,GAAQpV,GAAM4W,cACdxB,GAAQpV,GAAQoV,GAAQpV,GAAM4W,aAC1B5W,IAASqW,MACTA,GAAmBrW,IAEC,MAAjBoV,GAAQpV,WACRoV,GAAQpV,IAI3B,OAAOoV,GAAQpV,EACnB,CAGA,SAASyW,GAAUnX,GACf,IAAIvE,EAMJ,GAJIuE,GAAOA,EAAIb,SAAWa,EAAIb,QAAQ0X,QAClC7W,EAAMA,EAAIb,QAAQ0X,QAGjB7W,EACD,OAAO0V,GAGX,IAAKjc,EAAQuG,GAAM,CAGf,GADAvE,EAASgb,GAAWzW,GAEhB,OAAOvE,EAEXuE,EAAM,CAACA,EACX,CAEA,OAAOqW,GAAarW,EACxB,CAEA,SAAS0X,KACL,OAAOnX,EAAKuV,GAChB,CAEA,SAAS6B,GAAc5a,GACnB,IAAId,EACA/B,EAAI6C,EAAEyO,GAuCV,OArCItR,IAAsC,IAAjC4C,EAAgBC,GAAGd,WACxBA,EACI/B,EAAEyR,IAAS,GAAKzR,EAAEyR,IAAS,GACrBA,GACAzR,EAAE0R,IAAQ,GAAK1R,EAAE0R,IAAQ7C,GAAY7O,EAAEwR,IAAOxR,EAAEyR,KAChDC,GACA1R,EAAE2R,IAAQ,GACV3R,EAAE2R,IAAQ,IACG,KAAZ3R,EAAE2R,MACgB,IAAd3R,EAAE4R,KACe,IAAd5R,EAAE6R,KACiB,IAAnB7R,EAAE8R,KACVH,GACA3R,EAAE4R,IAAU,GAAK5R,EAAE4R,IAAU,GAC7BA,GACA5R,EAAE6R,IAAU,GAAK7R,EAAE6R,IAAU,GAC7BA,GACA7R,EAAE8R,IAAe,GAAK9R,EAAE8R,IAAe,IACvCA,IACC,EAGPlP,EAAgBC,GAAG6a,qBAClB3b,EAAWyP,IAAQzP,EAAW2P,MAE/B3P,EAAW2P,IAEX9O,EAAgBC,GAAG8a,iBAAgC,IAAd5b,IACrCA,EAAWgQ,IAEXnP,EAAgBC,GAAG+a,mBAAkC,IAAd7b,IACvCA,EAAWiQ,IAGfpP,EAAgBC,GAAGd,SAAWA,GAG3Bc,CACX,CAIA,IAAIgb,GACI,iJACJC,GACI,6IACJC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElBxb,GACI,0LACJyb,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAc3Z,GACnB,IAAIpE,EACAge,EAGAC,EACAC,EACAC,EACAC,EALA9S,EAASlH,EAAOR,GAChB6E,EAAQqU,GAAiBuB,KAAK/S,IAAWyR,GAAcsB,KAAK/S,GAK5DgT,EAAcrB,GAAS1d,OACvBgf,EAAcrB,GAAS3d,OAE3B,GAAIkJ,EAAO,CAEP,IADA5G,EAAgBuC,GAAQ7C,KAAM,EACzBvB,EAAI,EAAGge,EAAIM,EAAate,EAAIge,EAAGhe,IAChC,GAAIid,GAASjd,GAAG,GAAGqe,KAAK5V,EAAM,IAAK,CAC/ByV,EAAajB,GAASjd,GAAG,GACzBie,GAA+B,IAAnBhB,GAASjd,GAAG,GACxB,KACJ,CAEJ,GAAkB,MAAdke,EAEA,YADA9Z,EAAOnC,UAAW,GAGtB,GAAIwG,EAAM,GAAI,CACV,IAAKzI,EAAI,EAAGge,EAAIO,EAAave,EAAIge,EAAGhe,IAChC,GAAIkd,GAASld,GAAG,GAAGqe,KAAK5V,EAAM,IAAK,CAE/B0V,GAAc1V,EAAM,IAAM,KAAOyU,GAASld,GAAG,GAC7C,KACJ,CAEJ,GAAkB,MAAdme,EAEA,YADA/Z,EAAOnC,UAAW,EAG1B,CACA,IAAKgc,GAA2B,MAAdE,EAEd,YADA/Z,EAAOnC,UAAW,GAGtB,GAAIwG,EAAM,GAAI,CACV,IAAIuU,GAAQqB,KAAK5V,EAAM,IAInB,YADArE,EAAOnC,UAAW,GAFlBmc,EAAW,GAKnB,CACAha,EAAOP,GAAKqa,GAAcC,GAAc,KAAOC,GAAY,IAC3DI,GAA0Bpa,EAC9B,MACIA,EAAOnC,UAAW,CAE1B,CAEA,SAASwc,GACLC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,IAAIC,EAAS,CACTC,GAAeP,GACf5M,GAAyBtB,QAAQmO,GACjC1K,SAAS2K,EAAQ,IACjB3K,SAAS4K,EAAS,IAClB5K,SAAS6K,EAAW,KAOxB,OAJIC,GACAC,EAAO7e,KAAK8T,SAAS8K,EAAW,KAG7BC,CACX,CAEA,SAASC,GAAeP,GACpB,IAAI3R,EAAOkH,SAASyK,EAAS,IAC7B,OAAI3R,GAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,CACX,CAEA,SAASmS,GAAkB3U,GAEvB,OAAOA,EACF7B,QAAQ,qBAAsB,KAC9BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,GAC3B,CAEA,SAASyW,GAAaC,EAAYC,EAAajb,GAC3C,OAAIgb,GAEsBnI,GAA2BzG,QAAQ4O,KACrC,IAAIxf,KAChByf,EAAY,GACZA,EAAY,GACZA,EAAY,IACd/G,WAEFzW,EAAgBuC,GAAQxC,iBAAkB,EAC1CwC,EAAOnC,UAAW,GACX,EAInB,CAEA,SAASqd,GAAgBC,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAOnC,GAAWmC,GACf,GAAIC,EAEP,OAAO,EAEP,IAAIE,EAAKzL,SAASwL,EAAW,IACzB3d,EAAI4d,EAAK,IAEb,OADSA,EAAK5d,GAAK,IACR,GAAKA,CAExB,CAGA,SAAS6d,GAAkBvb,GACvB,IACIwb,EADAnX,EAAQ9G,GAAQ0c,KAAKa,GAAkB9a,EAAOR,KAElD,GAAI6E,EAAO,CASP,GARAmX,EAAcnB,GACVhW,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,KAEL0W,GAAa1W,EAAM,GAAImX,EAAaxb,GACrC,OAGJA,EAAOmM,GAAKqP,EACZxb,EAAOL,KAAOub,GAAgB7W,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExDrE,EAAO9B,GAAKkS,GAAcpW,MAAM,KAAMgG,EAAOmM,IAC7CnM,EAAO9B,GAAGud,cAAczb,EAAO9B,GAAGwd,gBAAkB1b,EAAOL,MAE3DlC,EAAgBuC,GAAQzC,SAAU,CACtC,MACIyC,EAAOnC,UAAW,CAE1B,CAGA,SAAS8d,GAAiB3b,GACtB,IAAIwL,EAAUuN,GAAgBkB,KAAKja,EAAOR,IAC1B,OAAZgM,GAKJmO,GAAc3Z,IACU,IAApBA,EAAOnC,kBACAmC,EAAOnC,SAKlB0d,GAAkBvb,IACM,IAApBA,EAAOnC,kBACAmC,EAAOnC,SAKdmC,EAAO3B,QACP2B,EAAOnC,UAAW,EAGlB9D,EAAM6hB,wBAAwB5b,MAtB9BA,EAAO9B,GAAK,IAAI1C,MAAMgQ,EAAQ,GAwBtC,CAYA,SAASqQ,GAAShhB,EAAGC,EAAGghB,GACpB,OAAS,MAALjhB,EACOA,EAEF,MAALC,EACOA,EAEJghB,CACX,CAEA,SAASC,GAAiB/b,GAEtB,IAAIgc,EAAW,IAAIxgB,KAAKzB,EAAM6I,OAC9B,OAAI5C,EAAOic,QACA,CACHD,EAAS1L,iBACT0L,EAASE,cACTF,EAASG,cAGV,CAACH,EAAS9L,cAAe8L,EAASI,WAAYJ,EAASK,UAClE,CAMA,SAASC,GAAgBtc,GACrB,IAAIpE,EACA6N,EAEA8S,EACAC,EACAC,EAHApiB,EAAQ,GAKZ,IAAI2F,EAAO9B,GAAX,CAgCA,IA5BAqe,EAAcR,GAAiB/b,GAG3BA,EAAOiM,IAAyB,MAAnBjM,EAAOmM,GAAGI,KAAqC,MAApBvM,EAAOmM,GAAGG,KAClDoQ,GAAsB1c,GAID,MAArBA,EAAO2c,aACPF,EAAYZ,GAAS7b,EAAOmM,GAAGE,IAAOkQ,EAAYlQ,MAG9CrM,EAAO2c,WAAahN,GAAW8M,IACT,IAAtBzc,EAAO2c,cAEPlf,EAAgBuC,GAAQuY,oBAAqB,GAGjD9O,EAAO2G,GAAcqM,EAAW,EAAGzc,EAAO2c,YAC1C3c,EAAOmM,GAAGG,IAAS7C,EAAKyS,cACxBlc,EAAOmM,GAAGI,IAAQ9C,EAAK0S,cAQtBvgB,EAAI,EAAGA,EAAI,GAAqB,MAAhBoE,EAAOmM,GAAGvQ,KAAcA,EACzCoE,EAAOmM,GAAGvQ,GAAKvB,EAAMuB,GAAK2gB,EAAY3gB,GAI1C,KAAOA,EAAI,EAAGA,IACVoE,EAAOmM,GAAGvQ,GAAKvB,EAAMuB,GACD,MAAhBoE,EAAOmM,GAAGvQ,GAAoB,IAANA,EAAU,EAAI,EAAKoE,EAAOmM,GAAGvQ,GAKrC,KAApBoE,EAAOmM,GAAGK,KACY,IAAtBxM,EAAOmM,GAAGM,KACY,IAAtBzM,EAAOmM,GAAGO,KACiB,IAA3B1M,EAAOmM,GAAGQ,MAEV3M,EAAO4c,UAAW,EAClB5c,EAAOmM,GAAGK,IAAQ,GAGtBxM,EAAO9B,IAAM8B,EAAOic,QAAU7L,GAAgBJ,IAAYhW,MACtD,KACAK,GAEJmiB,EAAkBxc,EAAOic,QACnBjc,EAAO9B,GAAG0S,YACV5Q,EAAO9B,GAAGgW,SAIG,MAAflU,EAAOL,MACPK,EAAO9B,GAAGud,cAAczb,EAAO9B,GAAGwd,gBAAkB1b,EAAOL,MAG3DK,EAAO4c,WACP5c,EAAOmM,GAAGK,IAAQ,IAKlBxM,EAAOiM,IACgB,qBAAhBjM,EAAOiM,GAAGzF,GACjBxG,EAAOiM,GAAGzF,IAAMgW,IAEhB/e,EAAgBuC,GAAQxC,iBAAkB,EA3E9C,CA6EJ,CAEA,SAASkf,GAAsB1c,GAC3B,IAAI0G,EAAGmW,EAAU/L,EAAMC,EAASN,EAAKC,EAAKoM,EAAMC,EAAiBC,EAGrD,OADZtW,EAAI1G,EAAOiM,IACLgR,IAAqB,MAAPvW,EAAEwW,GAAoB,MAAPxW,EAAEyW,GACjC1M,EAAM,EACNC,EAAM,EAMNmM,EAAWhB,GACPnV,EAAEuW,GACFjd,EAAOmM,GAAGE,IACV8E,GAAWiM,KAAe,EAAG,GAAGzU,MAEpCmI,EAAO+K,GAASnV,EAAEwW,EAAG,KACrBnM,EAAU8K,GAASnV,EAAEyW,EAAG,IACV,GAAKpM,EAAU,KACzBgM,GAAkB,KAGtBtM,EAAMzQ,EAAOF,QAAQ2R,MAAMhB,IAC3BC,EAAM1Q,EAAOF,QAAQ2R,MAAMf,IAE3BsM,EAAU7L,GAAWiM,KAAe3M,EAAKC,GAEzCmM,EAAWhB,GAASnV,EAAE2W,GAAIrd,EAAOmM,GAAGE,IAAO2Q,EAAQrU,MAGnDmI,EAAO+K,GAASnV,EAAEA,EAAGsW,EAAQlM,MAElB,MAAPpK,EAAEF,IAEFuK,EAAUrK,EAAEF,GACE,GAAKuK,EAAU,KACzBgM,GAAkB,GAER,MAAPrW,EAAEiR,GAET5G,EAAUrK,EAAEiR,EAAIlH,GACZ/J,EAAEiR,EAAI,GAAKjR,EAAEiR,EAAI,KACjBoF,GAAkB,IAItBhM,EAAUN,GAGdK,EAAO,GAAKA,EAAOQ,GAAYuL,EAAUpM,EAAKC,GAC9CjT,EAAgBuC,GAAQwY,gBAAiB,EACf,MAAnBuE,EACPtf,EAAgBuC,GAAQyY,kBAAmB,GAE3CqE,EAAOjM,GAAmBgM,EAAU/L,EAAMC,EAASN,EAAKC,GACxD1Q,EAAOmM,GAAGE,IAAQyQ,EAAKnU,KACvB3I,EAAO2c,WAAaG,EAAK5L,UAEjC,CASA,SAASkJ,GAA0Bpa,GAE/B,GAAIA,EAAOP,KAAO1F,EAAMujB,SAIxB,GAAItd,EAAOP,KAAO1F,EAAMwjB,SAAxB,CAIAvd,EAAOmM,GAAK,GACZ1O,EAAgBuC,GAAQvD,OAAQ,EAGhC,IACIb,EACAqf,EACApP,EACA9H,EACAyZ,EAGAngB,EACA0O,EATA7E,EAAS,GAAKlH,EAAOR,GAMrBie,EAAevW,EAAO/L,OACtBuiB,EAAyB,EAO7B,IADA3R,GAFAF,EACInH,EAAa1E,EAAOP,GAAIO,EAAOF,SAASuE,MAAMX,IAAqB,IACrDvI,OACbS,EAAI,EAAGA,EAAImQ,EAAUnQ,IACtBmI,EAAQ8H,EAAOjQ,IACfqf,GAAe/T,EAAO7C,MAAMgH,GAAsBtH,EAAO/D,KACrD,IAAI,OAEJwd,EAAUtW,EAAOzD,OAAO,EAAGyD,EAAOkF,QAAQ6O,KAC9B9f,OAAS,GACjBsC,EAAgBuC,GAAQrD,YAAYZ,KAAKyhB,GAE7CtW,EAASA,EAAOpG,MACZoG,EAAOkF,QAAQ6O,GAAeA,EAAY9f,QAE9CuiB,GAA0BzC,EAAY9f,QAGtC0I,EAAqBE,IACjBkX,EACAxd,EAAgBuC,GAAQvD,OAAQ,EAEhCgB,EAAgBuC,GAAQtD,aAAaX,KAAKgI,GAE9CmI,GAAwBnI,EAAOkX,EAAajb,IACrCA,EAAO3B,UAAY4c,GAC1Bxd,EAAgBuC,GAAQtD,aAAaX,KAAKgI,GAKlDtG,EAAgBuC,GAAQnD,cACpB4gB,EAAeC,EACfxW,EAAO/L,OAAS,GAChBsC,EAAgBuC,GAAQrD,YAAYZ,KAAKmL,GAKzClH,EAAOmM,GAAGK,KAAS,KACiB,IAApC/O,EAAgBuC,GAAQzB,SACxByB,EAAOmM,GAAGK,IAAQ,IAElB/O,EAAgBuC,GAAQzB,aAAUD,GAGtCb,EAAgBuC,GAAQ5C,gBAAkB4C,EAAOmM,GAAGrL,MAAM,GAC1DrD,EAAgBuC,GAAQ1C,SAAW0C,EAAO6V,UAE1C7V,EAAOmM,GAAGK,IAAQmR,GACd3d,EAAOF,QACPE,EAAOmM,GAAGK,IACVxM,EAAO6V,WAKC,QADZxY,EAAMI,EAAgBuC,GAAQ3C,OAE1B2C,EAAOmM,GAAGE,IAAQrM,EAAOF,QAAQ8d,gBAAgBvgB,EAAK2C,EAAOmM,GAAGE,MAGpEiQ,GAAgBtc,GAChBsY,GAActY,EA9Ed,MAFIub,GAAkBvb,QAJlB2Z,GAAc3Z,EAqFtB,CAEA,SAAS2d,GAAgBvhB,EAAQyhB,EAAMvgB,GACnC,IAAIwgB,EAEJ,OAAgB,MAAZxgB,EAEOugB,EAEgB,MAAvBzhB,EAAO2hB,aACA3hB,EAAO2hB,aAAaF,EAAMvgB,GACX,MAAflB,EAAOwZ,OAEdkI,EAAO1hB,EAAOwZ,KAAKtY,KACPugB,EAAO,KACfA,GAAQ,IAEPC,GAAiB,KAATD,IACTA,EAAO,GAEJA,GAGAA,CAEf,CAGA,SAASG,GAAyBhe,GAC9B,IAAIie,EACAC,EACAC,EACAviB,EACAwiB,EACAC,EACAC,GAAoB,EACpBC,EAAave,EAAOP,GAAGtE,OAE3B,GAAmB,IAAfojB,EAGA,OAFA9gB,EAAgBuC,GAAQ/C,eAAgB,OACxC+C,EAAO9B,GAAK,IAAI1C,KAAKkD,MAIzB,IAAK9C,EAAI,EAAGA,EAAI2iB,EAAY3iB,IACxBwiB,EAAe,EACfC,GAAmB,EACnBJ,EAAahf,EAAW,CAAC,EAAGe,GACN,MAAlBA,EAAOic,UACPgC,EAAWhC,QAAUjc,EAAOic,SAEhCgC,EAAWxe,GAAKO,EAAOP,GAAG7D,GAC1Bwe,GAA0B6D,GAEtBrgB,EAAQqgB,KACRI,GAAmB,GAIvBD,GAAgB3gB,EAAgBwgB,GAAYphB,cAG5CuhB,GAAkE,GAAlD3gB,EAAgBwgB,GAAYvhB,aAAavB,OAEzDsC,EAAgBwgB,GAAYO,MAAQJ,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpCtiB,EAAOgE,EAAQke,GAAcD,EACjC,CAEA,SAASQ,GAAiBze,GACtB,IAAIA,EAAO9B,GAAX,CAIA,IAAItC,EAAImM,GAAqB/H,EAAOR,IAChCkf,OAAsBpgB,IAAV1C,EAAEwX,IAAoBxX,EAAE6N,KAAO7N,EAAEwX,IACjDpT,EAAOmM,GAAK1Q,EACR,CAACG,EAAE+M,KAAM/M,EAAE4N,MAAOkV,EAAW9iB,EAAEiiB,KAAMjiB,EAAE+iB,OAAQ/iB,EAAEgjB,OAAQhjB,EAAEijB,cAC3D,SAAU5jB,GACN,OAAOA,GAAO4U,SAAS5U,EAAK,GAChC,IAGJqhB,GAAgBtc,EAXhB,CAYJ,CAEA,SAAS8e,GAAiB9e,GACtB,IAAInE,EAAM,IAAIkE,EAAOuY,GAAcyG,GAAc/e,KAOjD,OANInE,EAAI+gB,WAEJ/gB,EAAIiW,IAAI,EAAG,KACXjW,EAAI+gB,cAAWte,GAGZzC,CACX,CAEA,SAASkjB,GAAc/e,GACnB,IAAI3F,EAAQ2F,EAAOR,GACfrD,EAAS6D,EAAOP,GAIpB,OAFAO,EAAOF,QAAUE,EAAOF,SAAWgY,GAAU9X,EAAON,IAEtC,OAAVrF,QAA8BiE,IAAXnC,GAAkC,KAAV9B,EACpCoE,EAAc,CAAE3B,WAAW,KAGjB,kBAAVzC,IACP2F,EAAOR,GAAKnF,EAAQ2F,EAAOF,QAAQkf,SAAS3kB,IAG5C6F,EAAS7F,GACF,IAAI0F,EAAOuY,GAAcje,KACzBkB,EAAOlB,GACd2F,EAAO9B,GAAK7D,EACLD,EAAQ+B,GACf6hB,GAAyBhe,GAClB7D,EACPie,GAA0Bpa,GAE1Bif,GAAgBjf,GAGfpC,EAAQoC,KACTA,EAAO9B,GAAK,MAGT8B,GACX,CAEA,SAASif,GAAgBjf,GACrB,IAAI3F,EAAQ2F,EAAOR,GACfnE,EAAYhB,GACZ2F,EAAO9B,GAAK,IAAI1C,KAAKzB,EAAM6I,OACpBrH,EAAOlB,GACd2F,EAAO9B,GAAK,IAAI1C,KAAKnB,EAAM4B,WACH,kBAAV5B,EACdshB,GAAiB3b,GACV5F,EAAQC,IACf2F,EAAOmM,GAAK1Q,EAAIpB,EAAMyG,MAAM,IAAI,SAAU7F,GACtC,OAAO4U,SAAS5U,EAAK,GACzB,IACAqhB,GAAgBtc,IACTrF,EAASN,GAChBokB,GAAiBze,GACV1E,EAASjB,GAEhB2F,EAAO9B,GAAK,IAAI1C,KAAKnB,GAErBN,EAAM6hB,wBAAwB5b,EAEtC,CAEA,SAAS1D,GAAiBjC,EAAO8B,EAAQC,EAAQC,EAAQ6iB,GACrD,IAAIpD,EAAI,CAAC,EA2BT,OAzBe,IAAX3f,IAA8B,IAAXA,IACnBE,EAASF,EACTA,OAASmC,IAGE,IAAXlC,IAA8B,IAAXA,IACnBC,EAASD,EACTA,OAASkC,IAIR3D,EAASN,IAAUW,EAAcX,IACjCD,EAAQC,IAA2B,IAAjBA,EAAMc,UAEzBd,OAAQiE,GAIZwd,EAAEvc,kBAAmB,EACrBuc,EAAEG,QAAUH,EAAElc,OAASsf,EACvBpD,EAAEpc,GAAKtD,EACP0f,EAAEtc,GAAKnF,EACPyhB,EAAErc,GAAKtD,EACP2f,EAAEzd,QAAUhC,EAELyiB,GAAiBhD,EAC5B,CAEA,SAASsB,GAAY/iB,EAAO8B,EAAQC,EAAQC,GACxC,OAAOC,GAAiBjC,EAAO8B,EAAQC,EAAQC,GAAQ,EAC3D,CAxeAtC,EAAM6hB,wBAA0Brb,EAC5B,iSAGA,SAAUP,GACNA,EAAO9B,GAAK,IAAI1C,KAAKwE,EAAOR,IAAMQ,EAAOic,QAAU,OAAS,IAChE,IAsLJliB,EAAMujB,SAAW,WAAa,EAG9BvjB,EAAMwjB,SAAW,WAAa,EA2S9B,IAAI4B,GAAe5e,EACX,sGACA,WACI,IAAI6e,EAAQhC,GAAYpjB,MAAM,KAAMC,WACpC,OAAI4E,KAAKjB,WAAawhB,EAAMxhB,UACjBwhB,EAAQvgB,KAAOA,KAAOugB,EAEtB3gB,GAEf,IAEJ4gB,GAAe9e,EACX,sGACA,WACI,IAAI6e,EAAQhC,GAAYpjB,MAAM,KAAMC,WACpC,OAAI4E,KAAKjB,WAAawhB,EAAMxhB,UACjBwhB,EAAQvgB,KAAOA,KAAOugB,EAEtB3gB,GAEf,IAQR,SAAS6gB,GAAO3jB,EAAI4jB,GAChB,IAAI1jB,EAAKD,EAIT,GAHuB,IAAnB2jB,EAAQpkB,QAAgBf,EAAQmlB,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQpkB,OACT,OAAOiiB,KAGX,IADAvhB,EAAM0jB,EAAQ,GACT3jB,EAAI,EAAGA,EAAI2jB,EAAQpkB,SAAUS,EACzB2jB,EAAQ3jB,GAAGgC,YAAa2hB,EAAQ3jB,GAAGD,GAAIE,KACxCA,EAAM0jB,EAAQ3jB,IAGtB,OAAOC,CACX,CAGA,SAASkT,KAGL,OAAOuQ,GAAO,WAFH,GAAGxe,MAAMpG,KAAKT,UAAW,GAGxC,CAEA,SAASuJ,KAGL,OAAO8b,GAAO,UAFH,GAAGxe,MAAMpG,KAAKT,UAAW,GAGxC,CAEA,IAAI2I,GAAM,WACN,OAAOpH,KAAKoH,IAAMpH,KAAKoH,OAAS,IAAIpH,IACxC,EAEIgkB,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAGJ,SAASC,GAAgB/hB,GACrB,IAAIiD,EAEA/E,EADA8jB,GAAiB,EAEjBC,EAAWH,GAASrkB,OACxB,IAAKwF,KAAOjD,EACR,GACI9C,EAAW8C,EAAGiD,MAEuB,IAAjCyL,GAAQ1R,KAAK8kB,GAAU7e,IACZ,MAAVjD,EAAEiD,IAAiB1C,MAAMP,EAAEiD,KAGhC,OAAO,EAIf,IAAK/E,EAAI,EAAGA,EAAI+jB,IAAY/jB,EACxB,GAAI8B,EAAE8hB,GAAS5jB,IAAK,CAChB,GAAI8jB,EACA,OAAO,EAEPE,WAAWliB,EAAE8hB,GAAS5jB,OAASmN,GAAMrL,EAAE8hB,GAAS5jB,OAChD8jB,GAAiB,EAEzB,CAGJ,OAAO,CACX,CAEA,SAASG,KACL,OAAOhhB,KAAKhB,QAChB,CAEA,SAASiiB,KACL,OAAOC,GAAerhB,IAC1B,CAEA,SAASshB,GAASC,GACd,IAAI/X,EAAkBH,GAAqBkY,GACvCC,EAAQhY,EAAgBS,MAAQ,EAChCwX,EAAWjY,EAAgBkY,SAAW,EACtChT,EAASlF,EAAgBsB,OAAS,EAClC6W,EAAQnY,EAAgB4I,MAAQ5I,EAAgBoY,SAAW,EAC3DC,EAAOrY,EAAgBkL,KAAO,EAC9B6B,EAAQ/M,EAAgB2V,MAAQ,EAChCzI,EAAUlN,EAAgByW,QAAU,EACpClJ,EAAUvN,EAAgB0W,QAAU,EACpC4B,EAAetY,EAAgB2W,aAAe,EAElDhgB,KAAKhB,SAAW4hB,GAAgBvX,GAGhCrJ,KAAK4hB,eACAD,EACS,IAAV/K,EACU,IAAVL,EACQ,IAARH,EAAe,GAAK,GAGxBpW,KAAK6hB,OAASH,EAAe,EAARF,EAIrBxhB,KAAKkP,SAAWX,EAAoB,EAAX+S,EAAuB,GAARD,EAExCrhB,KAAK8hB,MAAQ,CAAC,EAEd9hB,KAAKiB,QAAUgY,KAEfjZ,KAAK+hB,SACT,CAEA,SAASC,GAAW5lB,GAChB,OAAOA,aAAe+kB,EAC1B,CAEA,SAASc,GAAS9d,GACd,OAAIA,EAAS,GACyB,EAA3BI,KAAK2d,OAAO,EAAI/d,GAEhBI,KAAK2d,MAAM/d,EAE1B,CAGA,SAASge,GAAcC,EAAQC,EAAQC,GACnC,IAGIvlB,EAHAkD,EAAMsE,KAAK2L,IAAIkS,EAAO9lB,OAAQ+lB,EAAO/lB,QACrCimB,EAAahe,KAAKC,IAAI4d,EAAO9lB,OAAS+lB,EAAO/lB,QAC7CkmB,EAAQ,EAEZ,IAAKzlB,EAAI,EAAGA,EAAIkD,EAAKlD,KAEZulB,GAAeF,EAAOrlB,KAAOslB,EAAOtlB,KACnCulB,GAAepY,GAAMkY,EAAOrlB,MAAQmN,GAAMmY,EAAOtlB,MAEnDylB,IAGR,OAAOA,EAAQD,CACnB,CAIA,SAASE,GAAOvd,EAAOwd,GACnBzd,EAAeC,EAAO,EAAG,GAAG,WACxB,IAAIud,EAASziB,KAAK2iB,YACdC,EAAO,IAKX,OAJIH,EAAS,IACTA,GAAUA,EACVG,EAAO,KAGPA,EACA1e,KAAYue,EAAS,IAAK,GAC1BC,EACAxe,IAAWue,EAAS,GAAI,EAEhC,GACJ,CAEAA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbrW,GAAc,IAAKH,IACnBG,GAAc,KAAMH,IACpBgB,GAAc,CAAC,IAAK,OAAO,SAAUzR,EAAOmK,EAAOxE,GAC/CA,EAAOic,SAAU,EACjBjc,EAAOL,KAAO+hB,GAAiB5W,GAAkBzQ,EACrD,IAOA,IAAIsnB,GAAc,kBAElB,SAASD,GAAiBE,EAAS1a,GAC/B,IAEI2a,EACAzM,EAHA0M,GAAW5a,GAAU,IAAI7C,MAAMud,GAKnC,OAAgB,OAAZE,EACO,KAOQ,KAFnB1M,EAAuB,IADvByM,IADQC,EAAQA,EAAQ3mB,OAAS,IAAM,IACtB,IAAIkJ,MAAMsd,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAW5Y,GAAM8Y,EAAM,KAElB,EAAiB,MAAbA,EAAM,GAAazM,GAAWA,CAC7D,CAGA,SAAS2M,GAAgB1nB,EAAO2nB,GAC5B,IAAInmB,EAAKyL,EACT,OAAI0a,EAAMpiB,QACN/D,EAAMmmB,EAAMC,QACZ3a,GACKpH,EAAS7F,IAAUkB,EAAOlB,GACrBA,EAAM4B,UACNmhB,GAAY/iB,GAAO4B,WAAaJ,EAAII,UAE9CJ,EAAIqC,GAAGgkB,QAAQrmB,EAAIqC,GAAGjC,UAAYqL,GAClCvN,EAAMkG,aAAapE,GAAK,GACjBA,GAEAuhB,GAAY/iB,GAAO8nB,OAElC,CAEA,SAASC,GAAc1kB,GAGnB,OAAQ0F,KAAK2d,MAAMrjB,EAAEQ,GAAGmkB,oBAC5B,CAoBA,SAASC,GAAajoB,EAAOkoB,EAAeC,GACxC,IACIC,EADAnB,EAASziB,KAAKgB,SAAW,EAE7B,IAAKhB,KAAKjB,UACN,OAAgB,MAATvD,EAAgBwE,KAAOH,IAElC,GAAa,MAATrE,EAAe,CACf,GAAqB,kBAAVA,GAEP,GAAc,QADdA,EAAQqnB,GAAiB5W,GAAkBzQ,IAEvC,OAAOwE,UAEJuE,KAAKC,IAAIhJ,GAAS,KAAOmoB,IAChCnoB,GAAgB,IAwBpB,OAtBKwE,KAAKe,QAAU2iB,IAChBE,EAAcL,GAAcvjB,OAEhCA,KAAKgB,QAAUxF,EACfwE,KAAKe,QAAS,EACK,MAAf6iB,GACA5jB,KAAKiT,IAAI2Q,EAAa,KAEtBnB,IAAWjnB,KACNkoB,GAAiB1jB,KAAK6jB,kBACvBC,GACI9jB,KACAkhB,GAAe1lB,EAAQinB,EAAQ,KAC/B,GACA,GAEIziB,KAAK6jB,oBACb7jB,KAAK6jB,mBAAoB,EACzB3oB,EAAMkG,aAAapB,MAAM,GACzBA,KAAK6jB,kBAAoB,OAG1B7jB,IACX,CACI,OAAOA,KAAKe,OAAS0hB,EAASc,GAAcvjB,KAEpD,CAEA,SAAS+jB,GAAWvoB,EAAOkoB,GACvB,OAAa,MAATloB,GACqB,kBAAVA,IACPA,GAASA,GAGbwE,KAAK2iB,UAAUnnB,EAAOkoB,GAEf1jB,OAECA,KAAK2iB,WAErB,CAEA,SAASqB,GAAeN,GACpB,OAAO1jB,KAAK2iB,UAAU,EAAGe,EAC7B,CAEA,SAASO,GAAiBP,GAStB,OARI1jB,KAAKe,SACLf,KAAK2iB,UAAU,EAAGe,GAClB1jB,KAAKe,QAAS,EAEV2iB,GACA1jB,KAAKkkB,SAASX,GAAcvjB,MAAO,MAGpCA,IACX,CAEA,SAASmkB,KACL,GAAiB,MAAbnkB,KAAKc,KACLd,KAAK2iB,UAAU3iB,KAAKc,MAAM,GAAO,QAC9B,GAAuB,kBAAZd,KAAKW,GAAiB,CACpC,IAAIyjB,EAAQvB,GAAiB7W,GAAahM,KAAKW,IAClC,MAATyjB,EACApkB,KAAK2iB,UAAUyB,GAEfpkB,KAAK2iB,UAAU,GAAG,EAE1B,CACA,OAAO3iB,IACX,CAEA,SAASqkB,GAAqB7oB,GAC1B,QAAKwE,KAAKjB,YAGVvD,EAAQA,EAAQ+iB,GAAY/iB,GAAOmnB,YAAc,GAEzC3iB,KAAK2iB,YAAcnnB,GAAS,KAAO,EAC/C,CAEA,SAAS8oB,KACL,OACItkB,KAAK2iB,YAAc3iB,KAAKojB,QAAQzY,MAAM,GAAGgY,aACzC3iB,KAAK2iB,YAAc3iB,KAAKojB,QAAQzY,MAAM,GAAGgY,WAEjD,CAEA,SAAS4B,KACL,IAAK/nB,EAAYwD,KAAKwkB,eAClB,OAAOxkB,KAAKwkB,cAGhB,IACIjE,EADAtD,EAAI,CAAC,EAcT,OAXA7c,EAAW6c,EAAGjd,OACdid,EAAIiD,GAAcjD,IAEZ3P,IACFiT,EAAQtD,EAAElc,OAAS1D,EAAU4f,EAAE3P,IAAMiR,GAAYtB,EAAE3P,IACnDtN,KAAKwkB,cACDxkB,KAAKjB,WAAaojB,GAAclF,EAAE3P,GAAIiT,EAAMkE,WAAa,GAE7DzkB,KAAKwkB,eAAgB,EAGlBxkB,KAAKwkB,aAChB,CAEA,SAASE,KACL,QAAO1kB,KAAKjB,YAAaiB,KAAKe,MAClC,CAEA,SAAS4jB,KACL,QAAO3kB,KAAKjB,WAAYiB,KAAKe,MACjC,CAEA,SAAS6jB,KACL,QAAO5kB,KAAKjB,WAAYiB,KAAKe,QAA2B,IAAjBf,KAAKgB,OAChD,CArJA9F,EAAMkG,aAAe,WAAa,EAwJlC,IAAIyjB,GAAc,wDAIdC,GACI,sKAER,SAAS5D,GAAe1lB,EAAOsG,GAC3B,IAGI8gB,EACAmC,EACAC,EALA5D,EAAW5lB,EAEXgK,EAAQ,KAkEZ,OA7DIwc,GAAWxmB,GACX4lB,EAAW,CACPhQ,GAAI5V,EAAMomB,cACVja,EAAGnM,EAAMqmB,MACT9Z,EAAGvM,EAAM0T,SAENzS,EAASjB,KAAW4D,OAAO5D,IAClC4lB,EAAW,CAAC,EACRtf,EACAsf,EAAStf,IAAQtG,EAEjB4lB,EAASO,cAAgBnmB,IAErBgK,EAAQqf,GAAYzJ,KAAK5f,KACjConB,EAAoB,MAAbpd,EAAM,IAAc,EAAI,EAC/B4b,EAAW,CACPnZ,EAAG,EACHN,EAAGuC,GAAM1E,EAAMkI,KAASkV,EACxBnb,EAAGyC,GAAM1E,EAAMmI,KAASiV,EACxB/jB,EAAGqL,GAAM1E,EAAMoI,KAAWgV,EAC1Btb,EAAG4C,GAAM1E,EAAMqI,KAAW+U,EAC1BxR,GAAIlH,GAAM+X,GAA8B,IAArBzc,EAAMsI,MAAwB8U,KAE7Cpd,EAAQsf,GAAS1J,KAAK5f,KAC9BonB,EAAoB,MAAbpd,EAAM,IAAc,EAAI,EAC/B4b,EAAW,CACPnZ,EAAGgd,GAASzf,EAAM,GAAIod,GACtB7a,EAAGkd,GAASzf,EAAM,GAAIod,GACtB/a,EAAGod,GAASzf,EAAM,GAAIod,GACtBjb,EAAGsd,GAASzf,EAAM,GAAIod,GACtBnb,EAAGwd,GAASzf,EAAM,GAAIod,GACtB/jB,EAAGomB,GAASzf,EAAM,GAAIod,GACtBtb,EAAG2d,GAASzf,EAAM,GAAIod,KAEP,MAAZxB,EAEPA,EAAW,CAAC,EAEQ,kBAAbA,IACN,SAAUA,GAAY,OAAQA,KAE/B4D,EAAUE,GACN3G,GAAY6C,EAAS9gB,MACrBie,GAAY6C,EAAS/gB,MAGzB+gB,EAAW,CAAC,GACHhQ,GAAK4T,EAAQrD,aACtBP,EAASrZ,EAAIid,EAAQzW,QAGzBwW,EAAM,IAAI5D,GAASC,GAEfY,GAAWxmB,IAAUO,EAAWP,EAAO,aACvCupB,EAAI9jB,QAAUzF,EAAMyF,SAGpB+gB,GAAWxmB,IAAUO,EAAWP,EAAO,cACvCupB,EAAI/lB,SAAWxD,EAAMwD,UAGlB+lB,CACX,CAKA,SAASE,GAASE,EAAKvC,GAInB,IAAI5lB,EAAMmoB,GAAOpE,WAAWoE,EAAI1f,QAAQ,IAAK,MAE7C,OAAQrG,MAAMpC,GAAO,EAAIA,GAAO4lB,CACpC,CAEA,SAASwC,GAA0BC,EAAM9E,GACrC,IAAIvjB,EAAM,CAAC,EAUX,OARAA,EAAIuR,OACAgS,EAAM5V,QAAU0a,EAAK1a,QAAyC,IAA9B4V,EAAMzW,OAASub,EAAKvb,QACpDub,EAAKjC,QAAQnQ,IAAIjW,EAAIuR,OAAQ,KAAK+W,QAAQ/E,MACxCvjB,EAAIuR,OAGVvR,EAAI2kB,cAAgBpB,GAAS8E,EAAKjC,QAAQnQ,IAAIjW,EAAIuR,OAAQ,KAEnDvR,CACX,CAEA,SAASkoB,GAAkBG,EAAM9E,GAC7B,IAAIvjB,EACJ,OAAMqoB,EAAKtmB,WAAawhB,EAAMxhB,WAI9BwhB,EAAQ2C,GAAgB3C,EAAO8E,GAC3BA,EAAKE,SAAShF,GACdvjB,EAAMooB,GAA0BC,EAAM9E,KAEtCvjB,EAAMooB,GAA0B7E,EAAO8E,IACnC1D,cAAgB3kB,EAAI2kB,aACxB3kB,EAAIuR,QAAUvR,EAAIuR,QAGfvR,GAZI,CAAE2kB,aAAc,EAAGpT,OAAQ,EAa1C,CAGA,SAASiX,GAAYC,EAAWjjB,GAC5B,OAAO,SAAUhC,EAAKklB,GAClB,IAASC,EAmBT,OAjBe,OAAXD,GAAoBtmB,OAAOsmB,KAC3BnjB,EACIC,EACA,YACIA,EACA,uDACAA,EAHJ,kGAOJmjB,EAAMnlB,EACNA,EAAMklB,EACNA,EAASC,GAIb7B,GAAY9jB,KADNkhB,GAAe1gB,EAAKklB,GACHD,GAChBzlB,IACX,CACJ,CAEA,SAAS8jB,GAAYhgB,EAAKsd,EAAUwE,EAAUxkB,GAC1C,IAAIugB,EAAeP,EAASQ,cACxBF,EAAOO,GAASb,EAASS,OACzBtT,EAAS0T,GAASb,EAASlS,SAE1BpL,EAAI/E,YAKTqC,EAA+B,MAAhBA,GAA8BA,EAEzCmN,GACAyB,GAASlM,EAAK4G,GAAI5G,EAAK,SAAWyK,EAASqX,GAE3ClE,GACAjX,GAAM3G,EAAK,OAAQ4G,GAAI5G,EAAK,QAAU4d,EAAOkE,GAE7CjE,GACA7d,EAAIzE,GAAGgkB,QAAQvf,EAAIzE,GAAGjC,UAAYukB,EAAeiE,GAEjDxkB,GACAlG,EAAMkG,aAAa0C,EAAK4d,GAAQnT,GAExC,CA9FA2S,GAAepkB,GAAKqkB,GAASxlB,UAC7BulB,GAAe2E,QAAU5E,GA+FzB,IAAIhO,GAAMuS,GAAY,EAAG,OACrBtB,GAAWsB,IAAa,EAAG,YAE/B,SAASM,GAAStqB,GACd,MAAwB,kBAAVA,GAAsBA,aAAiBuqB,MACzD,CAGA,SAASC,GAAcxqB,GACnB,OACI6F,EAAS7F,IACTkB,EAAOlB,IACPsqB,GAAStqB,IACTiB,EAASjB,IACTyqB,GAAsBzqB,IACtB0qB,GAAoB1qB,IACV,OAAVA,QACUiE,IAAVjE,CAER,CAEA,SAAS0qB,GAAoB1qB,GACzB,IA4BIuB,EACAopB,EA7BAC,EAAatqB,EAASN,KAAWW,EAAcX,GAC/C6qB,GAAe,EACfC,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAIJC,EAAcD,EAAWhqB,OAE7B,IAAKS,EAAI,EAAGA,EAAIwpB,EAAaxpB,GAAK,EAC9BopB,EAAWG,EAAWvpB,GACtBspB,EAAeA,GAAgBtqB,EAAWP,EAAO2qB,GAGrD,OAAOC,GAAcC,CACzB,CAEA,SAASJ,GAAsBzqB,GAC3B,IAAIgrB,EAAYjrB,EAAQC,GACpBirB,GAAe,EAOnB,OANID,IACAC,EAGkB,IAFdjrB,EAAMkrB,QAAO,SAAUC,GACnB,OAAQlqB,EAASkqB,IAASb,GAAStqB,EACvC,IAAGc,QAEJkqB,GAAaC,CACxB,CAEA,SAASG,GAAeprB,GACpB,IAUIuB,EACAopB,EAXAC,EAAatqB,EAASN,KAAWW,EAAcX,GAC/C6qB,GAAe,EACfC,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKR,IAAKvpB,EAAI,EAAGA,EAAIupB,EAAWhqB,OAAQS,GAAK,EACpCopB,EAAWG,EAAWvpB,GACtBspB,EAAeA,GAAgBtqB,EAAWP,EAAO2qB,GAGrD,OAAOC,GAAcC,CACzB,CAEA,SAASQ,GAAkBC,EAAU/iB,GACjC,IAAI0E,EAAOqe,EAASre,KAAK1E,EAAK,QAAQ,GACtC,OAAO0E,GAAQ,EACT,WACAA,GAAQ,EACR,WACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,WACA,UACV,CAEA,SAASse,GAAWC,EAAMC,GAEG,IAArB7rB,UAAUkB,SACLlB,UAAU,GAGJ4qB,GAAc5qB,UAAU,KAC/B4rB,EAAO5rB,UAAU,GACjB6rB,OAAUxnB,GACHmnB,GAAexrB,UAAU,MAChC6rB,EAAU7rB,UAAU,GACpB4rB,OAAOvnB,IAPPunB,OAAOvnB,EACPwnB,OAAUxnB,IAWlB,IAAIsE,EAAMijB,GAAQzI,KACd2I,EAAMhE,GAAgBnf,EAAK/D,MAAMmnB,QAAQ,OACzC7pB,EAASpC,EAAMksB,eAAepnB,KAAMknB,IAAQ,WAC5CljB,EACIijB,IACCxkB,EAAWwkB,EAAQ3pB,IACd2pB,EAAQ3pB,GAAQzB,KAAKmE,KAAM+D,GAC3BkjB,EAAQ3pB,IAEtB,OAAO0C,KAAK1C,OACR0G,GAAUhE,KAAKsF,aAAazB,SAASvG,EAAQ0C,KAAMue,GAAYxa,IAEvE,CAEA,SAASqf,KACL,OAAO,IAAIliB,EAAOlB,KACtB,CAEA,SAASslB,GAAQ9pB,EAAOyN,GACpB,IAAIoe,EAAahmB,EAAS7F,GAASA,EAAQ+iB,GAAY/iB,GACvD,SAAMwE,KAAKjB,YAAasoB,EAAWtoB,aAIrB,iBADdkK,EAAQD,GAAeC,IAAU,eAEtBjJ,KAAK5C,UAAYiqB,EAAWjqB,UAE5BiqB,EAAWjqB,UAAY4C,KAAKojB,QAAQ+D,QAAQle,GAAO7L,UAElE,CAEA,SAASmoB,GAAS/pB,EAAOyN,GACrB,IAAIoe,EAAahmB,EAAS7F,GAASA,EAAQ+iB,GAAY/iB,GACvD,SAAMwE,KAAKjB,YAAasoB,EAAWtoB,aAIrB,iBADdkK,EAAQD,GAAeC,IAAU,eAEtBjJ,KAAK5C,UAAYiqB,EAAWjqB,UAE5B4C,KAAKojB,QAAQkE,MAAMre,GAAO7L,UAAYiqB,EAAWjqB,UAEhE,CAEA,SAASmqB,GAAUjnB,EAAMD,EAAI4I,EAAOue,GAChC,IAAIC,EAAYpmB,EAASf,GAAQA,EAAOie,GAAYje,GAChDonB,EAAUrmB,EAAShB,GAAMA,EAAKke,GAAYle,GAC9C,SAAML,KAAKjB,WAAa0oB,EAAU1oB,WAAa2oB,EAAQ3oB,aAK/B,OAFxByoB,EAAcA,GAAe,MAEZ,GACPxnB,KAAKslB,QAAQmC,EAAWxe,IACvBjJ,KAAKulB,SAASkC,EAAWxe,MACZ,MAAnBue,EAAY,GACPxnB,KAAKulB,SAASmC,EAASze,IACtBjJ,KAAKslB,QAAQoC,EAASze,GAErC,CAEA,SAAS0e,GAAOnsB,EAAOyN,GACnB,IACI2e,EADAP,EAAahmB,EAAS7F,GAASA,EAAQ+iB,GAAY/iB,GAEvD,SAAMwE,KAAKjB,YAAasoB,EAAWtoB,aAIrB,iBADdkK,EAAQD,GAAeC,IAAU,eAEtBjJ,KAAK5C,YAAciqB,EAAWjqB,WAErCwqB,EAAUP,EAAWjqB,UAEjB4C,KAAKojB,QAAQ+D,QAAQle,GAAO7L,WAAawqB,GACzCA,GAAW5nB,KAAKojB,QAAQkE,MAAMre,GAAO7L,WAGjD,CAEA,SAASyqB,GAAcrsB,EAAOyN,GAC1B,OAAOjJ,KAAK2nB,OAAOnsB,EAAOyN,IAAUjJ,KAAKslB,QAAQ9pB,EAAOyN,EAC5D,CAEA,SAAS6e,GAAetsB,EAAOyN,GAC3B,OAAOjJ,KAAK2nB,OAAOnsB,EAAOyN,IAAUjJ,KAAKulB,SAAS/pB,EAAOyN,EAC7D,CAEA,SAASR,GAAKjN,EAAOyN,EAAO8e,GACxB,IAAIC,EAAMC,EAAWjkB,EAErB,IAAKhE,KAAKjB,UACN,OAAOc,IAKX,KAFAmoB,EAAO9E,GAAgB1nB,EAAOwE,OAEpBjB,UACN,OAAOc,IAOX,OAJAooB,EAAoD,KAAvCD,EAAKrF,YAAc3iB,KAAK2iB,aAErC1Z,EAAQD,GAAeC,IAGnB,IAAK,OACDjF,EAASkkB,GAAUloB,KAAMgoB,GAAQ,GACjC,MACJ,IAAK,QACDhkB,EAASkkB,GAAUloB,KAAMgoB,GACzB,MACJ,IAAK,UACDhkB,EAASkkB,GAAUloB,KAAMgoB,GAAQ,EACjC,MACJ,IAAK,SACDhkB,GAAUhE,KAAOgoB,GAAQ,IACzB,MACJ,IAAK,SACDhkB,GAAUhE,KAAOgoB,GAAQ,IACzB,MACJ,IAAK,OACDhkB,GAAUhE,KAAOgoB,GAAQ,KACzB,MACJ,IAAK,MACDhkB,GAAUhE,KAAOgoB,EAAOC,GAAa,MACrC,MACJ,IAAK,OACDjkB,GAAUhE,KAAOgoB,EAAOC,GAAa,OACrC,MACJ,QACIjkB,EAAShE,KAAOgoB,EAGxB,OAAOD,EAAU/jB,EAAS+F,GAAS/F,EACvC,CAEA,SAASkkB,GAAUlsB,EAAGC,GAClB,GAAID,EAAE4O,OAAS3O,EAAE2O,OAGb,OAAQsd,GAAUjsB,EAAGD,GAGzB,IAAImsB,EAAyC,IAAvBlsB,EAAE6N,OAAS9N,EAAE8N,SAAgB7N,EAAE0O,QAAU3O,EAAE2O,SAE7Dyd,EAASpsB,EAAEonB,QAAQnQ,IAAIkV,EAAgB,UAe3C,QAASA,GAXLlsB,EAAImsB,EAAS,GAGHnsB,EAAImsB,IAAWA,EAFfpsB,EAAEonB,QAAQnQ,IAAIkV,EAAiB,EAAG,YAMlClsB,EAAImsB,IAFJpsB,EAAEonB,QAAQnQ,IAAIkV,EAAiB,EAAG,UAETC,MAIF,CACzC,CAKA,SAASxsB,KACL,OAAOoE,KAAKojB,QAAQ7lB,OAAO,MAAMD,OAAO,mCAC5C,CAEA,SAAS+qB,GAAYC,GACjB,IAAKtoB,KAAKjB,UACN,OAAO,KAEX,IAAIrB,GAAqB,IAAf4qB,EACNzpB,EAAInB,EAAMsC,KAAKojB,QAAQ1lB,MAAQsC,KACnC,OAAInB,EAAEiL,OAAS,GAAKjL,EAAEiL,OAAS,KACpBlE,EACH/G,EACAnB,EACM,iCACA,gCAGV+E,EAAW9F,KAAKhB,UAAU0sB,aAEtB3qB,EACOsC,KAAKuoB,SAASF,cAEd,IAAI1rB,KAAKqD,KAAK5C,UAA+B,GAAnB4C,KAAK2iB,YAAmB,KACpD0F,cACA5iB,QAAQ,IAAKG,EAAa/G,EAAG,MAGnC+G,EACH/G,EACAnB,EAAM,+BAAiC,6BAE/C,CAQA,SAAS8qB,KACL,IAAKxoB,KAAKjB,UACN,MAAO,qBAAuBiB,KAAKW,GAAK,OAE5C,IAEI8nB,EACA3e,EACA4e,EACAC,EALAtjB,EAAO,SACPujB,EAAO,GAcX,OATK5oB,KAAK0kB,YACNrf,EAA4B,IAArBrF,KAAK2iB,YAAoB,aAAe,mBAC/CiG,EAAO,KAEXH,EAAS,IAAMpjB,EAAO,MACtByE,EAAO,GAAK9J,KAAK8J,QAAU9J,KAAK8J,QAAU,KAAO,OAAS,SAC1D4e,EAAW,wBACXC,EAASC,EAAO,OAET5oB,KAAK1C,OAAOmrB,EAAS3e,EAAO4e,EAAWC,EAClD,CAEA,SAASrrB,GAAOurB,GACPA,IACDA,EAAc7oB,KAAK4kB,QACb1pB,EAAM4tB,iBACN5tB,EAAM6tB,eAEhB,IAAI/kB,EAAS4B,EAAa5F,KAAM6oB,GAChC,OAAO7oB,KAAKsF,aAAa0jB,WAAWhlB,EACxC,CAEA,SAAS1D,GAAK0mB,EAAM5e,GAChB,OACIpI,KAAKjB,YACHsC,EAAS2lB,IAASA,EAAKjoB,WAAcwf,GAAYyI,GAAMjoB,WAElDmiB,GAAe,CAAE7gB,GAAIL,KAAMM,KAAM0mB,IACnCzpB,OAAOyC,KAAKzC,UACZ0rB,UAAU7gB,GAERpI,KAAKsF,aAAaQ,aAEjC,CAEA,SAASojB,GAAQ9gB,GACb,OAAOpI,KAAKM,KAAKie,KAAenW,EACpC,CAEA,SAAS/H,GAAG2mB,EAAM5e,GACd,OACIpI,KAAKjB,YACHsC,EAAS2lB,IAASA,EAAKjoB,WAAcwf,GAAYyI,GAAMjoB,WAElDmiB,GAAe,CAAE5gB,KAAMN,KAAMK,GAAI2mB,IACnCzpB,OAAOyC,KAAKzC,UACZ0rB,UAAU7gB,GAERpI,KAAKsF,aAAaQ,aAEjC,CAEA,SAASqjB,GAAM/gB,GACX,OAAOpI,KAAKK,GAAGke,KAAenW,EAClC,CAKA,SAAS7K,GAAOuE,GACZ,IAAIsnB,EAEJ,YAAY3pB,IAARqC,EACO9B,KAAKiB,QAAQ0X,OAGC,OADrByQ,EAAgBnQ,GAAUnX,MAEtB9B,KAAKiB,QAAUmoB,GAEZppB,KAEf,CA5HA9E,EAAM6tB,cAAgB,uBACtB7tB,EAAM4tB,iBAAmB,yBA6HzB,IAAIO,GAAO3nB,EACP,mJACA,SAAUI,GACN,YAAYrC,IAARqC,EACO9B,KAAKsF,aAELtF,KAAKzC,OAAOuE,EAE3B,IAGJ,SAASwD,KACL,OAAOtF,KAAKiB,OAChB,CAEA,IAAIqoB,GAAgB,IAChBC,GAAgB,GAAKD,GACrBE,GAAc,GAAKD,GACnBE,GAAmB,QAAwBD,GAG/C,SAASE,GAAMC,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,CAC9C,CAEA,SAASC,GAAiB5hB,EAAGpJ,EAAG8I,GAE5B,OAAIM,EAAI,KAAOA,GAAK,EAET,IAAItL,KAAKsL,EAAI,IAAKpJ,EAAG8I,GAAK8hB,GAE1B,IAAI9sB,KAAKsL,EAAGpJ,EAAG8I,GAAGvK,SAEjC,CAEA,SAAS0sB,GAAe7hB,EAAGpJ,EAAG8I,GAE1B,OAAIM,EAAI,KAAOA,GAAK,EAETtL,KAAK6U,IAAIvJ,EAAI,IAAKpJ,EAAG8I,GAAK8hB,GAE1B9sB,KAAK6U,IAAIvJ,EAAGpJ,EAAG8I,EAE9B,CAEA,SAASwf,GAAQle,GACb,IAAI+d,EAAM+C,EAEV,QAActqB,KADdwJ,EAAQD,GAAeC,KACc,gBAAVA,IAA4BjJ,KAAKjB,UACxD,OAAOiB,KAKX,OAFA+pB,EAAc/pB,KAAKe,OAAS+oB,GAAiBD,GAErC5gB,GACJ,IAAK,OACD+d,EAAO+C,EAAY/pB,KAAK8J,OAAQ,EAAG,GACnC,MACJ,IAAK,UACDkd,EAAO+C,EACH/pB,KAAK8J,OACL9J,KAAK2K,QAAW3K,KAAK2K,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACDqc,EAAO+C,EAAY/pB,KAAK8J,OAAQ9J,KAAK2K,QAAS,GAC9C,MACJ,IAAK,OACDqc,EAAO+C,EACH/pB,KAAK8J,OACL9J,KAAK2K,QACL3K,KAAK4K,OAAS5K,KAAKkS,WAEvB,MACJ,IAAK,UACD8U,EAAO+C,EACH/pB,KAAK8J,OACL9J,KAAK2K,QACL3K,KAAK4K,QAAU5K,KAAKgqB,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACDhD,EAAO+C,EAAY/pB,KAAK8J,OAAQ9J,KAAK2K,QAAS3K,KAAK4K,QACnD,MACJ,IAAK,OACDoc,EAAOhnB,KAAKX,GAAGjC,UACf4pB,GAAQ0C,GACJ1C,GAAQhnB,KAAKe,OAAS,EAAIf,KAAK2iB,YAAc4G,IAC7CC,IAEJ,MACJ,IAAK,SACDxC,EAAOhnB,KAAKX,GAAGjC,UACf4pB,GAAQ0C,GAAM1C,EAAMuC,IACpB,MACJ,IAAK,SACDvC,EAAOhnB,KAAKX,GAAGjC,UACf4pB,GAAQ0C,GAAM1C,EAAMsC,IAM5B,OAFAtpB,KAAKX,GAAGgkB,QAAQ2D,GAChB9rB,EAAMkG,aAAapB,MAAM,GAClBA,IACX,CAEA,SAASsnB,GAAMre,GACX,IAAI+d,EAAM+C,EAEV,QAActqB,KADdwJ,EAAQD,GAAeC,KACc,gBAAVA,IAA4BjJ,KAAKjB,UACxD,OAAOiB,KAKX,OAFA+pB,EAAc/pB,KAAKe,OAAS+oB,GAAiBD,GAErC5gB,GACJ,IAAK,OACD+d,EAAO+C,EAAY/pB,KAAK8J,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACDkd,EACI+C,EACI/pB,KAAK8J,OACL9J,KAAK2K,QAAW3K,KAAK2K,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACDqc,EAAO+C,EAAY/pB,KAAK8J,OAAQ9J,KAAK2K,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACDqc,EACI+C,EACI/pB,KAAK8J,OACL9J,KAAK2K,QACL3K,KAAK4K,OAAS5K,KAAKkS,UAAY,GAC/B,EACR,MACJ,IAAK,UACD8U,EACI+C,EACI/pB,KAAK8J,OACL9J,KAAK2K,QACL3K,KAAK4K,QAAU5K,KAAKgqB,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACDhD,EAAO+C,EAAY/pB,KAAK8J,OAAQ9J,KAAK2K,QAAS3K,KAAK4K,OAAS,GAAK,EACjE,MACJ,IAAK,OACDoc,EAAOhnB,KAAKX,GAAGjC,UACf4pB,GACIwC,GACAE,GACI1C,GAAQhnB,KAAKe,OAAS,EAAIf,KAAK2iB,YAAc4G,IAC7CC,IAEJ,EACJ,MACJ,IAAK,SACDxC,EAAOhnB,KAAKX,GAAGjC,UACf4pB,GAAQuC,GAAgBG,GAAM1C,EAAMuC,IAAiB,EACrD,MACJ,IAAK,SACDvC,EAAOhnB,KAAKX,GAAGjC,UACf4pB,GAAQsC,GAAgBI,GAAM1C,EAAMsC,IAAiB,EAM7D,OAFAtpB,KAAKX,GAAGgkB,QAAQ2D,GAChB9rB,EAAMkG,aAAapB,MAAM,GAClBA,IACX,CAEA,SAAS5C,KACL,OAAO4C,KAAKX,GAAGjC,UAAkC,KAArB4C,KAAKgB,SAAW,EAChD,CAEA,SAASipB,KACL,OAAO1lB,KAAK0F,MAAMjK,KAAK5C,UAAY,IACvC,CAEA,SAASmrB,KACL,OAAO,IAAI5rB,KAAKqD,KAAK5C,UACzB,CAEA,SAASqnB,KACL,IAAI5lB,EAAImB,KACR,MAAO,CACHnB,EAAEiL,OACFjL,EAAE8L,QACF9L,EAAE+L,OACF/L,EAAEmgB,OACFngB,EAAEihB,SACFjhB,EAAEkhB,SACFlhB,EAAEmhB,cAEV,CAEA,SAASkK,KACL,IAAIrrB,EAAImB,KACR,MAAO,CACHqhB,MAAOxiB,EAAEiL,OACTyE,OAAQ1P,EAAE8L,QACVC,KAAM/L,EAAE+L,OACRwL,MAAOvX,EAAEuX,QACTG,QAAS1X,EAAE0X,UACXK,QAAS/X,EAAE+X,UACX+K,aAAc9iB,EAAE8iB,eAExB,CAEA,SAASwI,KAEL,OAAOnqB,KAAKjB,UAAYiB,KAAKqoB,cAAgB,IACjD,CAEA,SAAS+B,KACL,OAAOrrB,EAAQiB,KACnB,CAEA,SAASqqB,KACL,OAAOltB,EAAO,CAAC,EAAGyB,EAAgBoB,MACtC,CAEA,SAASsqB,KACL,OAAO1rB,EAAgBoB,MAAMjC,QACjC,CAEA,SAASwsB,KACL,MAAO,CACH/uB,MAAOwE,KAAKW,GACZrD,OAAQ0C,KAAKY,GACbrD,OAAQyC,KAAKiB,QACbof,MAAOrgB,KAAKe,OACZvD,OAAQwC,KAAKR,QAErB,CAmDA,SAASgrB,GAAW3rB,EAAGvB,GACnB,IAAIP,EACAge,EACAnQ,EACA6f,EAAOzqB,KAAK0qB,OAASzR,GAAU,MAAMyR,MACzC,IAAK3tB,EAAI,EAAGge,EAAI0P,EAAKnuB,OAAQS,EAAIge,IAAKhe,EASlC,OAPS,kBADM0tB,EAAK1tB,GAAG4tB,QAGf/f,EAAO1P,EAAMuvB,EAAK1tB,GAAG4tB,OAAOxD,QAAQ,OACpCsD,EAAK1tB,GAAG4tB,MAAQ/f,EAAKxN,kBAIdqtB,EAAK1tB,GAAG6tB,OACnB,IAAK,YACDH,EAAK1tB,GAAG6tB,MAAQ,IAChB,MACJ,IAAK,SAEDhgB,EAAO1P,EAAMuvB,EAAK1tB,GAAG6tB,OAAOzD,QAAQ,OAAO/pB,UAC3CqtB,EAAK1tB,GAAG6tB,MAAQhgB,EAAKxN,UAIjC,OAAOqtB,CACX,CAEA,SAASI,GAAgBC,EAASxtB,EAAQE,GACtC,IAAIT,EACAge,EAEAvY,EACA2W,EACA4R,EAHAN,EAAOzqB,KAAKyqB,OAMhB,IAFAK,EAAUA,EAAQlkB,cAEb7J,EAAI,EAAGge,EAAI0P,EAAKnuB,OAAQS,EAAIge,IAAKhe,EAKlC,GAJAyF,EAAOioB,EAAK1tB,GAAGyF,KAAKoE,cACpBuS,EAAOsR,EAAK1tB,GAAGoc,KAAKvS,cACpBmkB,EAASN,EAAK1tB,GAAGguB,OAAOnkB,cAEpBpJ,EACA,OAAQF,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAI6b,IAAS2R,EACT,OAAOL,EAAK1tB,GAEhB,MAEJ,IAAK,OACD,GAAIyF,IAASsoB,EACT,OAAOL,EAAK1tB,GAEhB,MAEJ,IAAK,QACD,GAAIguB,IAAWD,EACX,OAAOL,EAAK1tB,QAIrB,GAAI,CAACyF,EAAM2W,EAAM4R,GAAQxd,QAAQud,IAAY,EAChD,OAAOL,EAAK1tB,EAGxB,CAEA,SAASiuB,GAAsBxsB,EAAKsL,GAChC,IAAImhB,EAAMzsB,EAAImsB,OAASnsB,EAAIosB,MAAQ,GAAM,EACzC,YAAanrB,IAATqK,EACO5O,EAAMsD,EAAImsB,OAAO7gB,OAEjB5O,EAAMsD,EAAImsB,OAAO7gB,QAAUA,EAAOtL,EAAIikB,QAAUwI,CAE/D,CAEA,SAASC,KACL,IAAInuB,EACAge,EACAva,EACAiqB,EAAOzqB,KAAKsF,aAAamlB,OAC7B,IAAK1tB,EAAI,EAAGge,EAAI0P,EAAKnuB,OAAQS,EAAIge,IAAKhe,EAAG,CAIrC,GAFAyD,EAAMR,KAAKojB,QAAQ+D,QAAQ,OAAO/pB,UAE9BqtB,EAAK1tB,GAAG4tB,OAASnqB,GAAOA,GAAOiqB,EAAK1tB,GAAG6tB,MACvC,OAAOH,EAAK1tB,GAAGyF,KAEnB,GAAIioB,EAAK1tB,GAAG6tB,OAASpqB,GAAOA,GAAOiqB,EAAK1tB,GAAG4tB,MACvC,OAAOF,EAAK1tB,GAAGyF,IAEvB,CAEA,MAAO,EACX,CAEA,SAAS2oB,KACL,IAAIpuB,EACAge,EACAva,EACAiqB,EAAOzqB,KAAKsF,aAAamlB,OAC7B,IAAK1tB,EAAI,EAAGge,EAAI0P,EAAKnuB,OAAQS,EAAIge,IAAKhe,EAAG,CAIrC,GAFAyD,EAAMR,KAAKojB,QAAQ+D,QAAQ,OAAO/pB,UAE9BqtB,EAAK1tB,GAAG4tB,OAASnqB,GAAOA,GAAOiqB,EAAK1tB,GAAG6tB,MACvC,OAAOH,EAAK1tB,GAAGguB,OAEnB,GAAIN,EAAK1tB,GAAG6tB,OAASpqB,GAAOA,GAAOiqB,EAAK1tB,GAAG4tB,MACvC,OAAOF,EAAK1tB,GAAGguB,MAEvB,CAEA,MAAO,EACX,CAEA,SAASK,KACL,IAAIruB,EACAge,EACAva,EACAiqB,EAAOzqB,KAAKsF,aAAamlB,OAC7B,IAAK1tB,EAAI,EAAGge,EAAI0P,EAAKnuB,OAAQS,EAAIge,IAAKhe,EAAG,CAIrC,GAFAyD,EAAMR,KAAKojB,QAAQ+D,QAAQ,OAAO/pB,UAE9BqtB,EAAK1tB,GAAG4tB,OAASnqB,GAAOA,GAAOiqB,EAAK1tB,GAAG6tB,MACvC,OAAOH,EAAK1tB,GAAGoc,KAEnB,GAAIsR,EAAK1tB,GAAG6tB,OAASpqB,GAAOA,GAAOiqB,EAAK1tB,GAAG4tB,MACvC,OAAOF,EAAK1tB,GAAGoc,IAEvB,CAEA,MAAO,EACX,CAEA,SAASkS,KACL,IAAItuB,EACAge,EACAkQ,EACAzqB,EACAiqB,EAAOzqB,KAAKsF,aAAamlB,OAC7B,IAAK1tB,EAAI,EAAGge,EAAI0P,EAAKnuB,OAAQS,EAAIge,IAAKhe,EAMlC,GALAkuB,EAAMR,EAAK1tB,GAAG4tB,OAASF,EAAK1tB,GAAG6tB,MAAQ,GAAM,EAG7CpqB,EAAMR,KAAKojB,QAAQ+D,QAAQ,OAAO/pB,UAG7BqtB,EAAK1tB,GAAG4tB,OAASnqB,GAAOA,GAAOiqB,EAAK1tB,GAAG6tB,OACvCH,EAAK1tB,GAAG6tB,OAASpqB,GAAOA,GAAOiqB,EAAK1tB,GAAG4tB,MAExC,OACK3qB,KAAK8J,OAAS5O,EAAMuvB,EAAK1tB,GAAG4tB,OAAO7gB,QAAUmhB,EAC9CR,EAAK1tB,GAAG0lB,OAKpB,OAAOziB,KAAK8J,MAChB,CAEA,SAASwhB,GAAc/e,GAInB,OAHKxQ,EAAWiE,KAAM,mBAClBurB,GAAiB1vB,KAAKmE,MAEnBuM,EAAWvM,KAAKwrB,eAAiBxrB,KAAKyrB,UACjD,CAEA,SAASC,GAAcnf,GAInB,OAHKxQ,EAAWiE,KAAM,mBAClBurB,GAAiB1vB,KAAKmE,MAEnBuM,EAAWvM,KAAK2rB,eAAiB3rB,KAAKyrB,UACjD,CAEA,SAASG,GAAgBrf,GAIrB,OAHKxQ,EAAWiE,KAAM,qBAClBurB,GAAiB1vB,KAAKmE,MAEnBuM,EAAWvM,KAAK6rB,iBAAmB7rB,KAAKyrB,UACnD,CAEA,SAASK,GAAavf,EAAUhP,GAC5B,OAAOA,EAAOmuB,cAAcnf,EAChC,CAEA,SAASwf,GAAaxf,EAAUhP,GAC5B,OAAOA,EAAO+tB,cAAc/e,EAChC,CAEA,SAASyf,GAAezf,EAAUhP,GAC9B,OAAOA,EAAOquB,gBAAgBrf,EAClC,CAEA,SAAS0f,GAAoB1f,EAAUhP,GACnC,OAAOA,EAAO2uB,sBAAwBpgB,EAC1C,CAEA,SAASyf,KACL,IAIIxuB,EACAge,EALAoR,EAAa,GACbC,EAAa,GACbC,EAAe,GACfxb,EAAc,GAGd4Z,EAAOzqB,KAAKyqB,OAEhB,IAAK1tB,EAAI,EAAGge,EAAI0P,EAAKnuB,OAAQS,EAAIge,IAAKhe,EAClCqvB,EAAWlvB,KAAKwP,GAAY+d,EAAK1tB,GAAGyF,OACpC2pB,EAAWjvB,KAAKwP,GAAY+d,EAAK1tB,GAAGoc,OACpCkT,EAAanvB,KAAKwP,GAAY+d,EAAK1tB,GAAGguB,SAEtCla,EAAY3T,KAAKwP,GAAY+d,EAAK1tB,GAAGyF,OACrCqO,EAAY3T,KAAKwP,GAAY+d,EAAK1tB,GAAGoc,OACrCtI,EAAY3T,KAAKwP,GAAY+d,EAAK1tB,GAAGguB,SAGzC/qB,KAAKyrB,WAAa,IAAI3oB,OAAO,KAAO+N,EAAY3O,KAAK,KAAO,IAAK,KACjElC,KAAKwrB,eAAiB,IAAI1oB,OAAO,KAAOspB,EAAWlqB,KAAK,KAAO,IAAK,KACpElC,KAAK2rB,eAAiB,IAAI7oB,OAAO,KAAOqpB,EAAWjqB,KAAK,KAAO,IAAK,KACpElC,KAAK6rB,iBAAmB,IAAI/oB,OACxB,KAAOupB,EAAanqB,KAAK,KAAO,IAChC,IAER,CAYA,SAASoqB,GAAuBpnB,EAAOqnB,GACnCtnB,EAAe,EAAG,CAACC,EAAOA,EAAM5I,QAAS,EAAGiwB,EAChD,CAyCA,SAASC,GAAehxB,GACpB,OAAOixB,GAAqB5wB,KACxBmE,KACAxE,EACAwE,KAAKiS,OACLjS,KAAKkS,UACLlS,KAAKsF,aAAasN,MAAMhB,IACxB5R,KAAKsF,aAAasN,MAAMf,IAEhC,CAEA,SAAS6a,GAAkBlxB,GACvB,OAAOixB,GAAqB5wB,KACxBmE,KACAxE,EACAwE,KAAKyhB,UACLzhB,KAAKgqB,aACL,EACA,EAER,CAEA,SAAS2C,KACL,OAAOla,GAAYzS,KAAK8J,OAAQ,EAAG,EACvC,CAEA,SAAS8iB,KACL,OAAOna,GAAYzS,KAAK6sB,cAAe,EAAG,EAC9C,CAEA,SAASC,KACL,IAAIC,EAAW/sB,KAAKsF,aAAasN,MACjC,OAAOH,GAAYzS,KAAK8J,OAAQijB,EAASnb,IAAKmb,EAASlb,IAC3D,CAEA,SAASmb,KACL,IAAID,EAAW/sB,KAAKsF,aAAasN,MACjC,OAAOH,GAAYzS,KAAKge,WAAY+O,EAASnb,IAAKmb,EAASlb,IAC/D,CAEA,SAAS4a,GAAqBjxB,EAAOyW,EAAMC,EAASN,EAAKC,GACrD,IAAIob,EACJ,OAAa,MAATzxB,EACO8W,GAAWtS,KAAM4R,EAAKC,GAAK/H,MAG9BmI,GADJgb,EAAcxa,GAAYjX,EAAOoW,EAAKC,MAElCI,EAAOgb,GAEJC,GAAWrxB,KAAKmE,KAAMxE,EAAOyW,EAAMC,EAASN,EAAKC,GAEhE,CAEA,SAASqb,GAAWlP,EAAU/L,EAAMC,EAASN,EAAKC,GAC9C,IAAIsb,EAAgBnb,GAAmBgM,EAAU/L,EAAMC,EAASN,EAAKC,GACjEjH,EAAO2G,GAAc4b,EAAcrjB,KAAM,EAAGqjB,EAAc9a,WAK9D,OAHArS,KAAK8J,KAAKc,EAAK6G,kBACfzR,KAAK2K,MAAMC,EAAKyS,eAChBrd,KAAK4K,KAAKA,EAAK0S,cACRtd,IACX,CAuBA,SAASotB,GAAc5xB,GACnB,OAAgB,MAATA,EACD+I,KAAKyF,MAAMhK,KAAK2K,QAAU,GAAK,GAC/B3K,KAAK2K,MAAoB,GAAbnP,EAAQ,GAAUwE,KAAK2K,QAAU,EACvD,CApaA1F,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpCmH,GAAc,IAAK0f,IACnB1f,GAAc,KAAM0f,IACpB1f,GAAc,MAAO0f,IACrB1f,GAAc,OAAQ2f,IACtB3f,GAAc,QAAS4f,IAEvB/e,GACI,CAAC,IAAK,KAAM,MAAO,OAAQ,UAC3B,SAAUzR,EAAOmK,EAAOxE,EAAQ+D,GAC5B,IAAI1G,EAAM2C,EAAOF,QAAQosB,UAAU7xB,EAAO0J,EAAO/D,EAAO3B,SACpDhB,EACAI,EAAgBuC,GAAQ3C,IAAMA,EAE9BI,EAAgBuC,GAAQjD,WAAa1C,CAE7C,IAGJ4Q,GAAc,IAAKN,IACnBM,GAAc,KAAMN,IACpBM,GAAc,MAAON,IACrBM,GAAc,OAAQN,IACtBM,GAAc,KAAM6f,IAEpBhf,GAAc,CAAC,IAAK,KAAM,MAAO,QAASO,IAC1CP,GAAc,CAAC,OAAO,SAAUzR,EAAOmK,EAAOxE,EAAQ+D,GAClD,IAAIM,EACArE,EAAOF,QAAQirB,uBACf1mB,EAAQhK,EAAMgK,MAAMrE,EAAOF,QAAQirB,uBAGnC/qB,EAAOF,QAAQqsB,oBACf3nB,EAAM6H,IAAQrM,EAAOF,QAAQqsB,oBAAoB9xB,EAAOgK,GAExDG,EAAM6H,IAAQwD,SAASxV,EAAO,GAEtC,IA0OAyJ,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOjF,KAAKge,WAAa,GAC7B,IAEA/Y,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOjF,KAAK6sB,cAAgB,GAChC,IAMAP,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhC3jB,GAAa,WAAY,MACzBA,GAAa,cAAe,MAI5BY,GAAgB,WAAY,GAC5BA,GAAgB,cAAe,GAI/B6C,GAAc,IAAKL,IACnBK,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,QAASP,GAAWN,IAElC4B,GACI,CAAC,OAAQ,QAAS,OAAQ,UAC1B,SAAU3R,EAAOyW,EAAM9Q,EAAQ+D,GAC3B+M,EAAK/M,EAAMN,OAAO,EAAG,IAAMsF,GAAM1O,EACrC,IAGJ2R,GAAkB,CAAC,KAAM,OAAO,SAAU3R,EAAOyW,EAAM9Q,EAAQ+D,GAC3D+M,EAAK/M,GAAShK,EAAM6V,kBAAkBvV,EAC1C,IAqEAyJ,EAAe,IAAK,EAAG,KAAM,WAI7B0D,GAAa,UAAW,KAIxBY,GAAgB,UAAW,GAI3B6C,GAAc,IAAKjB,IACnB8B,GAAc,KAAK,SAAUzR,EAAOmK,GAChCA,EAAM8H,IAA8B,GAApBvD,GAAM1O,GAAS,EACnC,IAYAyJ,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrC0D,GAAa,OAAQ,KAGrBY,GAAgB,OAAQ,GAIxB6C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,MAAM,SAAUG,EAAUhP,GAEpC,OAAOgP,EACDhP,EAAOwF,yBAA2BxF,EAAO0F,cACzC1F,EAAOsF,8BACjB,IAEAoK,GAAc,CAAC,IAAK,MAAOS,IAC3BT,GAAc,MAAM,SAAUzR,EAAOmK,GACjCA,EAAM+H,IAAQxD,GAAM1O,EAAMgK,MAAMgG,IAAW,GAC/C,IAIA,IAAI+hB,GAAmBhjB,GAAW,QAAQ,GAyB1C,SAASijB,GAAgBhyB,GACrB,IAAI6W,EACA9N,KAAK2d,OACAliB,KAAKojB,QAAQ+D,QAAQ,OAASnnB,KAAKojB,QAAQ+D,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAAT3rB,EAAgB6W,EAAYrS,KAAKiT,IAAIzX,EAAQ6W,EAAW,IACnE,CA3BApN,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3C0D,GAAa,YAAa,OAG1BY,GAAgB,YAAa,GAI7B6C,GAAc,MAAOT,IACrBS,GAAc,OAAQf,IACtB4B,GAAc,CAAC,MAAO,SAAS,SAAUzR,EAAOmK,EAAOxE,GACnDA,EAAO2c,WAAa5T,GAAM1O,EAC9B,IAgBAyJ,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlC0D,GAAa,SAAU,KAIvBY,GAAgB,SAAU,IAI1B6C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B6B,GAAc,CAAC,IAAK,MAAOW,IAI3B,IAAI6f,GAAeljB,GAAW,WAAW,GAIzCtF,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlC0D,GAAa,SAAU,KAIvBY,GAAgB,SAAU,IAI1B6C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B6B,GAAc,CAAC,IAAK,MAAOY,IAI3B,IA8CI3I,GAAOwoB,GA9CPC,GAAepjB,GAAW,WAAW,GA+CzC,IA3CAtF,EAAe,IAAK,EAAG,GAAG,WACtB,SAAUjF,KAAKggB,cAAgB,IACnC,IAEA/a,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,SAAUjF,KAAKggB,cAAgB,GACnC,IAEA/a,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAC9B,OAA4B,GAArBjF,KAAKggB,aAChB,IACA/a,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WAC/B,OAA4B,IAArBjF,KAAKggB,aAChB,IACA/a,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAChC,OAA4B,IAArBjF,KAAKggB,aAChB,IACA/a,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACjC,OAA4B,IAArBjF,KAAKggB,aAChB,IACA/a,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WAClC,OAA4B,IAArBjF,KAAKggB,aAChB,IACA/a,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACnC,OAA4B,IAArBjF,KAAKggB,aAChB,IAIArX,GAAa,cAAe,MAI5BY,GAAgB,cAAe,IAI/B6C,GAAc,IAAKT,GAAWR,IAC9BiB,GAAc,KAAMT,GAAWP,IAC/BgB,GAAc,MAAOT,GAAWN,IAG3BnG,GAAQ,OAAQA,GAAM5I,QAAU,EAAG4I,IAAS,IAC7CkH,GAAclH,GAAO4G,IAGzB,SAAS8hB,GAAQpyB,EAAOmK,GACpBA,EAAMmI,IAAe5D,GAAuB,KAAhB,KAAO1O,GACvC,CAEA,IAAK0J,GAAQ,IAAKA,GAAM5I,QAAU,EAAG4I,IAAS,IAC1C+H,GAAc/H,GAAO0oB,IAYzB,SAASC,KACL,OAAO7tB,KAAKe,OAAS,MAAQ,EACjC,CAEA,SAAS+sB,KACL,OAAO9tB,KAAKe,OAAS,6BAA+B,EACxD,CAfA2sB,GAAoBnjB,GAAW,gBAAgB,GAI/CtF,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAY3B,IAAI8oB,GAAQ7sB,EAAOvF,UAwGnB,SAASqyB,GAAWxyB,GAChB,OAAO+iB,GAAoB,IAAR/iB,EACvB,CAEA,SAASyyB,KACL,OAAO1P,GAAYpjB,MAAM,KAAMC,WAAW8yB,WAC9C,CAEA,SAASC,GAAmB9lB,GACxB,OAAOA,CACX,CAhHA0lB,GAAM9a,IAAMA,GACZ8a,GAAMlqB,SAAWkjB,GACjBgH,GAAM3K,MAAQA,GACd2K,GAAMtlB,KAAOA,GACbslB,GAAMzG,MAAQA,GACdyG,GAAMzwB,OAASA,GACfywB,GAAMztB,KAAOA,GACbytB,GAAM7E,QAAUA,GAChB6E,GAAM1tB,GAAKA,GACX0tB,GAAM5E,MAAQA,GACd4E,GAAMrjB,IAAMI,GACZijB,GAAMzD,UAAYA,GAClByD,GAAMzI,QAAUA,GAChByI,GAAMxI,SAAWA,GACjBwI,GAAMxG,UAAYA,GAClBwG,GAAMpG,OAASA,GACfoG,GAAMlG,cAAgBA,GACtBkG,GAAMjG,eAAiBA,GACvBiG,GAAMhvB,QAAUqrB,GAChB2D,GAAM1E,KAAOA,GACb0E,GAAMxwB,OAASA,GACfwwB,GAAMzoB,WAAaA,GACnByoB,GAAMppB,IAAM6b,GACZuN,GAAM7d,IAAMoQ,GACZyN,GAAM1D,aAAeA,GACrB0D,GAAMprB,IAAMoI,GACZgjB,GAAM5G,QAAUA,GAChB4G,GAAM7J,SAAWA,GACjB6J,GAAMtJ,QAAUA,GAChBsJ,GAAM7D,SAAWA,GACjB6D,GAAMxF,OAASA,GACfwF,GAAM1F,YAAcA,GACpB0F,GAAMvF,QAAUA,GACM,qBAAX4F,QAAwC,MAAdA,OAAOC,MACxCN,GAAMK,OAAOC,IAAI,+BAAiC,WAC9C,MAAO,UAAYruB,KAAK1C,SAAW,GACvC,GAEJywB,GAAM5D,OAASA,GACf4D,GAAMnyB,SAAWA,GACjBmyB,GAAM9D,KAAOA,GACb8D,GAAM3wB,QAAUA,GAChB2wB,GAAMxD,aAAeA,GACrBwD,GAAMjD,QAAUI,GAChB6C,GAAMO,UAAYnD,GAClB4C,GAAMQ,QAAUnD,GAChB2C,GAAMS,QAAUnD,GAChB0C,GAAMjkB,KAAOmH,GACb8c,GAAMlkB,WAAaqH,GACnB6c,GAAM/P,SAAWwO,GACjBuB,GAAMlB,YAAcH,GACpBqB,GAAMxM,QAAUwM,GAAMzM,SAAW8L,GACjCW,GAAMpjB,MAAQwF,GACd4d,GAAMljB,YAAcuF,GACpB2d,GAAM9b,KAAO8b,GAAMvM,MAAQxO,GAC3B+a,GAAMtM,QAAUsM,GAAMU,SAAWvb,GACjC6a,GAAMtb,YAAcqa,GACpBiB,GAAMW,gBAAkB1B,GACxBe,GAAMY,eAAiBhC,GACvBoB,GAAMa,sBAAwBhC,GAC9BmB,GAAMnjB,KAAO2iB,GACbQ,GAAMxZ,IAAMwZ,GAAMrM,KAAOtM,GACzB2Y,GAAM7b,QAAUoD,GAChByY,GAAM/D,WAAazU,GACnBwY,GAAM1b,UAAYmb,GAClBO,GAAM/O,KAAO+O,GAAM3X,MAAQiB,GAC3B0W,GAAMjO,OAASiO,GAAMxX,QAAUkX,GAC/BM,GAAMhO,OAASgO,GAAMnX,QAAU+W,GAC/BI,GAAM/N,YAAc+N,GAAMpM,aAAe+L,GACzCK,GAAMpL,UAAYc,GAClBsK,GAAMrwB,IAAMsmB,GACZ+J,GAAMzK,MAAQW,GACd8J,GAAMG,UAAY/J,GAClB4J,GAAM1J,qBAAuBA,GAC7B0J,GAAMc,MAAQvK,GACdyJ,GAAMrJ,QAAUA,GAChBqJ,GAAMpJ,YAAcA,GACpBoJ,GAAMnJ,MAAQA,GACdmJ,GAAM1N,MAAQuE,GACdmJ,GAAMe,SAAWjB,GACjBE,GAAMgB,SAAWjB,GACjBC,GAAMiB,MAAQttB,EACV,kDACA6rB,IAEJQ,GAAMxf,OAAS7M,EACX,mDACAyO,IAEJ4d,GAAM1M,MAAQ3f,EACV,iDACAuP,IAEJ8c,GAAMnF,KAAOlnB,EACT,2GACAqiB,IAEJgK,GAAMkB,aAAevtB,EACjB,0GACA6iB,IAeJ,IAAI2K,GAAU7rB,EAAO1H,UAuCrB,SAASwzB,GAAM7xB,EAAQ8xB,EAAOC,EAAOC,GACjC,IAAI/xB,EAAS0b,KACTvb,EAAML,IAAYsF,IAAI2sB,EAAQF,GAClC,OAAO7xB,EAAO8xB,GAAO3xB,EAAKJ,EAC9B,CAEA,SAASiyB,GAAejyB,EAAQ8xB,EAAOC,GAQnC,GAPI5yB,EAASa,KACT8xB,EAAQ9xB,EACRA,OAASmC,GAGbnC,EAASA,GAAU,GAEN,MAAT8xB,EACA,OAAOD,GAAM7xB,EAAQ8xB,EAAOC,EAAO,SAGvC,IAAItyB,EACAyyB,EAAM,GACV,IAAKzyB,EAAI,EAAGA,EAAI,GAAIA,IAChByyB,EAAIzyB,GAAKoyB,GAAM7xB,EAAQP,EAAGsyB,EAAO,SAErC,OAAOG,CACX,CAUA,SAASC,GAAiBC,EAAcpyB,EAAQ8xB,EAAOC,GACvB,mBAAjBK,GACHjzB,EAASa,KACT8xB,EAAQ9xB,EACRA,OAASmC,GAGbnC,EAASA,GAAU,KAGnB8xB,EADA9xB,EAASoyB,EAETA,GAAe,EAEXjzB,EAASa,KACT8xB,EAAQ9xB,EACRA,OAASmC,GAGbnC,EAASA,GAAU,IAGvB,IAEIP,EAFAQ,EAAS0b,KACT0W,EAAQD,EAAenyB,EAAOqV,MAAMhB,IAAM,EAE1C4d,EAAM,GAEV,GAAa,MAATJ,EACA,OAAOD,GAAM7xB,GAAS8xB,EAAQO,GAAS,EAAGN,EAAO,OAGrD,IAAKtyB,EAAI,EAAGA,EAAI,EAAGA,IACfyyB,EAAIzyB,GAAKoyB,GAAM7xB,GAASP,EAAI4yB,GAAS,EAAGN,EAAO,OAEnD,OAAOG,CACX,CAEA,SAASI,GAAWtyB,EAAQ8xB,GACxB,OAAOG,GAAejyB,EAAQ8xB,EAAO,SACzC,CAEA,SAASS,GAAgBvyB,EAAQ8xB,GAC7B,OAAOG,GAAejyB,EAAQ8xB,EAAO,cACzC,CAEA,SAASU,GAAaJ,EAAcpyB,EAAQ8xB,GACxC,OAAOK,GAAiBC,EAAcpyB,EAAQ8xB,EAAO,WACzD,CAEA,SAASW,GAAkBL,EAAcpyB,EAAQ8xB,GAC7C,OAAOK,GAAiBC,EAAcpyB,EAAQ8xB,EAAO,gBACzD,CAEA,SAASY,GAAgBN,EAAcpyB,EAAQ8xB,GAC3C,OAAOK,GAAiBC,EAAcpyB,EAAQ8xB,EAAO,cACzD,CA7HAF,GAAQrrB,SAAWA,EACnBqrB,GAAQlpB,eAAiBA,EACzBkpB,GAAQppB,YAAcA,EACtBopB,GAAQ9pB,QAAUA,EAClB8pB,GAAQ/O,SAAWgO,GACnBe,GAAQlG,WAAamF,GACrBe,GAAQ/mB,aAAeA,EACvB+mB,GAAQ1mB,WAAaA,GACrB0mB,GAAQvsB,IAAMA,EACdusB,GAAQzE,KAAOD,GACf0E,GAAQ7B,UAAYxC,GACpBqE,GAAQnQ,gBAAkBiM,GAC1BkE,GAAQxD,cAAgBA,GACxBwD,GAAQ5D,cAAgBA,GACxB4D,GAAQtD,gBAAkBA,GAE1BsD,GAAQ3gB,OAASU,GACjBigB,GAAQ5gB,YAAcc,GACtB8f,GAAQxgB,YAAcoB,GACtBof,GAAQzgB,YAAcA,GACtBygB,GAAQ1gB,iBAAmBA,GAC3B0gB,GAAQjd,KAAOU,GACfuc,GAAQe,eAAiBld,GACzBmc,GAAQgB,eAAiBpd,GAEzBoc,GAAQvb,SAAWU,GACnB6a,GAAQzb,YAAciB,GACtBwa,GAAQxb,cAAgBc,GACxB0a,GAAQ9b,cAAgB6B,GAExBia,GAAQpb,cAAgBA,GACxBob,GAAQrb,mBAAqBA,GAC7Bqb,GAAQtb,iBAAmBA,GAE3Bsb,GAAQnY,KAAOL,GACfwY,GAAQzwB,SAAW6Y,GA4FnBuB,GAAmB,KAAM,CACrB4R,KAAM,CACF,CACIE,MAAO,aACPC,MAAO,IACPnI,OAAQ,EACRjgB,KAAM,cACNuoB,OAAQ,KACR5R,KAAM,MAEV,CACIwR,MAAO,aACPC,OAAO,IACPnI,OAAQ,EACRjgB,KAAM,gBACNuoB,OAAQ,KACR5R,KAAM,OAGdzB,uBAAwB,uBACxBtS,QAAS,SAAUjB,GACf,IAAIlI,EAAIkI,EAAS,GAWjB,OAAOA,GATgC,IAA/B+F,GAAO/F,EAAS,IAAO,IACjB,KACM,IAANlI,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,IAKJf,EAAMmuB,KAAO3nB,EACT,wDACAmX,IAEJ3d,EAAMi1B,SAAWzuB,EACb,gEACAuX,IAGJ,IAAImX,GAAU7rB,KAAKC,IAEnB,SAASA,KACL,IAAIwU,EAAOhZ,KAAK8hB,MAahB,OAXA9hB,KAAK4hB,cAAgBwO,GAAQpwB,KAAK4hB,eAClC5hB,KAAK6hB,MAAQuO,GAAQpwB,KAAK6hB,OAC1B7hB,KAAKkP,QAAUkhB,GAAQpwB,KAAKkP,SAE5B8J,EAAK2I,aAAeyO,GAAQpX,EAAK2I,cACjC3I,EAAKpC,QAAUwZ,GAAQpX,EAAKpC,SAC5BoC,EAAKzC,QAAU6Z,GAAQpX,EAAKzC,SAC5ByC,EAAK5C,MAAQga,GAAQpX,EAAK5C,OAC1B4C,EAAKzK,OAAS6hB,GAAQpX,EAAKzK,QAC3ByK,EAAKqI,MAAQ+O,GAAQpX,EAAKqI,OAEnBrhB,IACX,CAEA,SAASqwB,GAAcjP,EAAU5lB,EAAO6O,EAAOob,GAC3C,IAAIlF,EAAQW,GAAe1lB,EAAO6O,GAMlC,OAJA+W,EAASQ,eAAiB6D,EAAYlF,EAAMqB,cAC5CR,EAASS,OAAS4D,EAAYlF,EAAMsB,MACpCT,EAASlS,SAAWuW,EAAYlF,EAAMrR,QAE/BkS,EAASW,SACpB,CAGA,SAASuO,GAAM90B,EAAO6O,GAClB,OAAOgmB,GAAcrwB,KAAMxE,EAAO6O,EAAO,EAC7C,CAGA,SAASkmB,GAAW/0B,EAAO6O,GACvB,OAAOgmB,GAAcrwB,KAAMxE,EAAO6O,GAAQ,EAC9C,CAEA,SAASmmB,GAAQrsB,GACb,OAAIA,EAAS,EACFI,KAAK0F,MAAM9F,GAEXI,KAAKyF,KAAK7F,EAEzB,CAEA,SAASssB,KACL,IAII7Z,EACAL,EACAH,EACAiL,EACAqP,EARA/O,EAAe3hB,KAAK4hB,cACpBF,EAAO1hB,KAAK6hB,MACZtT,EAASvO,KAAKkP,QACd8J,EAAOhZ,KAAK8hB,MAgDhB,OArCSH,GAAgB,GAAKD,GAAQ,GAAKnT,GAAU,GAC5CoT,GAAgB,GAAKD,GAAQ,GAAKnT,GAAU,IAGjDoT,GAAuD,MAAvC6O,GAAQG,GAAapiB,GAAUmT,GAC/CA,EAAO,EACPnT,EAAS,GAKbyK,EAAK2I,aAAeA,EAAe,IAEnC/K,EAAU7M,GAAS4X,EAAe,KAClC3I,EAAKpC,QAAUA,EAAU,GAEzBL,EAAUxM,GAAS6M,EAAU,IAC7BoC,EAAKzC,QAAUA,EAAU,GAEzBH,EAAQrM,GAASwM,EAAU,IAC3ByC,EAAK5C,MAAQA,EAAQ,GAErBsL,GAAQ3X,GAASqM,EAAQ,IAIzB7H,GADAmiB,EAAiB3mB,GAAS6mB,GAAalP,IAEvCA,GAAQ8O,GAAQG,GAAaD,IAG7BrP,EAAQtX,GAASwE,EAAS,IAC1BA,GAAU,GAEVyK,EAAK0I,KAAOA,EACZ1I,EAAKzK,OAASA,EACdyK,EAAKqI,MAAQA,EAENrhB,IACX,CAEA,SAAS4wB,GAAalP,GAGlB,OAAe,KAAPA,EAAe,MAC3B,CAEA,SAASiP,GAAapiB,GAElB,OAAiB,OAATA,EAAmB,IAC/B,CAEA,SAASsiB,GAAG5nB,GACR,IAAKjJ,KAAKjB,UACN,OAAOc,IAEX,IAAI6hB,EACAnT,EACAoT,EAAe3hB,KAAK4hB,cAIxB,GAAc,WAFd3Y,EAAQD,GAAeC,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFAyY,EAAO1hB,KAAK6hB,MAAQF,EAAe,MACnCpT,EAASvO,KAAKkP,QAAU0hB,GAAalP,GAC7BzY,GACJ,IAAK,QACD,OAAOsF,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADAmT,EAAO1hB,KAAK6hB,MAAQtd,KAAK2d,MAAMyO,GAAa3wB,KAAKkP,UACzCjG,GACJ,IAAK,OACD,OAAOyY,EAAO,EAAIC,EAAe,OACrC,IAAK,MACD,OAAOD,EAAOC,EAAe,MACjC,IAAK,OACD,OAAc,GAAPD,EAAYC,EAAe,KACtC,IAAK,SACD,OAAc,KAAPD,EAAcC,EAAe,IACxC,IAAK,SACD,OAAc,MAAPD,EAAeC,EAAe,IAEzC,IAAK,cACD,OAAOpd,KAAK0F,MAAa,MAAPyX,GAAgBC,EACtC,QACI,MAAM,IAAIxf,MAAM,gBAAkB8G,GAGlD,CAGA,SAAS6nB,KACL,OAAK9wB,KAAKjB,UAINiB,KAAK4hB,cACQ,MAAb5hB,KAAK6hB,MACJ7hB,KAAKkP,QAAU,GAAM,OACK,QAA3BhF,GAAMlK,KAAKkP,QAAU,IANdrP,GAQf,CAEA,SAASkxB,GAAOC,GACZ,OAAO,WACH,OAAOhxB,KAAK6wB,GAAGG,EACnB,CACJ,CAEA,IAAIC,GAAiBF,GAAO,MACxBG,GAAYH,GAAO,KACnBI,GAAYJ,GAAO,KACnBK,GAAUL,GAAO,KACjBM,GAASN,GAAO,KAChBO,GAAUP,GAAO,KACjBQ,GAAWR,GAAO,KAClBS,GAAaT,GAAO,KACpBU,GAAUV,GAAO,KAErB,SAASW,KACL,OAAOxQ,GAAelhB,KAC1B,CAEA,SAAS2xB,GAAM1oB,GAEX,OADAA,EAAQD,GAAeC,GAChBjJ,KAAKjB,UAAYiB,KAAKiJ,EAAQ,OAASpJ,GAClD,CAEA,SAAS+xB,GAAWpvB,GAChB,OAAO,WACH,OAAOxC,KAAKjB,UAAYiB,KAAK8hB,MAAMtf,GAAQ3C,GAC/C,CACJ,CAEA,IAAI8hB,GAAeiQ,GAAW,gBAC1Bhb,GAAUgb,GAAW,WACrBrb,GAAUqb,GAAW,WACrBxb,GAAQwb,GAAW,SACnBlQ,GAAOkQ,GAAW,QAClBrjB,GAASqjB,GAAW,UACpBvQ,GAAQuQ,GAAW,SAEvB,SAASpQ,KACL,OAAOzX,GAAS/J,KAAK0hB,OAAS,EAClC,CAEA,IAAIQ,GAAQ3d,KAAK2d,MACb2P,GAAa,CACTtqB,GAAI,GACJD,EAAG,GACHzI,EAAG,GACH4I,EAAG,GACHE,EAAG,GACHE,EAAG,KACHE,EAAG,IAIX,SAAS+pB,GAAkBzpB,EAAQlE,EAAQiE,EAAeE,EAAU/K,GAChE,OAAOA,EAAO4K,aAAahE,GAAU,IAAKiE,EAAeC,EAAQC,EACrE,CAEA,SAASypB,GAAeC,EAAgB5pB,EAAeypB,EAAYt0B,GAC/D,IAAI6jB,EAAWF,GAAe8Q,GAAgBxtB,MAC1CoS,EAAUsL,GAAMd,EAASyP,GAAG,MAC5Bta,EAAU2L,GAAMd,EAASyP,GAAG,MAC5Bza,EAAQ8L,GAAMd,EAASyP,GAAG,MAC1BnP,EAAOQ,GAAMd,EAASyP,GAAG,MACzBtiB,EAAS2T,GAAMd,EAASyP,GAAG,MAC3BrP,EAAQU,GAAMd,EAASyP,GAAG,MAC1BxP,EAAQa,GAAMd,EAASyP,GAAG,MAC1B70B,EACK4a,GAAWib,EAAWtqB,IAAM,CAAC,IAAKqP,IAClCA,EAAUib,EAAWvqB,GAAK,CAAC,KAAMsP,IACjCL,GAAW,GAAK,CAAC,MACjBA,EAAUsb,EAAWhzB,GAAK,CAAC,KAAM0X,IACjCH,GAAS,GAAK,CAAC,MACfA,EAAQyb,EAAWpqB,GAAK,CAAC,KAAM2O,IAC/BsL,GAAQ,GAAK,CAAC,MACdA,EAAOmQ,EAAWlqB,GAAK,CAAC,KAAM+Z,GAgBvC,OAdoB,MAAhBmQ,EAAWhqB,IACX7L,EACIA,GACCwlB,GAAS,GAAK,CAAC,MACfA,EAAQqQ,EAAWhqB,GAAK,CAAC,KAAM2Z,KAExCxlB,EAAIA,GACCuS,GAAU,GAAK,CAAC,MAChBA,EAASsjB,EAAW9pB,GAAK,CAAC,KAAMwG,IAChC8S,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,IAElC,GAAKjZ,EACPpM,EAAE,IAAMg2B,EAAiB,EACzBh2B,EAAE,GAAKuB,EACAu0B,GAAkB32B,MAAM,KAAMa,EACzC,CAGA,SAASi2B,GAA2BC,GAChC,YAAyBzyB,IAArByyB,EACOhQ,GAEqB,oBAArBgQ,IACPhQ,GAAQgQ,GACD,EAGf,CAGA,SAASC,GAA4BC,EAAWC,GAC5C,YAA8B5yB,IAA1BoyB,GAAWO,UAGD3yB,IAAV4yB,EACOR,GAAWO,IAEtBP,GAAWO,GAAaC,EACN,MAAdD,IACAP,GAAWtqB,GAAK8qB,EAAQ,IAErB,GACX,CAEA,SAASpJ,GAASqJ,EAAeC,GAC7B,IAAKvyB,KAAKjB,UACN,OAAOiB,KAAKsF,aAAaQ,cAG7B,IAEIvI,EACAyG,EAHAwuB,GAAa,EACbC,EAAKZ,GAyBT,MArB6B,kBAAlBS,IACPC,EAAgBD,EAChBA,GAAgB,GAES,mBAAlBA,IACPE,EAAaF,GAEY,kBAAlBC,IACPE,EAAK/2B,OAAOg3B,OAAO,CAAC,EAAGb,GAAYU,GACZ,MAAnBA,EAAcjrB,GAAiC,MAApBirB,EAAchrB,KACzCkrB,EAAGlrB,GAAKgrB,EAAcjrB,EAAI,IAKlCtD,EAAS+tB,GAAe/xB,MAAOwyB,EAAYC,EAD3Cl1B,EAASyC,KAAKsF,cAGVktB,IACAxuB,EAASzG,EAAOiL,YAAYxI,KAAMgE,IAG/BzG,EAAOyrB,WAAWhlB,EAC7B,CAEA,IAAI2uB,GAAQpuB,KAAKC,IAEjB,SAASoe,GAAKzU,GACV,OAAQA,EAAI,IAAMA,EAAI,KAAOA,CACjC,CAEA,SAASykB,KAQL,IAAK5yB,KAAKjB,UACN,OAAOiB,KAAKsF,aAAaQ,cAG7B,IAGIyQ,EACAH,EACAiL,EACA/Z,EAEAurB,EACAC,EACAC,EACAC,EAXApc,EAAU+b,GAAM3yB,KAAK4hB,eAAiB,IACtCF,EAAOiR,GAAM3yB,KAAK6hB,OAClBtT,EAASokB,GAAM3yB,KAAKkP,SAKpB+jB,EAAQjzB,KAAKkxB,YAMjB,OAAK+B,GAOL1c,EAAUxM,GAAS6M,EAAU,IAC7BR,EAAQrM,GAASwM,EAAU,IAC3BK,GAAW,GACXL,GAAW,GAGX8K,EAAQtX,GAASwE,EAAS,IAC1BA,GAAU,GAGVjH,EAAIsP,EAAUA,EAAQsc,QAAQ,GAAGztB,QAAQ,SAAU,IAAM,GAEzDotB,EAAYI,EAAQ,EAAI,IAAM,GAC9BH,EAASlQ,GAAK5iB,KAAKkP,WAAa0T,GAAKqQ,GAAS,IAAM,GACpDF,EAAWnQ,GAAK5iB,KAAK6hB,SAAWe,GAAKqQ,GAAS,IAAM,GACpDD,EAAUpQ,GAAK5iB,KAAK4hB,iBAAmBgB,GAAKqQ,GAAS,IAAM,GAGvDJ,EACA,KACCxR,EAAQyR,EAASzR,EAAQ,IAAM,KAC/B9S,EAASukB,EAASvkB,EAAS,IAAM,KACjCmT,EAAOqR,EAAWrR,EAAO,IAAM,KAC/BtL,GAASG,GAAWK,EAAU,IAAM,KACpCR,EAAQ4c,EAAU5c,EAAQ,IAAM,KAChCG,EAAUyc,EAAUzc,EAAU,IAAM,KACpCK,EAAUoc,EAAU1rB,EAAI,IAAM,KA9BxB,KAgCf,CAEA,IAAI6rB,GAAUhS,GAASxlB,UAwGvB,OAtGAw3B,GAAQp0B,QAAUiiB,GAClBmS,GAAQ3uB,IAAMA,GACd2uB,GAAQlgB,IAAMqd,GACd6C,GAAQjP,SAAWqM,GACnB4C,GAAQtC,GAAKA,GACbsC,GAAQlC,eAAiBA,GACzBkC,GAAQjC,UAAYA,GACpBiC,GAAQhC,UAAYA,GACpBgC,GAAQ/B,QAAUA,GAClB+B,GAAQ9B,OAASA,GACjB8B,GAAQ7B,QAAUA,GAClB6B,GAAQ5B,SAAWA,GACnB4B,GAAQ3B,WAAaA,GACrB2B,GAAQ1B,QAAUA,GAClB0B,GAAQ/1B,QAAU0zB,GAClBqC,GAAQpR,QAAU0O,GAClB0C,GAAQ/P,MAAQsO,GAChByB,GAAQzoB,IAAMinB,GACdwB,GAAQxR,aAAeA,GACvBwR,GAAQvc,QAAUA,GAClBuc,GAAQ5c,QAAUA,GAClB4c,GAAQ/c,MAAQA,GAChB+c,GAAQzR,KAAOA,GACfyR,GAAQ3R,MAAQA,GAChB2R,GAAQ5kB,OAASA,GACjB4kB,GAAQ9R,MAAQA,GAChB8R,GAAQlK,SAAWA,GACnBkK,GAAQ9K,YAAcuK,GACtBO,GAAQv3B,SAAWg3B,GACnBO,GAAQhJ,OAASyI,GACjBO,GAAQ51B,OAASA,GACjB41B,GAAQ7tB,WAAaA,GAErB6tB,GAAQC,YAAc1xB,EAClB,sFACAkxB,IAEJO,GAAQ9J,KAAOA,GAIfpkB,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BmH,GAAc,IAAKL,IACnBK,GAAc,IAAKF,IACnBe,GAAc,KAAK,SAAUzR,EAAOmK,EAAOxE,GACvCA,EAAO9B,GAAK,IAAI1C,KAAyB,IAApBokB,WAAWvlB,GACpC,IACAyR,GAAc,KAAK,SAAUzR,EAAOmK,EAAOxE,GACvCA,EAAO9B,GAAK,IAAI1C,KAAKuN,GAAM1O,GAC/B,IAIAN,EAAMm4B,QAAU,SAEhBh4B,EAAgBkjB,IAEhBrjB,EAAM4B,GAAKixB,GACX7yB,EAAMgV,IAAMA,GACZhV,EAAMyJ,IAAMA,GACZzJ,EAAM6I,IAAMA,GACZ7I,EAAMwC,IAAML,EACZnC,EAAM+uB,KAAO+D,GACb9yB,EAAMqT,OAASqhB,GACf10B,EAAMwB,OAASA,EACfxB,EAAMqC,OAASsb,GACf3d,EAAM2qB,QAAUjmB,EAChB1E,EAAMkmB,SAAWF,GACjBhmB,EAAMmG,SAAWA,EACjBnG,EAAMyY,SAAWmc,GACjB50B,EAAMgzB,UAAYD,GAClB/yB,EAAMoK,WAAa2T,GACnB/d,EAAM8mB,WAAaA,GACnB9mB,EAAMoT,YAAcuhB,GACpB30B,EAAMuY,YAAcuc,GACpB90B,EAAMge,aAAeA,GACrBhe,EAAMoe,aAAeA,GACrBpe,EAAM0c,QAAU4B,GAChBte,EAAMwY,cAAgBqc,GACtB70B,EAAM8N,eAAiBA,GACvB9N,EAAMo4B,qBAAuBrB,GAC7B/2B,EAAMq4B,sBAAwBpB,GAC9Bj3B,EAAMksB,eAAiBP,GACvB3rB,EAAMS,UAAYoyB,GAGlB7yB,EAAMs4B,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnBjmB,KAAM,aACNkmB,KAAM,QACNC,aAAc,WACdC,QAAS,eACT/lB,KAAM,aACNN,MAAO,WAGJvS,CAEX,CA7iLoF64B,+BCKvE,IAAIC,EAAGC,EAAQ,KAASC,EAAGD,EAAQ,KAAa,SAASE,EAAEn4B,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEihB,EAAE,EAAEA,EAAE7hB,UAAUkB,OAAO2gB,IAAIhhB,GAAG,WAAWm4B,mBAAmBh5B,UAAU6hB,IAAI,MAAM,yBAAyBjhB,EAAE,WAAWC,EAAE,gHAAgH,CAAC,IAAIo4B,EAAG,IAAIC,IAAIC,EAAG,CAAC,EAAE,SAASC,EAAGx4B,EAAEC,GAAGw4B,EAAGz4B,EAAEC,GAAGw4B,EAAGz4B,EAAE,UAAUC,EAAE,CACxb,SAASw4B,EAAGz4B,EAAEC,GAAW,IAARs4B,EAAGv4B,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAEK,OAAON,IAAIq4B,EAAGphB,IAAIhX,EAAED,GAAG,CAC5D,IAAI04B,IAAK,qBAAqBC,QAAQ,qBAAqBA,OAAOC,UAAU,qBAAqBD,OAAOC,SAASC,eAAeC,EAAGp5B,OAAOC,UAAUO,eAAe64B,EAAG,8VAA8VC,EACpgB,CAAC,EAAEC,EAAG,CAAC,EACiN,SAASC,EAAEl5B,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,EAAEC,GAAGp1B,KAAKq1B,gBAAgB,IAAIp5B,GAAG,IAAIA,GAAG,IAAIA,EAAE+D,KAAKs1B,cAAc3tB,EAAE3H,KAAKu1B,mBAAmBzc,EAAE9Y,KAAKw1B,gBAAgBvY,EAAEjd,KAAKy1B,aAAaz5B,EAAEgE,KAAK01B,KAAKz5B,EAAE+D,KAAK21B,YAAYR,EAAEn1B,KAAK41B,kBAAkBR,CAAC,CAAC,IAAIS,EAAE,CAAC,EACpb,uIAAuIjnB,MAAM,KAAKyK,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAeqd,SAAQ,SAASrd,GAAG,IAAIC,EAAED,EAAE,GAAG65B,EAAE55B,GAAG,IAAIi5B,EAAEj5B,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASqd,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE+M,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiBsQ,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8O4S,MAAM,KAAKyK,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE+M,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAYsQ,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYqd,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQqd,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASqd,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE+M,cAAc,MAAK,GAAG,EAAG,IAAG,IAAI+sB,EAAG,gBAAgB,SAASC,EAAG/5B,GAAG,OAAOA,EAAE,GAAG4K,aAAa,CAIxZ,SAASovB,EAAGh6B,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE+c,EAAE35B,eAAeD,GAAG45B,EAAE55B,GAAG,MAAQ,OAAO6c,EAAE,IAAIA,EAAE4c,KAAK/tB,KAAK,EAAE1L,EAAEK,SAAS,MAAML,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAYD,EAAEC,EAAEghB,EAAEtV,GAAG,GAAG,OAAO1L,GAAG,qBAAqBA,GADqE,SAAYD,EAAEC,EAAEghB,EAAEtV,GAAG,GAAG,OAAOsV,GAAG,IAAIA,EAAEyY,KAAK,OAAM,EAAG,cAAcz5B,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAG0L,IAAc,OAAOsV,GAASA,EAAEoY,gBAAmD,WAAnCr5B,EAAEA,EAAE+M,cAAc9G,MAAM,EAAE,KAAsB,UAAUjG,GAAE,QAAQ,OAAM,EAAG,CAC/Ti6B,CAAGj6B,EAAEC,EAAEghB,EAAEtV,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOsV,EAAE,OAAOA,EAAEyY,MAAM,KAAK,EAAE,OAAOz5B,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOmD,MAAMnD,GAAG,KAAK,EAAE,OAAOmD,MAAMnD,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOtEi6B,CAAGj6B,EAAEghB,EAAEnE,EAAEnR,KAAKsV,EAAE,MAAMtV,GAAG,OAAOmR,EARxK,SAAY9c,GAAG,QAAG84B,EAAGj5B,KAAKo5B,EAAGj5B,KAAe84B,EAAGj5B,KAAKm5B,EAAGh5B,KAAe+4B,EAAG7uB,KAAKlK,GAAUi5B,EAAGj5B,IAAG,GAAGg5B,EAAGh5B,IAAG,GAAS,GAAE,CAQwDm6B,CAAGl6B,KAAK,OAAOghB,EAAEjhB,EAAEo6B,gBAAgBn6B,GAAGD,EAAEq6B,aAAap6B,EAAE,GAAGghB,IAAInE,EAAE0c,gBAAgBx5B,EAAE8c,EAAE2c,cAAc,OAAOxY,EAAE,IAAInE,EAAE4c,MAAQ,GAAGzY,GAAGhhB,EAAE6c,EAAEwc,cAAc3tB,EAAEmR,EAAEyc,mBAAmB,OAAOtY,EAAEjhB,EAAEo6B,gBAAgBn6B,IAAaghB,EAAE,KAAXnE,EAAEA,EAAE4c,OAAc,IAAI5c,IAAG,IAAKmE,EAAE,GAAG,GAAGA,EAAEtV,EAAE3L,EAAEs6B,eAAe3uB,EAAE1L,EAAEghB,GAAGjhB,EAAEq6B,aAAap6B,EAAEghB,KAAI,CAHjd,0jCAA0jCrO,MAAM,KAAKyK,SAAQ,SAASrd,GAAG,IAAIC,EAAED,EAAEyJ,QAAQqwB,EACzmCC,GAAIF,EAAE55B,GAAG,IAAIi5B,EAAEj5B,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2E4S,MAAM,KAAKyK,SAAQ,SAASrd,GAAG,IAAIC,EAAED,EAAEyJ,QAAQqwB,EAAGC,GAAIF,EAAE55B,GAAG,IAAIi5B,EAAEj5B,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAaqd,SAAQ,SAASrd,GAAG,IAAIC,EAAED,EAAEyJ,QAAQqwB,EAAGC,GAAIF,EAAE55B,GAAG,IAAIi5B,EAAEj5B,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAeqd,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE+M,cAAc,MAAK,GAAG,EAAG,IACld8sB,EAAEU,UAAU,IAAIrB,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc7b,SAAQ,SAASrd,GAAG65B,EAAE75B,GAAG,IAAIk5B,EAAEl5B,EAAE,GAAE,EAAGA,EAAE+M,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAIytB,EAAGxC,EAAGyC,mDAAmDC,EAAGtI,OAAOC,IAAI,iBAAiBsI,EAAGvI,OAAOC,IAAI,gBAAgBuI,EAAGxI,OAAOC,IAAI,kBAAkBwI,EAAGzI,OAAOC,IAAI,qBAAqByI,EAAG1I,OAAOC,IAAI,kBAAkB0I,EAAG3I,OAAOC,IAAI,kBAAkB2I,EAAG5I,OAAOC,IAAI,iBAAiB4I,EAAG7I,OAAOC,IAAI,qBAAqB6I,EAAG9I,OAAOC,IAAI,kBAAkB8I,EAAG/I,OAAOC,IAAI,uBAAuB+I,EAAGhJ,OAAOC,IAAI,cAAcgJ,EAAGjJ,OAAOC,IAAI,cAAcD,OAAOC,IAAI,eAAeD,OAAOC,IAAI,0BACje,IAAIiJ,EAAGlJ,OAAOC,IAAI,mBAAmBD,OAAOC,IAAI,uBAAuBD,OAAOC,IAAI,eAAeD,OAAOC,IAAI,wBAAwB,IAAIkJ,EAAGnJ,OAAOoJ,SAAS,SAASC,EAAGz7B,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEu7B,GAAIv7B,EAAEu7B,IAAKv7B,EAAE,eAA0CA,EAAE,IAAI,CAAC,IAAoB07B,EAAhBC,EAAEj8B,OAAOg3B,OAAU,SAASkF,EAAG57B,GAAG,QAAG,IAAS07B,EAAG,IAAI,MAAMv1B,OAAQ,CAAC,MAAM8a,GAAG,IAAIhhB,EAAEghB,EAAE7a,MAAMy1B,OAAOryB,MAAM,gBAAgBkyB,EAAGz7B,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAKy7B,EAAG17B,CAAC,CAAC,IAAI87B,GAAG,EACzb,SAASC,EAAG/7B,EAAEC,GAAG,IAAID,GAAG87B,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAI7a,EAAE9a,MAAM61B,kBAAkB71B,MAAM61B,uBAAkB,EAAO,IAAI,GAAG/7B,EAAE,GAAGA,EAAE,WAAW,MAAMkG,OAAQ,EAAEzG,OAAOu8B,eAAeh8B,EAAEN,UAAU,QAAQ,CAACgH,IAAI,WAAW,MAAMR,OAAQ,IAAI,kBAAkB+1B,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAUl8B,EAAE,GAAG,CAAC,MAAM8e,GAAG,IAAIpT,EAAEoT,CAAC,CAACmd,QAAQC,UAAUn8B,EAAE,GAAGC,EAAE,KAAK,CAAC,IAAIA,EAAEJ,MAAM,CAAC,MAAMkf,GAAGpT,EAAEoT,CAAC,CAAC/e,EAAEH,KAAKI,EAAEN,UAAU,KAAK,CAAC,IAAI,MAAMwG,OAAQ,CAAC,MAAM4Y,GAAGpT,EAAEoT,CAAC,CAAC/e,GAAG,CAAC,CAAC,MAAM+e,GAAG,GAAGA,GAAGpT,GAAG,kBAAkBoT,EAAE3Y,MAAM,CAAC,IAAI,IAAI0W,EAAEiC,EAAE3Y,MAAMwM,MAAM,MACnfumB,EAAExtB,EAAEvF,MAAMwM,MAAM,MAAMwmB,EAAEtc,EAAExc,OAAO,EAAEmL,EAAE0tB,EAAE74B,OAAO,EAAE,GAAG84B,GAAG,GAAG3tB,GAAGqR,EAAEsc,KAAKD,EAAE1tB,IAAIA,IAAI,KAAK,GAAG2tB,GAAG,GAAG3tB,EAAE2tB,IAAI3tB,IAAI,GAAGqR,EAAEsc,KAAKD,EAAE1tB,GAAG,CAAC,GAAG,IAAI2tB,GAAG,IAAI3tB,EAAG,MAAM2tB,IAAQ,IAAJ3tB,GAASqR,EAAEsc,KAAKD,EAAE1tB,GAAG,CAAC,IAAIlL,EAAE,KAAKuc,EAAEsc,GAAG3vB,QAAQ,WAAW,QAA6F,OAArFzJ,EAAEo8B,aAAa77B,EAAE87B,SAAS,iBAAiB97B,EAAEA,EAAEkJ,QAAQ,cAAczJ,EAAEo8B,cAAqB77B,CAAC,QAAO,GAAG64B,GAAG,GAAG3tB,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQqwB,GAAG,EAAG31B,MAAM61B,kBAAkB/a,CAAC,CAAC,OAAOjhB,EAAEA,EAAEA,EAAEo8B,aAAap8B,EAAEwG,KAAK,IAAIo1B,EAAG57B,GAAG,EAAE,CAC9Z,SAASs8B,EAAGt8B,GAAG,OAAOA,EAAEu8B,KAAK,KAAK,EAAE,OAAOX,EAAG57B,EAAE05B,MAAM,KAAK,GAAG,OAAOkC,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO57B,EAAE+7B,EAAG/7B,EAAE05B,MAAK,GAAM,KAAK,GAAG,OAAO15B,EAAE+7B,EAAG/7B,EAAE05B,KAAK8C,QAAO,GAAM,KAAK,EAAE,OAAOx8B,EAAE+7B,EAAG/7B,EAAE05B,MAAK,GAAM,QAAQ,MAAM,GAAG,CACxR,SAAS+C,EAAGz8B,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEo8B,aAAap8B,EAAEwG,MAAM,KAAK,GAAG,kBAAkBxG,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK46B,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBn7B,EAAE,OAAOA,EAAE08B,UAAU,KAAK1B,EAAG,OAAOh7B,EAAEo8B,aAAa,WAAW,YAAY,KAAKrB,EAAG,OAAO/6B,EAAE28B,SAASP,aAAa,WAAW,YAAY,KAAKnB,EAAG,IAAIh7B,EAAED,EAAEw8B,OAC7Z,OADoax8B,EAAEA,EAAEo8B,eACndp8B,EAAE,MADieA,EAAEC,EAAEm8B,aAClfn8B,EAAEuG,MAAM,IAAY,cAAcxG,EAAE,IAAI,cAAqBA,EAAE,KAAKo7B,EAAG,OAA6B,QAAtBn7B,EAAED,EAAEo8B,aAAa,MAAcn8B,EAAEw8B,EAAGz8B,EAAE05B,OAAO,OAAO,KAAK2B,EAAGp7B,EAAED,EAAE48B,SAAS58B,EAAEA,EAAE68B,MAAM,IAAI,OAAOJ,EAAGz8B,EAAEC,GAAG,CAAC,MAAMghB,GAAG,EAAE,OAAO,IAAI,CAC3M,SAAS6b,EAAG98B,GAAG,IAAIC,EAAED,EAAE05B,KAAK,OAAO15B,EAAEu8B,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAOt8B,EAAEm8B,aAAa,WAAW,YAAY,KAAK,GAAG,OAAOn8B,EAAE08B,SAASP,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkBp8B,GAAXA,EAAEC,EAAEu8B,QAAWJ,aAAap8B,EAAEwG,MAAM,GAAGvG,EAAEm8B,cAAc,KAAKp8B,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAOC,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAOw8B,EAAGx8B,GAAG,KAAK,EAAE,OAAOA,IAAI46B,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,oBAAoB56B,EAAE,OAAOA,EAAEm8B,aAAan8B,EAAEuG,MAAM,KAAK,GAAG,kBAAkBvG,EAAE,OAAOA,EAAE,OAAO,IAAI,CAAC,SAAS88B,EAAG/8B,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAG,CACra,SAASg9B,EAAGh9B,GAAG,IAAIC,EAAED,EAAE05B,KAAK,OAAO15B,EAAEA,EAAEi9B,WAAW,UAAUj9B,EAAE+M,gBAAgB,aAAa9M,GAAG,UAAUA,EAAE,CAEtF,SAASi9B,EAAGl9B,GAAGA,EAAEm9B,gBAAgBn9B,EAAEm9B,cADvD,SAAYn9B,GAAG,IAAIC,EAAE+8B,EAAGh9B,GAAG,UAAU,QAAQihB,EAAEvhB,OAAO09B,yBAAyBp9B,EAAEq9B,YAAY19B,UAAUM,GAAG0L,EAAE,GAAG3L,EAAEC,GAAG,IAAID,EAAEE,eAAeD,IAAI,qBAAqBghB,GAAG,oBAAoBA,EAAEvS,KAAK,oBAAoBuS,EAAEta,IAAI,CAAC,IAAImW,EAAEmE,EAAEvS,IAAIyqB,EAAElY,EAAEta,IAAiL,OAA7KjH,OAAOu8B,eAAej8B,EAAEC,EAAE,CAACq9B,cAAa,EAAG5uB,IAAI,WAAW,OAAOoO,EAAEjd,KAAKmE,KAAK,EAAE2C,IAAI,SAAS3G,GAAG2L,EAAE,GAAG3L,EAAEm5B,EAAEt5B,KAAKmE,KAAKhE,EAAE,IAAIN,OAAOu8B,eAAej8B,EAAEC,EAAE,CAACs9B,WAAWtc,EAAEsc,aAAmB,CAACC,SAAS,WAAW,OAAO7xB,CAAC,EAAE8xB,SAAS,SAASz9B,GAAG2L,EAAE,GAAG3L,CAAC,EAAE09B,aAAa,WAAW19B,EAAEm9B,cACxf,YAAYn9B,EAAEC,EAAE,EAAE,CAAC,CAAkD09B,CAAG39B,GAAG,CAAC,SAAS49B,EAAG59B,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEm9B,cAAc,IAAIl9B,EAAE,OAAM,EAAG,IAAIghB,EAAEhhB,EAAEu9B,WAAe7xB,EAAE,GAAqD,OAAlD3L,IAAI2L,EAAEqxB,EAAGh9B,GAAGA,EAAE69B,QAAQ,OAAO,QAAQ79B,EAAEqO,QAAOrO,EAAE2L,KAAasV,IAAGhhB,EAAEw9B,SAASz9B,IAAG,EAAM,CAAC,SAAS89B,EAAG99B,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqB44B,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO54B,EAAE+9B,eAAe/9B,EAAEg+B,IAAI,CAAC,MAAM/9B,GAAG,OAAOD,EAAEg+B,IAAI,CAAC,CACpa,SAASC,EAAGj+B,EAAEC,GAAG,IAAIghB,EAAEhhB,EAAE49B,QAAQ,OAAOlC,EAAE,CAAC,EAAE17B,EAAE,CAACi+B,oBAAe,EAAOC,kBAAa,EAAO9vB,WAAM,EAAOwvB,QAAQ,MAAM5c,EAAEA,EAAEjhB,EAAEo+B,cAAcC,gBAAgB,CAAC,SAASC,EAAGt+B,EAAEC,GAAG,IAAIghB,EAAE,MAAMhhB,EAAEk+B,aAAa,GAAGl+B,EAAEk+B,aAAaxyB,EAAE,MAAM1L,EAAE49B,QAAQ59B,EAAE49B,QAAQ59B,EAAEi+B,eAAejd,EAAE8b,EAAG,MAAM98B,EAAEoO,MAAMpO,EAAEoO,MAAM4S,GAAGjhB,EAAEo+B,cAAc,CAACC,eAAe1yB,EAAE4yB,aAAatd,EAAEud,WAAW,aAAav+B,EAAEy5B,MAAM,UAAUz5B,EAAEy5B,KAAK,MAAMz5B,EAAE49B,QAAQ,MAAM59B,EAAEoO,MAAM,CAAC,SAASowB,EAAGz+B,EAAEC,GAAe,OAAZA,EAAEA,EAAE49B,UAAiB7D,EAAGh6B,EAAE,UAAUC,GAAE,EAAG,CAC9d,SAASy+B,EAAG1+B,EAAEC,GAAGw+B,EAAGz+B,EAAEC,GAAG,IAAIghB,EAAE8b,EAAG98B,EAAEoO,OAAO1C,EAAE1L,EAAEy5B,KAAK,GAAG,MAAMzY,EAAK,WAAWtV,GAAM,IAAIsV,GAAG,KAAKjhB,EAAEqO,OAAOrO,EAAEqO,OAAO4S,KAAEjhB,EAAEqO,MAAM,GAAG4S,GAAOjhB,EAAEqO,QAAQ,GAAG4S,IAAIjhB,EAAEqO,MAAM,GAAG4S,QAAQ,GAAG,WAAWtV,GAAG,UAAUA,EAA8B,YAA3B3L,EAAEo6B,gBAAgB,SAAgBn6B,EAAEC,eAAe,SAASy+B,GAAG3+B,EAAEC,EAAEy5B,KAAKzY,GAAGhhB,EAAEC,eAAe,iBAAiBy+B,GAAG3+B,EAAEC,EAAEy5B,KAAKqD,EAAG98B,EAAEk+B,eAAe,MAAMl+B,EAAE49B,SAAS,MAAM59B,EAAEi+B,iBAAiBl+B,EAAEk+B,iBAAiBj+B,EAAEi+B,eAAe,CACla,SAASU,EAAG5+B,EAAEC,EAAEghB,GAAG,GAAGhhB,EAAEC,eAAe,UAAUD,EAAEC,eAAe,gBAAgB,CAAC,IAAIyL,EAAE1L,EAAEy5B,KAAK,KAAK,WAAW/tB,GAAG,UAAUA,QAAG,IAAS1L,EAAEoO,OAAO,OAAOpO,EAAEoO,OAAO,OAAOpO,EAAE,GAAGD,EAAEo+B,cAAcG,aAAatd,GAAGhhB,IAAID,EAAEqO,QAAQrO,EAAEqO,MAAMpO,GAAGD,EAAEm+B,aAAal+B,CAAC,CAAU,MAATghB,EAAEjhB,EAAEwG,QAAcxG,EAAEwG,KAAK,IAAIxG,EAAEk+B,iBAAiBl+B,EAAEo+B,cAAcC,eAAe,KAAKpd,IAAIjhB,EAAEwG,KAAKya,EAAE,CACzV,SAAS0d,GAAG3+B,EAAEC,EAAEghB,GAAM,WAAWhhB,GAAG69B,EAAG99B,EAAE6+B,iBAAiB7+B,IAAE,MAAMihB,EAAEjhB,EAAEm+B,aAAa,GAAGn+B,EAAEo+B,cAAcG,aAAav+B,EAAEm+B,eAAe,GAAGld,IAAIjhB,EAAEm+B,aAAa,GAAGld,GAAE,CAAC,IAAI6d,GAAGr/B,MAAMF,QAC7K,SAASw/B,GAAG/+B,EAAEC,EAAEghB,EAAEtV,GAAe,GAAZ3L,EAAEA,EAAEg/B,QAAW/+B,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAI6c,EAAE,EAAEA,EAAEmE,EAAE3gB,OAAOwc,IAAI7c,EAAE,IAAIghB,EAAEnE,KAAI,EAAG,IAAImE,EAAE,EAAEA,EAAEjhB,EAAEM,OAAO2gB,IAAInE,EAAE7c,EAAEC,eAAe,IAAIF,EAAEihB,GAAG5S,OAAOrO,EAAEihB,GAAGge,WAAWniB,IAAI9c,EAAEihB,GAAGge,SAASniB,GAAGA,GAAGnR,IAAI3L,EAAEihB,GAAGie,iBAAgB,EAAG,KAAK,CAAmB,IAAlBje,EAAE,GAAG8b,EAAG9b,GAAGhhB,EAAE,KAAS6c,EAAE,EAAEA,EAAE9c,EAAEM,OAAOwc,IAAI,CAAC,GAAG9c,EAAE8c,GAAGzO,QAAQ4S,EAAiD,OAA9CjhB,EAAE8c,GAAGmiB,UAAS,OAAGtzB,IAAI3L,EAAE8c,GAAGoiB,iBAAgB,IAAW,OAAOj/B,GAAGD,EAAE8c,GAAGqiB,WAAWl/B,EAAED,EAAE8c,GAAG,CAAC,OAAO7c,IAAIA,EAAEg/B,UAAS,EAAG,CAAC,CACxY,SAASG,GAAGp/B,EAAEC,GAAG,GAAG,MAAMA,EAAEo/B,wBAAwB,MAAMl5B,MAAMgyB,EAAE,KAAK,OAAOwD,EAAE,CAAC,EAAE17B,EAAE,CAACoO,WAAM,EAAO8vB,kBAAa,EAAOmB,SAAS,GAAGt/B,EAAEo+B,cAAcG,cAAc,CAAC,SAASgB,GAAGv/B,EAAEC,GAAG,IAAIghB,EAAEhhB,EAAEoO,MAAM,GAAG,MAAM4S,EAAE,CAA+B,GAA9BA,EAAEhhB,EAAEq/B,SAASr/B,EAAEA,EAAEk+B,aAAgB,MAAMld,EAAE,CAAC,GAAG,MAAMhhB,EAAE,MAAMkG,MAAMgyB,EAAE,KAAK,GAAG2G,GAAG7d,GAAG,CAAC,GAAG,EAAEA,EAAE3gB,OAAO,MAAM6F,MAAMgyB,EAAE,KAAKlX,EAAEA,EAAE,EAAE,CAAChhB,EAAEghB,CAAC,CAAC,MAAMhhB,IAAIA,EAAE,IAAIghB,EAAEhhB,CAAC,CAACD,EAAEo+B,cAAc,CAACG,aAAaxB,EAAG9b,GAAG,CACnY,SAASue,GAAGx/B,EAAEC,GAAG,IAAIghB,EAAE8b,EAAG98B,EAAEoO,OAAO1C,EAAEoxB,EAAG98B,EAAEk+B,cAAc,MAAMld,KAAIA,EAAE,GAAGA,KAAMjhB,EAAEqO,QAAQrO,EAAEqO,MAAM4S,GAAG,MAAMhhB,EAAEk+B,cAAcn+B,EAAEm+B,eAAeld,IAAIjhB,EAAEm+B,aAAald,IAAI,MAAMtV,IAAI3L,EAAEm+B,aAAa,GAAGxyB,EAAE,CAAC,SAAS8zB,GAAGz/B,GAAG,IAAIC,EAAED,EAAE0/B,YAAYz/B,IAAID,EAAEo+B,cAAcG,cAAc,KAAKt+B,GAAG,OAAOA,IAAID,EAAEqO,MAAMpO,EAAE,CAAC,SAAS0/B,GAAG3/B,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAC7c,SAAS4/B,GAAG5/B,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAE2/B,GAAG1/B,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,CAAC,CAChK,IAAI6/B,GAAe7/B,GAAZ8/B,IAAY9/B,GAAsJ,SAASA,EAAEC,GAAG,GAAG,+BAA+BD,EAAE+/B,cAAc,cAAc//B,EAAEA,EAAEggC,UAAU//B,MAAM,CAA2F,KAA1F4/B,GAAGA,IAAIjH,SAASC,cAAc,QAAUmH,UAAU,QAAQ//B,EAAEmB,UAAUxB,WAAW,SAAaK,EAAE4/B,GAAGI,WAAWjgC,EAAEigC,YAAYjgC,EAAEkgC,YAAYlgC,EAAEigC,YAAY,KAAKhgC,EAAEggC,YAAYjgC,EAAEmgC,YAAYlgC,EAAEggC,WAAW,CAAC,EAAvb,qBAAqBG,OAAOA,MAAMC,wBAAwB,SAASpgC,EAAEghB,EAAEtV,EAAEmR,GAAGsjB,MAAMC,yBAAwB,WAAW,OAAOrgC,GAAEC,EAAEghB,EAAM,GAAE,EAAEjhB,IACtK,SAASsgC,GAAGtgC,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIghB,EAAEjhB,EAAEigC,WAAW,GAAGhf,GAAGA,IAAIjhB,EAAEugC,WAAW,IAAItf,EAAEuf,SAAwB,YAAdvf,EAAEwf,UAAUxgC,EAAS,CAACD,EAAE0/B,YAAYz/B,CAAC,CACtH,IAAIygC,GAAG,CAACC,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAGC,SAAQ,EAAGC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAClfC,MAAK,EAAGC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGvjC,EAAEC,EAAEghB,GAAG,OAAO,MAAMhhB,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGghB,GAAG,kBAAkBhhB,GAAG,IAAIA,GAAGygC,GAAGxgC,eAAeF,IAAI0gC,GAAG1gC,IAAI,GAAGC,GAAG47B,OAAO57B,EAAE,IAAI,CACzb,SAASujC,GAAGxjC,EAAEC,GAAa,IAAI,IAAIghB,KAAlBjhB,EAAEA,EAAEyjC,MAAmBxjC,EAAE,GAAGA,EAAEC,eAAe+gB,GAAG,CAAC,IAAItV,EAAE,IAAIsV,EAAE1P,QAAQ,MAAMuL,EAAEymB,GAAGtiB,EAAEhhB,EAAEghB,GAAGtV,GAAG,UAAUsV,IAAIA,EAAE,YAAYtV,EAAE3L,EAAE0jC,YAAYziB,EAAEnE,GAAG9c,EAAEihB,GAAGnE,CAAC,CAAC,CADYpd,OAAO2G,KAAKq6B,IAAIrjB,SAAQ,SAASrd,GAAGsjC,GAAGjmB,SAAQ,SAASpd,GAAGA,EAAEA,EAAED,EAAE2a,OAAO,GAAG/P,cAAc5K,EAAE2jC,UAAU,GAAGjD,GAAGzgC,GAAGygC,GAAG1gC,EAAE,GAAE,IAChI,IAAI4jC,GAAGjI,EAAE,CAACkI,UAAS,GAAI,CAACC,MAAK,EAAGza,MAAK,EAAG0a,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAG3kC,OAAM,EAAG4kC,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAGC,OAAM,EAAGv9B,QAAO,EAAGw9B,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAG1kC,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAG2jC,GAAG5jC,KAAK,MAAMC,EAAEq/B,UAAU,MAAMr/B,EAAEo/B,yBAAyB,MAAMl5B,MAAMgyB,EAAE,IAAIn4B,IAAI,GAAG,MAAMC,EAAEo/B,wBAAwB,CAAC,GAAG,MAAMp/B,EAAEq/B,SAAS,MAAMn5B,MAAMgyB,EAAE,KAAK,GAAG,kBAAkBl4B,EAAEo/B,2BAA2B,WAAWp/B,EAAEo/B,yBAAyB,MAAMl5B,MAAMgyB,EAAE,IAAK,CAAC,GAAG,MAAMl4B,EAAEwjC,OAAO,kBAAkBxjC,EAAEwjC,MAAM,MAAMt9B,MAAMgyB,EAAE,IAAK,CAAC,CAClW,SAASwM,GAAG3kC,EAAEC,GAAG,IAAI,IAAID,EAAEuR,QAAQ,KAAK,MAAM,kBAAkBtR,EAAE2kC,GAAG,OAAO5kC,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAI6kC,GAAG,KAAK,SAASC,GAAG9kC,GAA6F,OAA1FA,EAAEA,EAAE+kC,QAAQ/kC,EAAEglC,YAAYrM,QAASsM,0BAA0BjlC,EAAEA,EAAEilC,yBAAgC,IAAIjlC,EAAEwgC,SAASxgC,EAAEklC,WAAWllC,CAAC,CAAC,IAAImlC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAGtlC,GAAG,GAAGA,EAAEulC,GAAGvlC,GAAG,CAAC,GAAG,oBAAoBmlC,GAAG,MAAMh/B,MAAMgyB,EAAE,MAAM,IAAIl4B,EAAED,EAAEwlC,UAAUvlC,IAAIA,EAAEwlC,GAAGxlC,GAAGklC,GAAGnlC,EAAEwlC,UAAUxlC,EAAE05B,KAAKz5B,GAAG,CAAC,CAAC,SAASylC,GAAG1lC,GAAGolC,GAAGC,GAAGA,GAAGnkC,KAAKlB,GAAGqlC,GAAG,CAACrlC,GAAGolC,GAAGplC,CAAC,CAAC,SAAS2lC,KAAK,GAAGP,GAAG,CAAC,IAAIplC,EAAEolC,GAAGnlC,EAAEolC,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGtlC,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAEK,OAAON,IAAIslC,GAAGrlC,EAAED,GAAG,CAAC,CAAC,SAAS4lC,GAAG5lC,EAAEC,GAAG,OAAOD,EAAEC,EAAE,CAAC,SAAS4lC,KAAK,CAAC,IAAIC,IAAG,EAAG,SAASC,GAAG/lC,EAAEC,EAAEghB,GAAG,GAAG6kB,GAAG,OAAO9lC,EAAEC,EAAEghB,GAAG6kB,IAAG,EAAG,IAAI,OAAOF,GAAG5lC,EAAEC,EAAEghB,EAAE,CAAC,QAAW6kB,IAAG,GAAG,OAAOV,IAAI,OAAOC,MAAGQ,KAAKF,KAAI,CAAC,CAChb,SAASK,GAAGhmC,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAEwlC,UAAU,GAAG,OAAOvkB,EAAE,OAAO,KAAK,IAAItV,EAAE85B,GAAGxkB,GAAG,GAAG,OAAOtV,EAAE,OAAO,KAAKsV,EAAEtV,EAAE1L,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgB0L,GAAGA,EAAEwzB,YAAqBxzB,IAAI,YAAb3L,EAAEA,EAAE05B,OAAuB,UAAU15B,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAG2L,EAAE,MAAM3L,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGihB,GAAG,oBACleA,EAAE,MAAM9a,MAAMgyB,EAAE,IAAIl4B,SAASghB,IAAI,OAAOA,CAAC,CAAC,IAAIglB,IAAG,EAAG,GAAGvN,EAAG,IAAI,IAAIwN,GAAG,CAAC,EAAExmC,OAAOu8B,eAAeiK,GAAG,UAAU,CAACx3B,IAAI,WAAWu3B,IAAG,CAAE,IAAItN,OAAOwN,iBAAiB,OAAOD,GAAGA,IAAIvN,OAAOyN,oBAAoB,OAAOF,GAAGA,GAAG,CAAC,MAAMlmC,IAAGimC,IAAG,CAAE,CAAC,SAASI,GAAGrmC,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,EAAEC,EAAE3tB,EAAElL,GAAG,IAAIwe,EAAEtf,MAAME,UAAUsG,MAAMpG,KAAKT,UAAU,GAAG,IAAIa,EAAEd,MAAM8hB,EAAElC,EAAE,CAAC,MAAMlc,GAAGmB,KAAKsiC,QAAQzjC,EAAE,CAAC,CAAC,IAAI0jC,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACL,QAAQ,SAAStmC,GAAGumC,IAAG,EAAGC,GAAGxmC,CAAC,GAAG,SAAS4mC,GAAG5mC,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,EAAEC,EAAE3tB,EAAElL,GAAGgmC,IAAG,EAAGC,GAAG,KAAKH,GAAGlnC,MAAMwnC,GAAGvnC,UAAU,CACjW,SAASynC,GAAG7mC,GAAG,IAAIC,EAAED,EAAEihB,EAAEjhB,EAAE,GAAGA,EAAE8mC,UAAU,KAAK7mC,EAAE8mC,QAAQ9mC,EAAEA,EAAE8mC,WAAW,CAAC/mC,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAASiD,SAAcge,EAAEhhB,EAAE8mC,QAAQ/mC,EAAEC,EAAE8mC,aAAa/mC,EAAE,CAAC,OAAO,IAAIC,EAAEs8B,IAAItb,EAAE,IAAI,CAAC,SAAS+lB,GAAGhnC,GAAG,GAAG,KAAKA,EAAEu8B,IAAI,CAAC,IAAIt8B,EAAED,EAAEinC,cAAsE,GAAxD,OAAOhnC,IAAkB,QAAdD,EAAEA,EAAE8mC,aAAqB7mC,EAAED,EAAEinC,gBAAmB,OAAOhnC,EAAE,OAAOA,EAAEinC,UAAU,CAAC,OAAO,IAAI,CAAC,SAASC,GAAGnnC,GAAG,GAAG6mC,GAAG7mC,KAAKA,EAAE,MAAMmG,MAAMgyB,EAAE,KAAM,CAE1S,SAASiP,GAAGpnC,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAE8mC,UAAU,IAAI7mC,EAAE,CAAS,GAAG,QAAXA,EAAE4mC,GAAG7mC,IAAe,MAAMmG,MAAMgyB,EAAE,MAAM,OAAOl4B,IAAID,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIihB,EAAEjhB,EAAE2L,EAAE1L,IAAI,CAAC,IAAI6c,EAAEmE,EAAE8lB,OAAO,GAAG,OAAOjqB,EAAE,MAAM,IAAIqc,EAAErc,EAAEgqB,UAAU,GAAG,OAAO3N,EAAE,CAAY,GAAG,QAAdxtB,EAAEmR,EAAEiqB,QAAmB,CAAC9lB,EAAEtV,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGmR,EAAEuqB,QAAQlO,EAAEkO,MAAM,CAAC,IAAIlO,EAAErc,EAAEuqB,MAAMlO,GAAG,CAAC,GAAGA,IAAIlY,EAAE,OAAOkmB,GAAGrqB,GAAG9c,EAAE,GAAGm5B,IAAIxtB,EAAE,OAAOw7B,GAAGrqB,GAAG7c,EAAEk5B,EAAEA,EAAEmO,OAAO,CAAC,MAAMnhC,MAAMgyB,EAAE,KAAM,CAAC,GAAGlX,EAAE8lB,SAASp7B,EAAEo7B,OAAO9lB,EAAEnE,EAAEnR,EAAEwtB,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAG3tB,EAAEqR,EAAEuqB,MAAM57B,GAAG,CAAC,GAAGA,IAAIwV,EAAE,CAACmY,GAAE,EAAGnY,EAAEnE,EAAEnR,EAAEwtB,EAAE,KAAK,CAAC,GAAG1tB,IAAIE,EAAE,CAACytB,GAAE,EAAGztB,EAAEmR,EAAEmE,EAAEkY,EAAE,KAAK,CAAC1tB,EAAEA,EAAE67B,OAAO,CAAC,IAAIlO,EAAE,CAAC,IAAI3tB,EAAE0tB,EAAEkO,MAAM57B,GAAG,CAAC,GAAGA,IAC5fwV,EAAE,CAACmY,GAAE,EAAGnY,EAAEkY,EAAExtB,EAAEmR,EAAE,KAAK,CAAC,GAAGrR,IAAIE,EAAE,CAACytB,GAAE,EAAGztB,EAAEwtB,EAAElY,EAAEnE,EAAE,KAAK,CAACrR,EAAEA,EAAE67B,OAAO,CAAC,IAAIlO,EAAE,MAAMjzB,MAAMgyB,EAAE,KAAM,CAAC,CAAC,GAAGlX,EAAE6lB,YAAYn7B,EAAE,MAAMxF,MAAMgyB,EAAE,KAAM,CAAC,GAAG,IAAIlX,EAAEsb,IAAI,MAAMp2B,MAAMgyB,EAAE,MAAM,OAAOlX,EAAEukB,UAAU+B,UAAUtmB,EAAEjhB,EAAEC,CAAC,CAAkBunC,CAAGxnC,IAAmBynC,GAAGznC,GAAG,IAAI,CAAC,SAASynC,GAAGznC,GAAG,GAAG,IAAIA,EAAEu8B,KAAK,IAAIv8B,EAAEu8B,IAAI,OAAOv8B,EAAE,IAAIA,EAAEA,EAAEqnC,MAAM,OAAOrnC,GAAG,CAAC,IAAIC,EAAEwnC,GAAGznC,GAAG,GAAG,OAAOC,EAAE,OAAOA,EAAED,EAAEA,EAAEsnC,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAII,GAAGxP,EAAGyP,0BAA0BC,GAAG1P,EAAG2P,wBAAwBC,GAAG5P,EAAG6P,qBAAqBC,GAAG9P,EAAG+P,sBAAsBC,GAAEhQ,EAAGiQ,aAAaC,GAAGlQ,EAAGmQ,iCAAiCC,GAAGpQ,EAAGqQ,2BAA2BC,GAAGtQ,EAAGuQ,8BAA8BC,GAAGxQ,EAAGyQ,wBAAwBC,GAAG1Q,EAAG2Q,qBAAqBC,GAAG5Q,EAAG6Q,sBAAsBC,GAAG,KAAKC,GAAG,KACvV,IAAIC,GAAG3gC,KAAK4gC,MAAM5gC,KAAK4gC,MAAiC,SAAYnpC,GAAU,OAAPA,KAAK,EAAS,IAAIA,EAAE,GAAG,IAAIopC,GAAGppC,GAAGqpC,GAAG,GAAG,CAAC,EAA/ED,GAAG7gC,KAAK+gC,IAAID,GAAG9gC,KAAKghC,IAA4D,IAAIC,GAAG,GAAGC,GAAG,QAC7H,SAASC,GAAG1pC,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAE,CAAC,SAAS2pC,GAAG3pC,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAE4pC,aAAa,GAAG,IAAI3oB,EAAE,OAAO,EAAE,IAAItV,EAAE,EAAEmR,EAAE9c,EAAE6pC,eAAe1Q,EAAEn5B,EAAE8pC,YAAY1Q,EAAI,UAAFnY,EAAY,GAAG,IAAImY,EAAE,CAAC,IAAI3tB,EAAE2tB,GAAGtc,EAAE,IAAIrR,EAAEE,EAAE+9B,GAAGj+B,GAAS,KAAL0tB,GAAGC,KAAUztB,EAAE+9B,GAAGvQ,GAAI,MAAa,KAAPC,EAAEnY,GAAGnE,GAAQnR,EAAE+9B,GAAGtQ,GAAG,IAAID,IAAIxtB,EAAE+9B,GAAGvQ,IAAI,GAAG,IAAIxtB,EAAE,OAAO,EAAE,GAAG,IAAI1L,GAAGA,IAAI0L,GAAG,KAAK1L,EAAE6c,MAAKA,EAAEnR,GAAGA,KAAEwtB,EAAEl5B,GAAGA,IAAQ,KAAK6c,GAAG,KAAO,QAAFqc,IAAY,OAAOl5B,EAA0C,GAAxC,KAAO,EAAF0L,KAAOA,GAAK,GAAFsV,GAA4B,KAAtBhhB,EAAED,EAAE+pC,gBAAwB,IAAI/pC,EAAEA,EAAEgqC,cAAc/pC,GAAG0L,EAAE,EAAE1L,GAAc6c,EAAE,IAAbmE,EAAE,GAAGioB,GAAGjpC,IAAU0L,GAAG3L,EAAEihB,GAAGhhB,IAAI6c,EAAE,OAAOnR,CAAC,CACvc,SAASs+B,GAAGjqC,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAOC,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAE,CACrN,SAASiqC,GAAGlqC,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAE4pC,cAAsC5pC,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASmqC,KAAK,IAAInqC,EAAEwpC,GAAoC,OAA1B,KAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAWxpC,CAAC,CAAC,SAASoqC,GAAGpqC,GAAG,IAAI,IAAIC,EAAE,GAAGghB,EAAE,EAAE,GAAGA,EAAEA,IAAIhhB,EAAEiB,KAAKlB,GAAG,OAAOC,CAAC,CAC3a,SAASoqC,GAAGrqC,EAAEC,EAAEghB,GAAGjhB,EAAE4pC,cAAc3pC,EAAE,YAAYA,IAAID,EAAE6pC,eAAe,EAAE7pC,EAAE8pC,YAAY,IAAG9pC,EAAEA,EAAEsqC,YAAWrqC,EAAE,GAAGipC,GAAGjpC,IAAQghB,CAAC,CACzH,SAASspB,GAAGvqC,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAE+pC,gBAAgB9pC,EAAE,IAAID,EAAEA,EAAEgqC,cAAc/oB,GAAG,CAAC,IAAItV,EAAE,GAAGu9B,GAAGjoB,GAAGnE,EAAE,GAAGnR,EAAEmR,EAAE7c,EAAED,EAAE2L,GAAG1L,IAAID,EAAE2L,IAAI1L,GAAGghB,IAAInE,CAAC,CAAC,CAAC,IAAI0tB,GAAE,EAAE,SAASC,GAAGzqC,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,KAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAI0qC,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIC,IAAIC,GAAG,IAAID,IAAIE,GAAG,GAAGC,GAAG,6PAA6P54B,MAAM,KAChiB,SAAS64B,GAAGzrC,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAWirC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGM,OAAOzrC,EAAE0rC,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBL,GAAGI,OAAOzrC,EAAE0rC,WAAW,CACnT,SAASC,GAAG5rC,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,GAAG,OAAG,OAAOn5B,GAAGA,EAAE6rC,cAAc1S,GAASn5B,EAAE,CAAC8rC,UAAU7rC,EAAE8rC,aAAa9qB,EAAE+qB,iBAAiBrgC,EAAEkgC,YAAY1S,EAAE8S,iBAAiB,CAACnvB,IAAI,OAAO7c,IAAY,QAARA,EAAEslC,GAAGtlC,KAAa0qC,GAAG1qC,IAAID,IAAEA,EAAEgsC,kBAAkBrgC,EAAE1L,EAAED,EAAEisC,iBAAiB,OAAOnvB,IAAI,IAAI7c,EAAEsR,QAAQuL,IAAI7c,EAAEiB,KAAK4b,GAAU9c,EAAC,CAEpR,SAASksC,GAAGlsC,GAAG,IAAIC,EAAEksC,GAAGnsC,EAAE+kC,QAAQ,GAAG,OAAO9kC,EAAE,CAAC,IAAIghB,EAAE4lB,GAAG5mC,GAAG,GAAG,OAAOghB,EAAE,GAAW,MAARhhB,EAAEghB,EAAEsb,MAAY,GAAW,QAARt8B,EAAE+mC,GAAG/lB,IAA4D,OAA/CjhB,EAAE8rC,UAAU7rC,OAAE6qC,GAAG9qC,EAAEwN,UAAS,WAAWo9B,GAAG3pB,EAAE,SAAgB,GAAG,IAAIhhB,GAAGghB,EAAEukB,UAAU+B,QAAQN,cAAcmF,aAAmE,YAArDpsC,EAAE8rC,UAAU,IAAI7qB,EAAEsb,IAAItb,EAAEukB,UAAU6G,cAAc,KAAY,CAACrsC,EAAE8rC,UAAU,IAAI,CAClT,SAASQ,GAAGtsC,GAAG,GAAG,OAAOA,EAAE8rC,UAAU,OAAM,EAAG,IAAI,IAAI7rC,EAAED,EAAEisC,iBAAiB,EAAEhsC,EAAEK,QAAQ,CAAC,IAAI2gB,EAAEsrB,GAAGvsC,EAAE+rC,aAAa/rC,EAAEgsC,iBAAiB/rC,EAAE,GAAGD,EAAE6rC,aAAa,GAAG,OAAO5qB,EAAiG,OAAe,QAARhhB,EAAEslC,GAAGtkB,KAAa0pB,GAAG1qC,GAAGD,EAAE8rC,UAAU7qB,GAAE,EAA3H,IAAItV,EAAE,IAAtBsV,EAAEjhB,EAAE6rC,aAAwBxO,YAAYpc,EAAEyY,KAAKzY,GAAG4jB,GAAGl5B,EAAEsV,EAAE8jB,OAAOyH,cAAc7gC,GAAGk5B,GAAG,KAA0D5kC,EAAE0zB,OAAO,CAAC,OAAM,CAAE,CAAC,SAAS8Y,GAAGzsC,EAAEC,EAAEghB,GAAGqrB,GAAGtsC,IAAIihB,EAAEyqB,OAAOzrC,EAAE,CAAC,SAASysC,KAAK3B,IAAG,EAAG,OAAOE,IAAIqB,GAAGrB,MAAMA,GAAG,MAAM,OAAOC,IAAIoB,GAAGpB,MAAMA,GAAG,MAAM,OAAOC,IAAImB,GAAGnB,MAAMA,GAAG,MAAMC,GAAG/tB,QAAQovB,IAAInB,GAAGjuB,QAAQovB,GAAG,CACnf,SAASE,GAAG3sC,EAAEC,GAAGD,EAAE8rC,YAAY7rC,IAAID,EAAE8rC,UAAU,KAAKf,KAAKA,IAAG,EAAG7S,EAAGyP,0BAA0BzP,EAAGyQ,wBAAwB+D,KAAK,CAC5H,SAASE,GAAG5sC,GAAG,SAASC,EAAEA,GAAG,OAAO0sC,GAAG1sC,EAAED,EAAE,CAAC,GAAG,EAAEgrC,GAAG1qC,OAAO,CAACqsC,GAAG3B,GAAG,GAAGhrC,GAAG,IAAI,IAAIihB,EAAE,EAAEA,EAAE+pB,GAAG1qC,OAAO2gB,IAAI,CAAC,IAAItV,EAAEq/B,GAAG/pB,GAAGtV,EAAEmgC,YAAY9rC,IAAI2L,EAAEmgC,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOb,IAAI0B,GAAG1B,GAAGjrC,GAAG,OAAOkrC,IAAIyB,GAAGzB,GAAGlrC,GAAG,OAAOmrC,IAAIwB,GAAGxB,GAAGnrC,GAAGorC,GAAG/tB,QAAQpd,GAAGqrC,GAAGjuB,QAAQpd,GAAOghB,EAAE,EAAEA,EAAEsqB,GAAGjrC,OAAO2gB,KAAItV,EAAE4/B,GAAGtqB,IAAK6qB,YAAY9rC,IAAI2L,EAAEmgC,UAAU,MAAM,KAAK,EAAEP,GAAGjrC,QAAiB,QAAR2gB,EAAEsqB,GAAG,IAAYO,WAAYI,GAAGjrB,GAAG,OAAOA,EAAE6qB,WAAWP,GAAG5X,OAAO,CAAC,IAAIkZ,GAAGrS,EAAGsS,wBAAwBlhC,IAAG,EAC5a,SAASmhC,GAAG/sC,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE0tB,GAAErR,EAAE0T,GAAGG,WAAWH,GAAGG,WAAW,KAAK,IAAIxC,GAAE,EAAEyC,GAAGjtC,EAAEC,EAAEghB,EAAEtV,EAAE,CAAC,QAAQ6+B,GAAE1tB,EAAE+vB,GAAGG,WAAW7T,CAAC,CAAC,CAAC,SAAS+T,GAAGltC,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE0tB,GAAErR,EAAE0T,GAAGG,WAAWH,GAAGG,WAAW,KAAK,IAAIxC,GAAE,EAAEyC,GAAGjtC,EAAEC,EAAEghB,EAAEtV,EAAE,CAAC,QAAQ6+B,GAAE1tB,EAAE+vB,GAAGG,WAAW7T,CAAC,CAAC,CACjO,SAAS8T,GAAGjtC,EAAEC,EAAEghB,EAAEtV,GAAG,GAAGC,GAAG,CAAC,IAAIkR,EAAEyvB,GAAGvsC,EAAEC,EAAEghB,EAAEtV,GAAG,GAAG,OAAOmR,EAAEqwB,GAAGntC,EAAEC,EAAE0L,EAAEyhC,GAAGnsB,GAAGwqB,GAAGzrC,EAAE2L,QAAQ,GANtF,SAAY3L,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,OAAO7c,GAAG,IAAK,UAAU,OAAOgrC,GAAGW,GAAGX,GAAGjrC,EAAEC,EAAEghB,EAAEtV,EAAEmR,IAAG,EAAG,IAAK,YAAY,OAAOouB,GAAGU,GAAGV,GAAGlrC,EAAEC,EAAEghB,EAAEtV,EAAEmR,IAAG,EAAG,IAAK,YAAY,OAAOquB,GAAGS,GAAGT,GAAGnrC,EAAEC,EAAEghB,EAAEtV,EAAEmR,IAAG,EAAG,IAAK,cAAc,IAAIqc,EAAErc,EAAE6uB,UAAkD,OAAxCP,GAAGzkC,IAAIwyB,EAAEyS,GAAGR,GAAG18B,IAAIyqB,IAAI,KAAKn5B,EAAEC,EAAEghB,EAAEtV,EAAEmR,KAAU,EAAG,IAAK,oBAAoB,OAAOqc,EAAErc,EAAE6uB,UAAUL,GAAG3kC,IAAIwyB,EAAEyS,GAAGN,GAAG58B,IAAIyqB,IAAI,KAAKn5B,EAAEC,EAAEghB,EAAEtV,EAAEmR,KAAI,EAAG,OAAM,CAAE,CAM1QuwB,CAAGvwB,EAAE9c,EAAEC,EAAEghB,EAAEtV,GAAGA,EAAE2hC,uBAAuB,GAAG7B,GAAGzrC,EAAE2L,GAAK,EAAF1L,IAAM,EAAEurC,GAAGj6B,QAAQvR,GAAG,CAAC,KAAK,OAAO8c,GAAG,CAAC,IAAIqc,EAAEoM,GAAGzoB,GAA0D,GAAvD,OAAOqc,GAAGuR,GAAGvR,GAAiB,QAAdA,EAAEoT,GAAGvsC,EAAEC,EAAEghB,EAAEtV,KAAawhC,GAAGntC,EAAEC,EAAE0L,EAAEyhC,GAAGnsB,GAAMkY,IAAIrc,EAAE,MAAMA,EAAEqc,CAAC,CAAC,OAAOrc,GAAGnR,EAAE2hC,iBAAiB,MAAMH,GAAGntC,EAAEC,EAAE0L,EAAE,KAAKsV,EAAE,CAAC,CAAC,IAAImsB,GAAG,KACpU,SAASb,GAAGvsC,EAAEC,EAAEghB,EAAEtV,GAA2B,GAAxByhC,GAAG,KAAwB,QAAXptC,EAAEmsC,GAAVnsC,EAAE8kC,GAAGn5B,KAAuB,GAAW,QAAR1L,EAAE4mC,GAAG7mC,IAAYA,EAAE,UAAU,GAAW,MAARihB,EAAEhhB,EAAEs8B,KAAW,CAAS,GAAG,QAAXv8B,EAAEgnC,GAAG/mC,IAAe,OAAOD,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIihB,EAAE,CAAC,GAAGhhB,EAAEulC,UAAU+B,QAAQN,cAAcmF,aAAa,OAAO,IAAInsC,EAAEs8B,IAAIt8B,EAAEulC,UAAU6G,cAAc,KAAKrsC,EAAE,IAAI,MAAMC,IAAID,IAAIA,EAAE,MAAW,OAALotC,GAAGptC,EAAS,IAAI,CAC7S,SAASutC,GAAGvtC,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAOooC,MAAM,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAG,CAAC,IAAI0E,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI1tC,EAAkB2L,EAAhB1L,EAAEwtC,GAAGxsB,EAAEhhB,EAAEK,OAASwc,EAAE,UAAU0wB,GAAGA,GAAGn/B,MAAMm/B,GAAG9N,YAAYvG,EAAErc,EAAExc,OAAO,IAAIN,EAAE,EAAEA,EAAEihB,GAAGhhB,EAAED,KAAK8c,EAAE9c,GAAGA,KAAK,IAAIo5B,EAAEnY,EAAEjhB,EAAE,IAAI2L,EAAE,EAAEA,GAAGytB,GAAGn5B,EAAEghB,EAAEtV,KAAKmR,EAAEqc,EAAExtB,GAAGA,KAAK,OAAO+hC,GAAG5wB,EAAE7W,MAAMjG,EAAE,EAAE2L,EAAE,EAAEA,OAAE,EAAO,CACxY,SAASiiC,GAAG5tC,GAAG,IAAIC,EAAED,EAAE6tC,QAA+E,MAAvE,aAAa7tC,EAAgB,KAAbA,EAAEA,EAAE8tC,WAAgB,KAAK7tC,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAAS+tC,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CAC5K,SAASC,GAAGjuC,GAAG,SAASC,EAAEA,EAAE0L,EAAEmR,EAAEqc,EAAEC,GAA6G,IAAI,IAAInY,KAAlHjd,KAAKkqC,WAAWjuC,EAAE+D,KAAKmqC,YAAYrxB,EAAE9Y,KAAK01B,KAAK/tB,EAAE3H,KAAK6nC,YAAY1S,EAAEn1B,KAAK+gC,OAAO3L,EAAEp1B,KAAKoqC,cAAc,KAAkBpuC,EAAEA,EAAEE,eAAe+gB,KAAKhhB,EAAED,EAAEihB,GAAGjd,KAAKid,GAAGhhB,EAAEA,EAAEk5B,GAAGA,EAAElY,IAAgI,OAA5Hjd,KAAKqqC,oBAAoB,MAAMlV,EAAEmV,iBAAiBnV,EAAEmV,kBAAiB,IAAKnV,EAAEoV,aAAaR,GAAGC,GAAGhqC,KAAKwqC,qBAAqBR,GAAUhqC,IAAI,CAC9E,OAD+E23B,EAAE17B,EAAEN,UAAU,CAAC8uC,eAAe,WAAWzqC,KAAKsqC,kBAAiB,EAAG,IAAItuC,EAAEgE,KAAK6nC,YAAY7rC,IAAIA,EAAEyuC,eAAezuC,EAAEyuC,iBAAiB,mBAAmBzuC,EAAEuuC,cAC7evuC,EAAEuuC,aAAY,GAAIvqC,KAAKqqC,mBAAmBN,GAAG,EAAET,gBAAgB,WAAW,IAAIttC,EAAEgE,KAAK6nC,YAAY7rC,IAAIA,EAAEstC,gBAAgBttC,EAAEstC,kBAAkB,mBAAmBttC,EAAE0uC,eAAe1uC,EAAE0uC,cAAa,GAAI1qC,KAAKwqC,qBAAqBT,GAAG,EAAEY,QAAQ,WAAW,EAAEC,aAAab,KAAY9tC,CAAC,CACjR,IAAoL4uC,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,UAAU,SAASpvC,GAAG,OAAOA,EAAEovC,WAAWzuC,KAAKoH,KAAK,EAAEumC,iBAAiB,EAAEe,UAAU,GAAGC,GAAGrB,GAAGe,IAAIO,GAAG5T,EAAE,CAAC,EAAEqT,GAAG,CAACQ,KAAK,EAAEC,OAAO,IAAIC,GAAGzB,GAAGsB,IAAaI,GAAGhU,EAAE,CAAC,EAAE4T,GAAG,CAACK,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,SAAS1wC,GAAG,YAAO,IAASA,EAAE0wC,cAAc1wC,EAAE2wC,cAAc3wC,EAAEglC,WAAWhlC,EAAE4wC,UAAU5wC,EAAE2wC,YAAY3wC,EAAE0wC,aAAa,EAAEG,UAAU,SAAS7wC,GAAG,MAAG,cAC3eA,EAASA,EAAE6wC,WAAU7wC,IAAI+uC,KAAKA,IAAI,cAAc/uC,EAAE05B,MAAMmV,GAAG7uC,EAAE4vC,QAAQb,GAAGa,QAAQd,GAAG9uC,EAAE6vC,QAAQd,GAAGc,SAASf,GAAGD,GAAG,EAAEE,GAAG/uC,GAAU6uC,GAAE,EAAEiC,UAAU,SAAS9wC,GAAG,MAAM,cAAcA,EAAEA,EAAE8wC,UAAUhC,EAAE,IAAIiC,GAAG9C,GAAG0B,IAAiCqB,GAAG/C,GAA7BtS,EAAE,CAAC,EAAEgU,GAAG,CAACsB,aAAa,KAA4CC,GAAGjD,GAA9BtS,EAAE,CAAC,EAAE4T,GAAG,CAACmB,cAAc,KAA0ES,GAAGlD,GAA5DtS,EAAE,CAAC,EAAEqT,GAAG,CAACoC,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAG5V,EAAE,CAAC,EAAEqT,GAAG,CAACwC,cAAc,SAASxxC,GAAG,MAAM,kBAAkBA,EAAEA,EAAEwxC,cAAc7Y,OAAO6Y,aAAa,IAAIC,GAAGxD,GAAGsD,IAAyBG,GAAGzD,GAArBtS,EAAE,CAAC,EAAEqT,GAAG,CAAChyB,KAAK,KAAc20B,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAG9yC,GAAG,IAAIC,EAAE+D,KAAK6nC,YAAY,OAAO5rC,EAAEqwC,iBAAiBrwC,EAAEqwC,iBAAiBtwC,MAAIA,EAAEyyC,GAAGzyC,OAAMC,EAAED,EAAK,CAAC,SAASuwC,KAAK,OAAOuC,EAAE,CAChS,IAAIC,GAAGpX,EAAE,CAAC,EAAE4T,GAAG,CAACzpC,IAAI,SAAS9F,GAAG,GAAGA,EAAE8F,IAAI,CAAC,IAAI7F,EAAE0xC,GAAG3xC,EAAE8F,MAAM9F,EAAE8F,IAAI,GAAG,iBAAiB7F,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAaD,EAAE05B,KAAc,MAAR15B,EAAE4tC,GAAG5tC,IAAU,QAAQ+pB,OAAOipB,aAAahzC,GAAI,YAAYA,EAAE05B,MAAM,UAAU15B,EAAE05B,KAAK8Y,GAAGxyC,EAAE6tC,UAAU,eAAe,EAAE,EAAEoF,KAAK,EAAEC,SAAS,EAAEhD,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAE8C,OAAO,EAAE5xC,OAAO,EAAE+uC,iBAAiBC,GAAGzC,SAAS,SAAS9tC,GAAG,MAAM,aAAaA,EAAE05B,KAAKkU,GAAG5tC,GAAG,CAAC,EAAE6tC,QAAQ,SAAS7tC,GAAG,MAAM,YAAYA,EAAE05B,MAAM,UAAU15B,EAAE05B,KAAK15B,EAAE6tC,QAAQ,CAAC,EAAEuF,MAAM,SAASpzC,GAAG,MAAM,aAC7eA,EAAE05B,KAAKkU,GAAG5tC,GAAG,YAAYA,EAAE05B,MAAM,UAAU15B,EAAE05B,KAAK15B,EAAE6tC,QAAQ,CAAC,IAAIwF,GAAGpF,GAAG8E,IAAiIO,GAAGrF,GAA7HtS,EAAE,CAAC,EAAEgU,GAAG,CAAChE,UAAU,EAAE4H,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAG/F,GAArHtS,EAAE,CAAC,EAAE4T,GAAG,CAAC0E,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAE/D,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0E6D,GAAGnG,GAA3DtS,EAAE,CAAC,EAAEqT,GAAG,CAACvV,aAAa,EAAE4X,YAAY,EAAEC,cAAc,KAAc+C,GAAG1Y,EAAE,CAAC,EAAEgU,GAAG,CAAC2E,OAAO,SAASt0C,GAAG,MAAM,WAAWA,EAAEA,EAAEs0C,OAAO,gBAAgBt0C,GAAGA,EAAEu0C,YAAY,CAAC,EACnfC,OAAO,SAASx0C,GAAG,MAAM,WAAWA,EAAEA,EAAEw0C,OAAO,gBAAgBx0C,GAAGA,EAAEy0C,YAAY,eAAez0C,GAAGA,EAAE00C,WAAW,CAAC,EAAEC,OAAO,EAAEC,UAAU,IAAIC,GAAG5G,GAAGoG,IAAIS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGrc,GAAI,qBAAqBC,OAAOqc,GAAG,KAAKtc,GAAI,iBAAiBE,WAAWoc,GAAGpc,SAASqc,cAAc,IAAIC,GAAGxc,GAAI,cAAcC,SAASqc,GAAGG,GAAGzc,KAAMqc,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAGrrB,OAAOipB,aAAa,IAAIqC,IAAG,EAC1W,SAASC,GAAGt1C,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAI80C,GAAGvjC,QAAQtR,EAAE4tC,SAAS,IAAK,UAAU,OAAO,MAAM5tC,EAAE4tC,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAAS0H,GAAGv1C,GAAc,MAAM,kBAAjBA,EAAEA,EAAEyvC,SAAkC,SAASzvC,EAAEA,EAAEgd,KAAK,IAAI,CAAC,IAAIw4B,IAAG,EAE9Q,IAAIC,GAAG,CAACC,OAAM,EAAG9mC,MAAK,EAAG8d,UAAS,EAAG,kBAAiB,EAAGipB,OAAM,EAAGhnC,OAAM,EAAGxG,QAAO,EAAGytC,UAAS,EAAGC,OAAM,EAAGC,QAAO,EAAGC,KAAI,EAAGC,MAAK,EAAGhrB,MAAK,EAAGirB,KAAI,EAAGhgC,MAAK,GAAI,SAASigC,GAAGl2C,GAAG,IAAIC,EAAED,GAAGA,EAAEi9B,UAAUj9B,EAAEi9B,SAASlwB,cAAc,MAAM,UAAU9M,IAAIw1C,GAAGz1C,EAAE05B,MAAM,aAAaz5B,CAAO,CAAC,SAASk2C,GAAGn2C,EAAEC,EAAEghB,EAAEtV,GAAG+5B,GAAG/5B,GAAsB,GAAnB1L,EAAEm2C,GAAGn2C,EAAE,aAAgBK,SAAS2gB,EAAE,IAAIquB,GAAG,WAAW,SAAS,KAAKruB,EAAEtV,GAAG3L,EAAEkB,KAAK,CAACm1C,MAAMp1B,EAAEq1B,UAAUr2C,IAAI,CAAC,IAAIs2C,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGz2C,GAAG02C,GAAG12C,EAAE,EAAE,CAAC,SAAS22C,GAAG32C,GAAe,GAAG49B,EAATgZ,GAAG52C,IAAY,OAAOA,CAAC,CACpe,SAAS62C,GAAG72C,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,CAAC,CAAC,IAAI62C,IAAG,EAAG,GAAGpe,EAAG,CAAC,IAAIqe,GAAG,GAAGre,EAAG,CAAC,IAAIse,GAAG,YAAYpe,SAAS,IAAIoe,GAAG,CAAC,IAAIC,GAAGre,SAASC,cAAc,OAAOoe,GAAG5c,aAAa,UAAU,WAAW2c,GAAG,oBAAoBC,GAAGC,OAAO,CAACH,GAAGC,EAAE,MAAMD,IAAG,EAAGD,GAAGC,MAAMne,SAASqc,cAAc,EAAErc,SAASqc,aAAa,CAAC,SAASkC,KAAKZ,KAAKA,GAAGa,YAAY,mBAAmBC,IAAIb,GAAGD,GAAG,KAAK,CAAC,SAASc,GAAGr3C,GAAG,GAAG,UAAUA,EAAEy5B,cAAckd,GAAGH,IAAI,CAAC,IAAIv2C,EAAE,GAAGk2C,GAAGl2C,EAAEu2C,GAAGx2C,EAAE8kC,GAAG9kC,IAAI+lC,GAAG0Q,GAAGx2C,EAAE,CAAC,CAC/b,SAASq3C,GAAGt3C,EAAEC,EAAEghB,GAAG,YAAYjhB,GAAGm3C,KAAUX,GAAGv1B,GAARs1B,GAAGt2C,GAAUs3C,YAAY,mBAAmBF,KAAK,aAAar3C,GAAGm3C,IAAI,CAAC,SAASK,GAAGx3C,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAO22C,GAAGH,GAAG,CAAC,SAASiB,GAAGz3C,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAO22C,GAAG12C,EAAE,CAAC,SAASy3C,GAAG13C,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAO22C,GAAG12C,EAAE,CAAiE,IAAI03C,GAAG,oBAAoBj4C,OAAOklC,GAAGllC,OAAOklC,GAA5G,SAAY5kC,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAC,EACtW,SAAS23C,GAAG53C,EAAEC,GAAG,GAAG03C,GAAG33C,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIghB,EAAEvhB,OAAO2G,KAAKrG,GAAG2L,EAAEjM,OAAO2G,KAAKpG,GAAG,GAAGghB,EAAE3gB,SAASqL,EAAErL,OAAO,OAAM,EAAG,IAAIqL,EAAE,EAAEA,EAAEsV,EAAE3gB,OAAOqL,IAAI,CAAC,IAAImR,EAAEmE,EAAEtV,GAAG,IAAImtB,EAAGj5B,KAAKI,EAAE6c,KAAK66B,GAAG33C,EAAE8c,GAAG7c,EAAE6c,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAAS+6B,GAAG73C,GAAG,KAAKA,GAAGA,EAAEigC,YAAYjgC,EAAEA,EAAEigC,WAAW,OAAOjgC,CAAC,CACtU,SAAS83C,GAAG93C,EAAEC,GAAG,IAAwB0L,EAApBsV,EAAE42B,GAAG73C,GAAO,IAAJA,EAAE,EAAYihB,GAAG,CAAC,GAAG,IAAIA,EAAEuf,SAAS,CAA0B,GAAzB70B,EAAE3L,EAAEihB,EAAEye,YAAYp/B,OAAUN,GAAGC,GAAG0L,GAAG1L,EAAE,MAAM,CAAC83C,KAAK92B,EAAEwF,OAAOxmB,EAAED,GAAGA,EAAE2L,CAAC,CAAC3L,EAAE,CAAC,KAAKihB,GAAG,CAAC,GAAGA,EAAE+2B,YAAY,CAAC/2B,EAAEA,EAAE+2B,YAAY,MAAMh4C,CAAC,CAACihB,EAAEA,EAAEikB,UAAU,CAACjkB,OAAE,CAAM,CAACA,EAAE42B,GAAG52B,EAAE,CAAC,CAAC,SAASg3B,GAAGj4C,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAEwgC,YAAYvgC,GAAG,IAAIA,EAAEugC,SAASyX,GAAGj4C,EAAEC,EAAEilC,YAAY,aAAallC,EAAEA,EAAEk4C,SAASj4C,KAAGD,EAAEm4C,4BAAwD,GAA7Bn4C,EAAEm4C,wBAAwBl4C,KAAY,CAC9Z,SAASm4C,KAAK,IAAI,IAAIp4C,EAAE24B,OAAO14B,EAAE69B,IAAK79B,aAAaD,EAAEq4C,mBAAmB,CAAC,IAAI,IAAIp3B,EAAE,kBAAkBhhB,EAAEq4C,cAAcpF,SAASqF,IAAI,CAAC,MAAM5sC,GAAGsV,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAMhhB,EAAE69B,GAA/B99B,EAAEC,EAAEq4C,eAAgC1f,SAAS,CAAC,OAAO34B,CAAC,CAAC,SAASu4C,GAAGx4C,GAAG,IAAIC,EAAED,GAAGA,EAAEi9B,UAAUj9B,EAAEi9B,SAASlwB,cAAc,OAAO9M,IAAI,UAAUA,IAAI,SAASD,EAAE05B,MAAM,WAAW15B,EAAE05B,MAAM,QAAQ15B,EAAE05B,MAAM,QAAQ15B,EAAE05B,MAAM,aAAa15B,EAAE05B,OAAO,aAAaz5B,GAAG,SAASD,EAAEy4C,gBAAgB,CACxa,SAASC,GAAG14C,GAAG,IAAIC,EAAEm4C,KAAKn3B,EAAEjhB,EAAE24C,YAAYhtC,EAAE3L,EAAE44C,eAAe,GAAG34C,IAAIghB,GAAGA,GAAGA,EAAE4d,eAAeoZ,GAAGh3B,EAAE4d,cAAcga,gBAAgB53B,GAAG,CAAC,GAAG,OAAOtV,GAAG6sC,GAAGv3B,GAAG,GAAGhhB,EAAE0L,EAAEmtC,WAAc,KAAR94C,EAAE2L,EAAEotC,OAAiB/4C,EAAEC,GAAG,mBAAmBghB,EAAEA,EAAE+3B,eAAe/4C,EAAEghB,EAAEg4B,aAAa1wC,KAAK2L,IAAIlU,EAAEihB,EAAE5S,MAAM/N,aAAa,IAAGN,GAAGC,EAAEghB,EAAE4d,eAAejG,WAAW34B,EAAEi5C,aAAavgB,QAASwgB,aAAa,CAACn5C,EAAEA,EAAEm5C,eAAe,IAAIr8B,EAAEmE,EAAEye,YAAYp/B,OAAO64B,EAAE5wB,KAAK2L,IAAIvI,EAAEmtC,MAAMh8B,GAAGnR,OAAE,IAASA,EAAEotC,IAAI5f,EAAE5wB,KAAK2L,IAAIvI,EAAEotC,IAAIj8B,IAAI9c,EAAEmB,QAAQg4B,EAAExtB,IAAImR,EAAEnR,EAAEA,EAAEwtB,EAAEA,EAAErc,GAAGA,EAAEg7B,GAAG72B,EAAEkY,GAAG,IAAIC,EAAE0e,GAAG72B,EACvftV,GAAGmR,GAAGsc,IAAI,IAAIp5B,EAAEo5C,YAAYp5C,EAAEq5C,aAAav8B,EAAEi7B,MAAM/3C,EAAEs5C,eAAex8B,EAAE2J,QAAQzmB,EAAEu5C,YAAYngB,EAAE2e,MAAM/3C,EAAEw5C,cAAcpgB,EAAE3S,WAAUxmB,EAAEA,EAAEw5C,eAAgBC,SAAS58B,EAAEi7B,KAAKj7B,EAAE2J,QAAQzmB,EAAE25C,kBAAkBxgB,EAAExtB,GAAG3L,EAAE45C,SAAS35C,GAAGD,EAAEmB,OAAOi4B,EAAE2e,KAAK3e,EAAE3S,UAAUxmB,EAAE45C,OAAOzgB,EAAE2e,KAAK3e,EAAE3S,QAAQzmB,EAAE45C,SAAS35C,IAAI,CAAM,IAALA,EAAE,GAAOD,EAAEihB,EAAEjhB,EAAEA,EAAEklC,YAAY,IAAIllC,EAAEwgC,UAAUvgC,EAAEiB,KAAK,CAAC44C,QAAQ95C,EAAE+5C,KAAK/5C,EAAEg6C,WAAWC,IAAIj6C,EAAEk6C,YAAmD,IAAvC,oBAAoBj5B,EAAEk5B,OAAOl5B,EAAEk5B,QAAYl5B,EAAE,EAAEA,EAAEhhB,EAAEK,OAAO2gB,KAAIjhB,EAAEC,EAAEghB,IAAK64B,QAAQE,WAAWh6C,EAAE+5C,KAAK/5C,EAAE85C,QAAQI,UAAUl6C,EAAEi6C,GAAG,CAAC,CACzf,IAAIG,GAAG1hB,GAAI,iBAAiBE,UAAU,IAAIA,SAASqc,aAAaoF,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGz6C,EAAEC,EAAEghB,GAAG,IAAItV,EAAEsV,EAAE0X,SAAS1X,EAAEA,EAAE2X,SAAS,IAAI3X,EAAEuf,SAASvf,EAAEA,EAAE4d,cAAc2b,IAAI,MAAMH,IAAIA,KAAKvc,EAAGnyB,KAAU,mBAALA,EAAE0uC,KAAyB7B,GAAG7sC,GAAGA,EAAE,CAACmtC,MAAMntC,EAAEqtC,eAAeD,IAAIptC,EAAEstC,cAAuFttC,EAAE,CAAC0tC,YAA3E1tC,GAAGA,EAAEkzB,eAAelzB,EAAEkzB,cAAcqa,aAAavgB,QAAQwgB,gBAA+BE,WAAWC,aAAa3tC,EAAE2tC,aAAaC,UAAU5tC,EAAE4tC,UAAUC,YAAY7tC,EAAE6tC,aAAce,IAAI3C,GAAG2C,GAAG5uC,KAAK4uC,GAAG5uC,EAAsB,GAApBA,EAAEyqC,GAAGkE,GAAG,aAAgBh6C,SAASL,EAAE,IAAIqvC,GAAG,WAAW,SAAS,KAAKrvC,EAAEghB,GAAGjhB,EAAEkB,KAAK,CAACm1C,MAAMp2C,EAAEq2C,UAAU3qC,IAAI1L,EAAE8kC,OAAOsV,KAAK,CACtf,SAASK,GAAG16C,EAAEC,GAAG,IAAIghB,EAAE,CAAC,EAAiF,OAA/EA,EAAEjhB,EAAE+M,eAAe9M,EAAE8M,cAAckU,EAAE,SAASjhB,GAAG,SAASC,EAAEghB,EAAE,MAAMjhB,GAAG,MAAMC,EAASghB,CAAC,CAAC,IAAI05B,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAGl7C,GAAG,GAAGg7C,GAAGh7C,GAAG,OAAOg7C,GAAGh7C,GAAG,IAAI26C,GAAG36C,GAAG,OAAOA,EAAE,IAAYihB,EAARhhB,EAAE06C,GAAG36C,GAAK,IAAIihB,KAAKhhB,EAAE,GAAGA,EAAEC,eAAe+gB,IAAIA,KAAKg6B,GAAG,OAAOD,GAAGh7C,GAAGC,EAAEghB,GAAG,OAAOjhB,CAAC,CAA/X04B,IAAKuiB,GAAGriB,SAASC,cAAc,OAAO4K,MAAM,mBAAmB9K,gBAAgBgiB,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoBxiB,eAAegiB,GAAGI,cAAc/N,YAAwJ,IAAIoO,GAAGF,GAAG,gBAAgBG,GAAGH,GAAG,sBAAsBI,GAAGJ,GAAG,kBAAkBK,GAAGL,GAAG,iBAAiBM,GAAG,IAAInQ,IAAIoQ,GAAG,smBAAsmB7oC,MAAM,KAC/lC,SAAS8oC,GAAG17C,EAAEC,GAAGu7C,GAAG70C,IAAI3G,EAAEC,GAAGu4B,EAAGv4B,EAAE,CAACD,GAAG,CAAC,IAAI,IAAI27C,GAAG,EAAEA,GAAGF,GAAGn7C,OAAOq7C,KAAK,CAAC,IAAIC,GAAGH,GAAGE,IAA2DD,GAApDE,GAAG7uC,cAAuD,MAAtC6uC,GAAG,GAAGhxC,cAAcgxC,GAAG31C,MAAM,IAAiB,CAACy1C,GAAGN,GAAG,kBAAkBM,GAAGL,GAAG,wBAAwBK,GAAGJ,GAAG,oBAAoBI,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGH,GAAG,mBAAmB9iB,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoE5lB,MAAM,MAAM4lB,EAAG,WAAW,uFAAuF5lB,MAAM,MAAM4lB,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2D5lB,MAAM,MAAM4lB,EAAG,qBAAqB,6DAA6D5lB,MAAM,MAC/f4lB,EAAG,sBAAsB,8DAA8D5lB,MAAM,MAAM,IAAIipC,GAAG,6NAA6NjpC,MAAM,KAAKkpC,GAAG,IAAIxjB,IAAI,0CAA0C1lB,MAAM,KAAK4E,OAAOqkC,KACzZ,SAASE,GAAG/7C,EAAEC,EAAEghB,GAAG,IAAItV,EAAE3L,EAAE05B,MAAM,gBAAgB15B,EAAEouC,cAAcntB,EAlDjE,SAAYjhB,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,EAAEC,EAAE3tB,EAAElL,GAA4B,GAAzBqmC,GAAGznC,MAAM6E,KAAK5E,WAAcmnC,GAAG,CAAC,IAAGA,GAAgC,MAAMpgC,MAAMgyB,EAAE,MAA1C,IAAIpZ,EAAEynB,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAG3nB,EAAE,CAAC,CAkDpEi9B,CAAGrwC,EAAE1L,OAAE,EAAOD,GAAGA,EAAEouC,cAAc,IAAI,CACxG,SAASsI,GAAG12C,EAAEC,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIghB,EAAE,EAAEA,EAAEjhB,EAAEM,OAAO2gB,IAAI,CAAC,IAAItV,EAAE3L,EAAEihB,GAAGnE,EAAEnR,EAAE0qC,MAAM1qC,EAAEA,EAAE2qC,UAAUt2C,EAAE,CAAC,IAAIm5B,OAAE,EAAO,GAAGl5B,EAAE,IAAI,IAAIm5B,EAAEztB,EAAErL,OAAO,EAAE,GAAG84B,EAAEA,IAAI,CAAC,IAAI3tB,EAAEE,EAAEytB,GAAG74B,EAAEkL,EAAEwwC,SAASl9B,EAAEtT,EAAE2iC,cAA2B,GAAb3iC,EAAEA,EAAEywC,SAAY37C,IAAI44B,GAAGrc,EAAE0xB,uBAAuB,MAAMxuC,EAAE+7C,GAAGj/B,EAAErR,EAAEsT,GAAGoa,EAAE54B,CAAC,MAAM,IAAI64B,EAAE,EAAEA,EAAEztB,EAAErL,OAAO84B,IAAI,CAAoD,GAA5C74B,GAAPkL,EAAEE,EAAEytB,IAAO6iB,SAASl9B,EAAEtT,EAAE2iC,cAAc3iC,EAAEA,EAAEywC,SAAY37C,IAAI44B,GAAGrc,EAAE0xB,uBAAuB,MAAMxuC,EAAE+7C,GAAGj/B,EAAErR,EAAEsT,GAAGoa,EAAE54B,CAAC,CAAC,CAAC,CAAC,GAAGkmC,GAAG,MAAMzmC,EAAE0mC,GAAGD,IAAG,EAAGC,GAAG,KAAK1mC,CAAE,CAC5a,SAASm8C,GAAEn8C,EAAEC,GAAG,IAAIghB,EAAEhhB,EAAEm8C,SAAI,IAASn7B,IAAIA,EAAEhhB,EAAEm8C,IAAI,IAAI9jB,KAAK,IAAI3sB,EAAE3L,EAAE,WAAWihB,EAAEo7B,IAAI1wC,KAAK2wC,GAAGr8C,EAAED,EAAE,GAAE,GAAIihB,EAAEhK,IAAItL,GAAG,CAAC,SAAS4wC,GAAGv8C,EAAEC,EAAEghB,GAAG,IAAItV,EAAE,EAAE1L,IAAI0L,GAAG,GAAG2wC,GAAGr7B,EAAEjhB,EAAE2L,EAAE1L,EAAE,CAAC,IAAIu8C,GAAG,kBAAkBj0C,KAAKk0C,SAAS78C,SAAS,IAAIqG,MAAM,GAAG,SAASy2C,GAAG18C,GAAG,IAAIA,EAAEw8C,IAAI,CAACx8C,EAAEw8C,KAAI,EAAGnkB,EAAGhb,SAAQ,SAASpd,GAAG,oBAAoBA,IAAI67C,GAAGO,IAAIp8C,IAAIs8C,GAAGt8C,GAAE,EAAGD,GAAGu8C,GAAGt8C,GAAE,EAAGD,GAAG,IAAG,IAAIC,EAAE,IAAID,EAAEwgC,SAASxgC,EAAEA,EAAE6+B,cAAc,OAAO5+B,GAAGA,EAAEu8C,MAAMv8C,EAAEu8C,KAAI,EAAGD,GAAG,mBAAkB,EAAGt8C,GAAG,CAAC,CACjb,SAASq8C,GAAGt8C,EAAEC,EAAEghB,EAAEtV,GAAG,OAAO4hC,GAAGttC,IAAI,KAAK,EAAE,IAAI6c,EAAEiwB,GAAG,MAAM,KAAK,EAAEjwB,EAAEowB,GAAG,MAAM,QAAQpwB,EAAEmwB,GAAGhsB,EAAEnE,EAAE6/B,KAAK,KAAK18C,EAAEghB,EAAEjhB,GAAG8c,OAAE,GAAQmpB,IAAI,eAAehmC,GAAG,cAAcA,GAAG,UAAUA,IAAI6c,GAAE,GAAInR,OAAE,IAASmR,EAAE9c,EAAEmmC,iBAAiBlmC,EAAEghB,EAAE,CAAC27B,SAAQ,EAAGC,QAAQ//B,IAAI9c,EAAEmmC,iBAAiBlmC,EAAEghB,GAAE,QAAI,IAASnE,EAAE9c,EAAEmmC,iBAAiBlmC,EAAEghB,EAAE,CAAC47B,QAAQ//B,IAAI9c,EAAEmmC,iBAAiBlmC,EAAEghB,GAAE,EAAG,CAClV,SAASksB,GAAGntC,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,IAAIqc,EAAExtB,EAAE,GAAG,KAAO,EAAF1L,IAAM,KAAO,EAAFA,IAAM,OAAO0L,EAAE3L,EAAE,OAAO,CAAC,GAAG,OAAO2L,EAAE,OAAO,IAAIytB,EAAEztB,EAAE4wB,IAAI,GAAG,IAAInD,GAAG,IAAIA,EAAE,CAAC,IAAI3tB,EAAEE,EAAE65B,UAAU6G,cAAc,GAAG5gC,IAAIqR,GAAG,IAAIrR,EAAE+0B,UAAU/0B,EAAEy5B,aAAapoB,EAAE,MAAM,GAAG,IAAIsc,EAAE,IAAIA,EAAEztB,EAAEo7B,OAAO,OAAO3N,GAAG,CAAC,IAAI74B,EAAE64B,EAAEmD,IAAI,IAAG,IAAIh8B,GAAG,IAAIA,MAAKA,EAAE64B,EAAEoM,UAAU6G,iBAAkBvvB,GAAG,IAAIvc,EAAEigC,UAAUjgC,EAAE2kC,aAAapoB,GAAE,OAAOsc,EAAEA,EAAE2N,MAAM,CAAC,KAAK,OAAOt7B,GAAG,CAAS,GAAG,QAAX2tB,EAAE+S,GAAG1gC,IAAe,OAAe,GAAG,KAAXlL,EAAE64B,EAAEmD,MAAc,IAAIh8B,EAAE,CAACoL,EAAEwtB,EAAEC,EAAE,SAASp5B,CAAC,CAACyL,EAAEA,EAAEy5B,UAAU,CAAC,CAACv5B,EAAEA,EAAEo7B,MAAM,CAAChB,IAAG,WAAW,IAAIp6B,EAAEwtB,EAAErc,EAAEgoB,GAAG7jB,GAAGmY,EAAE,GACpfp5B,EAAE,CAAC,IAAIyL,EAAE+vC,GAAG9sC,IAAI1O,GAAG,QAAG,IAASyL,EAAE,CAAC,IAAIlL,EAAE+uC,GAAGp9B,EAAElS,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAI4tC,GAAG3sB,GAAG,MAAMjhB,EAAE,IAAK,UAAU,IAAK,QAAQO,EAAE8yC,GAAG,MAAM,IAAK,UAAUnhC,EAAE,QAAQ3R,EAAE2wC,GAAG,MAAM,IAAK,WAAWh/B,EAAE,OAAO3R,EAAE2wC,GAAG,MAAM,IAAK,aAAa,IAAK,YAAY3wC,EAAE2wC,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIjwB,EAAEuvB,OAAO,MAAMxwC,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAcO,EAAEwwC,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOxwC,EAC1iBywC,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAazwC,EAAEyzC,GAAG,MAAM,KAAKoH,GAAG,KAAKC,GAAG,KAAKC,GAAG/6C,EAAE4wC,GAAG,MAAM,KAAKoK,GAAGh7C,EAAE6zC,GAAG,MAAM,IAAK,SAAS7zC,EAAEmvC,GAAG,MAAM,IAAK,QAAQnvC,EAAEs0C,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQt0C,EAAEkxC,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYlxC,EAAE+yC,GAAG,IAAIvvC,EAAE,KAAO,EAAF9D,GAAK68C,GAAG/4C,GAAG,WAAW/D,EAAEmS,EAAEpO,EAAE,OAAO0H,EAAEA,EAAE,UAAU,KAAKA,EAAE1H,EAAE,GAAG,IAAI,IAAQ4J,EAAJ9B,EAAEF,EAAI,OAC/eE,GAAG,CAAK,IAAIkxC,GAARpvC,EAAE9B,GAAU25B,UAAsF,GAA5E,IAAI73B,EAAE4uB,KAAK,OAAOwgB,IAAIpvC,EAAEovC,EAAE,OAAO5qC,IAAc,OAAV4qC,EAAE/W,GAAGn6B,EAAEsG,KAAYpO,EAAE7C,KAAK87C,GAAGnxC,EAAEkxC,EAAEpvC,MAASmvC,EAAE,MAAMjxC,EAAEA,EAAEk7B,MAAM,CAAC,EAAEhjC,EAAEzD,SAASmL,EAAE,IAAIlL,EAAEkL,EAAEyG,EAAE,KAAK+O,EAAEnE,GAAGsc,EAAEl4B,KAAK,CAACm1C,MAAM5qC,EAAE6qC,UAAUvyC,IAAI,CAAC,CAAC,GAAG,KAAO,EAAF9D,GAAK,CAA4E,GAAnCM,EAAE,aAAaP,GAAG,eAAeA,KAAtEyL,EAAE,cAAczL,GAAG,gBAAgBA,IAA2CihB,IAAI4jB,MAAK3yB,EAAE+O,EAAEyvB,eAAezvB,EAAE0vB,eAAexE,GAAGj6B,KAAIA,EAAE+qC,OAAgB18C,GAAGkL,KAAGA,EAAEqR,EAAE6b,SAAS7b,EAAEA,GAAGrR,EAAEqR,EAAE+hB,eAAepzB,EAAEytC,aAAaztC,EAAEyxC,aAAavkB,OAAUp4B,GAAqCA,EAAEoL,EAAiB,QAAfuG,GAAnCA,EAAE+O,EAAEyvB,eAAezvB,EAAE2vB,WAAkBzE,GAAGj6B,GAAG,QAC9dA,KAAR4qC,EAAEjW,GAAG30B,KAAU,IAAIA,EAAEqqB,KAAK,IAAIrqB,EAAEqqB,OAAKrqB,EAAE,QAAU3R,EAAE,KAAK2R,EAAEvG,GAAKpL,IAAI2R,GAAE,CAAgU,GAA/TnO,EAAEgtC,GAAGgM,EAAE,eAAe5qC,EAAE,eAAetG,EAAE,QAAW,eAAe7L,GAAG,gBAAgBA,IAAE+D,EAAEuvC,GAAGyJ,EAAE,iBAAiB5qC,EAAE,iBAAiBtG,EAAE,WAAUixC,EAAE,MAAMv8C,EAAEkL,EAAEmrC,GAAGr2C,GAAGoN,EAAE,MAAMuE,EAAEzG,EAAEmrC,GAAG1kC,IAAGzG,EAAE,IAAI1H,EAAEg5C,EAAElxC,EAAE,QAAQtL,EAAE0gB,EAAEnE,IAAKioB,OAAO+X,EAAErxC,EAAEilC,cAAc/iC,EAAEovC,EAAE,KAAK5Q,GAAGrvB,KAAKnR,KAAI5H,EAAE,IAAIA,EAAEoO,EAAEtG,EAAE,QAAQqG,EAAE+O,EAAEnE,IAAKioB,OAAOp3B,EAAE5J,EAAE2sC,cAAcoM,EAAEC,EAAEh5C,GAAG+4C,EAAEC,EAAKx8C,GAAG2R,EAAEjS,EAAE,CAAa,IAARkS,EAAED,EAAErG,EAAE,EAAM8B,EAAhB5J,EAAExD,EAAkBoN,EAAEA,EAAEwvC,GAAGxvC,GAAG9B,IAAQ,IAAJ8B,EAAE,EAAMovC,EAAE5qC,EAAE4qC,EAAEA,EAAEI,GAAGJ,GAAGpvC,IAAI,KAAK,EAAE9B,EAAE8B,GAAG5J,EAAEo5C,GAAGp5C,GAAG8H,IAAI,KAAK,EAAE8B,EAAE9B,GAAGsG,EACpfgrC,GAAGhrC,GAAGxE,IAAI,KAAK9B,KAAK,CAAC,GAAG9H,IAAIoO,GAAG,OAAOA,GAAGpO,IAAIoO,EAAE20B,UAAU,MAAM7mC,EAAE8D,EAAEo5C,GAAGp5C,GAAGoO,EAAEgrC,GAAGhrC,EAAE,CAACpO,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOxD,GAAG68C,GAAGhkB,EAAE3tB,EAAElL,EAAEwD,GAAE,GAAI,OAAOmO,GAAG,OAAO4qC,GAAGM,GAAGhkB,EAAE0jB,EAAE5qC,EAAEnO,GAAE,EAAG,CAA8D,GAAG,YAA1CxD,GAAjBkL,EAAEE,EAAEirC,GAAGjrC,GAAGgtB,QAAWsE,UAAUxxB,EAAEwxB,SAASlwB,gBAA+B,UAAUxM,GAAG,SAASkL,EAAEiuB,KAAK,IAAI2jB,EAAGxG,QAAQ,GAAGX,GAAGzqC,GAAG,GAAGqrC,GAAGuG,EAAG3F,OAAO,CAAC2F,EAAG7F,GAAG,IAAI8F,EAAGhG,EAAE,MAAM/2C,EAAEkL,EAAEwxB,WAAW,UAAU18B,EAAEwM,gBAAgB,aAAatB,EAAEiuB,MAAM,UAAUjuB,EAAEiuB,QAAQ2jB,EAAG5F,IACrV,OAD4V4F,IAAKA,EAAGA,EAAGr9C,EAAE2L,IAAKwqC,GAAG/c,EAAEikB,EAAGp8B,EAAEnE,IAAWwgC,GAAIA,EAAGt9C,EAAEyL,EAAEE,GAAG,aAAa3L,IAAIs9C,EAAG7xC,EAAE2yB,gBAClfkf,EAAG9e,YAAY,WAAW/yB,EAAEiuB,MAAMiF,GAAGlzB,EAAE,SAASA,EAAE4C,QAAOivC,EAAG3xC,EAAEirC,GAAGjrC,GAAGgtB,OAAc34B,GAAG,IAAK,WAAak2C,GAAGoH,IAAK,SAASA,EAAG7E,mBAAgB4B,GAAGiD,EAAGhD,GAAG3uC,EAAE4uC,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGrhB,EAAEnY,EAAEnE,GAAG,MAAM,IAAK,kBAAkB,GAAGs9B,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGrhB,EAAEnY,EAAEnE,GAAG,IAAIygC,EAAG,GAAGxI,GAAG90C,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAIw9C,EAAG,qBAAqB,MAAMv9C,EAAE,IAAK,iBAAiBu9C,EAAG,mBACpe,MAAMv9C,EAAE,IAAK,oBAAoBu9C,EAAG,sBAAsB,MAAMv9C,EAAEu9C,OAAG,CAAM,MAAMhI,GAAGF,GAAGt1C,EAAEihB,KAAKu8B,EAAG,oBAAoB,YAAYx9C,GAAG,MAAMihB,EAAE4sB,UAAU2P,EAAG,sBAAsBA,IAAKrI,IAAI,OAAOl0B,EAAE1f,SAASi0C,IAAI,uBAAuBgI,EAAG,qBAAqBA,GAAIhI,KAAK+H,EAAG5P,OAAYF,GAAG,UAARD,GAAG1wB,GAAkB0wB,GAAGn/B,MAAMm/B,GAAG9N,YAAY8V,IAAG,IAAiB,GAAZ8H,EAAGlH,GAAGzqC,EAAE6xC,IAASl9C,SAASk9C,EAAG,IAAI9L,GAAG8L,EAAGx9C,EAAE,KAAKihB,EAAEnE,GAAGsc,EAAEl4B,KAAK,CAACm1C,MAAMmH,EAAGlH,UAAUgH,IAAKC,EAAGC,EAAGxgC,KAAKugC,EAAa,QAATA,EAAGhI,GAAGt0B,MAAeu8B,EAAGxgC,KAAKugC,MAAUA,EAAGrI,GA5BhM,SAAYl1C,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAOu1C,GAAGt1C,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEmzC,MAAa,MAAKiC,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAOp1C,EAAEC,EAAE+c,QAASo4B,IAAIC,GAAG,KAAKr1C,EAAE,QAAQ,OAAO,KAAK,CA4BEy9C,CAAGz9C,EAAEihB,GA3Bzd,SAAYjhB,EAAEC,GAAG,GAAGu1C,GAAG,MAAM,mBAAmBx1C,IAAI+0C,IAAIO,GAAGt1C,EAAEC,IAAID,EAAE2tC,KAAKD,GAAGD,GAAGD,GAAG,KAAKgI,IAAG,EAAGx1C,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKC,EAAEiwC,SAASjwC,EAAEmwC,QAAQnwC,EAAEowC,UAAUpwC,EAAEiwC,SAASjwC,EAAEmwC,OAAO,CAAC,GAAGnwC,EAAEy9C,MAAM,EAAEz9C,EAAEy9C,KAAKp9C,OAAO,OAAOL,EAAEy9C,KAAK,GAAGz9C,EAAEmzC,MAAM,OAAOrpB,OAAOipB,aAAa/yC,EAAEmzC,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAO+B,IAAI,OAAOl1C,EAAEsB,OAAO,KAAKtB,EAAE+c,KAAyB,CA2BqF2gC,CAAG39C,EAAEihB,MACje,GADoetV,EAAEyqC,GAAGzqC,EAAE,kBACverL,SAASwc,EAAE,IAAI40B,GAAG,gBAAgB,cAAc,KAAKzwB,EAAEnE,GAAGsc,EAAEl4B,KAAK,CAACm1C,MAAMv5B,EAAEw5B,UAAU3qC,IAAImR,EAAEE,KAAKugC,GAAG,CAAC7G,GAAGtd,EAAEn5B,EAAE,GAAE,CAAC,SAAS+8C,GAAGh9C,EAAEC,EAAEghB,GAAG,MAAM,CAACg7B,SAASj8C,EAAEk8C,SAASj8C,EAAEmuC,cAAcntB,EAAE,CAAC,SAASm1B,GAAGp2C,EAAEC,GAAG,IAAI,IAAIghB,EAAEhhB,EAAE,UAAU0L,EAAE,GAAG,OAAO3L,GAAG,CAAC,IAAI8c,EAAE9c,EAAEm5B,EAAErc,EAAE0oB,UAAU,IAAI1oB,EAAEyf,KAAK,OAAOpD,IAAIrc,EAAEqc,EAAY,OAAVA,EAAE6M,GAAGhmC,EAAEihB,KAAYtV,EAAEiyC,QAAQZ,GAAGh9C,EAAEm5B,EAAErc,IAAc,OAAVqc,EAAE6M,GAAGhmC,EAAEC,KAAY0L,EAAEzK,KAAK87C,GAAGh9C,EAAEm5B,EAAErc,KAAK9c,EAAEA,EAAE+mC,MAAM,CAAC,OAAOp7B,CAAC,CAAC,SAASwxC,GAAGn9C,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAE+mC,aAAa/mC,GAAG,IAAIA,EAAEu8B,KAAK,OAAOv8B,GAAI,IAAI,CACnd,SAASo9C,GAAGp9C,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,IAAI,IAAIqc,EAAEl5B,EAAEiuC,WAAW9U,EAAE,GAAG,OAAOnY,GAAGA,IAAItV,GAAG,CAAC,IAAIF,EAAEwV,EAAE1gB,EAAEkL,EAAEq7B,UAAU/nB,EAAEtT,EAAE+5B,UAAU,GAAG,OAAOjlC,GAAGA,IAAIoL,EAAE,MAAM,IAAIF,EAAE8wB,KAAK,OAAOxd,IAAItT,EAAEsT,EAAEjC,EAAa,OAAVvc,EAAEylC,GAAG/kB,EAAEkY,KAAYC,EAAEwkB,QAAQZ,GAAG/7B,EAAE1gB,EAAEkL,IAAKqR,GAAc,OAAVvc,EAAEylC,GAAG/kB,EAAEkY,KAAYC,EAAEl4B,KAAK87C,GAAG/7B,EAAE1gB,EAAEkL,KAAMwV,EAAEA,EAAE8lB,MAAM,CAAC,IAAI3N,EAAE94B,QAAQN,EAAEkB,KAAK,CAACm1C,MAAMp2C,EAAEq2C,UAAUld,GAAG,CAAC,IAAIykB,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAG/9C,GAAG,OAAO,kBAAkBA,EAAEA,EAAE,GAAGA,GAAGyJ,QAAQo0C,GAAG,MAAMp0C,QAAQq0C,GAAG,GAAG,CAAC,SAASE,GAAGh+C,EAAEC,EAAEghB,GAAW,GAARhhB,EAAE89C,GAAG99C,GAAM89C,GAAG/9C,KAAKC,GAAGghB,EAAE,MAAM9a,MAAMgyB,EAAE,KAAM,CAAC,SAAS8lB,KAAK,CAC9e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGp+C,EAAEC,GAAG,MAAM,aAAaD,GAAG,aAAaA,GAAG,kBAAkBC,EAAEq/B,UAAU,kBAAkBr/B,EAAEq/B,UAAU,kBAAkBr/B,EAAEo/B,yBAAyB,OAAOp/B,EAAEo/B,yBAAyB,MAAMp/B,EAAEo/B,wBAAwBgf,MAAM,CAC5P,IAAIC,GAAG,oBAAoBC,WAAWA,gBAAW,EAAOC,GAAG,oBAAoBC,aAAaA,kBAAa,EAAOC,GAAG,oBAAoBC,QAAQA,aAAQ,EAAOC,GAAG,oBAAoBC,eAAeA,eAAe,qBAAqBH,GAAG,SAAS1+C,GAAG,OAAO0+C,GAAGI,QAAQ,MAAMC,KAAK/+C,GAAGg/C,MAAMC,GAAG,EAAEX,GAAG,SAASW,GAAGj/C,GAAGu+C,YAAW,WAAW,MAAMv+C,CAAE,GAAE,CACpV,SAASk/C,GAAGl/C,EAAEC,GAAG,IAAIghB,EAAEhhB,EAAE0L,EAAE,EAAE,EAAE,CAAC,IAAImR,EAAEmE,EAAE+2B,YAA6B,GAAjBh4C,EAAEkgC,YAAYjf,GAAMnE,GAAG,IAAIA,EAAE0jB,SAAS,GAAY,QAATvf,EAAEnE,EAAEE,MAAc,CAAC,GAAG,IAAIrR,EAA0B,OAAvB3L,EAAEkgC,YAAYpjB,QAAG8vB,GAAG3sC,GAAU0L,GAAG,KAAK,MAAMsV,GAAG,OAAOA,GAAG,OAAOA,GAAGtV,IAAIsV,EAAEnE,CAAC,OAAOmE,GAAG2rB,GAAG3sC,EAAE,CAAC,SAASk/C,GAAGn/C,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEg4C,YAAY,CAAC,IAAI/3C,EAAED,EAAEwgC,SAAS,GAAG,IAAIvgC,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAED,EAAEgd,OAAiB,OAAO/c,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,CAAC,OAAOD,CAAC,CACjY,SAASo/C,GAAGp/C,GAAGA,EAAEA,EAAEq/C,gBAAgB,IAAI,IAAIp/C,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEwgC,SAAS,CAAC,IAAIvf,EAAEjhB,EAAEgd,KAAK,GAAG,MAAMiE,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAIhhB,EAAE,OAAOD,EAAEC,GAAG,KAAK,OAAOghB,GAAGhhB,GAAG,CAACD,EAAEA,EAAEq/C,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAG/2C,KAAKk0C,SAAS78C,SAAS,IAAIqG,MAAM,GAAGs5C,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGrC,GAAG,oBAAoBqC,GAAGlD,GAAG,iBAAiBkD,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAASnT,GAAGnsC,GAAG,IAAIC,EAAED,EAAEu/C,IAAI,GAAGt/C,EAAE,OAAOA,EAAE,IAAI,IAAIghB,EAAEjhB,EAAEklC,WAAWjkB,GAAG,CAAC,GAAGhhB,EAAEghB,EAAEg8B,KAAKh8B,EAAEs+B,IAAI,CAAe,GAAdt+B,EAAEhhB,EAAE6mC,UAAa,OAAO7mC,EAAEonC,OAAO,OAAOpmB,GAAG,OAAOA,EAAEomB,MAAM,IAAIrnC,EAAEo/C,GAAGp/C,GAAG,OAAOA,GAAG,CAAC,GAAGihB,EAAEjhB,EAAEu/C,IAAI,OAAOt+B,EAAEjhB,EAAEo/C,GAAGp/C,EAAE,CAAC,OAAOC,CAAC,CAAKghB,GAAJjhB,EAAEihB,GAAMikB,UAAU,CAAC,OAAO,IAAI,CAAC,SAASK,GAAGvlC,GAAkB,QAAfA,EAAEA,EAAEu/C,KAAKv/C,EAAEi9C,MAAc,IAAIj9C,EAAEu8B,KAAK,IAAIv8B,EAAEu8B,KAAK,KAAKv8B,EAAEu8B,KAAK,IAAIv8B,EAAEu8B,IAAI,KAAKv8B,CAAC,CAAC,SAAS42C,GAAG52C,GAAG,GAAG,IAAIA,EAAEu8B,KAAK,IAAIv8B,EAAEu8B,IAAI,OAAOv8B,EAAEwlC,UAAU,MAAMr/B,MAAMgyB,EAAE,IAAK,CAAC,SAASsN,GAAGzlC,GAAG,OAAOA,EAAEw/C,KAAK,IAAI,CAAC,IAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAG7/C,GAAG,MAAM,CAACunC,QAAQvnC,EAAE,CACve,SAASsiB,GAAEtiB,GAAG,EAAE4/C,KAAK5/C,EAAEunC,QAAQoY,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASE,GAAE9/C,EAAEC,GAAG2/C,KAAKD,GAAGC,IAAI5/C,EAAEunC,QAAQvnC,EAAEunC,QAAQtnC,CAAC,CAAC,IAAI8/C,GAAG,CAAC,EAAEC,GAAEH,GAAGE,IAAIE,GAAGJ,IAAG,GAAIK,GAAGH,GAAG,SAASI,GAAGngD,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAE05B,KAAK0mB,aAAa,IAAIn/B,EAAE,OAAO8+B,GAAG,IAAIp0C,EAAE3L,EAAEwlC,UAAU,GAAG75B,GAAGA,EAAE00C,8CAA8CpgD,EAAE,OAAO0L,EAAE20C,0CAA0C,IAASnnB,EAALrc,EAAE,CAAC,EAAI,IAAIqc,KAAKlY,EAAEnE,EAAEqc,GAAGl5B,EAAEk5B,GAAoH,OAAjHxtB,KAAI3L,EAAEA,EAAEwlC,WAAY6a,4CAA4CpgD,EAAED,EAAEsgD,0CAA0CxjC,GAAUA,CAAC,CAC9d,SAASyjC,GAAGvgD,GAAyB,OAAO,QAA7BA,EAAEA,EAAEwgD,yBAAmC,IAASxgD,CAAC,CAAC,SAASygD,KAAKn+B,GAAE29B,IAAI39B,GAAE09B,GAAE,CAAC,SAASU,GAAG1gD,EAAEC,EAAEghB,GAAG,GAAG++B,GAAEzY,UAAUwY,GAAG,MAAM55C,MAAMgyB,EAAE,MAAM2nB,GAAEE,GAAE//C,GAAG6/C,GAAEG,GAAGh/B,EAAE,CAAC,SAAS0/B,GAAG3gD,EAAEC,EAAEghB,GAAG,IAAItV,EAAE3L,EAAEwlC,UAAgC,GAAtBvlC,EAAEA,EAAEugD,kBAAqB,oBAAoB70C,EAAEi1C,gBAAgB,OAAO3/B,EAAwB,IAAI,IAAInE,KAA9BnR,EAAEA,EAAEi1C,kBAAiC,KAAK9jC,KAAK7c,GAAG,MAAMkG,MAAMgyB,EAAE,IAAI2E,EAAG98B,IAAI,UAAU8c,IAAI,OAAO6e,EAAE,CAAC,EAAE1a,EAAEtV,EAAE,CACxX,SAASk1C,GAAG7gD,GAA2G,OAAxGA,GAAGA,EAAEA,EAAEwlC,YAAYxlC,EAAE8gD,2CAA2Cf,GAAGG,GAAGF,GAAEzY,QAAQuY,GAAEE,GAAEhgD,GAAG8/C,GAAEG,GAAGA,GAAG1Y,UAAe,CAAE,CAAC,SAASwZ,GAAG/gD,EAAEC,EAAEghB,GAAG,IAAItV,EAAE3L,EAAEwlC,UAAU,IAAI75B,EAAE,MAAMxF,MAAMgyB,EAAE,MAAMlX,GAAGjhB,EAAE2gD,GAAG3gD,EAAEC,EAAEigD,IAAIv0C,EAAEm1C,0CAA0C9gD,EAAEsiB,GAAE29B,IAAI39B,GAAE09B,IAAGF,GAAEE,GAAEhgD,IAAIsiB,GAAE29B,IAAIH,GAAEG,GAAGh/B,EAAE,CAAC,IAAI+/B,GAAG,KAAKC,IAAG,EAAGz+B,IAAG,EAAG,SAAS0+B,GAAGlhD,GAAG,OAAOghD,GAAGA,GAAG,CAAChhD,GAAGghD,GAAG9/C,KAAKlB,EAAE,CAChW,SAASmhD,KAAK,IAAI3+B,IAAI,OAAOw+B,GAAG,CAACx+B,IAAG,EAAG,IAAIxiB,EAAE,EAAEC,EAAEuqC,GAAE,IAAI,IAAIvpB,EAAE+/B,GAAG,IAAIxW,GAAE,EAAExqC,EAAEihB,EAAE3gB,OAAON,IAAI,CAAC,IAAI2L,EAAEsV,EAAEjhB,GAAG,GAAG2L,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAACq1C,GAAG,KAAKC,IAAG,CAAE,CAAC,MAAMnkC,GAAG,MAAM,OAAOkkC,KAAKA,GAAGA,GAAG/6C,MAAMjG,EAAE,IAAI0nC,GAAGY,GAAG6Y,IAAIrkC,CAAE,CAAC,QAAQ0tB,GAAEvqC,EAAEuiB,IAAG,CAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI4+B,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASC,GAAG7hD,EAAEC,GAAGmhD,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAGthD,EAAEuhD,GAAGthD,CAAC,CACjV,SAAS6hD,GAAG9hD,EAAEC,EAAEghB,GAAGugC,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGA,GAAG1hD,EAAE,IAAI2L,EAAEg2C,GAAG3hD,EAAE4hD,GAAG,IAAI9kC,EAAE,GAAGosB,GAAGv9B,GAAG,EAAEA,KAAK,GAAGmR,GAAGmE,GAAG,EAAE,IAAIkY,EAAE,GAAG+P,GAAGjpC,GAAG6c,EAAE,GAAG,GAAGqc,EAAE,CAAC,IAAIC,EAAEtc,EAAEA,EAAE,EAAEqc,GAAGxtB,GAAG,GAAGytB,GAAG,GAAGx5B,SAAS,IAAI+L,IAAIytB,EAAEtc,GAAGsc,EAAEuoB,GAAG,GAAG,GAAGzY,GAAGjpC,GAAG6c,EAAEmE,GAAGnE,EAAEnR,EAAEi2C,GAAGzoB,EAAEn5B,CAAC,MAAM2hD,GAAG,GAAGxoB,EAAElY,GAAGnE,EAAEnR,EAAEi2C,GAAG5hD,CAAC,CAAC,SAAS+hD,GAAG/hD,GAAG,OAAOA,EAAE+mC,SAAS8a,GAAG7hD,EAAE,GAAG8hD,GAAG9hD,EAAE,EAAE,GAAG,CAAC,SAASgiD,GAAGhiD,GAAG,KAAKA,IAAIshD,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAK,KAAKrhD,IAAI0hD,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKG,GAAGJ,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAI,CAAC,IAAIQ,GAAG,KAAKC,GAAG,KAAKC,IAAE,EAAGC,GAAG,KACje,SAASC,GAAGriD,EAAEC,GAAG,IAAIghB,EAAEqhC,GAAG,EAAE,KAAK,KAAK,GAAGrhC,EAAEshC,YAAY,UAAUthC,EAAEukB,UAAUvlC,EAAEghB,EAAE8lB,OAAO/mC,EAAgB,QAAdC,EAAED,EAAEwiD,YAAoBxiD,EAAEwiD,UAAU,CAACvhC,GAAGjhB,EAAEiD,OAAO,IAAIhD,EAAEiB,KAAK+f,EAAE,CACxJ,SAASwhC,GAAGziD,EAAEC,GAAG,OAAOD,EAAEu8B,KAAK,KAAK,EAAE,IAAItb,EAAEjhB,EAAE05B,KAAyE,OAAO,QAA3Ez5B,EAAE,IAAIA,EAAEugC,UAAUvf,EAAElU,gBAAgB9M,EAAEg9B,SAASlwB,cAAc,KAAK9M,KAAmBD,EAAEwlC,UAAUvlC,EAAEgiD,GAAGjiD,EAAEkiD,GAAG/C,GAAGl/C,EAAEggC,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7ChgC,EAAE,KAAKD,EAAE0iD,cAAc,IAAIziD,EAAEugC,SAAS,KAAKvgC,KAAYD,EAAEwlC,UAAUvlC,EAAEgiD,GAAGjiD,EAAEkiD,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxBjiD,EAAE,IAAIA,EAAEugC,SAAS,KAAKvgC,KAAYghB,EAAE,OAAOygC,GAAG,CAACtU,GAAGuU,GAAG5/C,SAAS6/C,IAAI,KAAK5hD,EAAEinC,cAAc,CAACC,WAAWjnC,EAAE0iD,YAAY1hC,EAAE2hC,UAAU,aAAY3hC,EAAEqhC,GAAG,GAAG,KAAK,KAAK,IAAK9c,UAAUvlC,EAAEghB,EAAE8lB,OAAO/mC,EAAEA,EAAEqnC,MAAMpmB,EAAEghC,GAAGjiD,EAAEkiD,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAG,CAAC,SAASW,GAAG7iD,GAAG,OAAO,KAAY,EAAPA,EAAE8iD,OAAS,KAAa,IAAR9iD,EAAEiD,MAAU,CAAC,SAAS8/C,GAAG/iD,GAAG,GAAGmiD,GAAE,CAAC,IAAIliD,EAAEiiD,GAAG,GAAGjiD,EAAE,CAAC,IAAIghB,EAAEhhB,EAAE,IAAIwiD,GAAGziD,EAAEC,GAAG,CAAC,GAAG4iD,GAAG7iD,GAAG,MAAMmG,MAAMgyB,EAAE,MAAMl4B,EAAEk/C,GAAGl+B,EAAE+2B,aAAa,IAAIrsC,EAAEs2C,GAAGhiD,GAAGwiD,GAAGziD,EAAEC,GAAGoiD,GAAG12C,EAAEsV,IAAIjhB,EAAEiD,OAAe,KAATjD,EAAEiD,MAAY,EAAEk/C,IAAE,EAAGF,GAAGjiD,EAAE,CAAC,KAAK,CAAC,GAAG6iD,GAAG7iD,GAAG,MAAMmG,MAAMgyB,EAAE,MAAMn4B,EAAEiD,OAAe,KAATjD,EAAEiD,MAAY,EAAEk/C,IAAE,EAAGF,GAAGjiD,CAAC,CAAC,CAAC,CAAC,SAASgjD,GAAGhjD,GAAG,IAAIA,EAAEA,EAAE+mC,OAAO,OAAO/mC,GAAG,IAAIA,EAAEu8B,KAAK,IAAIv8B,EAAEu8B,KAAK,KAAKv8B,EAAEu8B,KAAKv8B,EAAEA,EAAE+mC,OAAOkb,GAAGjiD,CAAC,CACha,SAASijD,GAAGjjD,GAAG,GAAGA,IAAIiiD,GAAG,OAAM,EAAG,IAAIE,GAAE,OAAOa,GAAGhjD,GAAGmiD,IAAE,GAAG,EAAG,IAAIliD,EAAkG,IAA/FA,EAAE,IAAID,EAAEu8B,QAAQt8B,EAAE,IAAID,EAAEu8B,OAAgBt8B,EAAE,UAAXA,EAAED,EAAE05B,OAAmB,SAASz5B,IAAIm+C,GAAGp+C,EAAE05B,KAAK15B,EAAEkjD,gBAAmBjjD,IAAIA,EAAEiiD,IAAI,CAAC,GAAGW,GAAG7iD,GAAG,MAAMmjD,KAAKh9C,MAAMgyB,EAAE,MAAM,KAAKl4B,GAAGoiD,GAAGriD,EAAEC,GAAGA,EAAEk/C,GAAGl/C,EAAE+3C,YAAY,CAAO,GAANgL,GAAGhjD,GAAM,KAAKA,EAAEu8B,IAAI,CAAgD,KAA7Bv8B,EAAE,QAApBA,EAAEA,EAAEinC,eAAyBjnC,EAAEknC,WAAW,MAAW,MAAM/gC,MAAMgyB,EAAE,MAAMn4B,EAAE,CAAiB,IAAhBA,EAAEA,EAAEg4C,YAAgB/3C,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEwgC,SAAS,CAAC,IAAIvf,EAAEjhB,EAAEgd,KAAK,GAAG,OAAOiE,EAAE,CAAC,GAAG,IAAIhhB,EAAE,CAACiiD,GAAG/C,GAAGn/C,EAAEg4C,aAAa,MAAMh4C,CAAC,CAACC,GAAG,KAAK,MAAMghB,GAAG,OAAOA,GAAG,OAAOA,GAAGhhB,GAAG,CAACD,EAAEA,EAAEg4C,WAAW,CAACkK,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAG9C,GAAGn/C,EAAEwlC,UAAUwS,aAAa,KAAK,OAAM,CAAE,CAAC,SAASmL,KAAK,IAAI,IAAInjD,EAAEkiD,GAAGliD,GAAGA,EAAEm/C,GAAGn/C,EAAEg4C,YAAY,CAAC,SAASoL,KAAKlB,GAAGD,GAAG,KAAKE,IAAE,CAAE,CAAC,SAASkB,GAAGrjD,GAAG,OAAOoiD,GAAGA,GAAG,CAACpiD,GAAGoiD,GAAGlhD,KAAKlB,EAAE,CAAC,IAAIsjD,GAAG9oB,EAAGsS,wBAAwB,SAASyW,GAAGvjD,EAAEC,GAAG,GAAGD,GAAGA,EAAEwjD,aAAa,CAA4B,IAAI,IAAIviC,KAAnChhB,EAAE07B,EAAE,CAAC,EAAE17B,GAAGD,EAAEA,EAAEwjD,kBAA4B,IAASvjD,EAAEghB,KAAKhhB,EAAEghB,GAAGjhB,EAAEihB,IAAI,OAAOhhB,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAIwjD,GAAG5D,GAAG,MAAM6D,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAG9jD,GAAG,IAAIC,EAAEwjD,GAAGlc,QAAQjlB,GAAEmhC,IAAIzjD,EAAE+jD,cAAc9jD,CAAC,CACjd,SAAS+jD,GAAGhkD,EAAEC,EAAEghB,GAAG,KAAK,OAAOjhB,GAAG,CAAC,IAAI2L,EAAE3L,EAAE8mC,UAA+H,IAApH9mC,EAAEikD,WAAWhkD,KAAKA,GAAGD,EAAEikD,YAAYhkD,EAAE,OAAO0L,IAAIA,EAAEs4C,YAAYhkD,IAAI,OAAO0L,IAAIA,EAAEs4C,WAAWhkD,KAAKA,IAAI0L,EAAEs4C,YAAYhkD,GAAMD,IAAIihB,EAAE,MAAMjhB,EAAEA,EAAE+mC,MAAM,CAAC,CAAC,SAASmd,GAAGlkD,EAAEC,GAAGyjD,GAAG1jD,EAAE4jD,GAAGD,GAAG,KAAsB,QAAjB3jD,EAAEA,EAAEmkD,eAAuB,OAAOnkD,EAAEokD,eAAe,KAAKpkD,EAAEqkD,MAAMpkD,KAAKqkD,IAAG,GAAItkD,EAAEokD,aAAa,KAAK,CACtU,SAASG,GAAGvkD,GAAG,IAAIC,EAAED,EAAE+jD,cAAc,GAAGH,KAAK5jD,EAAE,GAAGA,EAAE,CAACwkD,QAAQxkD,EAAEykD,cAAcxkD,EAAEqc,KAAK,MAAM,OAAOqnC,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMv9C,MAAMgyB,EAAE,MAAMwrB,GAAG3jD,EAAE0jD,GAAGS,aAAa,CAACE,MAAM,EAAED,aAAapkD,EAAE,MAAM2jD,GAAGA,GAAGrnC,KAAKtc,EAAE,OAAOC,CAAC,CAAC,IAAIykD,GAAG,KAAK,SAASC,GAAG3kD,GAAG,OAAO0kD,GAAGA,GAAG,CAAC1kD,GAAG0kD,GAAGxjD,KAAKlB,EAAE,CAAC,SAAS4kD,GAAG5kD,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE7c,EAAE4kD,YAA+E,OAAnE,OAAO/nC,GAAGmE,EAAE3E,KAAK2E,EAAE0jC,GAAG1kD,KAAKghB,EAAE3E,KAAKQ,EAAER,KAAKQ,EAAER,KAAK2E,GAAGhhB,EAAE4kD,YAAY5jC,EAAS6jC,GAAG9kD,EAAE2L,EAAE,CAChY,SAASm5C,GAAG9kD,EAAEC,GAAGD,EAAEqkD,OAAOpkD,EAAE,IAAIghB,EAAEjhB,EAAE8mC,UAAqC,IAA3B,OAAO7lB,IAAIA,EAAEojC,OAAOpkD,GAAGghB,EAAEjhB,EAAMA,EAAEA,EAAE+mC,OAAO,OAAO/mC,GAAGA,EAAEikD,YAAYhkD,EAAgB,QAAdghB,EAAEjhB,EAAE8mC,aAAqB7lB,EAAEgjC,YAAYhkD,GAAGghB,EAAEjhB,EAAEA,EAAEA,EAAE+mC,OAAO,OAAO,IAAI9lB,EAAEsb,IAAItb,EAAEukB,UAAU,IAAI,CAAC,IAAIuf,IAAG,EAAG,SAASC,GAAGhlD,GAAGA,EAAEilD,YAAY,CAACC,UAAUllD,EAAEinC,cAAcke,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,KAAKT,YAAY,KAAKR,MAAM,GAAGkB,QAAQ,KAAK,CACpX,SAASC,GAAGxlD,EAAEC,GAAGD,EAAEA,EAAEilD,YAAYhlD,EAAEglD,cAAcjlD,IAAIC,EAAEglD,YAAY,CAACC,UAAUllD,EAAEklD,UAAUC,gBAAgBnlD,EAAEmlD,gBAAgBC,eAAeplD,EAAEolD,eAAeC,OAAOrlD,EAAEqlD,OAAOE,QAAQvlD,EAAEulD,SAAS,CAAC,SAASE,GAAGzlD,EAAEC,GAAG,MAAM,CAACylD,UAAU1lD,EAAE2lD,KAAK1lD,EAAEs8B,IAAI,EAAEqpB,QAAQ,KAAKtmD,SAAS,KAAKgd,KAAK,KAAK,CACtR,SAASupC,GAAG7lD,EAAEC,EAAEghB,GAAG,IAAItV,EAAE3L,EAAEilD,YAAY,GAAG,OAAOt5C,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAE05C,OAAU,KAAO,EAAFS,IAAK,CAAC,IAAIhpC,EAAEnR,EAAE25C,QAA+D,OAAvD,OAAOxoC,EAAE7c,EAAEqc,KAAKrc,GAAGA,EAAEqc,KAAKQ,EAAER,KAAKQ,EAAER,KAAKrc,GAAG0L,EAAE25C,QAAQrlD,EAAS6kD,GAAG9kD,EAAEihB,EAAE,CAAoF,OAAnE,QAAhBnE,EAAEnR,EAAEk5C,cAAsB5kD,EAAEqc,KAAKrc,EAAE0kD,GAAGh5C,KAAK1L,EAAEqc,KAAKQ,EAAER,KAAKQ,EAAER,KAAKrc,GAAG0L,EAAEk5C,YAAY5kD,EAAS6kD,GAAG9kD,EAAEihB,EAAE,CAAC,SAAS8kC,GAAG/lD,EAAEC,EAAEghB,GAAmB,GAAG,QAAnBhhB,EAAEA,EAAEglD,eAA0BhlD,EAAEA,EAAEolD,OAAO,KAAO,QAAFpkC,IAAY,CAAC,IAAItV,EAAE1L,EAAEokD,MAAwBpjC,GAAlBtV,GAAG3L,EAAE4pC,aAAkB3pC,EAAEokD,MAAMpjC,EAAEspB,GAAGvqC,EAAEihB,EAAE,CAAC,CACrZ,SAAS+kC,GAAGhmD,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAEilD,YAAYt5C,EAAE3L,EAAE8mC,UAAU,GAAG,OAAOn7B,GAAoBsV,KAAhBtV,EAAEA,EAAEs5C,aAAmB,CAAC,IAAInoC,EAAE,KAAKqc,EAAE,KAAyB,GAAG,QAAvBlY,EAAEA,EAAEkkC,iBAA4B,CAAC,EAAE,CAAC,IAAI/rB,EAAE,CAACssB,UAAUzkC,EAAEykC,UAAUC,KAAK1kC,EAAE0kC,KAAKppB,IAAItb,EAAEsb,IAAIqpB,QAAQ3kC,EAAE2kC,QAAQtmD,SAAS2hB,EAAE3hB,SAASgd,KAAK,MAAM,OAAO6c,EAAErc,EAAEqc,EAAEC,EAAED,EAAEA,EAAE7c,KAAK8c,EAAEnY,EAAEA,EAAE3E,IAAI,OAAO,OAAO2E,GAAG,OAAOkY,EAAErc,EAAEqc,EAAEl5B,EAAEk5B,EAAEA,EAAE7c,KAAKrc,CAAC,MAAM6c,EAAEqc,EAAEl5B,EAAiH,OAA/GghB,EAAE,CAACikC,UAAUv5C,EAAEu5C,UAAUC,gBAAgBroC,EAAEsoC,eAAejsB,EAAEksB,OAAO15C,EAAE05C,OAAOE,QAAQ55C,EAAE45C,cAASvlD,EAAEilD,YAAYhkC,EAAQ,CAAoB,QAAnBjhB,EAAEihB,EAAEmkC,gBAAwBnkC,EAAEkkC,gBAAgBllD,EAAED,EAAEsc,KACnfrc,EAAEghB,EAAEmkC,eAAenlD,CAAC,CACpB,SAASgmD,GAAGjmD,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE9c,EAAEilD,YAAYF,IAAG,EAAG,IAAI5rB,EAAErc,EAAEqoC,gBAAgB/rB,EAAEtc,EAAEsoC,eAAe35C,EAAEqR,EAAEuoC,OAAOC,QAAQ,GAAG,OAAO75C,EAAE,CAACqR,EAAEuoC,OAAOC,QAAQ,KAAK,IAAI/kD,EAAEkL,EAAEsT,EAAExe,EAAE+b,KAAK/b,EAAE+b,KAAK,KAAK,OAAO8c,EAAED,EAAEpa,EAAEqa,EAAE9c,KAAKyC,EAAEqa,EAAE74B,EAAE,IAAIsC,EAAE7C,EAAE8mC,UAAU,OAAOjkC,KAAoB4I,GAAhB5I,EAAEA,EAAEoiD,aAAgBG,kBAAmBhsB,IAAI,OAAO3tB,EAAE5I,EAAEsiD,gBAAgBpmC,EAAEtT,EAAE6Q,KAAKyC,EAAElc,EAAEuiD,eAAe7kD,GAAG,CAAC,GAAG,OAAO44B,EAAE,CAAC,IAAI+sB,EAAEppC,EAAEooC,UAA6B,IAAnB9rB,EAAE,EAAEv2B,EAAEkc,EAAExe,EAAE,KAAKkL,EAAE0tB,IAAI,CAAC,IAAIgtB,EAAE16C,EAAEk6C,KAAK15C,EAAER,EAAEi6C,UAAU,IAAI/5C,EAAEw6C,KAAKA,EAAE,CAAC,OAAOtjD,IAAIA,EAAEA,EAAEyZ,KAAK,CAACopC,UAAUz5C,EAAE05C,KAAK,EAAEppB,IAAI9wB,EAAE8wB,IAAIqpB,QAAQn6C,EAAEm6C,QAAQtmD,SAASmM,EAAEnM,SACvfgd,KAAK,OAAOtc,EAAE,CAAC,IAAIkS,EAAElS,EAAE+D,EAAE0H,EAAU,OAAR06C,EAAElmD,EAAEgM,EAAEgV,EAASld,EAAEw4B,KAAK,KAAK,EAAc,GAAG,oBAAfrqB,EAAEnO,EAAE6hD,SAAiC,CAACM,EAAEh0C,EAAErS,KAAKoM,EAAEi6C,EAAEC,GAAG,MAAMnmD,CAAC,CAACkmD,EAAEh0C,EAAE,MAAMlS,EAAE,KAAK,EAAEkS,EAAEjP,OAAe,MAATiP,EAAEjP,MAAa,IAAI,KAAK,EAAsD,GAAG,QAA3CkjD,EAAE,oBAAdj0C,EAAEnO,EAAE6hD,SAAgC1zC,EAAErS,KAAKoM,EAAEi6C,EAAEC,GAAGj0C,SAAe,IAASi0C,EAAE,MAAMnmD,EAAEkmD,EAAEvqB,EAAE,CAAC,EAAEuqB,EAAEC,GAAG,MAAMnmD,EAAE,KAAK,EAAE+kD,IAAG,EAAG,CAAC,OAAOt5C,EAAEnM,UAAU,IAAImM,EAAEk6C,OAAO3lD,EAAEiD,OAAO,GAAe,QAAZkjD,EAAErpC,EAAEyoC,SAAiBzoC,EAAEyoC,QAAQ,CAAC95C,GAAG06C,EAAEjlD,KAAKuK,GAAG,MAAMQ,EAAE,CAACy5C,UAAUz5C,EAAE05C,KAAKQ,EAAE5pB,IAAI9wB,EAAE8wB,IAAIqpB,QAAQn6C,EAAEm6C,QAAQtmD,SAASmM,EAAEnM,SAASgd,KAAK,MAAM,OAAOzZ,GAAGkc,EAAElc,EAAEoJ,EAAE1L,EAAE2lD,GAAGrjD,EAAEA,EAAEyZ,KAAKrQ,EAAEmtB,GAAG+sB,EAC3e,GAAG,QAAZ16C,EAAEA,EAAE6Q,MAAiB,IAAsB,QAAnB7Q,EAAEqR,EAAEuoC,OAAOC,SAAiB,MAAe75C,GAAJ06C,EAAE16C,GAAM6Q,KAAK6pC,EAAE7pC,KAAK,KAAKQ,EAAEsoC,eAAee,EAAErpC,EAAEuoC,OAAOC,QAAQ,IAAI,EAAsG,GAA5F,OAAOziD,IAAItC,EAAE2lD,GAAGppC,EAAEooC,UAAU3kD,EAAEuc,EAAEqoC,gBAAgBpmC,EAAEjC,EAAEsoC,eAAeviD,EAA4B,QAA1B5C,EAAE6c,EAAEuoC,OAAOR,aAAwB,CAAC/nC,EAAE7c,EAAE,GAAGm5B,GAAGtc,EAAE6oC,KAAK7oC,EAAEA,EAAER,WAAWQ,IAAI7c,EAAE,MAAM,OAAOk5B,IAAIrc,EAAEuoC,OAAOhB,MAAM,GAAG34C,IAAI0tB,EAAEp5B,EAAEqkD,MAAMjrB,EAAEp5B,EAAEinC,cAAcif,CAAC,CAAC,CAC9V,SAASE,GAAGpmD,EAAEC,EAAEghB,GAA8B,GAA3BjhB,EAAEC,EAAEslD,QAAQtlD,EAAEslD,QAAQ,KAAQ,OAAOvlD,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAEM,OAAOL,IAAI,CAAC,IAAI0L,EAAE3L,EAAEC,GAAG6c,EAAEnR,EAAErM,SAAS,GAAG,OAAOwd,EAAE,CAAqB,GAApBnR,EAAErM,SAAS,KAAKqM,EAAEsV,EAAK,oBAAoBnE,EAAE,MAAM3W,MAAMgyB,EAAE,IAAIrb,IAAIA,EAAEjd,KAAK8L,EAAE,CAAC,CAAC,CAAC,IAAI06C,IAAI,IAAIruB,EAAGsuB,WAAWC,KAAK,SAASC,GAAGxmD,EAAEC,EAAEghB,EAAEtV,GAA8BsV,EAAE,QAAXA,EAAEA,EAAEtV,EAAtB1L,EAAED,EAAEinC,sBAAmC,IAAShmB,EAAEhhB,EAAE07B,EAAE,CAAC,EAAE17B,EAAEghB,GAAGjhB,EAAEinC,cAAchmB,EAAE,IAAIjhB,EAAEqkD,QAAQrkD,EAAEilD,YAAYC,UAAUjkC,EAAE,CAClX,IAAIwlC,GAAG,CAACC,UAAU,SAAS1mD,GAAG,SAAOA,EAAEA,EAAE2mD,kBAAiB9f,GAAG7mC,KAAKA,CAAI,EAAE4mD,gBAAgB,SAAS5mD,EAAEC,EAAEghB,GAAGjhB,EAAEA,EAAE2mD,gBAAgB,IAAIh7C,EAAErB,KAAIwS,EAAE+pC,GAAG7mD,GAAGm5B,EAAEssB,GAAG95C,EAAEmR,GAAGqc,EAAEysB,QAAQ3lD,OAAE,IAASghB,GAAG,OAAOA,IAAIkY,EAAE75B,SAAS2hB,GAAe,QAAZhhB,EAAE4lD,GAAG7lD,EAAEm5B,EAAErc,MAAcgqC,GAAG7mD,EAAED,EAAE8c,EAAEnR,GAAGo6C,GAAG9lD,EAAED,EAAE8c,GAAG,EAAEiqC,oBAAoB,SAAS/mD,EAAEC,EAAEghB,GAAGjhB,EAAEA,EAAE2mD,gBAAgB,IAAIh7C,EAAErB,KAAIwS,EAAE+pC,GAAG7mD,GAAGm5B,EAAEssB,GAAG95C,EAAEmR,GAAGqc,EAAEoD,IAAI,EAAEpD,EAAEysB,QAAQ3lD,OAAE,IAASghB,GAAG,OAAOA,IAAIkY,EAAE75B,SAAS2hB,GAAe,QAAZhhB,EAAE4lD,GAAG7lD,EAAEm5B,EAAErc,MAAcgqC,GAAG7mD,EAAED,EAAE8c,EAAEnR,GAAGo6C,GAAG9lD,EAAED,EAAE8c,GAAG,EAAEkqC,mBAAmB,SAAShnD,EAAEC,GAAGD,EAAEA,EAAE2mD,gBAAgB,IAAI1lC,EAAE3W,KAAIqB,EACnfk7C,GAAG7mD,GAAG8c,EAAE2oC,GAAGxkC,EAAEtV,GAAGmR,EAAEyf,IAAI,OAAE,IAASt8B,GAAG,OAAOA,IAAI6c,EAAExd,SAASW,GAAe,QAAZA,EAAE4lD,GAAG7lD,EAAE8c,EAAEnR,MAAcm7C,GAAG7mD,EAAED,EAAE2L,EAAEsV,GAAG8kC,GAAG9lD,EAAED,EAAE2L,GAAG,GAAG,SAASs7C,GAAGjnD,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,EAAEC,GAAiB,MAAM,oBAApBp5B,EAAEA,EAAEwlC,WAAsC0hB,sBAAsBlnD,EAAEknD,sBAAsBv7C,EAAEwtB,EAAEC,IAAGn5B,EAAEN,YAAWM,EAAEN,UAAUwnD,wBAAsBvP,GAAG32B,EAAEtV,KAAKisC,GAAG96B,EAAEqc,GAAK,CAC1S,SAASiuB,GAAGpnD,EAAEC,EAAEghB,GAAG,IAAItV,GAAE,EAAGmR,EAAEijC,GAAO5mB,EAAEl5B,EAAEonD,YAA2W,MAA/V,kBAAkBluB,GAAG,OAAOA,EAAEA,EAAEorB,GAAGprB,IAAIrc,EAAEyjC,GAAGtgD,GAAGigD,GAAGF,GAAEzY,QAAyBpO,GAAGxtB,EAAE,QAAtBA,EAAE1L,EAAEmgD,oBAA4B,IAASz0C,GAAGw0C,GAAGngD,EAAE8c,GAAGijC,IAAI9/C,EAAE,IAAIA,EAAEghB,EAAEkY,GAAGn5B,EAAEinC,cAAc,OAAOhnC,EAAEqnD,YAAO,IAASrnD,EAAEqnD,MAAMrnD,EAAEqnD,MAAM,KAAKrnD,EAAEsnD,QAAQd,GAAGzmD,EAAEwlC,UAAUvlC,EAAEA,EAAE0mD,gBAAgB3mD,EAAE2L,KAAI3L,EAAEA,EAAEwlC,WAAY6a,4CAA4CvjC,EAAE9c,EAAEsgD,0CAA0CnnB,GAAUl5B,CAAC,CAC5Z,SAASunD,GAAGxnD,EAAEC,EAAEghB,EAAEtV,GAAG3L,EAAEC,EAAEqnD,MAAM,oBAAoBrnD,EAAEwnD,2BAA2BxnD,EAAEwnD,0BAA0BxmC,EAAEtV,GAAG,oBAAoB1L,EAAEynD,kCAAkCznD,EAAEynD,iCAAiCzmC,EAAEtV,GAAG1L,EAAEqnD,QAAQtnD,GAAGymD,GAAGM,oBAAoB9mD,EAAEA,EAAEqnD,MAAM,KAAK,CACpQ,SAASK,GAAG3nD,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE9c,EAAEwlC,UAAU1oB,EAAE8qC,MAAM3mC,EAAEnE,EAAEwqC,MAAMtnD,EAAEinC,cAAcnqB,EAAEypC,KAAKF,GAAGrB,GAAGhlD,GAAG,IAAIm5B,EAAEl5B,EAAEonD,YAAY,kBAAkBluB,GAAG,OAAOA,EAAErc,EAAE0nC,QAAQD,GAAGprB,IAAIA,EAAEonB,GAAGtgD,GAAGigD,GAAGF,GAAEzY,QAAQzqB,EAAE0nC,QAAQrE,GAAGngD,EAAEm5B,IAAIrc,EAAEwqC,MAAMtnD,EAAEinC,cAA2C,oBAA7B9N,EAAEl5B,EAAE4nD,4BAAiDrB,GAAGxmD,EAAEC,EAAEk5B,EAAElY,GAAGnE,EAAEwqC,MAAMtnD,EAAEinC,eAAe,oBAAoBhnC,EAAE4nD,0BAA0B,oBAAoB/qC,EAAEgrC,yBAAyB,oBAAoBhrC,EAAEirC,2BAA2B,oBAAoBjrC,EAAEkrC,qBAAqB/nD,EAAE6c,EAAEwqC,MACrf,oBAAoBxqC,EAAEkrC,oBAAoBlrC,EAAEkrC,qBAAqB,oBAAoBlrC,EAAEirC,2BAA2BjrC,EAAEirC,4BAA4B9nD,IAAI6c,EAAEwqC,OAAOb,GAAGM,oBAAoBjqC,EAAEA,EAAEwqC,MAAM,MAAMrB,GAAGjmD,EAAEihB,EAAEnE,EAAEnR,GAAGmR,EAAEwqC,MAAMtnD,EAAEinC,eAAe,oBAAoBnqB,EAAEmrC,oBAAoBjoD,EAAEiD,OAAO,QAAQ,CACpS,SAASilD,GAAGloD,EAAEC,EAAEghB,GAAW,GAAG,QAAXjhB,EAAEihB,EAAEknC,MAAiB,oBAAoBnoD,GAAG,kBAAkBA,EAAE,CAAC,GAAGihB,EAAEmnC,OAAO,CAAY,GAAXnnC,EAAEA,EAAEmnC,OAAY,CAAC,GAAG,IAAInnC,EAAEsb,IAAI,MAAMp2B,MAAMgyB,EAAE,MAAM,IAAIxsB,EAAEsV,EAAEukB,SAAS,CAAC,IAAI75B,EAAE,MAAMxF,MAAMgyB,EAAE,IAAIn4B,IAAI,IAAI8c,EAAEnR,EAAEwtB,EAAE,GAAGn5B,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAEkoD,KAAK,oBAAoBloD,EAAEkoD,KAAKloD,EAAEkoD,IAAIE,aAAalvB,EAASl5B,EAAEkoD,KAAIloD,EAAE,SAASD,GAAG,IAAIC,EAAE6c,EAAEypC,KAAKtmD,IAAIomD,KAAKpmD,EAAE6c,EAAEypC,KAAK,CAAC,GAAG,OAAOvmD,SAASC,EAAEk5B,GAAGl5B,EAAEk5B,GAAGn5B,CAAC,EAAEC,EAAEooD,WAAWlvB,EAASl5B,EAAC,CAAC,GAAG,kBAAkBD,EAAE,MAAMmG,MAAMgyB,EAAE,MAAM,IAAIlX,EAAEmnC,OAAO,MAAMjiD,MAAMgyB,EAAE,IAAIn4B,GAAI,CAAC,OAAOA,CAAC,CACre,SAASy2B,GAAGz2B,EAAEC,GAAuC,MAApCD,EAAEN,OAAOC,UAAUC,SAASC,KAAKI,GAASkG,MAAMgyB,EAAE,GAAG,oBAAoBn4B,EAAE,qBAAqBN,OAAO2G,KAAKpG,GAAGiG,KAAK,MAAM,IAAIlG,GAAI,CAAC,SAASsoD,GAAGtoD,GAAiB,OAAOC,EAAfD,EAAE68B,OAAe78B,EAAE48B,SAAS,CACrM,SAAS2rB,GAAGvoD,GAAG,SAASC,EAAEA,EAAEghB,GAAG,GAAGjhB,EAAE,CAAC,IAAI2L,EAAE1L,EAAEuiD,UAAU,OAAO72C,GAAG1L,EAAEuiD,UAAU,CAACvhC,GAAGhhB,EAAEgD,OAAO,IAAI0I,EAAEzK,KAAK+f,EAAE,CAAC,CAAC,SAASA,EAAEA,EAAEtV,GAAG,IAAI3L,EAAE,OAAO,KAAK,KAAK,OAAO2L,GAAG1L,EAAEghB,EAAEtV,GAAGA,EAAEA,EAAE27B,QAAQ,OAAO,IAAI,CAAC,SAAS37B,EAAE3L,EAAEC,GAAG,IAAID,EAAE,IAAIqrC,IAAI,OAAOprC,GAAG,OAAOA,EAAE6F,IAAI9F,EAAE2G,IAAI1G,EAAE6F,IAAI7F,GAAGD,EAAE2G,IAAI1G,EAAEmzB,MAAMnzB,GAAGA,EAAEA,EAAEqnC,QAAQ,OAAOtnC,CAAC,CAAC,SAAS8c,EAAE9c,EAAEC,GAAsC,OAAnCD,EAAEwoD,GAAGxoD,EAAEC,IAAKmzB,MAAM,EAAEpzB,EAAEsnC,QAAQ,KAAYtnC,CAAC,CAAC,SAASm5B,EAAEl5B,EAAEghB,EAAEtV,GAAa,OAAV1L,EAAEmzB,MAAMznB,EAAM3L,EAA6C,QAAjB2L,EAAE1L,EAAE6mC,YAA6Bn7B,EAAEA,EAAEynB,OAAQnS,GAAGhhB,EAAEgD,OAAO,EAAEge,GAAGtV,GAAE1L,EAAEgD,OAAO,EAASge,IAArGhhB,EAAEgD,OAAO,QAAQge,EAAqF,CAAC,SAASmY,EAAEn5B,GACzd,OAD4dD,GAC7f,OAAOC,EAAE6mC,YAAY7mC,EAAEgD,OAAO,GAAUhD,CAAC,CAAC,SAASwL,EAAEzL,EAAEC,EAAEghB,EAAEtV,GAAG,OAAG,OAAO1L,GAAG,IAAIA,EAAEs8B,MAAWt8B,EAAEwoD,GAAGxnC,EAAEjhB,EAAE8iD,KAAKn3C,IAAKo7B,OAAO/mC,EAAEC,KAAEA,EAAE6c,EAAE7c,EAAEghB,IAAK8lB,OAAO/mC,EAASC,EAAC,CAAC,SAASM,EAAEP,EAAEC,EAAEghB,EAAEtV,GAAG,IAAIwtB,EAAElY,EAAEyY,KAAK,OAAGP,IAAIyB,EAAU/3B,EAAE7C,EAAEC,EAAEghB,EAAE2mC,MAAMtoB,SAAS3zB,EAAEsV,EAAEnb,KAAQ,OAAO7F,IAAIA,EAAEsiD,cAAcppB,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEuD,WAAWrB,GAAIitB,GAAGnvB,KAAKl5B,EAAEy5B,QAAa/tB,EAAEmR,EAAE7c,EAAEghB,EAAE2mC,QAASO,IAAID,GAAGloD,EAAEC,EAAEghB,GAAGtV,EAAEo7B,OAAO/mC,EAAE2L,KAAEA,EAAE+8C,GAAGznC,EAAEyY,KAAKzY,EAAEnb,IAAImb,EAAE2mC,MAAM,KAAK5nD,EAAE8iD,KAAKn3C,IAAKw8C,IAAID,GAAGloD,EAAEC,EAAEghB,GAAGtV,EAAEo7B,OAAO/mC,EAAS2L,EAAC,CAAC,SAASoT,EAAE/e,EAAEC,EAAEghB,EAAEtV,GAAG,OAAG,OAAO1L,GAAG,IAAIA,EAAEs8B,KACjft8B,EAAEulC,UAAU6G,gBAAgBprB,EAAEorB,eAAepsC,EAAEulC,UAAUmjB,iBAAiB1nC,EAAE0nC,iBAAsB1oD,EAAE2oD,GAAG3nC,EAAEjhB,EAAE8iD,KAAKn3C,IAAKo7B,OAAO/mC,EAAEC,KAAEA,EAAE6c,EAAE7c,EAAEghB,EAAEqe,UAAU,KAAMyH,OAAO/mC,EAASC,EAAC,CAAC,SAAS4C,EAAE7C,EAAEC,EAAEghB,EAAEtV,EAAEwtB,GAAG,OAAG,OAAOl5B,GAAG,IAAIA,EAAEs8B,MAAWt8B,EAAE4oD,GAAG5nC,EAAEjhB,EAAE8iD,KAAKn3C,EAAEwtB,IAAK4N,OAAO/mC,EAAEC,KAAEA,EAAE6c,EAAE7c,EAAEghB,IAAK8lB,OAAO/mC,EAASC,EAAC,CAAC,SAASimD,EAAElmD,EAAEC,EAAEghB,GAAG,GAAG,kBAAkBhhB,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAOA,EAAEwoD,GAAG,GAAGxoD,EAAED,EAAE8iD,KAAK7hC,IAAK8lB,OAAO/mC,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEy8B,UAAU,KAAKhC,EAAG,OAAOzZ,EAAEynC,GAAGzoD,EAAEy5B,KAAKz5B,EAAE6F,IAAI7F,EAAE2nD,MAAM,KAAK5nD,EAAE8iD,KAAK7hC,IACjfknC,IAAID,GAAGloD,EAAE,KAAKC,GAAGghB,EAAE8lB,OAAO/mC,EAAEihB,EAAE,KAAK0Z,EAAG,OAAO16B,EAAE2oD,GAAG3oD,EAAED,EAAE8iD,KAAK7hC,IAAK8lB,OAAO/mC,EAAEC,EAAE,KAAKo7B,EAAiB,OAAO6qB,EAAElmD,GAAE2L,EAAnB1L,EAAE48B,OAAmB58B,EAAE28B,UAAU3b,GAAG,GAAG6d,GAAG7+B,IAAIw7B,EAAGx7B,GAAG,OAAOA,EAAE4oD,GAAG5oD,EAAED,EAAE8iD,KAAK7hC,EAAE,OAAQ8lB,OAAO/mC,EAAEC,EAAEw2B,GAAGz2B,EAAEC,EAAE,CAAC,OAAO,IAAI,CAAC,SAASkmD,EAAEnmD,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE,OAAO7c,EAAEA,EAAE6F,IAAI,KAAK,GAAG,kBAAkBmb,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAO,OAAOnE,EAAE,KAAKrR,EAAEzL,EAAEC,EAAE,GAAGghB,EAAEtV,GAAG,GAAG,kBAAkBsV,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEyb,UAAU,KAAKhC,EAAG,OAAOzZ,EAAEnb,MAAMgX,EAAEvc,EAAEP,EAAEC,EAAEghB,EAAEtV,GAAG,KAAK,KAAKgvB,EAAG,OAAO1Z,EAAEnb,MAAMgX,EAAEiC,EAAE/e,EAAEC,EAAEghB,EAAEtV,GAAG,KAAK,KAAK0vB,EAAG,OAAiB8qB,EAAEnmD,EACpfC,GADwe6c,EAAEmE,EAAE4b,OACxe5b,EAAE2b,UAAUjxB,GAAG,GAAGmzB,GAAG7d,IAAIwa,EAAGxa,GAAG,OAAO,OAAOnE,EAAE,KAAKja,EAAE7C,EAAEC,EAAEghB,EAAEtV,EAAE,MAAM8qB,GAAGz2B,EAAEihB,EAAE,CAAC,OAAO,IAAI,CAAC,SAAShV,EAAEjM,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,GAAG,kBAAkBnR,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAwBF,EAAExL,EAAnBD,EAAEA,EAAE0O,IAAIuS,IAAI,KAAW,GAAGtV,EAAEmR,GAAG,GAAG,kBAAkBnR,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+wB,UAAU,KAAKhC,EAAG,OAA2Cn6B,EAAEN,EAAtCD,EAAEA,EAAE0O,IAAI,OAAO/C,EAAE7F,IAAImb,EAAEtV,EAAE7F,MAAM,KAAW6F,EAAEmR,GAAG,KAAK6d,EAAG,OAA2C5b,EAAE9e,EAAtCD,EAAEA,EAAE0O,IAAI,OAAO/C,EAAE7F,IAAImb,EAAEtV,EAAE7F,MAAM,KAAW6F,EAAEmR,GAAG,KAAKue,EAAiB,OAAOpvB,EAAEjM,EAAEC,EAAEghB,GAAEkY,EAAvBxtB,EAAEkxB,OAAuBlxB,EAAEixB,UAAU9f,GAAG,GAAGgiB,GAAGnzB,IAAI8vB,EAAG9vB,GAAG,OAAwB9I,EAAE5C,EAAnBD,EAAEA,EAAE0O,IAAIuS,IAAI,KAAWtV,EAAEmR,EAAE,MAAM2Z,GAAGx2B,EAAE0L,EAAE,CAAC,OAAO,IAAI,CAC9f,SAASuG,EAAE4K,EAAEsc,EAAE3tB,EAAElL,GAAG,IAAI,IAAIwe,EAAE,KAAKlc,EAAE,KAAK8K,EAAEyrB,EAAEvtB,EAAEutB,EAAE,EAAEjnB,EAAE,KAAK,OAAOxE,GAAG9B,EAAEJ,EAAEnL,OAAOuL,IAAI,CAAC8B,EAAEylB,MAAMvnB,GAAGsG,EAAExE,EAAEA,EAAE,MAAMwE,EAAExE,EAAE25B,QAAQ,IAAIp1B,EAAEi0C,EAAErpC,EAAEnP,EAAElC,EAAEI,GAAGtL,GAAG,GAAG,OAAO2R,EAAE,CAAC,OAAOvE,IAAIA,EAAEwE,GAAG,KAAK,CAACnS,GAAG2N,GAAG,OAAOuE,EAAE40B,WAAW7mC,EAAE6c,EAAEnP,GAAGyrB,EAAED,EAAEjnB,EAAEknB,EAAEvtB,GAAG,OAAOhJ,EAAEkc,EAAE7M,EAAErP,EAAEykC,QAAQp1B,EAAErP,EAAEqP,EAAEvE,EAAEwE,CAAC,CAAC,GAAGtG,IAAIJ,EAAEnL,OAAO,OAAO2gB,EAAEnE,EAAEnP,GAAGw0C,IAAGN,GAAG/kC,EAAEjR,GAAGkT,EAAE,GAAG,OAAOpR,EAAE,CAAC,KAAK9B,EAAEJ,EAAEnL,OAAOuL,IAAkB,QAAd8B,EAAEu4C,EAAEppC,EAAErR,EAAEI,GAAGtL,MAAc64B,EAAED,EAAExrB,EAAEyrB,EAAEvtB,GAAG,OAAOhJ,EAAEkc,EAAEpR,EAAE9K,EAAEykC,QAAQ35B,EAAE9K,EAAE8K,GAAc,OAAXw0C,IAAGN,GAAG/kC,EAAEjR,GAAUkT,CAAC,CAAC,IAAIpR,EAAEhC,EAAEmR,EAAEnP,GAAG9B,EAAEJ,EAAEnL,OAAOuL,IAAsB,QAAlBsG,EAAElG,EAAE0B,EAAEmP,EAAEjR,EAAEJ,EAAEI,GAAGtL,MAAcP,GAAG,OAAOmS,EAAE20B,WAAWn5B,EAAE+9B,OAAO,OACvfv5B,EAAErM,IAAI+F,EAAEsG,EAAErM,KAAKszB,EAAED,EAAEhnB,EAAEinB,EAAEvtB,GAAG,OAAOhJ,EAAEkc,EAAE5M,EAAEtP,EAAEykC,QAAQn1B,EAAEtP,EAAEsP,GAAuD,OAApDnS,GAAG2N,EAAE0P,SAAQ,SAASrd,GAAG,OAAOC,EAAE6c,EAAE9c,EAAE,IAAGmiD,IAAGN,GAAG/kC,EAAEjR,GAAUkT,CAAC,CAAC,SAAShb,EAAE+Y,EAAEsc,EAAE3tB,EAAElL,GAAG,IAAIwe,EAAE0c,EAAGhwB,GAAG,GAAG,oBAAoBsT,EAAE,MAAM5Y,MAAMgyB,EAAE,MAAkB,GAAG,OAAf1sB,EAAEsT,EAAElf,KAAK4L,IAAc,MAAMtF,MAAMgyB,EAAE,MAAM,IAAI,IAAIxqB,EAAEoR,EAAE,KAAKlc,EAAEu2B,EAAEvtB,EAAEutB,EAAE,EAAEjnB,EAAE,KAAKD,EAAEzG,EAAE6Q,OAAO,OAAOzZ,IAAIqP,EAAE42C,KAAKj9C,IAAIqG,EAAEzG,EAAE6Q,OAAO,CAACzZ,EAAEuwB,MAAMvnB,GAAGsG,EAAEtP,EAAEA,EAAE,MAAMsP,EAAEtP,EAAEykC,QAAQ,IAAIvjC,EAAEoiD,EAAErpC,EAAEja,EAAEqP,EAAE7D,MAAM9N,GAAG,GAAG,OAAOwD,EAAE,CAAC,OAAOlB,IAAIA,EAAEsP,GAAG,KAAK,CAACnS,GAAG6C,GAAG,OAAOkB,EAAE+iC,WAAW7mC,EAAE6c,EAAEja,GAAGu2B,EAAED,EAAEp1B,EAAEq1B,EAAEvtB,GAAG,OAAO8B,EAAEoR,EAAEhb,EAAE4J,EAAE25B,QAAQvjC,EAAE4J,EAAE5J,EAAElB,EAAEsP,CAAC,CAAC,GAAGD,EAAE42C,KAAK,OAAO7nC,EAAEnE,EACzfja,GAAGs/C,IAAGN,GAAG/kC,EAAEjR,GAAGkT,EAAE,GAAG,OAAOlc,EAAE,CAAC,MAAMqP,EAAE42C,KAAKj9C,IAAIqG,EAAEzG,EAAE6Q,OAAwB,QAAjBpK,EAAEg0C,EAAEppC,EAAE5K,EAAE7D,MAAM9N,MAAc64B,EAAED,EAAEjnB,EAAEknB,EAAEvtB,GAAG,OAAO8B,EAAEoR,EAAE7M,EAAEvE,EAAE25B,QAAQp1B,EAAEvE,EAAEuE,GAAc,OAAXiwC,IAAGN,GAAG/kC,EAAEjR,GAAUkT,CAAC,CAAC,IAAIlc,EAAE8I,EAAEmR,EAAEja,IAAIqP,EAAE42C,KAAKj9C,IAAIqG,EAAEzG,EAAE6Q,OAA4B,QAArBpK,EAAEjG,EAAEpJ,EAAEia,EAAEjR,EAAEqG,EAAE7D,MAAM9N,MAAcP,GAAG,OAAOkS,EAAE40B,WAAWjkC,EAAE6oC,OAAO,OAAOx5B,EAAEpM,IAAI+F,EAAEqG,EAAEpM,KAAKszB,EAAED,EAAEjnB,EAAEknB,EAAEvtB,GAAG,OAAO8B,EAAEoR,EAAE7M,EAAEvE,EAAE25B,QAAQp1B,EAAEvE,EAAEuE,GAAuD,OAApDlS,GAAG6C,EAAEwa,SAAQ,SAASrd,GAAG,OAAOC,EAAE6c,EAAE9c,EAAE,IAAGmiD,IAAGN,GAAG/kC,EAAEjR,GAAUkT,CAAC,CAG3T,OAH4T,SAAS+9B,EAAE98C,EAAE2L,EAAEwtB,EAAE1tB,GAAkF,GAA/E,kBAAkB0tB,GAAG,OAAOA,GAAGA,EAAEO,OAAOkB,GAAI,OAAOzB,EAAErzB,MAAMqzB,EAAEA,EAAEyuB,MAAMtoB,UAAa,kBAAkBnG,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEuD,UAAU,KAAKhC,EAAG16B,EAAE,CAAC,IAAI,IAAIO,EAC7hB44B,EAAErzB,IAAIiZ,EAAEpT,EAAE,OAAOoT,GAAG,CAAC,GAAGA,EAAEjZ,MAAMvF,EAAE,CAAU,IAATA,EAAE44B,EAAEO,QAAYkB,GAAI,GAAG,IAAI7b,EAAEwd,IAAI,CAACtb,EAAEjhB,EAAE+e,EAAEuoB,UAAS37B,EAAEmR,EAAEiC,EAAEoa,EAAEyuB,MAAMtoB,WAAYyH,OAAO/mC,EAAEA,EAAE2L,EAAE,MAAM3L,CAAC,OAAO,GAAG+e,EAAEwjC,cAAchiD,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEm8B,WAAWrB,GAAIitB,GAAG/nD,KAAKwe,EAAE2a,KAAK,CAACzY,EAAEjhB,EAAE+e,EAAEuoB,UAAS37B,EAAEmR,EAAEiC,EAAEoa,EAAEyuB,QAASO,IAAID,GAAGloD,EAAE+e,EAAEoa,GAAGxtB,EAAEo7B,OAAO/mC,EAAEA,EAAE2L,EAAE,MAAM3L,CAAC,CAACihB,EAAEjhB,EAAE+e,GAAG,KAAK,CAAM9e,EAAED,EAAE+e,GAAGA,EAAEA,EAAEuoB,OAAO,CAACnO,EAAEO,OAAOkB,IAAIjvB,EAAEk9C,GAAG1vB,EAAEyuB,MAAMtoB,SAASt/B,EAAE8iD,KAAKr3C,EAAE0tB,EAAErzB,MAAOihC,OAAO/mC,EAAEA,EAAE2L,KAAIF,EAAEi9C,GAAGvvB,EAAEO,KAAKP,EAAErzB,IAAIqzB,EAAEyuB,MAAM,KAAK5nD,EAAE8iD,KAAKr3C,IAAK08C,IAAID,GAAGloD,EAAE2L,EAAEwtB,GAAG1tB,EAAEs7B,OAAO/mC,EAAEA,EAAEyL,EAAE,CAAC,OAAO2tB,EAAEp5B,GAAG,KAAK26B,EAAG36B,EAAE,CAAC,IAAI+e,EAAEoa,EAAErzB,IAAI,OACzf6F,GAAG,CAAC,GAAGA,EAAE7F,MAAMiZ,EAAC,CAAC,GAAG,IAAIpT,EAAE4wB,KAAK5wB,EAAE65B,UAAU6G,gBAAgBlT,EAAEkT,eAAe1gC,EAAE65B,UAAUmjB,iBAAiBxvB,EAAEwvB,eAAe,CAAC1nC,EAAEjhB,EAAE2L,EAAE27B,UAAS37B,EAAEmR,EAAEnR,EAAEwtB,EAAEmG,UAAU,KAAMyH,OAAO/mC,EAAEA,EAAE2L,EAAE,MAAM3L,CAAC,CAAMihB,EAAEjhB,EAAE2L,GAAG,KAAM,CAAK1L,EAAED,EAAE2L,GAAGA,EAAEA,EAAE27B,OAAO,EAAC37B,EAAEi9C,GAAGzvB,EAAEn5B,EAAE8iD,KAAKr3C,IAAKs7B,OAAO/mC,EAAEA,EAAE2L,CAAC,CAAC,OAAOytB,EAAEp5B,GAAG,KAAKq7B,EAAG,OAAiByhB,EAAE98C,EAAE2L,GAAdoT,EAAEoa,EAAE0D,OAAc1D,EAAEyD,UAAUnxB,GAAG,GAAGqzB,GAAG3F,GAAG,OAAOjnB,EAAElS,EAAE2L,EAAEwtB,EAAE1tB,GAAG,GAAGgwB,EAAGtC,GAAG,OAAOp1B,EAAE/D,EAAE2L,EAAEwtB,EAAE1tB,GAAGgrB,GAAGz2B,EAAEm5B,EAAE,CAAC,MAAM,kBAAkBA,GAAG,KAAKA,GAAG,kBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAOxtB,GAAG,IAAIA,EAAE4wB,KAAKtb,EAAEjhB,EAAE2L,EAAE27B,UAAS37B,EAAEmR,EAAEnR,EAAEwtB,IAAK4N,OAAO/mC,EAAEA,EAAE2L,IACnfsV,EAAEjhB,EAAE2L,IAAGA,EAAE88C,GAAGtvB,EAAEn5B,EAAE8iD,KAAKr3C,IAAKs7B,OAAO/mC,EAAEA,EAAE2L,GAAGytB,EAAEp5B,IAAIihB,EAAEjhB,EAAE2L,EAAE,CAAS,CAAC,IAAIo9C,GAAGR,IAAG,GAAIS,GAAGT,IAAG,GAAIU,GAAG,CAAC,EAAEC,GAAGrJ,GAAGoJ,IAAIE,GAAGtJ,GAAGoJ,IAAIG,GAAGvJ,GAAGoJ,IAAI,SAASI,GAAGrpD,GAAG,GAAGA,IAAIipD,GAAG,MAAM9iD,MAAMgyB,EAAE,MAAM,OAAOn4B,CAAC,CAAC,SAASspD,GAAGtpD,EAAEC,GAAyC,OAAtC6/C,GAAEsJ,GAAGnpD,GAAG6/C,GAAEqJ,GAAGnpD,GAAG8/C,GAAEoJ,GAAGD,IAAIjpD,EAAEC,EAAEugC,UAAmB,KAAK,EAAE,KAAK,GAAGvgC,GAAGA,EAAEA,EAAE44C,iBAAiB54C,EAAE8/B,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkE3/B,EAAE2/B,GAArC3/B,GAAvBD,EAAE,IAAIA,EAAEC,EAAEilC,WAAWjlC,GAAM8/B,cAAc,KAAK//B,EAAEA,EAAEupD,SAAkBjnC,GAAE4mC,IAAIpJ,GAAEoJ,GAAGjpD,EAAE,CAAC,SAASupD,KAAKlnC,GAAE4mC,IAAI5mC,GAAE6mC,IAAI7mC,GAAE8mC,GAAG,CACnb,SAASK,GAAGzpD,GAAGqpD,GAAGD,GAAG7hB,SAAS,IAAItnC,EAAEopD,GAAGH,GAAG3hB,SAAatmB,EAAE2e,GAAG3/B,EAAED,EAAE05B,MAAMz5B,IAAIghB,IAAI6+B,GAAEqJ,GAAGnpD,GAAG8/C,GAAEoJ,GAAGjoC,GAAG,CAAC,SAASyoC,GAAG1pD,GAAGmpD,GAAG5hB,UAAUvnC,IAAIsiB,GAAE4mC,IAAI5mC,GAAE6mC,IAAI,CAAC,IAAIp9C,GAAE8zC,GAAG,GACrJ,SAAS8J,GAAG3pD,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAEs8B,IAAI,CAAC,IAAItb,EAAEhhB,EAAEgnC,cAAc,GAAG,OAAOhmB,IAAmB,QAAfA,EAAEA,EAAEimB,aAAqB,OAAOjmB,EAAEjE,MAAM,OAAOiE,EAAEjE,MAAM,OAAO/c,CAAC,MAAM,GAAG,KAAKA,EAAEs8B,UAAK,IAASt8B,EAAEijD,cAAc0G,aAAa,GAAG,KAAa,IAAR3pD,EAAEgD,OAAW,OAAOhD,OAAO,GAAG,OAAOA,EAAEonC,MAAM,CAACpnC,EAAEonC,MAAMN,OAAO9mC,EAAEA,EAAEA,EAAEonC,MAAM,QAAQ,CAAC,GAAGpnC,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEqnC,SAAS,CAAC,GAAG,OAAOrnC,EAAE8mC,QAAQ9mC,EAAE8mC,SAAS/mC,EAAE,OAAO,KAAKC,EAAEA,EAAE8mC,MAAM,CAAC9mC,EAAEqnC,QAAQP,OAAO9mC,EAAE8mC,OAAO9mC,EAAEA,EAAEqnC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAIuiB,GAAG,GACrc,SAASC,KAAK,IAAI,IAAI9pD,EAAE,EAAEA,EAAE6pD,GAAGvpD,OAAON,IAAI6pD,GAAG7pD,GAAG+pD,8BAA8B,KAAKF,GAAGvpD,OAAO,CAAC,CAAC,IAAI0pD,GAAGxvB,EAAGyvB,uBAAuBC,GAAG1vB,EAAGsS,wBAAwBqd,GAAG,EAAEC,GAAE,KAAKC,GAAE,KAAKC,GAAE,KAAKC,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASC,KAAI,MAAMxkD,MAAMgyB,EAAE,KAAM,CAAC,SAASyyB,GAAG5qD,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIghB,EAAE,EAAEA,EAAEhhB,EAAEK,QAAQ2gB,EAAEjhB,EAAEM,OAAO2gB,IAAI,IAAI02B,GAAG33C,EAAEihB,GAAGhhB,EAAEghB,IAAI,OAAM,EAAG,OAAM,CAAE,CAChW,SAAS4pC,GAAG7qD,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,GAAyH,GAAtHgxB,GAAGhxB,EAAEixB,GAAEnqD,EAAEA,EAAEgnC,cAAc,KAAKhnC,EAAEglD,YAAY,KAAKhlD,EAAEokD,MAAM,EAAE2F,GAAGziB,QAAQ,OAAOvnC,GAAG,OAAOA,EAAEinC,cAAc6jB,GAAGC,GAAG/qD,EAAEihB,EAAEtV,EAAEmR,GAAM0tC,GAAG,CAACrxB,EAAE,EAAE,EAAE,CAAY,GAAXqxB,IAAG,EAAGC,GAAG,EAAK,IAAItxB,EAAE,MAAMhzB,MAAMgyB,EAAE,MAAMgB,GAAG,EAAEmxB,GAAED,GAAE,KAAKpqD,EAAEglD,YAAY,KAAK+E,GAAGziB,QAAQyjB,GAAGhrD,EAAEihB,EAAEtV,EAAEmR,EAAE,OAAO0tC,GAAG,CAA+D,GAA9DR,GAAGziB,QAAQ0jB,GAAGhrD,EAAE,OAAOoqD,IAAG,OAAOA,GAAE/tC,KAAK6tC,GAAG,EAAEG,GAAED,GAAED,GAAE,KAAKG,IAAG,EAAMtqD,EAAE,MAAMkG,MAAMgyB,EAAE,MAAM,OAAOn4B,CAAC,CAAC,SAASkrD,KAAK,IAAIlrD,EAAE,IAAIyqD,GAAQ,OAALA,GAAG,EAASzqD,CAAC,CAC/Y,SAASmrD,KAAK,IAAInrD,EAAE,CAACinC,cAAc,KAAKie,UAAU,KAAKkG,UAAU,KAAKC,MAAM,KAAK/uC,KAAK,MAA8C,OAAxC,OAAOguC,GAAEF,GAAEnjB,cAAcqjB,GAAEtqD,EAAEsqD,GAAEA,GAAEhuC,KAAKtc,EAASsqD,EAAC,CAAC,SAASgB,KAAK,GAAG,OAAOjB,GAAE,CAAC,IAAIrqD,EAAEoqD,GAAEtjB,UAAU9mC,EAAE,OAAOA,EAAEA,EAAEinC,cAAc,IAAI,MAAMjnC,EAAEqqD,GAAE/tC,KAAK,IAAIrc,EAAE,OAAOqqD,GAAEF,GAAEnjB,cAAcqjB,GAAEhuC,KAAK,GAAG,OAAOrc,EAAEqqD,GAAErqD,EAAEoqD,GAAErqD,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMmG,MAAMgyB,EAAE,MAAUn4B,EAAE,CAACinC,eAAPojB,GAAErqD,GAAqBinC,cAAcie,UAAUmF,GAAEnF,UAAUkG,UAAUf,GAAEe,UAAUC,MAAMhB,GAAEgB,MAAM/uC,KAAK,MAAM,OAAOguC,GAAEF,GAAEnjB,cAAcqjB,GAAEtqD,EAAEsqD,GAAEA,GAAEhuC,KAAKtc,CAAC,CAAC,OAAOsqD,EAAC,CACje,SAASiB,GAAGvrD,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,CAAC,CACnD,SAASurD,GAAGxrD,GAAG,IAAIC,EAAEqrD,KAAKrqC,EAAEhhB,EAAEorD,MAAM,GAAG,OAAOpqC,EAAE,MAAM9a,MAAMgyB,EAAE,MAAMlX,EAAEwqC,oBAAoBzrD,EAAE,IAAI2L,EAAE0+C,GAAEvtC,EAAEnR,EAAEy/C,UAAUjyB,EAAElY,EAAEqkC,QAAQ,GAAG,OAAOnsB,EAAE,CAAC,GAAG,OAAOrc,EAAE,CAAC,IAAIsc,EAAEtc,EAAER,KAAKQ,EAAER,KAAK6c,EAAE7c,KAAK6c,EAAE7c,KAAK8c,CAAC,CAACztB,EAAEy/C,UAAUtuC,EAAEqc,EAAElY,EAAEqkC,QAAQ,IAAI,CAAC,GAAG,OAAOxoC,EAAE,CAACqc,EAAErc,EAAER,KAAK3Q,EAAEA,EAAEu5C,UAAU,IAAIz5C,EAAE2tB,EAAE,KAAK74B,EAAE,KAAKwe,EAAEoa,EAAE,EAAE,CAAC,IAAIt2B,EAAEkc,EAAE4mC,KAAK,IAAIwE,GAAGtnD,KAAKA,EAAE,OAAOtC,IAAIA,EAAEA,EAAE+b,KAAK,CAACqpC,KAAK,EAAE+F,OAAO3sC,EAAE2sC,OAAOC,cAAc5sC,EAAE4sC,cAAcC,WAAW7sC,EAAE6sC,WAAWtvC,KAAK,OAAO3Q,EAAEoT,EAAE4sC,cAAc5sC,EAAE6sC,WAAW5rD,EAAE2L,EAAEoT,EAAE2sC,YAAY,CAAC,IAAIxF,EAAE,CAACP,KAAK9iD,EAAE6oD,OAAO3sC,EAAE2sC,OAAOC,cAAc5sC,EAAE4sC,cACngBC,WAAW7sC,EAAE6sC,WAAWtvC,KAAK,MAAM,OAAO/b,GAAGkL,EAAElL,EAAE2lD,EAAE9sB,EAAEztB,GAAGpL,EAAEA,EAAE+b,KAAK4pC,EAAEkE,GAAE/F,OAAOxhD,EAAE6I,IAAI7I,CAAC,CAACkc,EAAEA,EAAEzC,IAAI,OAAO,OAAOyC,GAAGA,IAAIoa,GAAG,OAAO54B,EAAE64B,EAAEztB,EAAEpL,EAAE+b,KAAK7Q,EAAEksC,GAAGhsC,EAAE1L,EAAEgnC,iBAAiBqd,IAAG,GAAIrkD,EAAEgnC,cAAct7B,EAAE1L,EAAEilD,UAAU9rB,EAAEn5B,EAAEmrD,UAAU7qD,EAAE0gB,EAAE4qC,kBAAkBlgD,CAAC,CAAiB,GAAG,QAAnB3L,EAAEihB,EAAE4jC,aAAwB,CAAC/nC,EAAE9c,EAAE,GAAGm5B,EAAErc,EAAE6oC,KAAKyE,GAAE/F,OAAOlrB,EAAEztB,IAAIytB,EAAErc,EAAEA,EAAER,WAAWQ,IAAI9c,EAAE,MAAM,OAAO8c,IAAImE,EAAEojC,MAAM,GAAG,MAAM,CAACpkD,EAAEgnC,cAAchmB,EAAE6qC,SAAS,CAC9X,SAASC,GAAG/rD,GAAG,IAAIC,EAAEqrD,KAAKrqC,EAAEhhB,EAAEorD,MAAM,GAAG,OAAOpqC,EAAE,MAAM9a,MAAMgyB,EAAE,MAAMlX,EAAEwqC,oBAAoBzrD,EAAE,IAAI2L,EAAEsV,EAAE6qC,SAAShvC,EAAEmE,EAAEqkC,QAAQnsB,EAAEl5B,EAAEgnC,cAAc,GAAG,OAAOnqB,EAAE,CAACmE,EAAEqkC,QAAQ,KAAK,IAAIlsB,EAAEtc,EAAEA,EAAER,KAAK,GAAG6c,EAAEn5B,EAAEm5B,EAAEC,EAAEsyB,QAAQtyB,EAAEA,EAAE9c,WAAW8c,IAAItc,GAAG66B,GAAGxe,EAAEl5B,EAAEgnC,iBAAiBqd,IAAG,GAAIrkD,EAAEgnC,cAAc9N,EAAE,OAAOl5B,EAAEmrD,YAAYnrD,EAAEilD,UAAU/rB,GAAGlY,EAAE4qC,kBAAkB1yB,CAAC,CAAC,MAAM,CAACA,EAAExtB,EAAE,CAAC,SAASqgD,KAAK,CACpW,SAASx4C,GAAGxT,EAAEC,GAAG,IAAIghB,EAAEmpC,GAAEz+C,EAAE2/C,KAAKxuC,EAAE7c,IAAIk5B,GAAGwe,GAAGhsC,EAAEs7B,cAAcnqB,GAAsE,GAAnEqc,IAAIxtB,EAAEs7B,cAAcnqB,EAAEwnC,IAAG,GAAI34C,EAAEA,EAAE0/C,MAAMY,GAAGC,GAAGvP,KAAK,KAAK17B,EAAEtV,EAAE3L,GAAG,CAACA,IAAO2L,EAAEwgD,cAAclsD,GAAGk5B,GAAG,OAAOmxB,IAAuB,EAApBA,GAAErjB,cAAc1K,IAAM,CAAuD,GAAtDtb,EAAEhe,OAAO,KAAKmpD,GAAG,EAAEC,GAAG1P,KAAK,KAAK17B,EAAEtV,EAAEmR,EAAE7c,QAAG,EAAO,MAAS,OAAOqsD,GAAE,MAAMnmD,MAAMgyB,EAAE,MAAM,KAAQ,GAAHgyB,KAAQoC,GAAGtrC,EAAEhhB,EAAE6c,EAAE,CAAC,OAAOA,CAAC,CAAC,SAASyvC,GAAGvsD,EAAEC,EAAEghB,GAAGjhB,EAAEiD,OAAO,MAAMjD,EAAE,CAACmsD,YAAYlsD,EAAEoO,MAAM4S,GAAmB,QAAhBhhB,EAAEmqD,GAAEnF,cAAsBhlD,EAAE,CAACusD,WAAW,KAAKC,OAAO,MAAMrC,GAAEnF,YAAYhlD,EAAEA,EAAEwsD,OAAO,CAACzsD,IAAgB,QAAXihB,EAAEhhB,EAAEwsD,QAAgBxsD,EAAEwsD,OAAO,CAACzsD,GAAGihB,EAAE/f,KAAKlB,EAAG,CAClf,SAASqsD,GAAGrsD,EAAEC,EAAEghB,EAAEtV,GAAG1L,EAAEoO,MAAM4S,EAAEhhB,EAAEksD,YAAYxgD,EAAE+gD,GAAGzsD,IAAI0sD,GAAG3sD,EAAE,CAAC,SAASksD,GAAGlsD,EAAEC,EAAEghB,GAAG,OAAOA,GAAE,WAAWyrC,GAAGzsD,IAAI0sD,GAAG3sD,EAAE,GAAE,CAAC,SAAS0sD,GAAG1sD,GAAG,IAAIC,EAAED,EAAEmsD,YAAYnsD,EAAEA,EAAEqO,MAAM,IAAI,IAAI4S,EAAEhhB,IAAI,OAAO03C,GAAG33C,EAAEihB,EAAE,CAAC,MAAMtV,GAAG,OAAM,CAAE,CAAC,CAAC,SAASghD,GAAG3sD,GAAG,IAAIC,EAAE6kD,GAAG9kD,EAAE,GAAG,OAAOC,GAAG6mD,GAAG7mD,EAAED,EAAE,GAAG,EAAE,CAClQ,SAAS4sD,GAAG5sD,GAAG,IAAIC,EAAEkrD,KAA8M,MAAzM,oBAAoBnrD,IAAIA,EAAEA,KAAKC,EAAEgnC,cAAchnC,EAAEilD,UAAUllD,EAAEA,EAAE,CAACslD,QAAQ,KAAKT,YAAY,KAAKR,MAAM,EAAEyH,SAAS,KAAKL,oBAAoBF,GAAGM,kBAAkB7rD,GAAGC,EAAEorD,MAAMrrD,EAAEA,EAAEA,EAAE8rD,SAASe,GAAGlQ,KAAK,KAAKyN,GAAEpqD,GAAS,CAACC,EAAEgnC,cAAcjnC,EAAE,CAC5P,SAASosD,GAAGpsD,EAAEC,EAAEghB,EAAEtV,GAA8O,OAA3O3L,EAAE,CAACu8B,IAAIv8B,EAAE8sD,OAAO7sD,EAAE8sD,QAAQ9rC,EAAE+rC,KAAKrhD,EAAE2Q,KAAK,MAAsB,QAAhBrc,EAAEmqD,GAAEnF,cAAsBhlD,EAAE,CAACusD,WAAW,KAAKC,OAAO,MAAMrC,GAAEnF,YAAYhlD,EAAEA,EAAEusD,WAAWxsD,EAAEsc,KAAKtc,GAAmB,QAAfihB,EAAEhhB,EAAEusD,YAAoBvsD,EAAEusD,WAAWxsD,EAAEsc,KAAKtc,GAAG2L,EAAEsV,EAAE3E,KAAK2E,EAAE3E,KAAKtc,EAAEA,EAAEsc,KAAK3Q,EAAE1L,EAAEusD,WAAWxsD,GAAWA,CAAC,CAAC,SAASitD,KAAK,OAAO3B,KAAKrkB,aAAa,CAAC,SAASimB,GAAGltD,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAEquC,KAAKf,GAAEnnD,OAAOjD,EAAE8c,EAAEmqB,cAAcmlB,GAAG,EAAEnsD,EAAEghB,OAAE,OAAO,IAAStV,EAAE,KAAKA,EAAE,CAC9Y,SAASwhD,GAAGntD,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAEwuC,KAAK3/C,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIwtB,OAAE,EAAO,GAAG,OAAOkxB,GAAE,CAAC,IAAIjxB,EAAEixB,GAAEpjB,cAA0B,GAAZ9N,EAAEC,EAAE2zB,QAAW,OAAOphD,GAAGi/C,GAAGj/C,EAAEytB,EAAE4zB,MAAmC,YAA5BlwC,EAAEmqB,cAAcmlB,GAAGnsD,EAAEghB,EAAEkY,EAAExtB,GAAU,CAACy+C,GAAEnnD,OAAOjD,EAAE8c,EAAEmqB,cAAcmlB,GAAG,EAAEnsD,EAAEghB,EAAEkY,EAAExtB,EAAE,CAAC,SAASyhD,GAAGptD,EAAEC,GAAG,OAAOitD,GAAG,QAAQ,EAAEltD,EAAEC,EAAE,CAAC,SAASgsD,GAAGjsD,EAAEC,GAAG,OAAOktD,GAAG,KAAK,EAAEntD,EAAEC,EAAE,CAAC,SAASotD,GAAGrtD,EAAEC,GAAG,OAAOktD,GAAG,EAAE,EAAEntD,EAAEC,EAAE,CAAC,SAASqtD,GAAGttD,EAAEC,GAAG,OAAOktD,GAAG,EAAE,EAAEntD,EAAEC,EAAE,CAChX,SAASstD,GAAGvtD,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,KAAK,GAAK,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEsnC,QAAQvnC,EAAE,WAAWC,EAAEsnC,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAASimB,GAAGxtD,EAAEC,EAAEghB,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEzJ,OAAO,CAACxX,IAAI,KAAYmtD,GAAG,EAAE,EAAEI,GAAG5Q,KAAK,KAAK18C,EAAED,GAAGihB,EAAE,CAAC,SAASwsC,KAAK,CAAC,SAASC,GAAG1tD,EAAEC,GAAG,IAAIghB,EAAEqqC,KAAKrrD,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI0L,EAAEsV,EAAEgmB,cAAc,OAAG,OAAOt7B,GAAG,OAAO1L,GAAG2qD,GAAG3qD,EAAE0L,EAAE,IAAWA,EAAE,IAAGsV,EAAEgmB,cAAc,CAACjnC,EAAEC,GAAUD,EAAC,CAC7Z,SAAS2tD,GAAG3tD,EAAEC,GAAG,IAAIghB,EAAEqqC,KAAKrrD,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI0L,EAAEsV,EAAEgmB,cAAc,OAAG,OAAOt7B,GAAG,OAAO1L,GAAG2qD,GAAG3qD,EAAE0L,EAAE,IAAWA,EAAE,IAAG3L,EAAEA,IAAIihB,EAAEgmB,cAAc,CAACjnC,EAAEC,GAAUD,EAAC,CAAC,SAAS4tD,GAAG5tD,EAAEC,EAAEghB,GAAG,OAAG,KAAQ,GAAHkpC,KAAcnqD,EAAEklD,YAAYllD,EAAEklD,WAAU,EAAGZ,IAAG,GAAItkD,EAAEinC,cAAchmB,IAAE02B,GAAG12B,EAAEhhB,KAAKghB,EAAEkpB,KAAKigB,GAAE/F,OAAOpjC,EAAEvV,IAAIuV,EAAEjhB,EAAEklD,WAAU,GAAWjlD,EAAC,CAAC,SAAS4tD,GAAG7tD,EAAEC,GAAG,IAAIghB,EAAEupB,GAAEA,GAAE,IAAIvpB,GAAG,EAAEA,EAAEA,EAAE,EAAEjhB,GAAE,GAAI,IAAI2L,EAAEu+C,GAAGld,WAAWkd,GAAGld,WAAW,CAAC,EAAE,IAAIhtC,GAAE,GAAIC,GAAG,CAAC,QAAQuqC,GAAEvpB,EAAEipC,GAAGld,WAAWrhC,CAAC,CAAC,CAAC,SAASmiD,KAAK,OAAOxC,KAAKrkB,aAAa,CAC1d,SAAS8mB,GAAG/tD,EAAEC,EAAEghB,GAAG,IAAItV,EAAEk7C,GAAG7mD,GAAkE,GAA/DihB,EAAE,CAAC0kC,KAAKh6C,EAAE+/C,OAAOzqC,EAAE0qC,eAAc,EAAGC,WAAW,KAAKtvC,KAAK,MAAS0xC,GAAGhuD,GAAGiuD,GAAGhuD,EAAEghB,QAAQ,GAAiB,QAAdA,EAAE2jC,GAAG5kD,EAAEC,EAAEghB,EAAEtV,IAAY,CAAWm7C,GAAG7lC,EAAEjhB,EAAE2L,EAAXrB,MAAgB4jD,GAAGjtC,EAAEhhB,EAAE0L,EAAE,CAAC,CAC/K,SAASkhD,GAAG7sD,EAAEC,EAAEghB,GAAG,IAAItV,EAAEk7C,GAAG7mD,GAAG8c,EAAE,CAAC6oC,KAAKh6C,EAAE+/C,OAAOzqC,EAAE0qC,eAAc,EAAGC,WAAW,KAAKtvC,KAAK,MAAM,GAAG0xC,GAAGhuD,GAAGiuD,GAAGhuD,EAAE6c,OAAO,CAAC,IAAIqc,EAAEn5B,EAAE8mC,UAAU,GAAG,IAAI9mC,EAAEqkD,QAAQ,OAAOlrB,GAAG,IAAIA,EAAEkrB,QAAiC,QAAxBlrB,EAAEl5B,EAAEwrD,qBAA8B,IAAI,IAAIryB,EAAEn5B,EAAE4rD,kBAAkBpgD,EAAE0tB,EAAEC,EAAEnY,GAAqC,GAAlCnE,EAAE6uC,eAAc,EAAG7uC,EAAE8uC,WAAWngD,EAAKksC,GAAGlsC,EAAE2tB,GAAG,CAAC,IAAI74B,EAAEN,EAAE4kD,YAA+E,OAAnE,OAAOtkD,GAAGuc,EAAER,KAAKQ,EAAE6nC,GAAG1kD,KAAK6c,EAAER,KAAK/b,EAAE+b,KAAK/b,EAAE+b,KAAKQ,QAAG7c,EAAE4kD,YAAY/nC,EAAQ,CAAC,CAAC,MAAMiC,GAAG,CAAwB,QAAdkC,EAAE2jC,GAAG5kD,EAAEC,EAAE6c,EAAEnR,MAAoBm7C,GAAG7lC,EAAEjhB,EAAE2L,EAAbmR,EAAExS,MAAgB4jD,GAAGjtC,EAAEhhB,EAAE0L,GAAG,CAAC,CAC/c,SAASqiD,GAAGhuD,GAAG,IAAIC,EAAED,EAAE8mC,UAAU,OAAO9mC,IAAIoqD,IAAG,OAAOnqD,GAAGA,IAAImqD,EAAC,CAAC,SAAS6D,GAAGjuD,EAAEC,GAAGuqD,GAAGD,IAAG,EAAG,IAAItpC,EAAEjhB,EAAEslD,QAAQ,OAAOrkC,EAAEhhB,EAAEqc,KAAKrc,GAAGA,EAAEqc,KAAK2E,EAAE3E,KAAK2E,EAAE3E,KAAKrc,GAAGD,EAAEslD,QAAQrlD,CAAC,CAAC,SAASiuD,GAAGluD,EAAEC,EAAEghB,GAAG,GAAG,KAAO,QAAFA,GAAW,CAAC,IAAItV,EAAE1L,EAAEokD,MAAwBpjC,GAAlBtV,GAAG3L,EAAE4pC,aAAkB3pC,EAAEokD,MAAMpjC,EAAEspB,GAAGvqC,EAAEihB,EAAE,CAAC,CAC9P,IAAIgqC,GAAG,CAACkD,YAAY5J,GAAG6J,YAAYzD,GAAE0D,WAAW1D,GAAE2D,UAAU3D,GAAE4D,oBAAoB5D,GAAE6D,mBAAmB7D,GAAE8D,gBAAgB9D,GAAE+D,QAAQ/D,GAAEgE,WAAWhE,GAAEiE,OAAOjE,GAAEkE,SAASlE,GAAEmE,cAAcnE,GAAEoE,iBAAiBpE,GAAEqE,cAAcrE,GAAEsE,iBAAiBtE,GAAEuE,qBAAqBvE,GAAEwE,MAAMxE,GAAEyE,0BAAyB,GAAItE,GAAG,CAACqD,YAAY5J,GAAG6J,YAAY,SAASpuD,EAAEC,GAA4C,OAAzCkrD,KAAKlkB,cAAc,CAACjnC,OAAE,IAASC,EAAE,KAAKA,GAAUD,CAAC,EAAEquD,WAAW9J,GAAG+J,UAAUlB,GAAGmB,oBAAoB,SAASvuD,EAAEC,EAAEghB,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEzJ,OAAO,CAACxX,IAAI,KAAYktD,GAAG,QAC3f,EAAEK,GAAG5Q,KAAK,KAAK18C,EAAED,GAAGihB,EAAE,EAAEwtC,gBAAgB,SAASzuD,EAAEC,GAAG,OAAOitD,GAAG,QAAQ,EAAEltD,EAAEC,EAAE,EAAEuuD,mBAAmB,SAASxuD,EAAEC,GAAG,OAAOitD,GAAG,EAAE,EAAEltD,EAAEC,EAAE,EAAEyuD,QAAQ,SAAS1uD,EAAEC,GAAG,IAAIghB,EAAEkqC,KAAqD,OAAhDlrD,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIihB,EAAEgmB,cAAc,CAACjnC,EAAEC,GAAUD,CAAC,EAAE2uD,WAAW,SAAS3uD,EAAEC,EAAEghB,GAAG,IAAItV,EAAEw/C,KAAkM,OAA7LlrD,OAAE,IAASghB,EAAEA,EAAEhhB,GAAGA,EAAE0L,EAAEs7B,cAAct7B,EAAEu5C,UAAUjlD,EAAED,EAAE,CAACslD,QAAQ,KAAKT,YAAY,KAAKR,MAAM,EAAEyH,SAAS,KAAKL,oBAAoBzrD,EAAE6rD,kBAAkB5rD,GAAG0L,EAAE0/C,MAAMrrD,EAAEA,EAAEA,EAAE8rD,SAASiC,GAAGpR,KAAK,KAAKyN,GAAEpqD,GAAS,CAAC2L,EAAEs7B,cAAcjnC,EAAE,EAAE4uD,OAAO,SAAS5uD,GAC3d,OAAdA,EAAE,CAACunC,QAAQvnC,GAAhBmrD,KAA4BlkB,cAAcjnC,CAAC,EAAE6uD,SAASjC,GAAGkC,cAAcrB,GAAGsB,iBAAiB,SAAS/uD,GAAG,OAAOmrD,KAAKlkB,cAAcjnC,CAAC,EAAEgvD,cAAc,WAAW,IAAIhvD,EAAE4sD,IAAG,GAAI3sD,EAAED,EAAE,GAA6C,OAA1CA,EAAE6tD,GAAGlR,KAAK,KAAK38C,EAAE,IAAImrD,KAAKlkB,cAAcjnC,EAAQ,CAACC,EAAED,EAAE,EAAEivD,iBAAiB,WAAW,EAAEC,qBAAqB,SAASlvD,EAAEC,EAAEghB,GAAG,IAAItV,EAAEy+C,GAAEttC,EAAEquC,KAAK,GAAGhJ,GAAE,CAAC,QAAG,IAASlhC,EAAE,MAAM9a,MAAMgyB,EAAE,MAAMlX,EAAEA,GAAG,KAAK,CAAO,GAANA,EAAEhhB,IAAO,OAAOqsD,GAAE,MAAMnmD,MAAMgyB,EAAE,MAAM,KAAQ,GAAHgyB,KAAQoC,GAAG5gD,EAAE1L,EAAEghB,EAAE,CAACnE,EAAEmqB,cAAchmB,EAAE,IAAIkY,EAAE,CAAC9qB,MAAM4S,EAAEkrC,YAAYlsD,GACvZ,OAD0Z6c,EAAEuuC,MAAMlyB,EAAEi0B,GAAGlB,GAAGvP,KAAK,KAAKhxC,EACpfwtB,EAAEn5B,GAAG,CAACA,IAAI2L,EAAE1I,OAAO,KAAKmpD,GAAG,EAAEC,GAAG1P,KAAK,KAAKhxC,EAAEwtB,EAAElY,EAAEhhB,QAAG,EAAO,MAAaghB,CAAC,EAAEkuC,MAAM,WAAW,IAAInvD,EAAEmrD,KAAKlrD,EAAEqsD,GAAE+C,iBAAiB,GAAGlN,GAAE,CAAC,IAAIlhC,EAAE2gC,GAAkD3hD,EAAE,IAAIA,EAAE,KAA9CghB,GAAH0gC,KAAU,GAAG,GAAGzY,GAAhByY,IAAsB,IAAI/hD,SAAS,IAAIqhB,GAAuB,GAAPA,EAAEwpC,QAAWxqD,GAAG,IAAIghB,EAAErhB,SAAS,KAAKK,GAAG,GAAG,MAAaA,EAAE,IAAIA,EAAE,KAAfghB,EAAEypC,MAAmB9qD,SAAS,IAAI,IAAI,OAAOI,EAAEinC,cAAchnC,CAAC,EAAEmvD,0BAAyB,GAAIrE,GAAG,CAACoD,YAAY5J,GAAG6J,YAAYV,GAAGW,WAAW9J,GAAG+J,UAAUrC,GAAGsC,oBAAoBf,GAAGgB,mBAAmBnB,GAAGoB,gBAAgBnB,GAAGoB,QAAQf,GAAGgB,WAAWnD,GAAGoD,OAAO3B,GAAG4B,SAAS,WAAW,OAAOrD,GAAGD,GAAG,EACrhBuD,cAAcrB,GAAGsB,iBAAiB,SAAS/uD,GAAc,OAAO4tD,GAAZtC,KAAiBjB,GAAEpjB,cAAcjnC,EAAE,EAAEgvD,cAAc,WAAgD,MAAM,CAArCxD,GAAGD,IAAI,GAAKD,KAAKrkB,cAAyB,EAAEgoB,iBAAiBjD,GAAGkD,qBAAqB17C,GAAG27C,MAAMrB,GAAGsB,0BAAyB,GAAIpE,GAAG,CAACmD,YAAY5J,GAAG6J,YAAYV,GAAGW,WAAW9J,GAAG+J,UAAUrC,GAAGsC,oBAAoBf,GAAGgB,mBAAmBnB,GAAGoB,gBAAgBnB,GAAGoB,QAAQf,GAAGgB,WAAW5C,GAAG6C,OAAO3B,GAAG4B,SAAS,WAAW,OAAO9C,GAAGR,GAAG,EAAEuD,cAAcrB,GAAGsB,iBAAiB,SAAS/uD,GAAG,IAAIC,EAAEqrD,KAAK,OAAO,OACzfjB,GAAEpqD,EAAEgnC,cAAcjnC,EAAE4tD,GAAG3tD,EAAEoqD,GAAEpjB,cAAcjnC,EAAE,EAAEgvD,cAAc,WAAgD,MAAM,CAArCjD,GAAGR,IAAI,GAAKD,KAAKrkB,cAAyB,EAAEgoB,iBAAiBjD,GAAGkD,qBAAqB17C,GAAG27C,MAAMrB,GAAGsB,0BAAyB,GAAI,SAASE,GAAGtvD,EAAEC,GAAG,IAAI,IAAIghB,EAAE,GAAGtV,EAAE1L,EAAE,GAAGghB,GAAGqb,EAAG3wB,GAAGA,EAAEA,EAAEo7B,aAAap7B,GAAG,IAAImR,EAAEmE,CAAC,CAAC,MAAMkY,GAAGrc,EAAE,6BAA6Bqc,EAAEo2B,QAAQ,KAAKp2B,EAAE/yB,KAAK,CAAC,MAAM,CAACiI,MAAMrO,EAAEgH,OAAO/G,EAAEmG,MAAM0W,EAAE0yC,OAAO,KAAK,CAAC,SAASC,GAAGzvD,EAAEC,EAAEghB,GAAG,MAAM,CAAC5S,MAAMrO,EAAEgH,OAAO,KAAKZ,MAAM,MAAM6a,EAAEA,EAAE,KAAKuuC,OAAO,MAAMvvD,EAAEA,EAAE,KAAK,CACzd,SAASyvD,GAAG1vD,EAAEC,GAAG,IAAIwF,QAAQkqD,MAAM1vD,EAAEoO,MAAM,CAAC,MAAM4S,GAAGs9B,YAAW,WAAW,MAAMt9B,CAAE,GAAE,CAAC,CAAC,IAAI2uC,GAAG,oBAAoBC,QAAQA,QAAQxkB,IAAI,SAASykB,GAAG9vD,EAAEC,EAAEghB,IAAGA,EAAEwkC,IAAI,EAAExkC,IAAKsb,IAAI,EAAEtb,EAAE2kC,QAAQ,CAAC9L,QAAQ,MAAM,IAAInuC,EAAE1L,EAAEoO,MAAsD,OAAhD4S,EAAE3hB,SAAS,WAAWywD,KAAKA,IAAG,EAAGC,GAAGrkD,GAAG+jD,GAAG1vD,EAAEC,EAAE,EAASghB,CAAC,CAC3Q,SAASgvC,GAAGjwD,EAAEC,EAAEghB,IAAGA,EAAEwkC,IAAI,EAAExkC,IAAKsb,IAAI,EAAE,IAAI5wB,EAAE3L,EAAE05B,KAAKw2B,yBAAyB,GAAG,oBAAoBvkD,EAAE,CAAC,IAAImR,EAAE7c,EAAEoO,MAAM4S,EAAE2kC,QAAQ,WAAW,OAAOj6C,EAAEmR,EAAE,EAAEmE,EAAE3hB,SAAS,WAAWowD,GAAG1vD,EAAEC,EAAE,CAAC,CAAC,IAAIk5B,EAAEn5B,EAAEwlC,UAA8O,OAApO,OAAOrM,GAAG,oBAAoBA,EAAEg3B,oBAAoBlvC,EAAE3hB,SAAS,WAAWowD,GAAG1vD,EAAEC,GAAG,oBAAoB0L,IAAI,OAAOykD,GAAGA,GAAG,IAAI93B,IAAI,CAACt0B,OAAOosD,GAAGn5C,IAAIjT,OAAO,IAAIid,EAAEhhB,EAAEmG,MAAMpC,KAAKmsD,kBAAkBlwD,EAAEoO,MAAM,CAACgiD,eAAe,OAAOpvC,EAAEA,EAAE,IAAI,GAAUA,CAAC,CACnb,SAASqvC,GAAGtwD,EAAEC,EAAEghB,GAAG,IAAItV,EAAE3L,EAAEuwD,UAAU,GAAG,OAAO5kD,EAAE,CAACA,EAAE3L,EAAEuwD,UAAU,IAAIX,GAAG,IAAI9yC,EAAE,IAAIwb,IAAI3sB,EAAEhF,IAAI1G,EAAE6c,EAAE,WAAiB,KAAXA,EAAEnR,EAAE+C,IAAIzO,MAAgB6c,EAAE,IAAIwb,IAAI3sB,EAAEhF,IAAI1G,EAAE6c,IAAIA,EAAEu/B,IAAIp7B,KAAKnE,EAAE7F,IAAIgK,GAAGjhB,EAAEwwD,GAAG7T,KAAK,KAAK38C,EAAEC,EAAEghB,GAAGhhB,EAAE8+C,KAAK/+C,EAAEA,GAAG,CAAC,SAASywD,GAAGzwD,GAAG,EAAE,CAAC,IAAIC,EAA4E,IAAvEA,EAAE,KAAKD,EAAEu8B,OAAsBt8B,EAAE,QAApBA,EAAED,EAAEinC,gBAAyB,OAAOhnC,EAAEinC,YAAuBjnC,EAAE,OAAOD,EAAEA,EAAEA,EAAE+mC,MAAM,OAAO,OAAO/mC,GAAG,OAAO,IAAI,CAChW,SAAS0wD,GAAG1wD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,OAAG,KAAY,EAAP9c,EAAE8iD,OAAe9iD,IAAIC,EAAED,EAAEiD,OAAO,OAAOjD,EAAEiD,OAAO,IAAIge,EAAEhe,OAAO,OAAOge,EAAEhe,QAAQ,MAAM,IAAIge,EAAEsb,MAAM,OAAOtb,EAAE6lB,UAAU7lB,EAAEsb,IAAI,KAAIt8B,EAAEwlD,IAAI,EAAE,IAAKlpB,IAAI,EAAEspB,GAAG5kC,EAAEhhB,EAAE,KAAKghB,EAAEojC,OAAO,GAAGrkD,IAAEA,EAAEiD,OAAO,MAAMjD,EAAEqkD,MAAMvnC,EAAS9c,EAAC,CAAC,IAAI2wD,GAAGn2B,EAAGo2B,kBAAkBtM,IAAG,EAAG,SAASuM,GAAG7wD,EAAEC,EAAEghB,EAAEtV,GAAG1L,EAAEonC,MAAM,OAAOrnC,EAAEgpD,GAAG/oD,EAAE,KAAKghB,EAAEtV,GAAGo9C,GAAG9oD,EAAED,EAAEqnC,MAAMpmB,EAAEtV,EAAE,CACnV,SAASmlD,GAAG9wD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAGmE,EAAEA,EAAEub,OAAO,IAAIrD,EAAEl5B,EAAEkoD,IAAqC,OAAjCjE,GAAGjkD,EAAE6c,GAAGnR,EAAEk/C,GAAG7qD,EAAEC,EAAEghB,EAAEtV,EAAEwtB,EAAErc,GAAGmE,EAAEiqC,KAAQ,OAAOlrD,GAAIskD,IAA2EnC,IAAGlhC,GAAG8gC,GAAG9hD,GAAGA,EAAEgD,OAAO,EAAE4tD,GAAG7wD,EAAEC,EAAE0L,EAAEmR,GAAU7c,EAAEonC,QAA7GpnC,EAAEglD,YAAYjlD,EAAEilD,YAAYhlD,EAAEgD,QAAQ,KAAKjD,EAAEqkD,QAAQvnC,EAAEi0C,GAAG/wD,EAAEC,EAAE6c,GAAoD,CACzN,SAASk0C,GAAGhxD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,GAAG,OAAO9c,EAAE,CAAC,IAAIm5B,EAAElY,EAAEyY,KAAK,MAAG,oBAAoBP,GAAI83B,GAAG93B,SAAI,IAASA,EAAEqqB,cAAc,OAAOviC,EAAEiwC,cAAS,IAASjwC,EAAEuiC,eAAoDxjD,EAAE0oD,GAAGznC,EAAEyY,KAAK,KAAK/tB,EAAE1L,EAAEA,EAAE6iD,KAAKhmC,IAAKqrC,IAAIloD,EAAEkoD,IAAInoD,EAAE+mC,OAAO9mC,EAASA,EAAEonC,MAAMrnC,IAArGC,EAAEs8B,IAAI,GAAGt8B,EAAEy5B,KAAKP,EAAEg4B,GAAGnxD,EAAEC,EAAEk5B,EAAExtB,EAAEmR,GAAyE,CAAW,GAAVqc,EAAEn5B,EAAEqnC,MAAS,KAAKrnC,EAAEqkD,MAAMvnC,GAAG,CAAC,IAAIsc,EAAED,EAAE+pB,cAA0C,IAAhBjiC,EAAE,QAAdA,EAAEA,EAAEiwC,SAAmBjwC,EAAE22B,IAAQxe,EAAEztB,IAAI3L,EAAEmoD,MAAMloD,EAAEkoD,IAAI,OAAO4I,GAAG/wD,EAAEC,EAAE6c,EAAE,CAA6C,OAA5C7c,EAAEgD,OAAO,GAAEjD,EAAEwoD,GAAGrvB,EAAExtB,IAAKw8C,IAAIloD,EAAEkoD,IAAInoD,EAAE+mC,OAAO9mC,EAASA,EAAEonC,MAAMrnC,CAAC,CAC1b,SAASmxD,GAAGnxD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,GAAG,OAAO9c,EAAE,CAAC,IAAIm5B,EAAEn5B,EAAEkjD,cAAc,GAAGtL,GAAGze,EAAExtB,IAAI3L,EAAEmoD,MAAMloD,EAAEkoD,IAAI,IAAG7D,IAAG,EAAGrkD,EAAEyiD,aAAa/2C,EAAEwtB,EAAE,KAAKn5B,EAAEqkD,MAAMvnC,GAAsC,OAAO7c,EAAEokD,MAAMrkD,EAAEqkD,MAAM0M,GAAG/wD,EAAEC,EAAE6c,GAAjE,KAAa,OAAR9c,EAAEiD,SAAgBqhD,IAAG,EAAyC,EAAC,OAAO8M,GAAGpxD,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAE,CACxN,SAASu0C,GAAGrxD,EAAEC,EAAEghB,GAAG,IAAItV,EAAE1L,EAAEyiD,aAAa5lC,EAAEnR,EAAE2zB,SAASnG,EAAE,OAAOn5B,EAAEA,EAAEinC,cAAc,KAAK,GAAG,WAAWt7B,EAAEm3C,KAAK,GAAG,KAAY,EAAP7iD,EAAE6iD,MAAQ7iD,EAAEgnC,cAAc,CAACqqB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAM1R,GAAE2R,GAAGC,IAAIA,IAAIzwC,MAAM,CAAC,GAAG,KAAO,WAAFA,GAAc,OAAOjhB,EAAE,OAAOm5B,EAAEA,EAAEm4B,UAAUrwC,EAAEA,EAAEhhB,EAAEokD,MAAMpkD,EAAEgkD,WAAW,WAAWhkD,EAAEgnC,cAAc,CAACqqB,UAAUtxD,EAAEuxD,UAAU,KAAKC,YAAY,MAAMvxD,EAAEglD,YAAY,KAAKnF,GAAE2R,GAAGC,IAAIA,IAAI1xD,EAAE,KAAKC,EAAEgnC,cAAc,CAACqqB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAM7lD,EAAE,OAAOwtB,EAAEA,EAAEm4B,UAAUrwC,EAAE6+B,GAAE2R,GAAGC,IAAIA,IAAI/lD,CAAC,MAAM,OACtfwtB,GAAGxtB,EAAEwtB,EAAEm4B,UAAUrwC,EAAEhhB,EAAEgnC,cAAc,MAAMt7B,EAAEsV,EAAE6+B,GAAE2R,GAAGC,IAAIA,IAAI/lD,EAAc,OAAZklD,GAAG7wD,EAAEC,EAAE6c,EAAEmE,GAAUhhB,EAAEonC,KAAK,CAAC,SAASsqB,GAAG3xD,EAAEC,GAAG,IAAIghB,EAAEhhB,EAAEkoD,KAAO,OAAOnoD,GAAG,OAAOihB,GAAG,OAAOjhB,GAAGA,EAAEmoD,MAAMlnC,KAAEhhB,EAAEgD,OAAO,IAAIhD,EAAEgD,OAAO,QAAO,CAAC,SAASmuD,GAAGpxD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,IAAIqc,EAAEonB,GAAGt/B,GAAGi/B,GAAGF,GAAEzY,QAAmD,OAA3CpO,EAAEgnB,GAAGlgD,EAAEk5B,GAAG+qB,GAAGjkD,EAAE6c,GAAGmE,EAAE4pC,GAAG7qD,EAAEC,EAAEghB,EAAEtV,EAAEwtB,EAAErc,GAAGnR,EAAEu/C,KAAQ,OAAOlrD,GAAIskD,IAA2EnC,IAAGx2C,GAAGo2C,GAAG9hD,GAAGA,EAAEgD,OAAO,EAAE4tD,GAAG7wD,EAAEC,EAAEghB,EAAEnE,GAAU7c,EAAEonC,QAA7GpnC,EAAEglD,YAAYjlD,EAAEilD,YAAYhlD,EAAEgD,QAAQ,KAAKjD,EAAEqkD,QAAQvnC,EAAEi0C,GAAG/wD,EAAEC,EAAE6c,GAAoD,CACla,SAAS80C,GAAG5xD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,GAAGyjC,GAAGt/B,GAAG,CAAC,IAAIkY,GAAE,EAAG0nB,GAAG5gD,EAAE,MAAMk5B,GAAE,EAAW,GAAR+qB,GAAGjkD,EAAE6c,GAAM,OAAO7c,EAAEulC,UAAUqsB,GAAG7xD,EAAEC,GAAGmnD,GAAGnnD,EAAEghB,EAAEtV,GAAGg8C,GAAG1nD,EAAEghB,EAAEtV,EAAEmR,GAAGnR,GAAE,OAAQ,GAAG,OAAO3L,EAAE,CAAC,IAAIo5B,EAAEn5B,EAAEulC,UAAU/5B,EAAExL,EAAEijD,cAAc9pB,EAAEwuB,MAAMn8C,EAAE,IAAIlL,EAAE64B,EAAEorB,QAAQzlC,EAAEkC,EAAEomC,YAAY,kBAAkBtoC,GAAG,OAAOA,EAAEA,EAAEwlC,GAAGxlC,GAAyBA,EAAEohC,GAAGlgD,EAA1B8e,EAAEwhC,GAAGt/B,GAAGi/B,GAAGF,GAAEzY,SAAmB,IAAI1kC,EAAEoe,EAAE4mC,yBAAyB3B,EAAE,oBAAoBrjD,GAAG,oBAAoBu2B,EAAE0uB,wBAAwB5B,GAAG,oBAAoB9sB,EAAEsuB,kCAAkC,oBAAoBtuB,EAAEquB,4BAC1dh8C,IAAIE,GAAGpL,IAAIwe,IAAIyoC,GAAGvnD,EAAEm5B,EAAEztB,EAAEoT,GAAGgmC,IAAG,EAAG,IAAIoB,EAAElmD,EAAEgnC,cAAc7N,EAAEkuB,MAAMnB,EAAEF,GAAGhmD,EAAE0L,EAAEytB,EAAEtc,GAAGvc,EAAEN,EAAEgnC,cAAcx7B,IAAIE,GAAGw6C,IAAI5lD,GAAG0/C,GAAG1Y,SAASwd,IAAI,oBAAoBliD,IAAI2jD,GAAGvmD,EAAEghB,EAAEpe,EAAE8I,GAAGpL,EAAEN,EAAEgnC,gBAAgBx7B,EAAEs5C,IAAIkC,GAAGhnD,EAAEghB,EAAExV,EAAEE,EAAEw6C,EAAE5lD,EAAEwe,KAAKmnC,GAAG,oBAAoB9sB,EAAE2uB,2BAA2B,oBAAoB3uB,EAAE4uB,qBAAqB,oBAAoB5uB,EAAE4uB,oBAAoB5uB,EAAE4uB,qBAAqB,oBAAoB5uB,EAAE2uB,2BAA2B3uB,EAAE2uB,6BAA6B,oBAAoB3uB,EAAE6uB,oBAAoBhoD,EAAEgD,OAAO,WAClf,oBAAoBm2B,EAAE6uB,oBAAoBhoD,EAAEgD,OAAO,SAAShD,EAAEijD,cAAcv3C,EAAE1L,EAAEgnC,cAAc1mC,GAAG64B,EAAEwuB,MAAMj8C,EAAEytB,EAAEkuB,MAAM/mD,EAAE64B,EAAEorB,QAAQzlC,EAAEpT,EAAEF,IAAI,oBAAoB2tB,EAAE6uB,oBAAoBhoD,EAAEgD,OAAO,SAAS0I,GAAE,EAAG,KAAK,CAACytB,EAAEn5B,EAAEulC,UAAUggB,GAAGxlD,EAAEC,GAAGwL,EAAExL,EAAEijD,cAAcnkC,EAAE9e,EAAEy5B,OAAOz5B,EAAEsiD,YAAY92C,EAAE83C,GAAGtjD,EAAEy5B,KAAKjuB,GAAG2tB,EAAEwuB,MAAM7oC,EAAEmnC,EAAEjmD,EAAEyiD,aAAayD,EAAE/sB,EAAEorB,QAAwB,kBAAhBjkD,EAAE0gB,EAAEomC,cAAiC,OAAO9mD,EAAEA,EAAEgkD,GAAGhkD,GAAyBA,EAAE4/C,GAAGlgD,EAA1BM,EAAEggD,GAAGt/B,GAAGi/B,GAAGF,GAAEzY,SAAmB,IAAIt7B,EAAEgV,EAAE4mC,0BAA0BhlD,EAAE,oBAAoBoJ,GAAG,oBAAoBmtB,EAAE0uB,0BAC9e,oBAAoB1uB,EAAEsuB,kCAAkC,oBAAoBtuB,EAAEquB,4BAA4Bh8C,IAAIy6C,GAAGC,IAAI5lD,IAAIinD,GAAGvnD,EAAEm5B,EAAEztB,EAAEpL,GAAGwkD,IAAG,EAAGoB,EAAElmD,EAAEgnC,cAAc7N,EAAEkuB,MAAMnB,EAAEF,GAAGhmD,EAAE0L,EAAEytB,EAAEtc,GAAG,IAAI5K,EAAEjS,EAAEgnC,cAAcx7B,IAAIy6C,GAAGC,IAAIj0C,GAAG+tC,GAAG1Y,SAASwd,IAAI,oBAAoB94C,IAAIu6C,GAAGvmD,EAAEghB,EAAEhV,EAAEN,GAAGuG,EAAEjS,EAAEgnC,gBAAgBloB,EAAEgmC,IAAIkC,GAAGhnD,EAAEghB,EAAElC,EAAEpT,EAAEw6C,EAAEj0C,EAAE3R,KAAI,IAAKsC,GAAG,oBAAoBu2B,EAAE04B,4BAA4B,oBAAoB14B,EAAE24B,sBAAsB,oBAAoB34B,EAAE24B,qBAAqB34B,EAAE24B,oBAAoBpmD,EAAEuG,EAAE3R,GAAG,oBAAoB64B,EAAE04B,4BAC5f14B,EAAE04B,2BAA2BnmD,EAAEuG,EAAE3R,IAAI,oBAAoB64B,EAAE44B,qBAAqB/xD,EAAEgD,OAAO,GAAG,oBAAoBm2B,EAAE0uB,0BAA0B7nD,EAAEgD,OAAO,QAAQ,oBAAoBm2B,EAAE44B,oBAAoBvmD,IAAIzL,EAAEkjD,eAAeiD,IAAInmD,EAAEinC,gBAAgBhnC,EAAEgD,OAAO,GAAG,oBAAoBm2B,EAAE0uB,yBAAyBr8C,IAAIzL,EAAEkjD,eAAeiD,IAAInmD,EAAEinC,gBAAgBhnC,EAAEgD,OAAO,MAAMhD,EAAEijD,cAAcv3C,EAAE1L,EAAEgnC,cAAc/0B,GAAGknB,EAAEwuB,MAAMj8C,EAAEytB,EAAEkuB,MAAMp1C,EAAEknB,EAAEorB,QAAQjkD,EAAEoL,EAAEoT,IAAI,oBAAoBqa,EAAE44B,oBAAoBvmD,IAAIzL,EAAEkjD,eAAeiD,IACjfnmD,EAAEinC,gBAAgBhnC,EAAEgD,OAAO,GAAG,oBAAoBm2B,EAAE0uB,yBAAyBr8C,IAAIzL,EAAEkjD,eAAeiD,IAAInmD,EAAEinC,gBAAgBhnC,EAAEgD,OAAO,MAAM0I,GAAE,EAAG,CAAC,OAAOsmD,GAAGjyD,EAAEC,EAAEghB,EAAEtV,EAAEwtB,EAAErc,EAAE,CACnK,SAASm1C,GAAGjyD,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,GAAGw4B,GAAG3xD,EAAEC,GAAG,IAAIm5B,EAAE,KAAa,IAARn5B,EAAEgD,OAAW,IAAI0I,IAAIytB,EAAE,OAAOtc,GAAGikC,GAAG9gD,EAAEghB,GAAE,GAAI8vC,GAAG/wD,EAAEC,EAAEk5B,GAAGxtB,EAAE1L,EAAEulC,UAAUmrB,GAAGppB,QAAQtnC,EAAE,IAAIwL,EAAE2tB,GAAG,oBAAoBnY,EAAEivC,yBAAyB,KAAKvkD,EAAE6wB,SAAwI,OAA/Hv8B,EAAEgD,OAAO,EAAE,OAAOjD,GAAGo5B,GAAGn5B,EAAEonC,MAAM0hB,GAAG9oD,EAAED,EAAEqnC,MAAM,KAAKlO,GAAGl5B,EAAEonC,MAAM0hB,GAAG9oD,EAAE,KAAKwL,EAAE0tB,IAAI03B,GAAG7wD,EAAEC,EAAEwL,EAAE0tB,GAAGl5B,EAAEgnC,cAAct7B,EAAE27C,MAAMxqC,GAAGikC,GAAG9gD,EAAEghB,GAAE,GAAWhhB,EAAEonC,KAAK,CAAC,SAAS6qB,GAAGlyD,GAAG,IAAIC,EAAED,EAAEwlC,UAAUvlC,EAAEkyD,eAAezR,GAAG1gD,EAAEC,EAAEkyD,eAAelyD,EAAEkyD,iBAAiBlyD,EAAEukD,SAASvkD,EAAEukD,SAAS9D,GAAG1gD,EAAEC,EAAEukD,SAAQ,GAAI8E,GAAGtpD,EAAEC,EAAEosC,cAAc,CAC5e,SAAS+lB,GAAGpyD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAuC,OAApCsmC,KAAKC,GAAGvmC,GAAG7c,EAAEgD,OAAO,IAAI4tD,GAAG7wD,EAAEC,EAAEghB,EAAEtV,GAAU1L,EAAEonC,KAAK,CAAC,IAaqLgrB,GAAGC,GAAGC,GAAGC,GAb1LC,GAAG,CAACvrB,WAAW,KAAKyb,YAAY,KAAKC,UAAU,GAAG,SAAS8P,GAAG1yD,GAAG,MAAM,CAACsxD,UAAUtxD,EAAEuxD,UAAU,KAAKC,YAAY,KAAK,CAClM,SAASmB,GAAG3yD,EAAEC,EAAEghB,GAAG,IAA0DxV,EAAtDE,EAAE1L,EAAEyiD,aAAa5lC,EAAE/Q,GAAEw7B,QAAQpO,GAAE,EAAGC,EAAE,KAAa,IAARn5B,EAAEgD,OAAqJ,IAAvIwI,EAAE2tB,KAAK3tB,GAAE,OAAOzL,GAAG,OAAOA,EAAEinC,gBAAiB,KAAO,EAAFnqB,IAASrR,GAAE0tB,GAAE,EAAGl5B,EAAEgD,QAAQ,KAAY,OAAOjD,GAAG,OAAOA,EAAEinC,gBAAcnqB,GAAG,GAAEgjC,GAAE/zC,GAAI,EAAF+Q,GAAQ,OAAO9c,EAA2B,OAAxB+iD,GAAG9iD,GAAwB,QAArBD,EAAEC,EAAEgnC,gBAA2C,QAAfjnC,EAAEA,EAAEknC,aAA4B,KAAY,EAAPjnC,EAAE6iD,MAAQ7iD,EAAEokD,MAAM,EAAE,OAAOrkD,EAAEgd,KAAK/c,EAAEokD,MAAM,EAAEpkD,EAAEokD,MAAM,WAAW,OAAKjrB,EAAEztB,EAAE2zB,SAASt/B,EAAE2L,EAAEinD,SAAgBz5B,GAAGxtB,EAAE1L,EAAE6iD,KAAK3pB,EAAEl5B,EAAEonC,MAAMjO,EAAE,CAAC0pB,KAAK,SAASxjB,SAASlG,GAAG,KAAO,EAAFztB,IAAM,OAAOwtB,GAAGA,EAAE8qB,WAAW,EAAE9qB,EAAEupB,aAC7etpB,GAAGD,EAAE05B,GAAGz5B,EAAEztB,EAAE,EAAE,MAAM3L,EAAE6oD,GAAG7oD,EAAE2L,EAAEsV,EAAE,MAAMkY,EAAE4N,OAAO9mC,EAAED,EAAE+mC,OAAO9mC,EAAEk5B,EAAEmO,QAAQtnC,EAAEC,EAAEonC,MAAMlO,EAAEl5B,EAAEonC,MAAMJ,cAAcyrB,GAAGzxC,GAAGhhB,EAAEgnC,cAAcwrB,GAAGzyD,GAAG8yD,GAAG7yD,EAAEm5B,IAAqB,GAAG,QAArBtc,EAAE9c,EAAEinC,gBAA2C,QAAfx7B,EAAEqR,EAAEoqB,YAAqB,OAGpM,SAAYlnC,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,EAAEC,GAAG,GAAGnY,EAAG,OAAW,IAARhhB,EAAEgD,OAAiBhD,EAAEgD,QAAQ,IAAwB8vD,GAAG/yD,EAAEC,EAAEm5B,EAA3BztB,EAAE8jD,GAAGtpD,MAAMgyB,EAAE,SAAsB,OAAOl4B,EAAEgnC,eAAqBhnC,EAAEonC,MAAMrnC,EAAEqnC,MAAMpnC,EAAEgD,OAAO,IAAI,OAAKk2B,EAAExtB,EAAEinD,SAAS91C,EAAE7c,EAAE6iD,KAAKn3C,EAAEknD,GAAG,CAAC/P,KAAK,UAAUxjB,SAAS3zB,EAAE2zB,UAAUxiB,EAAE,EAAE,OAAMqc,EAAE0vB,GAAG1vB,EAAErc,EAAEsc,EAAE,OAAQn2B,OAAO,EAAE0I,EAAEo7B,OAAO9mC,EAAEk5B,EAAE4N,OAAO9mC,EAAE0L,EAAE27B,QAAQnO,EAAEl5B,EAAEonC,MAAM17B,EAAE,KAAY,EAAP1L,EAAE6iD,OAASiG,GAAG9oD,EAAED,EAAEqnC,MAAM,KAAKjO,GAAGn5B,EAAEonC,MAAMJ,cAAcyrB,GAAGt5B,GAAGn5B,EAAEgnC,cAAcwrB,GAAUt5B,GAAE,GAAG,KAAY,EAAPl5B,EAAE6iD,MAAQ,OAAOiQ,GAAG/yD,EAAEC,EAAEm5B,EAAE,MAAM,GAAG,OAAOtc,EAAEE,KAAK,CAChd,GADidrR,EAAEmR,EAAEk7B,aAAal7B,EAAEk7B,YAAYgb,QAC3e,IAAIvnD,EAAEE,EAAEsnD,KAA0C,OAArCtnD,EAAEF,EAA0CsnD,GAAG/yD,EAAEC,EAAEm5B,EAA/BztB,EAAE8jD,GAAlBt2B,EAAEhzB,MAAMgyB,EAAE,MAAaxsB,OAAE,GAA0B,CAAwB,GAAvBF,EAAE,KAAK2tB,EAAEp5B,EAAEikD,YAAeK,IAAI74C,EAAE,CAAK,GAAG,QAAPE,EAAE2gD,IAAc,CAAC,OAAOlzB,GAAGA,GAAG,KAAK,EAAEtc,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,KAAKA,GAAGnR,EAAEk+B,eAAezQ,IAAI,EAAEtc,IAC5eA,IAAIqc,EAAEypB,YAAYzpB,EAAEypB,UAAU9lC,EAAEgoC,GAAG9kD,EAAE8c,GAAGgqC,GAAGn7C,EAAE3L,EAAE8c,GAAG,GAAG,CAA0B,OAAzBo2C,KAAgCH,GAAG/yD,EAAEC,EAAEm5B,EAAlCztB,EAAE8jD,GAAGtpD,MAAMgyB,EAAE,OAAyB,CAAC,MAAG,OAAOrb,EAAEE,MAAY/c,EAAEgD,OAAO,IAAIhD,EAAEonC,MAAMrnC,EAAEqnC,MAAMpnC,EAAEkzD,GAAGxW,KAAK,KAAK38C,GAAG8c,EAAEs2C,YAAYnzD,EAAE,OAAKD,EAAEm5B,EAAEwpB,YAAYT,GAAG/C,GAAGriC,EAAEk7B,aAAaiK,GAAGhiD,EAAEkiD,IAAE,EAAGC,GAAG,KAAK,OAAOpiD,IAAIwhD,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGC,GAAG3hD,EAAEotC,GAAGwU,GAAG5hD,EAAE+B,SAAS2/C,GAAGzhD,GAAGA,EAAE6yD,GAAG7yD,EAAE0L,EAAE2zB,UAAUr/B,EAAEgD,OAAO,KAAYhD,EAAC,CALrKozD,CAAGrzD,EAAEC,EAAEm5B,EAAEztB,EAAEF,EAAEqR,EAAEmE,GAAG,GAAGkY,EAAE,CAACA,EAAExtB,EAAEinD,SAASx5B,EAAEn5B,EAAE6iD,KAAer3C,GAAVqR,EAAE9c,EAAEqnC,OAAUC,QAAQ,IAAI/mC,EAAE,CAACuiD,KAAK,SAASxjB,SAAS3zB,EAAE2zB,UAChF,OAD0F,KAAO,EAAFlG,IAAMn5B,EAAEonC,QAAQvqB,IAAGnR,EAAE1L,EAAEonC,OAAQ4c,WAAW,EAAEt4C,EAAE+2C,aAAaniD,EAAEN,EAAEuiD,UAAU,OAAO72C,EAAE68C,GAAG1rC,EAAEvc,IAAK+yD,aAA4B,SAAfx2C,EAAEw2C,aAAuB,OAAO7nD,EAAE0tB,EAAEqvB,GAAG/8C,EAAE0tB,IAAIA,EAAE0vB,GAAG1vB,EAAEC,EAAEnY,EAAE,OAAQhe,OAAO,EAAGk2B,EAAE4N,OACnf9mC,EAAE0L,EAAEo7B,OAAO9mC,EAAE0L,EAAE27B,QAAQnO,EAAEl5B,EAAEonC,MAAM17B,EAAEA,EAAEwtB,EAAEA,EAAEl5B,EAAEonC,MAA8BjO,EAAE,QAA1BA,EAAEp5B,EAAEqnC,MAAMJ,eAAyByrB,GAAGzxC,GAAG,CAACqwC,UAAUl4B,EAAEk4B,UAAUrwC,EAAEswC,UAAU,KAAKC,YAAYp4B,EAAEo4B,aAAar4B,EAAE8N,cAAc7N,EAAED,EAAE8qB,WAAWjkD,EAAEikD,YAAYhjC,EAAEhhB,EAAEgnC,cAAcwrB,GAAU9mD,CAAC,CAAoO,OAAzN3L,GAAVm5B,EAAEn5B,EAAEqnC,OAAUC,QAAQ37B,EAAE68C,GAAGrvB,EAAE,CAAC2pB,KAAK,UAAUxjB,SAAS3zB,EAAE2zB,WAAW,KAAY,EAAPr/B,EAAE6iD,QAAUn3C,EAAE04C,MAAMpjC,GAAGtV,EAAEo7B,OAAO9mC,EAAE0L,EAAE27B,QAAQ,KAAK,OAAOtnC,IAAkB,QAAdihB,EAAEhhB,EAAEuiD,YAAoBviD,EAAEuiD,UAAU,CAACxiD,GAAGC,EAAEgD,OAAO,IAAIge,EAAE/f,KAAKlB,IAAIC,EAAEonC,MAAM17B,EAAE1L,EAAEgnC,cAAc,KAAYt7B,CAAC,CACnd,SAASmnD,GAAG9yD,EAAEC,GAA8D,OAA3DA,EAAE4yD,GAAG,CAAC/P,KAAK,UAAUxjB,SAASr/B,GAAGD,EAAE8iD,KAAK,EAAE,OAAQ/b,OAAO/mC,EAASA,EAAEqnC,MAAMpnC,CAAC,CAAC,SAAS8yD,GAAG/yD,EAAEC,EAAEghB,EAAEtV,GAAwG,OAArG,OAAOA,GAAG03C,GAAG13C,GAAGo9C,GAAG9oD,EAAED,EAAEqnC,MAAM,KAAKpmB,IAAGjhB,EAAE8yD,GAAG7yD,EAAEA,EAAEyiD,aAAapjB,WAAYr8B,OAAO,EAAEhD,EAAEgnC,cAAc,KAAYjnC,CAAC,CAGkJ,SAASuzD,GAAGvzD,EAAEC,EAAEghB,GAAGjhB,EAAEqkD,OAAOpkD,EAAE,IAAI0L,EAAE3L,EAAE8mC,UAAU,OAAOn7B,IAAIA,EAAE04C,OAAOpkD,GAAG+jD,GAAGhkD,EAAE+mC,OAAO9mC,EAAEghB,EAAE,CACxc,SAASuyC,GAAGxzD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,IAAIqc,EAAEn5B,EAAEinC,cAAc,OAAO9N,EAAEn5B,EAAEinC,cAAc,CAACwsB,YAAYxzD,EAAEyzD,UAAU,KAAKC,mBAAmB,EAAEC,KAAKjoD,EAAEkoD,KAAK5yC,EAAE6yC,SAASh3C,IAAIqc,EAAEs6B,YAAYxzD,EAAEk5B,EAAEu6B,UAAU,KAAKv6B,EAAEw6B,mBAAmB,EAAEx6B,EAAEy6B,KAAKjoD,EAAEwtB,EAAE06B,KAAK5yC,EAAEkY,EAAE26B,SAASh3C,EAAE,CAC3O,SAASi3C,GAAG/zD,EAAEC,EAAEghB,GAAG,IAAItV,EAAE1L,EAAEyiD,aAAa5lC,EAAEnR,EAAEi+C,YAAYzwB,EAAExtB,EAAEkoD,KAAsC,GAAjChD,GAAG7wD,EAAEC,EAAE0L,EAAE2zB,SAASre,GAAkB,KAAO,GAAtBtV,EAAEI,GAAEw7B,UAAqB57B,EAAI,EAAFA,EAAI,EAAE1L,EAAEgD,OAAO,QAAQ,CAAC,GAAG,OAAOjD,GAAG,KAAa,IAARA,EAAEiD,OAAWjD,EAAE,IAAIA,EAAEC,EAAEonC,MAAM,OAAOrnC,GAAG,CAAC,GAAG,KAAKA,EAAEu8B,IAAI,OAAOv8B,EAAEinC,eAAessB,GAAGvzD,EAAEihB,EAAEhhB,QAAQ,GAAG,KAAKD,EAAEu8B,IAAIg3B,GAAGvzD,EAAEihB,EAAEhhB,QAAQ,GAAG,OAAOD,EAAEqnC,MAAM,CAACrnC,EAAEqnC,MAAMN,OAAO/mC,EAAEA,EAAEA,EAAEqnC,MAAM,QAAQ,CAAC,GAAGrnC,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAEsnC,SAAS,CAAC,GAAG,OAAOtnC,EAAE+mC,QAAQ/mC,EAAE+mC,SAAS9mC,EAAE,MAAMD,EAAEA,EAAEA,EAAE+mC,MAAM,CAAC/mC,EAAEsnC,QAAQP,OAAO/mC,EAAE+mC,OAAO/mC,EAAEA,EAAEsnC,OAAO,CAAC37B,GAAG,CAAC,CAAQ,GAAPm0C,GAAE/zC,GAAEJ,GAAM,KAAY,EAAP1L,EAAE6iD,MAAQ7iD,EAAEgnC,cAC/e,UAAU,OAAOnqB,GAAG,IAAK,WAAqB,IAAVmE,EAAEhhB,EAAEonC,MAAUvqB,EAAE,KAAK,OAAOmE,GAAiB,QAAdjhB,EAAEihB,EAAE6lB,YAAoB,OAAO6iB,GAAG3pD,KAAK8c,EAAEmE,GAAGA,EAAEA,EAAEqmB,QAAY,QAAJrmB,EAAEnE,IAAYA,EAAE7c,EAAEonC,MAAMpnC,EAAEonC,MAAM,OAAOvqB,EAAEmE,EAAEqmB,QAAQrmB,EAAEqmB,QAAQ,MAAMksB,GAAGvzD,GAAE,EAAG6c,EAAEmE,EAAEkY,GAAG,MAAM,IAAK,YAA6B,IAAjBlY,EAAE,KAAKnE,EAAE7c,EAAEonC,MAAUpnC,EAAEonC,MAAM,KAAK,OAAOvqB,GAAG,CAAe,GAAG,QAAjB9c,EAAE8c,EAAEgqB,YAAuB,OAAO6iB,GAAG3pD,GAAG,CAACC,EAAEonC,MAAMvqB,EAAE,KAAK,CAAC9c,EAAE8c,EAAEwqB,QAAQxqB,EAAEwqB,QAAQrmB,EAAEA,EAAEnE,EAAEA,EAAE9c,CAAC,CAACwzD,GAAGvzD,GAAE,EAAGghB,EAAE,KAAKkY,GAAG,MAAM,IAAK,WAAWq6B,GAAGvzD,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAEgnC,cAAc,KAAK,OAAOhnC,EAAEonC,KAAK,CAC7d,SAASwqB,GAAG7xD,EAAEC,GAAG,KAAY,EAAPA,EAAE6iD,OAAS,OAAO9iD,IAAIA,EAAE8mC,UAAU,KAAK7mC,EAAE6mC,UAAU,KAAK7mC,EAAEgD,OAAO,EAAE,CAAC,SAAS8tD,GAAG/wD,EAAEC,EAAEghB,GAAyD,GAAtD,OAAOjhB,IAAIC,EAAEkkD,aAAankD,EAAEmkD,cAAcz4C,IAAIzL,EAAEokD,MAAS,KAAKpjC,EAAEhhB,EAAEgkD,YAAY,OAAO,KAAK,GAAG,OAAOjkD,GAAGC,EAAEonC,QAAQrnC,EAAEqnC,MAAM,MAAMlhC,MAAMgyB,EAAE,MAAM,GAAG,OAAOl4B,EAAEonC,MAAM,CAA4C,IAAjCpmB,EAAEunC,GAAZxoD,EAAEC,EAAEonC,MAAarnC,EAAE0iD,cAAcziD,EAAEonC,MAAMpmB,EAAMA,EAAE8lB,OAAO9mC,EAAE,OAAOD,EAAEsnC,SAAStnC,EAAEA,EAAEsnC,SAAQrmB,EAAEA,EAAEqmB,QAAQkhB,GAAGxoD,EAAEA,EAAE0iD,eAAgB3b,OAAO9mC,EAAEghB,EAAEqmB,QAAQ,IAAI,CAAC,OAAOrnC,EAAEonC,KAAK,CAO9a,SAAS2sB,GAAGh0D,EAAEC,GAAG,IAAIkiD,GAAE,OAAOniD,EAAE8zD,UAAU,IAAK,SAAS7zD,EAAED,EAAE6zD,KAAK,IAAI,IAAI5yC,EAAE,KAAK,OAAOhhB,GAAG,OAAOA,EAAE6mC,YAAY7lB,EAAEhhB,GAAGA,EAAEA,EAAEqnC,QAAQ,OAAOrmB,EAAEjhB,EAAE6zD,KAAK,KAAK5yC,EAAEqmB,QAAQ,KAAK,MAAM,IAAK,YAAYrmB,EAAEjhB,EAAE6zD,KAAK,IAAI,IAAIloD,EAAE,KAAK,OAAOsV,GAAG,OAAOA,EAAE6lB,YAAYn7B,EAAEsV,GAAGA,EAAEA,EAAEqmB,QAAQ,OAAO37B,EAAE1L,GAAG,OAAOD,EAAE6zD,KAAK7zD,EAAE6zD,KAAK,KAAK7zD,EAAE6zD,KAAKvsB,QAAQ,KAAK37B,EAAE27B,QAAQ,KAAK,CAC5U,SAAS2sB,GAAEj0D,GAAG,IAAIC,EAAE,OAAOD,EAAE8mC,WAAW9mC,EAAE8mC,UAAUO,QAAQrnC,EAAEqnC,MAAMpmB,EAAE,EAAEtV,EAAE,EAAE,GAAG1L,EAAE,IAAI,IAAI6c,EAAE9c,EAAEqnC,MAAM,OAAOvqB,GAAGmE,GAAGnE,EAAEunC,MAAMvnC,EAAEmnC,WAAWt4C,GAAkB,SAAfmR,EAAEw2C,aAAsB3nD,GAAW,SAARmR,EAAE7Z,MAAe6Z,EAAEiqB,OAAO/mC,EAAE8c,EAAEA,EAAEwqB,aAAa,IAAIxqB,EAAE9c,EAAEqnC,MAAM,OAAOvqB,GAAGmE,GAAGnE,EAAEunC,MAAMvnC,EAAEmnC,WAAWt4C,GAAGmR,EAAEw2C,aAAa3nD,GAAGmR,EAAE7Z,MAAM6Z,EAAEiqB,OAAO/mC,EAAE8c,EAAEA,EAAEwqB,QAAyC,OAAjCtnC,EAAEszD,cAAc3nD,EAAE3L,EAAEikD,WAAWhjC,EAAShhB,CAAC,CAC7V,SAASi0D,GAAGl0D,EAAEC,EAAEghB,GAAG,IAAItV,EAAE1L,EAAEyiD,aAAmB,OAANV,GAAG/hD,GAAUA,EAAEs8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO03B,GAAEh0D,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAOsgD,GAAGtgD,EAAEy5B,OAAO+mB,KAAKwT,GAAEh0D,GAAG,KAVqD,KAAK,EAA2Q,OAAzQ0L,EAAE1L,EAAEulC,UAAUgkB,KAAKlnC,GAAE29B,IAAI39B,GAAE09B,IAAG8J,KAAKn+C,EAAEwmD,iBAAiBxmD,EAAE64C,QAAQ74C,EAAEwmD,eAAexmD,EAAEwmD,eAAe,MAAS,OAAOnyD,GAAG,OAAOA,EAAEqnC,QAAM4b,GAAGhjD,GAAGA,EAAEgD,OAAO,EAAE,OAAOjD,GAAGA,EAAEinC,cAAcmF,cAAc,KAAa,IAARnsC,EAAEgD,SAAahD,EAAEgD,OAAO,KAAK,OAAOm/C,KAAK+R,GAAG/R,IAAIA,GAAG,QAAOkQ,GAAGtyD,EAAEC,GAAGg0D,GAAEh0D,GAAU,KAAK,KAAK,EAAEypD,GAAGzpD,GAAG,IAAI6c,EAAEusC,GAAGD,GAAG7hB,SAC7e,GAATtmB,EAAEhhB,EAAEy5B,KAAQ,OAAO15B,GAAG,MAAMC,EAAEulC,UAAU+sB,GAAGvyD,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG9c,EAAEmoD,MAAMloD,EAAEkoD,MAAMloD,EAAEgD,OAAO,IAAIhD,EAAEgD,OAAO,aAAa,CAAC,IAAI0I,EAAE,CAAC,GAAG,OAAO1L,EAAEulC,UAAU,MAAMr/B,MAAMgyB,EAAE,MAAW,OAAL87B,GAAEh0D,GAAU,IAAI,CAAkB,GAAjBD,EAAEqpD,GAAGH,GAAG3hB,SAAY0b,GAAGhjD,GAAG,CAAC0L,EAAE1L,EAAEulC,UAAUvkB,EAAEhhB,EAAEy5B,KAAK,IAAIP,EAAEl5B,EAAEijD,cAA+C,OAAjCv3C,EAAE4zC,IAAIt/C,EAAE0L,EAAE6zC,IAAIrmB,EAAEn5B,EAAE,KAAY,EAAPC,EAAE6iD,MAAe7hC,GAAG,IAAK,SAASk7B,GAAE,SAASxwC,GAAGwwC,GAAE,QAAQxwC,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQwwC,GAAE,OAAOxwC,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAImR,EAAE,EAAEA,EAAE++B,GAAGv7C,OAAOwc,IAAIq/B,GAAEN,GAAG/+B,GAAGnR,GAAG,MAAM,IAAK,SAASwwC,GAAE,QAAQxwC,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOwwC,GAAE,QACnhBxwC,GAAGwwC,GAAE,OAAOxwC,GAAG,MAAM,IAAK,UAAUwwC,GAAE,SAASxwC,GAAG,MAAM,IAAK,QAAQ2yB,EAAG3yB,EAAEwtB,GAAGgjB,GAAE,UAAUxwC,GAAG,MAAM,IAAK,SAASA,EAAEyyB,cAAc,CAACg2B,cAAcj7B,EAAEk7B,UAAUlY,GAAE,UAAUxwC,GAAG,MAAM,IAAK,WAAW4zB,GAAG5zB,EAAEwtB,GAAGgjB,GAAE,UAAUxwC,GAAkB,IAAI,IAAIytB,KAAvBsL,GAAGzjB,EAAEkY,GAAGrc,EAAE,KAAkBqc,EAAE,GAAGA,EAAEj5B,eAAek5B,GAAG,CAAC,IAAI3tB,EAAE0tB,EAAEC,GAAG,aAAaA,EAAE,kBAAkB3tB,EAAEE,EAAE+zB,cAAcj0B,KAAI,IAAK0tB,EAAEm7B,0BAA0BtW,GAAGryC,EAAE+zB,YAAYj0B,EAAEzL,GAAG8c,EAAE,CAAC,WAAWrR,IAAI,kBAAkBA,GAAGE,EAAE+zB,cAAc,GAAGj0B,KAAI,IAAK0tB,EAAEm7B,0BAA0BtW,GAAGryC,EAAE+zB,YAC1ej0B,EAAEzL,GAAG8c,EAAE,CAAC,WAAW,GAAGrR,IAAI8sB,EAAGr4B,eAAek5B,IAAI,MAAM3tB,GAAG,aAAa2tB,GAAG+iB,GAAE,SAASxwC,EAAE,CAAC,OAAOsV,GAAG,IAAK,QAAQic,EAAGvxB,GAAGizB,EAAGjzB,EAAEwtB,GAAE,GAAI,MAAM,IAAK,WAAW+D,EAAGvxB,GAAG8zB,GAAG9zB,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBwtB,EAAEo7B,UAAU5oD,EAAE6oD,QAAQvW,IAAItyC,EAAEmR,EAAE7c,EAAEglD,YAAYt5C,EAAE,OAAOA,IAAI1L,EAAEgD,OAAO,EAAE,KAAK,CAACm2B,EAAE,IAAItc,EAAE0jB,SAAS1jB,EAAEA,EAAE+hB,cAAc,iCAAiC7+B,IAAIA,EAAE2/B,GAAG1e,IAAI,iCAAiCjhB,EAAE,WAAWihB,IAAGjhB,EAAEo5B,EAAEP,cAAc,QAASmH,UAAU,qBAAuBhgC,EAAEA,EAAEkgC,YAAYlgC,EAAEigC,aAC/f,kBAAkBt0B,EAAEi5B,GAAG5kC,EAAEo5B,EAAEP,cAAc5X,EAAE,CAAC2jB,GAAGj5B,EAAEi5B,MAAM5kC,EAAEo5B,EAAEP,cAAc5X,GAAG,WAAWA,IAAImY,EAAEp5B,EAAE2L,EAAE0oD,SAASj7B,EAAEi7B,UAAS,EAAG1oD,EAAE8oD,OAAOr7B,EAAEq7B,KAAK9oD,EAAE8oD,QAAQz0D,EAAEo5B,EAAEs7B,gBAAgB10D,EAAEihB,GAAGjhB,EAAEu/C,IAAIt/C,EAAED,EAAEw/C,IAAI7zC,EAAE0mD,GAAGryD,EAAEC,GAAE,GAAG,GAAIA,EAAEulC,UAAUxlC,EAAEA,EAAE,CAAW,OAAVo5B,EAAEuL,GAAG1jB,EAAEtV,GAAUsV,GAAG,IAAK,SAASk7B,GAAE,SAASn8C,GAAGm8C,GAAE,QAAQn8C,GAAG8c,EAAEnR,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQwwC,GAAE,OAAOn8C,GAAG8c,EAAEnR,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAImR,EAAE,EAAEA,EAAE++B,GAAGv7C,OAAOwc,IAAIq/B,GAAEN,GAAG/+B,GAAG9c,GAAG8c,EAAEnR,EAAE,MAAM,IAAK,SAASwwC,GAAE,QAAQn8C,GAAG8c,EAAEnR,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOwwC,GAAE,QAClfn8C,GAAGm8C,GAAE,OAAOn8C,GAAG8c,EAAEnR,EAAE,MAAM,IAAK,UAAUwwC,GAAE,SAASn8C,GAAG8c,EAAEnR,EAAE,MAAM,IAAK,QAAQ2yB,EAAGt+B,EAAE2L,GAAGmR,EAAEmhB,EAAGj+B,EAAE2L,GAAGwwC,GAAE,UAAUn8C,GAAG,MAAM,IAAK,SAAiL,QAAQ8c,EAAEnR,QAAxK,IAAK,SAAS3L,EAAEo+B,cAAc,CAACg2B,cAAczoD,EAAE0oD,UAAUv3C,EAAE6e,EAAE,CAAC,EAAEhwB,EAAE,CAAC0C,WAAM,IAAS8tC,GAAE,UAAUn8C,GAAG,MAAM,IAAK,WAAWu/B,GAAGv/B,EAAE2L,GAAGmR,EAAEsiB,GAAGp/B,EAAE2L,GAAGwwC,GAAE,UAAUn8C,GAAiC,IAAIm5B,KAAhBuL,GAAGzjB,EAAEnE,GAAGrR,EAAEqR,EAAa,GAAGrR,EAAEvL,eAAei5B,GAAG,CAAC,IAAI54B,EAAEkL,EAAE0tB,GAAG,UAAUA,EAAEqK,GAAGxjC,EAAEO,GAAG,4BAA4B44B,EAAuB,OAApB54B,EAAEA,EAAEA,EAAE89C,YAAO,IAAgBve,GAAG9/B,EAAEO,GAAI,aAAa44B,EAAE,kBAAkB54B,GAAG,aAC7e0gB,GAAG,KAAK1gB,IAAI+/B,GAAGtgC,EAAEO,GAAG,kBAAkBA,GAAG+/B,GAAGtgC,EAAE,GAAGO,GAAG,mCAAmC44B,GAAG,6BAA6BA,GAAG,cAAcA,IAAIZ,EAAGr4B,eAAei5B,GAAG,MAAM54B,GAAG,aAAa44B,GAAGgjB,GAAE,SAASn8C,GAAG,MAAMO,GAAGy5B,EAAGh6B,EAAEm5B,EAAE54B,EAAE64B,GAAG,CAAC,OAAOnY,GAAG,IAAK,QAAQic,EAAGl9B,GAAG4+B,EAAG5+B,EAAE2L,GAAE,GAAI,MAAM,IAAK,WAAWuxB,EAAGl9B,GAAGy/B,GAAGz/B,GAAG,MAAM,IAAK,SAAS,MAAM2L,EAAE0C,OAAOrO,EAAEq6B,aAAa,QAAQ,GAAG0C,EAAGpxB,EAAE0C,QAAQ,MAAM,IAAK,SAASrO,EAAEq0D,WAAW1oD,EAAE0oD,SAAmB,OAAVl7B,EAAExtB,EAAE0C,OAAc0wB,GAAG/+B,IAAI2L,EAAE0oD,SAASl7B,GAAE,GAAI,MAAMxtB,EAAEwyB,cAAcY,GAAG/+B,IAAI2L,EAAE0oD,SAAS1oD,EAAEwyB,cAClf,GAAI,MAAM,QAAQ,oBAAoBrhB,EAAEy3C,UAAUv0D,EAAEw0D,QAAQvW,IAAI,OAAOh9B,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWtV,IAAIA,EAAEgpD,UAAU,MAAM30D,EAAE,IAAK,MAAM2L,GAAE,EAAG,MAAM3L,EAAE,QAAQ2L,GAAE,EAAG,CAACA,IAAI1L,EAAEgD,OAAO,EAAE,CAAC,OAAOhD,EAAEkoD,MAAMloD,EAAEgD,OAAO,IAAIhD,EAAEgD,OAAO,QAAQ,CAAM,OAALgxD,GAAEh0D,GAAU,KAAK,KAAK,EAAE,GAAGD,GAAG,MAAMC,EAAEulC,UAAUgtB,GAAGxyD,EAAEC,EAAED,EAAEkjD,cAAcv3C,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAO1L,EAAEulC,UAAU,MAAMr/B,MAAMgyB,EAAE,MAAsC,GAAhClX,EAAEooC,GAAGD,GAAG7hB,SAAS8hB,GAAGH,GAAG3hB,SAAY0b,GAAGhjD,GAAG,CAAyC,GAAxC0L,EAAE1L,EAAEulC,UAAUvkB,EAAEhhB,EAAEijD,cAAcv3C,EAAE4zC,IAAIt/C,GAAKk5B,EAAExtB,EAAE80B,YAAYxf,IAC/e,QADofjhB,EACvfiiD,IAAY,OAAOjiD,EAAEu8B,KAAK,KAAK,EAAEyhB,GAAGryC,EAAE80B,UAAUxf,EAAE,KAAY,EAAPjhB,EAAE8iD,OAAS,MAAM,KAAK,GAAE,IAAK9iD,EAAEkjD,cAAcoR,0BAA0BtW,GAAGryC,EAAE80B,UAAUxf,EAAE,KAAY,EAAPjhB,EAAE8iD,OAAS3pB,IAAIl5B,EAAEgD,OAAO,EAAE,MAAM0I,GAAG,IAAIsV,EAAEuf,SAASvf,EAAEA,EAAE4d,eAAe+1B,eAAejpD,IAAK4zC,IAAIt/C,EAAEA,EAAEulC,UAAU75B,CAAC,CAAM,OAALsoD,GAAEh0D,GAAU,KAAK,KAAK,GAA0B,GAAvBqiB,GAAEvW,IAAGJ,EAAE1L,EAAEgnC,cAAiB,OAAOjnC,GAAG,OAAOA,EAAEinC,eAAe,OAAOjnC,EAAEinC,cAAcC,WAAW,CAAC,GAAGib,IAAG,OAAOD,IAAI,KAAY,EAAPjiD,EAAE6iD,OAAS,KAAa,IAAR7iD,EAAEgD,OAAWkgD,KAAKC,KAAKnjD,EAAEgD,OAAO,MAAMk2B,GAAE,OAAQ,GAAGA,EAAE8pB,GAAGhjD,GAAG,OAAO0L,GAAG,OAAOA,EAAEu7B,WAAW,CAAC,GAAG,OAC5flnC,EAAE,CAAC,IAAIm5B,EAAE,MAAMhzB,MAAMgyB,EAAE,MAAqD,KAA7BgB,EAAE,QAApBA,EAAEl5B,EAAEgnC,eAAyB9N,EAAE+N,WAAW,MAAW,MAAM/gC,MAAMgyB,EAAE,MAAMgB,EAAEomB,IAAIt/C,CAAC,MAAMmjD,KAAK,KAAa,IAARnjD,EAAEgD,SAAahD,EAAEgnC,cAAc,MAAMhnC,EAAEgD,OAAO,EAAEgxD,GAAEh0D,GAAGk5B,GAAE,CAAE,MAAM,OAAOipB,KAAK+R,GAAG/R,IAAIA,GAAG,MAAMjpB,GAAE,EAAG,IAAIA,EAAE,OAAe,MAARl5B,EAAEgD,MAAYhD,EAAE,IAAI,CAAC,OAAG,KAAa,IAARA,EAAEgD,QAAkBhD,EAAEokD,MAAMpjC,EAAEhhB,KAAE0L,EAAE,OAAOA,MAAO,OAAO3L,GAAG,OAAOA,EAAEinC,gBAAgBt7B,IAAI1L,EAAEonC,MAAMpkC,OAAO,KAAK,KAAY,EAAPhD,EAAE6iD,QAAU,OAAO9iD,GAAG,KAAe,EAAV+L,GAAEw7B,SAAW,IAAIstB,KAAIA,GAAE,GAAG3B,OAAO,OAAOjzD,EAAEglD,cAAchlD,EAAEgD,OAAO,GAAGgxD,GAAEh0D,GAAU,MAAK,KAAK,EAAE,OAAOupD,KACrf8I,GAAGtyD,EAAEC,GAAG,OAAOD,GAAG08C,GAAGz8C,EAAEulC,UAAU6G,eAAe4nB,GAAEh0D,GAAG,KAAK,KAAK,GAAG,OAAO6jD,GAAG7jD,EAAEy5B,KAAKiD,UAAUs3B,GAAEh0D,GAAG,KAA+C,KAAK,GAA0B,GAAvBqiB,GAAEvW,IAAwB,QAArBotB,EAAEl5B,EAAEgnC,eAA0B,OAAOgtB,GAAEh0D,GAAG,KAAuC,GAAlC0L,EAAE,KAAa,IAAR1L,EAAEgD,OAA4B,QAAjBm2B,EAAED,EAAEu6B,WAAsB,GAAG/nD,EAAEqoD,GAAG76B,GAAE,OAAQ,CAAC,GAAG,IAAI07B,IAAG,OAAO70D,GAAG,KAAa,IAARA,EAAEiD,OAAW,IAAIjD,EAAEC,EAAEonC,MAAM,OAAOrnC,GAAG,CAAS,GAAG,QAAXo5B,EAAEuwB,GAAG3pD,IAAe,CAAmG,IAAlGC,EAAEgD,OAAO,IAAI+wD,GAAG76B,GAAE,GAAoB,QAAhBxtB,EAAEytB,EAAE6rB,eAAuBhlD,EAAEglD,YAAYt5C,EAAE1L,EAAEgD,OAAO,GAAGhD,EAAEqzD,aAAa,EAAE3nD,EAAEsV,EAAMA,EAAEhhB,EAAEonC,MAAM,OAAOpmB,GAAOjhB,EAAE2L,GAANwtB,EAAElY,GAAQhe,OAAO,SAC/d,QAAdm2B,EAAED,EAAE2N,YAAoB3N,EAAE8qB,WAAW,EAAE9qB,EAAEkrB,MAAMrkD,EAAEm5B,EAAEkO,MAAM,KAAKlO,EAAEm6B,aAAa,EAAEn6B,EAAE+pB,cAAc,KAAK/pB,EAAE8N,cAAc,KAAK9N,EAAE8rB,YAAY,KAAK9rB,EAAEgrB,aAAa,KAAKhrB,EAAEqM,UAAU,OAAOrM,EAAE8qB,WAAW7qB,EAAE6qB,WAAW9qB,EAAEkrB,MAAMjrB,EAAEirB,MAAMlrB,EAAEkO,MAAMjO,EAAEiO,MAAMlO,EAAEm6B,aAAa,EAAEn6B,EAAEqpB,UAAU,KAAKrpB,EAAE+pB,cAAc9pB,EAAE8pB,cAAc/pB,EAAE8N,cAAc7N,EAAE6N,cAAc9N,EAAE8rB,YAAY7rB,EAAE6rB,YAAY9rB,EAAEO,KAAKN,EAAEM,KAAK15B,EAAEo5B,EAAE+qB,aAAahrB,EAAEgrB,aAAa,OAAOnkD,EAAE,KAAK,CAACqkD,MAAMrkD,EAAEqkD,MAAMD,aAAapkD,EAAEokD,eAAenjC,EAAEA,EAAEqmB,QAA2B,OAAnBwY,GAAE/zC,GAAY,EAAVA,GAAEw7B,QAAU,GAAUtnC,EAAEonC,KAAK,CAACrnC,EAClgBA,EAAEsnC,OAAO,CAAC,OAAOnO,EAAE06B,MAAM3rB,KAAI4sB,KAAK70D,EAAEgD,OAAO,IAAI0I,GAAE,EAAGqoD,GAAG76B,GAAE,GAAIl5B,EAAEokD,MAAM,QAAQ,KAAK,CAAC,IAAI14C,EAAE,GAAW,QAAR3L,EAAE2pD,GAAGvwB,KAAa,GAAGn5B,EAAEgD,OAAO,IAAI0I,GAAE,EAAmB,QAAhBsV,EAAEjhB,EAAEilD,eAAuBhlD,EAAEglD,YAAYhkC,EAAEhhB,EAAEgD,OAAO,GAAG+wD,GAAG76B,GAAE,GAAI,OAAOA,EAAE06B,MAAM,WAAW16B,EAAE26B,WAAW16B,EAAE0N,YAAYqb,GAAE,OAAO8R,GAAEh0D,GAAG,UAAU,EAAEioC,KAAI/O,EAAEw6B,mBAAmBmB,IAAI,aAAa7zC,IAAIhhB,EAAEgD,OAAO,IAAI0I,GAAE,EAAGqoD,GAAG76B,GAAE,GAAIl5B,EAAEokD,MAAM,SAASlrB,EAAEs6B,aAAar6B,EAAEkO,QAAQrnC,EAAEonC,MAAMpnC,EAAEonC,MAAMjO,IAAa,QAATnY,EAAEkY,EAAEy6B,MAAc3yC,EAAEqmB,QAAQlO,EAAEn5B,EAAEonC,MAAMjO,EAAED,EAAEy6B,KAAKx6B,EAAE,CAAC,OAAG,OAAOD,EAAE06B,MAAY5zD,EAAEk5B,EAAE06B,KAAK16B,EAAEu6B,UAC9ezzD,EAAEk5B,EAAE06B,KAAK5zD,EAAEqnC,QAAQnO,EAAEw6B,mBAAmBzrB,KAAIjoC,EAAEqnC,QAAQ,KAAKrmB,EAAElV,GAAEw7B,QAAQuY,GAAE/zC,GAAEJ,EAAI,EAAFsV,EAAI,EAAI,EAAFA,GAAKhhB,IAAEg0D,GAAEh0D,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAO80D,KAAKppD,EAAE,OAAO1L,EAAEgnC,cAAc,OAAOjnC,GAAG,OAAOA,EAAEinC,gBAAgBt7B,IAAI1L,EAAEgD,OAAO,MAAM0I,GAAG,KAAY,EAAP1L,EAAE6iD,MAAQ,KAAQ,WAAH4O,MAAiBuC,GAAEh0D,GAAkB,EAAfA,EAAEqzD,eAAiBrzD,EAAEgD,OAAO,OAAOgxD,GAAEh0D,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMkG,MAAMgyB,EAAE,IAAIl4B,EAAEs8B,KAAM,CAClX,SAASy4B,GAAGh1D,EAAEC,GAAS,OAAN+hD,GAAG/hD,GAAUA,EAAEs8B,KAAK,KAAK,EAAE,OAAOgkB,GAAGtgD,EAAEy5B,OAAO+mB,KAAiB,OAAZzgD,EAAEC,EAAEgD,QAAehD,EAAEgD,OAAS,MAAHjD,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAOupD,KAAKlnC,GAAE29B,IAAI39B,GAAE09B,IAAG8J,KAAe,KAAO,OAAjB9pD,EAAEC,EAAEgD,SAAqB,KAAO,IAAFjD,IAAQC,EAAEgD,OAAS,MAAHjD,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAOypD,GAAGzpD,GAAG,KAAK,KAAK,GAA0B,GAAvBqiB,GAAEvW,IAAwB,QAArB/L,EAAEC,EAAEgnC,gBAA2B,OAAOjnC,EAAEknC,WAAW,CAAC,GAAG,OAAOjnC,EAAE6mC,UAAU,MAAM3gC,MAAMgyB,EAAE,MAAMirB,IAAI,CAAW,OAAS,OAAnBpjD,EAAEC,EAAEgD,QAAsBhD,EAAEgD,OAAS,MAAHjD,EAAS,IAAIC,GAAG,KAAK,KAAK,GAAG,OAAOqiB,GAAEvW,IAAG,KAAK,KAAK,EAAE,OAAOy9C,KAAK,KAAK,KAAK,GAAG,OAAO1F,GAAG7jD,EAAEy5B,KAAKiD,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOo4B,KAC1gB,KAAyB,QAAQ,OAAO,KAAK,CArB7C1C,GAAG,SAASryD,EAAEC,GAAG,IAAI,IAAIghB,EAAEhhB,EAAEonC,MAAM,OAAOpmB,GAAG,CAAC,GAAG,IAAIA,EAAEsb,KAAK,IAAItb,EAAEsb,IAAIv8B,EAAEmgC,YAAYlf,EAAEukB,gBAAgB,GAAG,IAAIvkB,EAAEsb,KAAK,OAAOtb,EAAEomB,MAAM,CAACpmB,EAAEomB,MAAMN,OAAO9lB,EAAEA,EAAEA,EAAEomB,MAAM,QAAQ,CAAC,GAAGpmB,IAAIhhB,EAAE,MAAM,KAAK,OAAOghB,EAAEqmB,SAAS,CAAC,GAAG,OAAOrmB,EAAE8lB,QAAQ9lB,EAAE8lB,SAAS9mC,EAAE,OAAOghB,EAAEA,EAAE8lB,MAAM,CAAC9lB,EAAEqmB,QAAQP,OAAO9lB,EAAE8lB,OAAO9lB,EAAEA,EAAEqmB,OAAO,CAAC,EAAEgrB,GAAG,WAAW,EACxTC,GAAG,SAASvyD,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE9c,EAAEkjD,cAAc,GAAGpmC,IAAInR,EAAE,CAAC3L,EAAEC,EAAEulC,UAAU6jB,GAAGH,GAAG3hB,SAAS,IAA4RnO,EAAxRD,EAAE,KAAK,OAAOlY,GAAG,IAAK,QAAQnE,EAAEmhB,EAAGj+B,EAAE8c,GAAGnR,EAAEsyB,EAAGj+B,EAAE2L,GAAGwtB,EAAE,GAAG,MAAM,IAAK,SAASrc,EAAE6e,EAAE,CAAC,EAAE7e,EAAE,CAACzO,WAAM,IAAS1C,EAAEgwB,EAAE,CAAC,EAAEhwB,EAAE,CAAC0C,WAAM,IAAS8qB,EAAE,GAAG,MAAM,IAAK,WAAWrc,EAAEsiB,GAAGp/B,EAAE8c,GAAGnR,EAAEyzB,GAAGp/B,EAAE2L,GAAGwtB,EAAE,GAAG,MAAM,QAAQ,oBAAoBrc,EAAEy3C,SAAS,oBAAoB5oD,EAAE4oD,UAAUv0D,EAAEw0D,QAAQvW,IAAyB,IAAIl/B,KAAzB2lB,GAAGzjB,EAAEtV,GAASsV,EAAE,KAAcnE,EAAE,IAAInR,EAAEzL,eAAe6e,IAAIjC,EAAE5c,eAAe6e,IAAI,MAAMjC,EAAEiC,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAItT,EAAEqR,EAAEiC,GAAG,IAAIqa,KAAK3tB,EAAEA,EAAEvL,eAAek5B,KACjfnY,IAAIA,EAAE,CAAC,GAAGA,EAAEmY,GAAG,GAAG,KAAK,4BAA4Bra,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIwZ,EAAGr4B,eAAe6e,GAAGoa,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIj4B,KAAK6d,EAAE,OAAO,IAAIA,KAAKpT,EAAE,CAAC,IAAIpL,EAAEoL,EAAEoT,GAAyB,GAAtBtT,EAAE,MAAMqR,EAAEA,EAAEiC,QAAG,EAAUpT,EAAEzL,eAAe6e,IAAIxe,IAAIkL,IAAI,MAAMlL,GAAG,MAAMkL,GAAG,GAAG,UAAUsT,EAAE,GAAGtT,EAAE,CAAC,IAAI2tB,KAAK3tB,GAAGA,EAAEvL,eAAek5B,IAAI74B,GAAGA,EAAEL,eAAek5B,KAAKnY,IAAIA,EAAE,CAAC,GAAGA,EAAEmY,GAAG,IAAI,IAAIA,KAAK74B,EAAEA,EAAEL,eAAek5B,IAAI3tB,EAAE2tB,KAAK74B,EAAE64B,KAAKnY,IAAIA,EAAE,CAAC,GAAGA,EAAEmY,GAAG74B,EAAE64B,GAAG,MAAMnY,IAAIkY,IAAIA,EAAE,IAAIA,EAAEj4B,KAAK6d,EACpfkC,IAAIA,EAAE1gB,MAAM,4BAA4Bwe,GAAGxe,EAAEA,EAAEA,EAAE89C,YAAO,EAAO5yC,EAAEA,EAAEA,EAAE4yC,YAAO,EAAO,MAAM99C,GAAGkL,IAAIlL,IAAI44B,EAAEA,GAAG,IAAIj4B,KAAK6d,EAAExe,IAAI,aAAawe,EAAE,kBAAkBxe,GAAG,kBAAkBA,IAAI44B,EAAEA,GAAG,IAAIj4B,KAAK6d,EAAE,GAAGxe,GAAG,mCAAmCwe,GAAG,6BAA6BA,IAAIwZ,EAAGr4B,eAAe6e,IAAI,MAAMxe,GAAG,aAAawe,GAAGo9B,GAAE,SAASn8C,GAAGm5B,GAAG1tB,IAAIlL,IAAI44B,EAAE,MAAMA,EAAEA,GAAG,IAAIj4B,KAAK6d,EAAExe,GAAG,CAAC0gB,IAAIkY,EAAEA,GAAG,IAAIj4B,KAAK,QAAQ+f,GAAG,IAAIlC,EAAEoa,GAAKl5B,EAAEglD,YAAYlmC,KAAE9e,EAAEgD,OAAO,EAAC,CAAC,EAAEuvD,GAAG,SAASxyD,EAAEC,EAAEghB,EAAEtV,GAAGsV,IAAItV,IAAI1L,EAAEgD,OAAO,EAAE,EAkBlb,IAAIgyD,IAAG,EAAGC,IAAE,EAAGC,GAAG,oBAAoBC,QAAQA,QAAQ98B,IAAI+8B,GAAE,KAAK,SAASC,GAAGt1D,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAEmoD,IAAI,GAAG,OAAOlnC,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMtV,GAAG0W,GAAEriB,EAAEC,EAAE0L,EAAE,MAAMsV,EAAEsmB,QAAQ,IAAI,CAAC,SAASguB,GAAGv1D,EAAEC,EAAEghB,GAAG,IAAIA,GAAG,CAAC,MAAMtV,GAAG0W,GAAEriB,EAAEC,EAAE0L,EAAE,CAAC,CAAC,IAAI6pD,IAAG,EAIxR,SAASC,GAAGz1D,EAAEC,EAAEghB,GAAG,IAAItV,EAAE1L,EAAEglD,YAAyC,GAAG,QAAhCt5C,EAAE,OAAOA,EAAEA,EAAE6gD,WAAW,MAAiB,CAAC,IAAI1vC,EAAEnR,EAAEA,EAAE2Q,KAAK,EAAE,CAAC,IAAIQ,EAAEyf,IAAIv8B,KAAKA,EAAE,CAAC,IAAIm5B,EAAErc,EAAEiwC,QAAQjwC,EAAEiwC,aAAQ,OAAO,IAAS5zB,GAAGo8B,GAAGt1D,EAAEghB,EAAEkY,EAAE,CAACrc,EAAEA,EAAER,IAAI,OAAOQ,IAAInR,EAAE,CAAC,CAAC,SAAS+pD,GAAG11D,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAEglD,aAAuBhlD,EAAEusD,WAAW,MAAiB,CAAC,IAAIvrC,EAAEhhB,EAAEA,EAAEqc,KAAK,EAAE,CAAC,IAAI2E,EAAEsb,IAAIv8B,KAAKA,EAAE,CAAC,IAAI2L,EAAEsV,EAAE6rC,OAAO7rC,EAAE8rC,QAAQphD,GAAG,CAACsV,EAAEA,EAAE3E,IAAI,OAAO2E,IAAIhhB,EAAE,CAAC,CAAC,SAAS01D,GAAG31D,GAAG,IAAIC,EAAED,EAAEmoD,IAAI,GAAG,OAAOloD,EAAE,CAAC,IAAIghB,EAAEjhB,EAAEwlC,UAAiBxlC,EAAEu8B,IAA8Bv8B,EAAEihB,EAAE,oBAAoBhhB,EAAEA,EAAED,GAAGC,EAAEsnC,QAAQvnC,CAAC,CAAC,CAClf,SAAS41D,GAAG51D,GAAG,IAAIC,EAAED,EAAE8mC,UAAU,OAAO7mC,IAAID,EAAE8mC,UAAU,KAAK8uB,GAAG31D,IAAID,EAAEqnC,MAAM,KAAKrnC,EAAEwiD,UAAU,KAAKxiD,EAAEsnC,QAAQ,KAAK,IAAItnC,EAAEu8B,MAAoB,QAAdt8B,EAAED,EAAEwlC,oBAA4BvlC,EAAEs/C,WAAWt/C,EAAEu/C,WAAWv/C,EAAEm8C,WAAWn8C,EAAEw/C,WAAWx/C,EAAEy/C,MAAM1/C,EAAEwlC,UAAU,KAAKxlC,EAAE+mC,OAAO,KAAK/mC,EAAEmkD,aAAa,KAAKnkD,EAAEkjD,cAAc,KAAKljD,EAAEinC,cAAc,KAAKjnC,EAAE0iD,aAAa,KAAK1iD,EAAEwlC,UAAU,KAAKxlC,EAAEilD,YAAY,IAAI,CAAC,SAAS4Q,GAAG71D,GAAG,OAAO,IAAIA,EAAEu8B,KAAK,IAAIv8B,EAAEu8B,KAAK,IAAIv8B,EAAEu8B,GAAG,CACna,SAASu5B,GAAG91D,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAEsnC,SAAS,CAAC,GAAG,OAAOtnC,EAAE+mC,QAAQ8uB,GAAG71D,EAAE+mC,QAAQ,OAAO,KAAK/mC,EAAEA,EAAE+mC,MAAM,CAA2B,IAA1B/mC,EAAEsnC,QAAQP,OAAO/mC,EAAE+mC,OAAW/mC,EAAEA,EAAEsnC,QAAQ,IAAItnC,EAAEu8B,KAAK,IAAIv8B,EAAEu8B,KAAK,KAAKv8B,EAAEu8B,KAAK,CAAC,GAAW,EAARv8B,EAAEiD,MAAQ,SAASjD,EAAE,GAAG,OAAOA,EAAEqnC,OAAO,IAAIrnC,EAAEu8B,IAAI,SAASv8B,EAAOA,EAAEqnC,MAAMN,OAAO/mC,EAAEA,EAAEA,EAAEqnC,KAAK,CAAC,KAAa,EAARrnC,EAAEiD,OAAS,OAAOjD,EAAEwlC,SAAS,CAAC,CACzT,SAASuwB,GAAG/1D,EAAEC,EAAEghB,GAAG,IAAItV,EAAE3L,EAAEu8B,IAAI,GAAG,IAAI5wB,GAAG,IAAIA,EAAE3L,EAAEA,EAAEwlC,UAAUvlC,EAAE,IAAIghB,EAAEuf,SAASvf,EAAEikB,WAAW8wB,aAAah2D,EAAEC,GAAGghB,EAAE+0C,aAAah2D,EAAEC,IAAI,IAAIghB,EAAEuf,UAAUvgC,EAAEghB,EAAEikB,YAAa8wB,aAAah2D,EAAEihB,IAAKhhB,EAAEghB,GAAIkf,YAAYngC,GAA4B,QAAxBihB,EAAEA,EAAEg1C,2BAA8B,IAASh1C,GAAG,OAAOhhB,EAAEu0D,UAAUv0D,EAAEu0D,QAAQvW,UAAU,GAAG,IAAItyC,GAAc,QAAV3L,EAAEA,EAAEqnC,OAAgB,IAAI0uB,GAAG/1D,EAAEC,EAAEghB,GAAGjhB,EAAEA,EAAEsnC,QAAQ,OAAOtnC,GAAG+1D,GAAG/1D,EAAEC,EAAEghB,GAAGjhB,EAAEA,EAAEsnC,OAAO,CAC1X,SAAS4uB,GAAGl2D,EAAEC,EAAEghB,GAAG,IAAItV,EAAE3L,EAAEu8B,IAAI,GAAG,IAAI5wB,GAAG,IAAIA,EAAE3L,EAAEA,EAAEwlC,UAAUvlC,EAAEghB,EAAE+0C,aAAah2D,EAAEC,GAAGghB,EAAEkf,YAAYngC,QAAQ,GAAG,IAAI2L,GAAc,QAAV3L,EAAEA,EAAEqnC,OAAgB,IAAI6uB,GAAGl2D,EAAEC,EAAEghB,GAAGjhB,EAAEA,EAAEsnC,QAAQ,OAAOtnC,GAAGk2D,GAAGl2D,EAAEC,EAAEghB,GAAGjhB,EAAEA,EAAEsnC,OAAO,CAAC,IAAI6uB,GAAE,KAAKC,IAAG,EAAG,SAASC,GAAGr2D,EAAEC,EAAEghB,GAAG,IAAIA,EAAEA,EAAEomB,MAAM,OAAOpmB,GAAGq1C,GAAGt2D,EAAEC,EAAEghB,GAAGA,EAAEA,EAAEqmB,OAAO,CACnR,SAASgvB,GAAGt2D,EAAEC,EAAEghB,GAAG,GAAGgoB,IAAI,oBAAoBA,GAAGstB,qBAAqB,IAAIttB,GAAGstB,qBAAqBvtB,GAAG/nB,EAAE,CAAC,MAAMxV,GAAG,CAAC,OAAOwV,EAAEsb,KAAK,KAAK,EAAE24B,IAAGI,GAAGr0C,EAAEhhB,GAAG,KAAK,EAAE,IAAI0L,EAAEwqD,GAAEr5C,EAAEs5C,GAAGD,GAAE,KAAKE,GAAGr2D,EAAEC,EAAEghB,GAAOm1C,GAAGt5C,EAAE,QAATq5C,GAAExqD,KAAkByqD,IAAIp2D,EAAEm2D,GAAEl1C,EAAEA,EAAEukB,UAAU,IAAIxlC,EAAEwgC,SAASxgC,EAAEklC,WAAWhF,YAAYjf,GAAGjhB,EAAEkgC,YAAYjf,IAAIk1C,GAAEj2B,YAAYjf,EAAEukB,YAAY,MAAM,KAAK,GAAG,OAAO2wB,KAAIC,IAAIp2D,EAAEm2D,GAAEl1C,EAAEA,EAAEukB,UAAU,IAAIxlC,EAAEwgC,SAAS0e,GAAGl/C,EAAEklC,WAAWjkB,GAAG,IAAIjhB,EAAEwgC,UAAU0e,GAAGl/C,EAAEihB,GAAG2rB,GAAG5sC,IAAIk/C,GAAGiX,GAAEl1C,EAAEukB,YAAY,MAAM,KAAK,EAAE75B,EAAEwqD,GAAEr5C,EAAEs5C,GAAGD,GAAEl1C,EAAEukB,UAAU6G,cAAc+pB,IAAG,EAClfC,GAAGr2D,EAAEC,EAAEghB,GAAGk1C,GAAExqD,EAAEyqD,GAAGt5C,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIo4C,KAAoB,QAAhBvpD,EAAEsV,EAAEgkC,cAAsC,QAAft5C,EAAEA,EAAE6gD,aAAsB,CAAC1vC,EAAEnR,EAAEA,EAAE2Q,KAAK,EAAE,CAAC,IAAI6c,EAAErc,EAAEsc,EAAED,EAAE4zB,QAAQ5zB,EAAEA,EAAEoD,SAAI,IAASnD,IAAI,KAAO,EAAFD,IAAe,KAAO,EAAFA,KAAfo8B,GAAGt0C,EAAEhhB,EAAEm5B,GAAyBtc,EAAEA,EAAER,IAAI,OAAOQ,IAAInR,EAAE,CAAC0qD,GAAGr2D,EAAEC,EAAEghB,GAAG,MAAM,KAAK,EAAE,IAAIi0C,KAAII,GAAGr0C,EAAEhhB,GAAiB,oBAAd0L,EAAEsV,EAAEukB,WAAgCgxB,sBAAsB,IAAI7qD,EAAEi8C,MAAM3mC,EAAEiiC,cAAcv3C,EAAE27C,MAAMrmC,EAAEgmB,cAAct7B,EAAE6qD,sBAAsB,CAAC,MAAM/qD,GAAG4W,GAAEpB,EAAEhhB,EAAEwL,EAAE,CAAC4qD,GAAGr2D,EAAEC,EAAEghB,GAAG,MAAM,KAAK,GAAGo1C,GAAGr2D,EAAEC,EAAEghB,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAE6hC,MAAQoS,IAAGvpD,EAAEupD,KAAI,OAChfj0C,EAAEgmB,cAAcovB,GAAGr2D,EAAEC,EAAEghB,GAAGi0C,GAAEvpD,GAAG0qD,GAAGr2D,EAAEC,EAAEghB,GAAG,MAAM,QAAQo1C,GAAGr2D,EAAEC,EAAEghB,GAAG,CAAC,SAASw1C,GAAGz2D,GAAG,IAAIC,EAAED,EAAEilD,YAAY,GAAG,OAAOhlD,EAAE,CAACD,EAAEilD,YAAY,KAAK,IAAIhkC,EAAEjhB,EAAEwlC,UAAU,OAAOvkB,IAAIA,EAAEjhB,EAAEwlC,UAAU,IAAI2vB,IAAIl1D,EAAEod,SAAQ,SAASpd,GAAG,IAAI0L,EAAE+qD,GAAG/Z,KAAK,KAAK38C,EAAEC,GAAGghB,EAAEo7B,IAAIp8C,KAAKghB,EAAEhK,IAAIhX,GAAGA,EAAE8+C,KAAKpzC,EAAEA,GAAG,GAAE,CAAC,CACzQ,SAASgrD,GAAG32D,EAAEC,GAAG,IAAIghB,EAAEhhB,EAAEuiD,UAAU,GAAG,OAAOvhC,EAAE,IAAI,IAAItV,EAAE,EAAEA,EAAEsV,EAAE3gB,OAAOqL,IAAI,CAAC,IAAImR,EAAEmE,EAAEtV,GAAG,IAAI,IAAIwtB,EAAEn5B,EAAEo5B,EAAEn5B,EAAEwL,EAAE2tB,EAAEp5B,EAAE,KAAK,OAAOyL,GAAG,CAAC,OAAOA,EAAE8wB,KAAK,KAAK,EAAE45B,GAAE1qD,EAAE+5B,UAAU4wB,IAAG,EAAG,MAAMp2D,EAAE,KAAK,EAA4C,KAAK,EAAEm2D,GAAE1qD,EAAE+5B,UAAU6G,cAAc+pB,IAAG,EAAG,MAAMp2D,EAAEyL,EAAEA,EAAEs7B,MAAM,CAAC,GAAG,OAAOovB,GAAE,MAAMhwD,MAAMgyB,EAAE,MAAMm+B,GAAGn9B,EAAEC,EAAEtc,GAAGq5C,GAAE,KAAKC,IAAG,EAAG,IAAI71D,EAAEuc,EAAEgqB,UAAU,OAAOvmC,IAAIA,EAAEwmC,OAAO,MAAMjqB,EAAEiqB,OAAO,IAAI,CAAC,MAAMhoB,GAAGsD,GAAEvF,EAAE7c,EAAE8e,EAAE,CAAC,CAAC,GAAkB,MAAf9e,EAAEqzD,aAAmB,IAAIrzD,EAAEA,EAAEonC,MAAM,OAAOpnC,GAAG22D,GAAG32D,EAAED,GAAGC,EAAEA,EAAEqnC,OAAO,CACje,SAASsvB,GAAG52D,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAE8mC,UAAUn7B,EAAE3L,EAAEiD,MAAM,OAAOjD,EAAEu8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAdo6B,GAAG12D,EAAED,GAAG62D,GAAG72D,GAAQ,EAAF2L,EAAI,CAAC,IAAI8pD,GAAG,EAAEz1D,EAAEA,EAAE+mC,QAAQ2uB,GAAG,EAAE11D,EAAE,CAAC,MAAM+D,GAAGse,GAAEriB,EAAEA,EAAE+mC,OAAOhjC,EAAE,CAAC,IAAI0xD,GAAG,EAAEz1D,EAAEA,EAAE+mC,OAAO,CAAC,MAAMhjC,GAAGse,GAAEriB,EAAEA,EAAE+mC,OAAOhjC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE4yD,GAAG12D,EAAED,GAAG62D,GAAG72D,GAAK,IAAF2L,GAAO,OAAOsV,GAAGq0C,GAAGr0C,EAAEA,EAAE8lB,QAAQ,MAAM,KAAK,EAAgD,GAA9C4vB,GAAG12D,EAAED,GAAG62D,GAAG72D,GAAK,IAAF2L,GAAO,OAAOsV,GAAGq0C,GAAGr0C,EAAEA,EAAE8lB,QAAmB,GAAR/mC,EAAEiD,MAAS,CAAC,IAAI6Z,EAAE9c,EAAEwlC,UAAU,IAAIlF,GAAGxjB,EAAE,GAAG,CAAC,MAAM/Y,GAAGse,GAAEriB,EAAEA,EAAE+mC,OAAOhjC,EAAE,CAAC,CAAC,GAAK,EAAF4H,GAAoB,OAAdmR,EAAE9c,EAAEwlC,WAAmB,CAAC,IAAIrM,EAAEn5B,EAAEkjD,cAAc9pB,EAAE,OAAOnY,EAAEA,EAAEiiC,cAAc/pB,EAAE1tB,EAAEzL,EAAE05B,KAAKn5B,EAAEP,EAAEilD,YACje,GAAnBjlD,EAAEilD,YAAY,KAAQ,OAAO1kD,EAAE,IAAI,UAAUkL,GAAG,UAAU0tB,EAAEO,MAAM,MAAMP,EAAE3yB,MAAMi4B,EAAG3hB,EAAEqc,GAAGwL,GAAGl5B,EAAE2tB,GAAG,IAAIra,EAAE4lB,GAAGl5B,EAAE0tB,GAAG,IAAIC,EAAE,EAAEA,EAAE74B,EAAED,OAAO84B,GAAG,EAAE,CAAC,IAAIv2B,EAAEtC,EAAE64B,GAAG8sB,EAAE3lD,EAAE64B,EAAE,GAAG,UAAUv2B,EAAE2gC,GAAG1mB,EAAEopC,GAAG,4BAA4BrjD,EAAEi9B,GAAGhjB,EAAEopC,GAAG,aAAarjD,EAAEy9B,GAAGxjB,EAAEopC,GAAGlsB,EAAGld,EAAEja,EAAEqjD,EAAEnnC,EAAE,CAAC,OAAOtT,GAAG,IAAK,QAAQizB,EAAG5hB,EAAEqc,GAAG,MAAM,IAAK,WAAWqG,GAAG1iB,EAAEqc,GAAG,MAAM,IAAK,SAAS,IAAIgtB,EAAErpC,EAAEshB,cAAcg2B,YAAYt3C,EAAEshB,cAAcg2B,cAAcj7B,EAAEk7B,SAAS,IAAIpoD,EAAEktB,EAAE9qB,MAAM,MAAMpC,EAAE8yB,GAAGjiB,IAAIqc,EAAEk7B,SAASpoD,GAAE,GAAIk6C,MAAMhtB,EAAEk7B,WAAW,MAAMl7B,EAAEgF,aAAaY,GAAGjiB,IAAIqc,EAAEk7B,SACnfl7B,EAAEgF,cAAa,GAAIY,GAAGjiB,IAAIqc,EAAEk7B,SAASl7B,EAAEk7B,SAAS,GAAG,IAAG,IAAKv3C,EAAE0iC,IAAIrmB,CAAC,CAAC,MAAMp1B,GAAGse,GAAEriB,EAAEA,EAAE+mC,OAAOhjC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAd4yD,GAAG12D,EAAED,GAAG62D,GAAG72D,GAAQ,EAAF2L,EAAI,CAAC,GAAG,OAAO3L,EAAEwlC,UAAU,MAAMr/B,MAAMgyB,EAAE,MAAMrb,EAAE9c,EAAEwlC,UAAUrM,EAAEn5B,EAAEkjD,cAAc,IAAIpmC,EAAE2jB,UAAUtH,CAAC,CAAC,MAAMp1B,GAAGse,GAAEriB,EAAEA,EAAE+mC,OAAOhjC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAd4yD,GAAG12D,EAAED,GAAG62D,GAAG72D,GAAQ,EAAF2L,GAAK,OAAOsV,GAAGA,EAAEgmB,cAAcmF,aAAa,IAAIQ,GAAG3sC,EAAEosC,cAAc,CAAC,MAAMtoC,GAAGse,GAAEriB,EAAEA,EAAE+mC,OAAOhjC,EAAE,CAAC,MAAM,KAAK,EAG4G,QAAQ4yD,GAAG12D,EACnfD,GAAG62D,GAAG72D,SAJ4Y,KAAK,GAAG22D,GAAG12D,EAAED,GAAG62D,GAAG72D,GAAqB,MAAlB8c,EAAE9c,EAAEqnC,OAAQpkC,QAAak2B,EAAE,OAAOrc,EAAEmqB,cAAcnqB,EAAE0oB,UAAUsxB,SAAS39B,GAAGA,GAClf,OAAOrc,EAAEgqB,WAAW,OAAOhqB,EAAEgqB,UAAUG,gBAAgB8vB,GAAG7uB,OAAQ,EAAFv8B,GAAK8qD,GAAGz2D,GAAG,MAAM,KAAK,GAAsF,GAAnF6C,EAAE,OAAOoe,GAAG,OAAOA,EAAEgmB,cAAqB,EAAPjnC,EAAE8iD,MAAQoS,IAAGn2C,EAAEm2C,KAAIryD,EAAE8zD,GAAG12D,EAAED,GAAGk1D,GAAEn2C,GAAG43C,GAAG12D,EAAED,GAAG62D,GAAG72D,GAAQ,KAAF2L,EAAO,CAA0B,GAAzBoT,EAAE,OAAO/e,EAAEinC,eAAkBjnC,EAAEwlC,UAAUsxB,SAAS/3C,KAAKlc,GAAG,KAAY,EAAP7C,EAAE8iD,MAAQ,IAAIuS,GAAEr1D,EAAE6C,EAAE7C,EAAEqnC,MAAM,OAAOxkC,GAAG,CAAC,IAAIqjD,EAAEmP,GAAExyD,EAAE,OAAOwyD,IAAG,CAAe,OAAVppD,GAAJk6C,EAAEkP,IAAMhuB,MAAa8e,EAAE5pB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGk5B,GAAG,EAAEtP,EAAEA,EAAEpf,QAAQ,MAAM,KAAK,EAAEuuB,GAAGnP,EAAEA,EAAEpf,QAAQ,IAAI70B,EAAEi0C,EAAE3gB,UAAU,GAAG,oBAAoBtzB,EAAEskD,qBAAqB,CAAC7qD,EAAEw6C,EAAEllC,EAAEklC,EAAEpf,OAAO,IAAI9mC,EAAE0L,EAAEuG,EAAE01C,MACpf3nD,EAAEijD,cAAchxC,EAAEo1C,MAAMrnD,EAAEgnC,cAAc/0B,EAAEskD,sBAAsB,CAAC,MAAMzyD,GAAGse,GAAE1W,EAAEsV,EAAEld,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEuxD,GAAGnP,EAAEA,EAAEpf,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAOof,EAAElf,cAAc,CAAC+vB,GAAG9Q,GAAG,QAAQ,EAAE,OAAOj6C,GAAGA,EAAE86B,OAAOof,EAAEkP,GAAEppD,GAAG+qD,GAAG9Q,EAAE,CAACrjD,EAAEA,EAAEykC,OAAO,CAACtnC,EAAE,IAAI6C,EAAE,KAAKqjD,EAAElmD,IAAI,CAAC,GAAG,IAAIkmD,EAAE3pB,KAAK,GAAG,OAAO15B,EAAE,CAACA,EAAEqjD,EAAE,IAAIppC,EAAEopC,EAAE1gB,UAAUzmB,EAAa,oBAAVoa,EAAErc,EAAE2mB,OAA4BC,YAAYvK,EAAEuK,YAAY,UAAU,OAAO,aAAavK,EAAE89B,QAAQ,QAASxrD,EAAEy6C,EAAE1gB,UAAkCpM,OAAE,KAA1B74B,EAAE2lD,EAAEhD,cAAczf,QAAoB,OAAOljC,GAAGA,EAAEL,eAAe,WAAWK,EAAE02D,QAAQ,KAAKxrD,EAAEg4B,MAAMwzB,QACzf1zB,GAAG,UAAUnK,GAAG,CAAC,MAAMr1B,GAAGse,GAAEriB,EAAEA,EAAE+mC,OAAOhjC,EAAE,CAAC,OAAO,GAAG,IAAImiD,EAAE3pB,KAAK,GAAG,OAAO15B,EAAE,IAAIqjD,EAAE1gB,UAAU/E,UAAU1hB,EAAE,GAAGmnC,EAAEhD,aAAa,CAAC,MAAMn/C,GAAGse,GAAEriB,EAAEA,EAAE+mC,OAAOhjC,EAAE,OAAO,IAAI,KAAKmiD,EAAE3pB,KAAK,KAAK2pB,EAAE3pB,KAAK,OAAO2pB,EAAEjf,eAAeif,IAAIlmD,IAAI,OAAOkmD,EAAE7e,MAAM,CAAC6e,EAAE7e,MAAMN,OAAOmf,EAAEA,EAAEA,EAAE7e,MAAM,QAAQ,CAAC,GAAG6e,IAAIlmD,EAAE,MAAMA,EAAE,KAAK,OAAOkmD,EAAE5e,SAAS,CAAC,GAAG,OAAO4e,EAAEnf,QAAQmf,EAAEnf,SAAS/mC,EAAE,MAAMA,EAAE6C,IAAIqjD,IAAIrjD,EAAE,MAAMqjD,EAAEA,EAAEnf,MAAM,CAAClkC,IAAIqjD,IAAIrjD,EAAE,MAAMqjD,EAAE5e,QAAQP,OAAOmf,EAAEnf,OAAOmf,EAAEA,EAAE5e,OAAO,CAAC,CAAC,MAAM,KAAK,GAAGqvB,GAAG12D,EAAED,GAAG62D,GAAG72D,GAAK,EAAF2L,GAAK8qD,GAAGz2D,GAAS,KAAK,IACtd,CAAC,SAAS62D,GAAG72D,GAAG,IAAIC,EAAED,EAAEiD,MAAM,GAAK,EAAFhD,EAAI,CAAC,IAAID,EAAE,CAAC,IAAI,IAAIihB,EAAEjhB,EAAE+mC,OAAO,OAAO9lB,GAAG,CAAC,GAAG40C,GAAG50C,GAAG,CAAC,IAAItV,EAAEsV,EAAE,MAAMjhB,CAAC,CAACihB,EAAEA,EAAE8lB,MAAM,CAAC,MAAM5gC,MAAMgyB,EAAE,KAAM,CAAC,OAAOxsB,EAAE4wB,KAAK,KAAK,EAAE,IAAIzf,EAAEnR,EAAE65B,UAAkB,GAAR75B,EAAE1I,QAAWq9B,GAAGxjB,EAAE,IAAInR,EAAE1I,QAAQ,IAAgBizD,GAAGl2D,EAAT81D,GAAG91D,GAAU8c,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAIsc,EAAEztB,EAAE65B,UAAU6G,cAAsB0pB,GAAG/1D,EAAT81D,GAAG91D,GAAUo5B,GAAG,MAAM,QAAQ,MAAMjzB,MAAMgyB,EAAE,MAAO,CAAC,MAAM53B,GAAG8hB,GAAEriB,EAAEA,EAAE+mC,OAAOxmC,EAAE,CAACP,EAAEiD,QAAQ,CAAC,CAAG,KAAFhD,IAASD,EAAEiD,QAAQ,KAAK,CAAC,SAASi0D,GAAGl3D,EAAEC,EAAEghB,GAAGo0C,GAAEr1D,EAAEm3D,GAAGn3D,EAAEC,EAAEghB,EAAE,CACvb,SAASk2C,GAAGn3D,EAAEC,EAAEghB,GAAG,IAAI,IAAItV,EAAE,KAAY,EAAP3L,EAAE8iD,MAAQ,OAAOuS,IAAG,CAAC,IAAIv4C,EAAEu4C,GAAEl8B,EAAErc,EAAEuqB,MAAM,GAAG,KAAKvqB,EAAEyf,KAAK5wB,EAAE,CAAC,IAAIytB,EAAE,OAAOtc,EAAEmqB,eAAeguB,GAAG,IAAI77B,EAAE,CAAC,IAAI3tB,EAAEqR,EAAEgqB,UAAUvmC,EAAE,OAAOkL,GAAG,OAAOA,EAAEw7B,eAAeiuB,GAAEzpD,EAAEwpD,GAAG,IAAIl2C,EAAEm2C,GAAO,GAALD,GAAG77B,GAAM87B,GAAE30D,KAAKwe,EAAE,IAAIs2C,GAAEv4C,EAAE,OAAOu4C,IAAO90D,GAAJ64B,EAAEi8B,IAAMhuB,MAAM,KAAKjO,EAAEmD,KAAK,OAAOnD,EAAE6N,cAAcmwB,GAAGt6C,GAAG,OAAOvc,GAAGA,EAAEwmC,OAAO3N,EAAEi8B,GAAE90D,GAAG62D,GAAGt6C,GAAG,KAAK,OAAOqc,GAAGk8B,GAAEl8B,EAAEg+B,GAAGh+B,EAAEl5B,EAAEghB,GAAGkY,EAAEA,EAAEmO,QAAQ+tB,GAAEv4C,EAAEm4C,GAAGxpD,EAAEypD,GAAEn2C,CAAC,CAACs4C,GAAGr3D,EAAM,MAAM,KAAoB,KAAf8c,EAAEw2C,eAAoB,OAAOn6B,GAAGA,EAAE4N,OAAOjqB,EAAEu4C,GAAEl8B,GAAGk+B,GAAGr3D,EAAM,CAAC,CACvc,SAASq3D,GAAGr3D,GAAG,KAAK,OAAOq1D,IAAG,CAAC,IAAIp1D,EAAEo1D,GAAE,GAAG,KAAa,KAARp1D,EAAEgD,OAAY,CAAC,IAAIge,EAAEhhB,EAAE6mC,UAAU,IAAI,GAAG,KAAa,KAAR7mC,EAAEgD,OAAY,OAAOhD,EAAEs8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG24B,IAAGQ,GAAG,EAAEz1D,GAAG,MAAM,KAAK,EAAE,IAAI0L,EAAE1L,EAAEulC,UAAU,GAAW,EAARvlC,EAAEgD,QAAUiyD,GAAE,GAAG,OAAOj0C,EAAEtV,EAAEs8C,wBAAwB,CAAC,IAAInrC,EAAE7c,EAAEsiD,cAActiD,EAAEy5B,KAAKzY,EAAEiiC,cAAcK,GAAGtjD,EAAEy5B,KAAKzY,EAAEiiC,eAAev3C,EAAEqmD,mBAAmBl1C,EAAEmE,EAAEgmB,cAAct7B,EAAE2rD,oCAAoC,CAAC,IAAIn+B,EAAEl5B,EAAEglD,YAAY,OAAO9rB,GAAGitB,GAAGnmD,EAAEk5B,EAAExtB,GAAG,MAAM,KAAK,EAAE,IAAIytB,EAAEn5B,EAAEglD,YAAY,GAAG,OAAO7rB,EAAE,CAAQ,GAAPnY,EAAE,KAAQ,OAAOhhB,EAAEonC,MAAM,OAAOpnC,EAAEonC,MAAM9K,KAAK,KAAK,EACvf,KAAK,EAAEtb,EAAEhhB,EAAEonC,MAAM7B,UAAU4gB,GAAGnmD,EAAEm5B,EAAEnY,EAAE,CAAC,MAAM,KAAK,EAAE,IAAIxV,EAAExL,EAAEulC,UAAU,GAAG,OAAOvkB,GAAW,EAARhhB,EAAEgD,MAAQ,CAACge,EAAExV,EAAE,IAAIlL,EAAEN,EAAEijD,cAAc,OAAOjjD,EAAEy5B,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWn5B,EAAEo0D,WAAW1zC,EAAEk5B,QAAQ,MAAM,IAAK,MAAM55C,EAAEg3D,MAAMt2C,EAAEs2C,IAAIh3D,EAAEg3D,KAAK,CAAC,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAOt3D,EAAEgnC,cAAc,CAAC,IAAIloB,EAAE9e,EAAE6mC,UAAU,GAAG,OAAO/nB,EAAE,CAAC,IAAIlc,EAAEkc,EAAEkoB,cAAc,GAAG,OAAOpkC,EAAE,CAAC,IAAIqjD,EAAErjD,EAAEqkC,WAAW,OAAOgf,GAAGtZ,GAAGsZ,EAAE,CAAC,CAAC,CAAC,MAC5c,QAAQ,MAAM//C,MAAMgyB,EAAE,MAAO+8B,IAAW,IAARj1D,EAAEgD,OAAW0yD,GAAG11D,EAAE,CAAC,MAAMkmD,GAAG9jC,GAAEpiB,EAAEA,EAAE8mC,OAAOof,EAAE,CAAC,CAAC,GAAGlmD,IAAID,EAAE,CAACq1D,GAAE,KAAK,KAAK,CAAa,GAAG,QAAfp0C,EAAEhhB,EAAEqnC,SAAoB,CAACrmB,EAAE8lB,OAAO9mC,EAAE8mC,OAAOsuB,GAAEp0C,EAAE,KAAK,CAACo0C,GAAEp1D,EAAE8mC,MAAM,CAAC,CAAC,SAASiwB,GAAGh3D,GAAG,KAAK,OAAOq1D,IAAG,CAAC,IAAIp1D,EAAEo1D,GAAE,GAAGp1D,IAAID,EAAE,CAACq1D,GAAE,KAAK,KAAK,CAAC,IAAIp0C,EAAEhhB,EAAEqnC,QAAQ,GAAG,OAAOrmB,EAAE,CAACA,EAAE8lB,OAAO9mC,EAAE8mC,OAAOsuB,GAAEp0C,EAAE,KAAK,CAACo0C,GAAEp1D,EAAE8mC,MAAM,CAAC,CACvS,SAASqwB,GAAGp3D,GAAG,KAAK,OAAOq1D,IAAG,CAAC,IAAIp1D,EAAEo1D,GAAE,IAAI,OAAOp1D,EAAEs8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAItb,EAAEhhB,EAAE8mC,OAAO,IAAI2uB,GAAG,EAAEz1D,EAAE,CAAC,MAAMM,GAAG8hB,GAAEpiB,EAAEghB,EAAE1gB,EAAE,CAAC,MAAM,KAAK,EAAE,IAAIoL,EAAE1L,EAAEulC,UAAU,GAAG,oBAAoB75B,EAAEs8C,kBAAkB,CAAC,IAAInrC,EAAE7c,EAAE8mC,OAAO,IAAIp7B,EAAEs8C,mBAAmB,CAAC,MAAM1nD,GAAG8hB,GAAEpiB,EAAE6c,EAAEvc,EAAE,CAAC,CAAC,IAAI44B,EAAEl5B,EAAE8mC,OAAO,IAAI4uB,GAAG11D,EAAE,CAAC,MAAMM,GAAG8hB,GAAEpiB,EAAEk5B,EAAE54B,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI64B,EAAEn5B,EAAE8mC,OAAO,IAAI4uB,GAAG11D,EAAE,CAAC,MAAMM,GAAG8hB,GAAEpiB,EAAEm5B,EAAE74B,EAAE,EAAE,CAAC,MAAMA,GAAG8hB,GAAEpiB,EAAEA,EAAE8mC,OAAOxmC,EAAE,CAAC,GAAGN,IAAID,EAAE,CAACq1D,GAAE,KAAK,KAAK,CAAC,IAAI5pD,EAAExL,EAAEqnC,QAAQ,GAAG,OAAO77B,EAAE,CAACA,EAAEs7B,OAAO9mC,EAAE8mC,OAAOsuB,GAAE5pD,EAAE,KAAK,CAAC4pD,GAAEp1D,EAAE8mC,MAAM,CAAC,CAC7d,IAwBkNywB,GAxB9MC,GAAGlvD,KAAKyF,KAAK0pD,GAAGl9B,EAAGyvB,uBAAuB0N,GAAGn9B,EAAGo2B,kBAAkBgH,GAAGp9B,EAAGsS,wBAAwBgZ,GAAE,EAAEwG,GAAE,KAAKuL,GAAE,KAAKC,GAAE,EAAEpG,GAAG,EAAED,GAAG5R,GAAG,GAAGgV,GAAE,EAAEkD,GAAG,KAAKrsD,GAAG,EAAEssD,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAKpB,GAAG,EAAEjC,GAAGsD,IAASC,GAAG,KAAKtI,IAAG,EAAGC,GAAG,KAAKI,GAAG,KAAKkI,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAAStuD,KAAI,OAAO,KAAO,EAAFw7C,IAAK5d,MAAK,IAAIywB,GAAGA,GAAGA,GAAGzwB,IAAG,CAChU,SAAS2e,GAAG7mD,GAAG,OAAG,KAAY,EAAPA,EAAE8iD,MAAe,EAAK,KAAO,EAAFgD,KAAM,IAAIgS,GAASA,IAAGA,GAAK,OAAOxU,GAAGtW,YAAkB,IAAI4rB,KAAKA,GAAGzuB,MAAMyuB,IAAU,KAAP54D,EAAEwqC,IAAkBxqC,EAAiBA,OAAE,KAAjBA,EAAE24B,OAAO0d,OAAmB,GAAG9I,GAAGvtC,EAAE05B,KAAc,CAAC,SAASotB,GAAG9mD,EAAEC,EAAEghB,EAAEtV,GAAG,GAAG,GAAG8sD,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKvyD,MAAMgyB,EAAE,MAAMkS,GAAGrqC,EAAEihB,EAAEtV,GAAM,KAAO,EAAFm6C,KAAM9lD,IAAIssD,KAAEtsD,IAAIssD,KAAI,KAAO,EAAFxG,MAAOkS,IAAI/2C,GAAG,IAAI4zC,IAAGgE,GAAG74D,EAAE83D,KAAIgB,GAAG94D,EAAE2L,GAAG,IAAIsV,GAAG,IAAI6kC,IAAG,KAAY,EAAP7lD,EAAE6iD,QAAUgS,GAAG5sB,KAAI,IAAI+Y,IAAIE,MAAK,CAC1Y,SAAS2X,GAAG94D,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAE+4D,cA5MzB,SAAY/4D,EAAEC,GAAG,IAAI,IAAIghB,EAAEjhB,EAAE6pC,eAAel+B,EAAE3L,EAAE8pC,YAAYhtB,EAAE9c,EAAEg5D,gBAAgB7/B,EAAEn5B,EAAE4pC,aAAa,EAAEzQ,GAAG,CAAC,IAAIC,EAAE,GAAG8P,GAAG/P,GAAG1tB,EAAE,GAAG2tB,EAAE74B,EAAEuc,EAAEsc,IAAO,IAAI74B,EAAM,KAAKkL,EAAEwV,IAAI,KAAKxV,EAAEE,KAAGmR,EAAEsc,GAAG6Q,GAAGx+B,EAAExL,IAAQM,GAAGN,IAAID,EAAEi5D,cAAcxtD,GAAG0tB,IAAI1tB,CAAC,CAAC,CA4MnLytD,CAAGl5D,EAAEC,GAAG,IAAI0L,EAAEg+B,GAAG3pC,EAAEA,IAAIssD,GAAEwL,GAAE,GAAG,GAAG,IAAInsD,EAAE,OAAOsV,GAAG2mB,GAAG3mB,GAAGjhB,EAAE+4D,aAAa,KAAK/4D,EAAEm5D,iBAAiB,OAAO,GAAGl5D,EAAE0L,GAAGA,EAAE3L,EAAEm5D,mBAAmBl5D,EAAE,CAAgB,GAAf,MAAMghB,GAAG2mB,GAAG3mB,GAAM,IAAIhhB,EAAE,IAAID,EAAEu8B,IA7IsJ,SAAYv8B,GAAGihD,IAAG,EAAGC,GAAGlhD,EAAE,CA6I5Ko5D,CAAGC,GAAG1c,KAAK,KAAK38C,IAAIkhD,GAAGmY,GAAG1c,KAAK,KAAK38C,IAAI4+C,IAAG,WAAW,KAAO,EAAFkH,KAAM3E,IAAI,IAAGlgC,EAAE,SAAS,CAAC,OAAOwpB,GAAG9+B,IAAI,KAAK,EAAEsV,EAAEqnB,GAAG,MAAM,KAAK,EAAErnB,EAAEunB,GAAG,MAAM,KAAK,GAAwC,QAAQvnB,EAAEynB,SAApC,KAAK,UAAUznB,EAAE6nB,GAAsB7nB,EAAEq4C,GAAGr4C,EAAEs4C,GAAG5c,KAAK,KAAK38C,GAAG,CAACA,EAAEm5D,iBAAiBl5D,EAAED,EAAE+4D,aAAa93C,CAAC,CAAC,CAC7c,SAASs4C,GAAGv5D,EAAEC,GAAc,GAAX04D,IAAI,EAAEC,GAAG,EAAK,KAAO,EAAF9S,IAAK,MAAM3/C,MAAMgyB,EAAE,MAAM,IAAIlX,EAAEjhB,EAAE+4D,aAAa,GAAGS,MAAMx5D,EAAE+4D,eAAe93C,EAAE,OAAO,KAAK,IAAItV,EAAEg+B,GAAG3pC,EAAEA,IAAIssD,GAAEwL,GAAE,GAAG,GAAG,IAAInsD,EAAE,OAAO,KAAK,GAAG,KAAO,GAAFA,IAAO,KAAKA,EAAE3L,EAAEi5D,eAAeh5D,EAAEA,EAAEw5D,GAAGz5D,EAAE2L,OAAO,CAAC1L,EAAE0L,EAAE,IAAImR,EAAEgpC,GAAEA,IAAG,EAAE,IAAI3sB,EAAEugC,KAAgD,IAAxCpN,KAAItsD,GAAG83D,KAAI73D,IAAEo4D,GAAG,KAAKvD,GAAG5sB,KAAI,IAAIyxB,GAAG35D,EAAEC,UAAU25D,KAAK,KAAK,CAAC,MAAMnuD,GAAGouD,GAAG75D,EAAEyL,EAAE,CAAUo4C,KAAK6T,GAAGnwB,QAAQpO,EAAE2sB,GAAEhpC,EAAE,OAAO+6C,GAAE53D,EAAE,GAAGqsD,GAAE,KAAKwL,GAAE,EAAE73D,EAAE40D,GAAE,CAAC,GAAG,IAAI50D,EAAE,CAAyC,GAAxC,IAAIA,IAAY,KAAR6c,EAAEotB,GAAGlqC,MAAW2L,EAAEmR,EAAE7c,EAAE65D,GAAG95D,EAAE8c,KAAQ,IAAI7c,EAAE,MAAMghB,EAAE82C,GAAG4B,GAAG35D,EAAE,GAAG64D,GAAG74D,EAAE2L,GAAGmtD,GAAG94D,EAAEkoC,MAAKjnB,EAAE,GAAG,IAAIhhB,EAAE44D,GAAG74D,EAAE2L,OAChf,CAAuB,GAAtBmR,EAAE9c,EAAEunC,QAAQT,UAAa,KAAO,GAAFn7B,KAGnC,SAAY3L,GAAG,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAW,MAARC,EAAEgD,MAAY,CAAC,IAAIge,EAAEhhB,EAAEglD,YAAY,GAAG,OAAOhkC,GAAe,QAAXA,EAAEA,EAAEwrC,QAAiB,IAAI,IAAI9gD,EAAE,EAAEA,EAAEsV,EAAE3gB,OAAOqL,IAAI,CAAC,IAAImR,EAAEmE,EAAEtV,GAAGwtB,EAAErc,EAAEqvC,YAAYrvC,EAAEA,EAAEzO,MAAM,IAAI,IAAIspC,GAAGxe,IAAIrc,GAAG,OAAM,CAAE,CAAC,MAAMsc,GAAG,OAAM,CAAE,CAAC,CAAC,CAAW,GAAVnY,EAAEhhB,EAAEonC,MAAwB,MAAfpnC,EAAEqzD,cAAoB,OAAOryC,EAAEA,EAAE8lB,OAAO9mC,EAAEA,EAAEghB,MAAM,CAAC,GAAGhhB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEqnC,SAAS,CAAC,GAAG,OAAOrnC,EAAE8mC,QAAQ9mC,EAAE8mC,SAAS/mC,EAAE,OAAM,EAAGC,EAAEA,EAAE8mC,MAAM,CAAC9mC,EAAEqnC,QAAQP,OAAO9mC,EAAE8mC,OAAO9mC,EAAEA,EAAEqnC,OAAO,CAAC,CAAC,OAAM,CAAE,CAHvXyyB,CAAGj9C,KAAe,KAAV7c,EAAEw5D,GAAGz5D,EAAE2L,MAAmB,KAARwtB,EAAE+Q,GAAGlqC,MAAW2L,EAAEwtB,EAAEl5B,EAAE65D,GAAG95D,EAAEm5B,KAAK,IAAIl5B,GAAG,MAAMghB,EAAE82C,GAAG4B,GAAG35D,EAAE,GAAG64D,GAAG74D,EAAE2L,GAAGmtD,GAAG94D,EAAEkoC,MAAKjnB,EAAqC,OAAnCjhB,EAAEg6D,aAAal9C,EAAE9c,EAAEi6D,cAActuD,EAAS1L,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMkG,MAAMgyB,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAE+hC,GAAGl6D,EAAEm4D,GAAGE,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAG74D,EAAE2L,IAAS,UAAFA,KAAeA,GAAiB,IAAb1L,EAAE82D,GAAG,IAAI7uB,MAAU,CAAC,GAAG,IAAIyB,GAAG3pC,EAAE,GAAG,MAAyB,KAAnB8c,EAAE9c,EAAE6pC,gBAAqBl+B,KAAKA,EAAE,CAACrB,KAAItK,EAAE8pC,aAAa9pC,EAAE6pC,eAAe/sB,EAAE,KAAK,CAAC9c,EAAEm6D,cAAc7b,GAAG4b,GAAGvd,KAAK,KAAK38C,EAAEm4D,GAAGE,IAAIp4D,GAAG,KAAK,CAACi6D,GAAGl6D,EAAEm4D,GAAGE,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAG74D,EAAE2L,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAf1L,EAAED,EAAEsqC,WAAextB,GAAG,EAAE,EAAEnR,GAAG,CAAC,IAAIytB,EAAE,GAAG8P,GAAGv9B,GAAGwtB,EAAE,GAAGC,GAAEA,EAAEn5B,EAAEm5B,IAAKtc,IAAIA,EAAEsc,GAAGztB,IAAIwtB,CAAC,CAAqG,GAApGxtB,EAAEmR,EAAqG,IAA3FnR,GAAG,KAAXA,EAAEu8B,KAAIv8B,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAK8rD,GAAG9rD,EAAE,OAAOA,GAAU,CAAC3L,EAAEm6D,cAAc7b,GAAG4b,GAAGvd,KAAK,KAAK38C,EAAEm4D,GAAGE,IAAI1sD,GAAG,KAAK,CAACuuD,GAAGl6D,EAAEm4D,GAAGE,IAAI,MAA+B,QAAQ,MAAMlyD,MAAMgyB,EAAE,MAAO,CAAC,CAAW,OAAV2gC,GAAG94D,EAAEkoC,MAAYloC,EAAE+4D,eAAe93C,EAAEs4C,GAAG5c,KAAK,KAAK38C,GAAG,IAAI,CACrX,SAAS85D,GAAG95D,EAAEC,GAAG,IAAIghB,EAAEi3C,GAA2G,OAAxGl4D,EAAEunC,QAAQN,cAAcmF,eAAeutB,GAAG35D,EAAEC,GAAGgD,OAAO,KAAe,KAAVjD,EAAEy5D,GAAGz5D,EAAEC,MAAWA,EAAEk4D,GAAGA,GAAGl3C,EAAE,OAAOhhB,GAAGk0D,GAAGl0D,IAAWD,CAAC,CAAC,SAASm0D,GAAGn0D,GAAG,OAAOm4D,GAAGA,GAAGn4D,EAAEm4D,GAAGj3D,KAAK/B,MAAMg5D,GAAGn4D,EAAE,CAE5L,SAAS64D,GAAG74D,EAAEC,GAAuD,IAApDA,IAAIg4D,GAAGh4D,IAAI+3D,GAAGh4D,EAAE6pC,gBAAgB5pC,EAAED,EAAE8pC,cAAc7pC,EAAMD,EAAEA,EAAEg5D,gBAAgB,EAAE/4D,GAAG,CAAC,IAAIghB,EAAE,GAAGioB,GAAGjpC,GAAG0L,EAAE,GAAGsV,EAAEjhB,EAAEihB,IAAI,EAAEhhB,IAAI0L,CAAC,CAAC,CAAC,SAAS0tD,GAAGr5D,GAAG,GAAG,KAAO,EAAF8lD,IAAK,MAAM3/C,MAAMgyB,EAAE,MAAMqhC,KAAK,IAAIv5D,EAAE0pC,GAAG3pC,EAAE,GAAG,GAAG,KAAO,EAAFC,GAAK,OAAO64D,GAAG94D,EAAEkoC,MAAK,KAAK,IAAIjnB,EAAEw4C,GAAGz5D,EAAEC,GAAG,GAAG,IAAID,EAAEu8B,KAAK,IAAItb,EAAE,CAAC,IAAItV,EAAEu+B,GAAGlqC,GAAG,IAAI2L,IAAI1L,EAAE0L,EAAEsV,EAAE64C,GAAG95D,EAAE2L,GAAG,CAAC,GAAG,IAAIsV,EAAE,MAAMA,EAAE82C,GAAG4B,GAAG35D,EAAE,GAAG64D,GAAG74D,EAAEC,GAAG64D,GAAG94D,EAAEkoC,MAAKjnB,EAAE,GAAG,IAAIA,EAAE,MAAM9a,MAAMgyB,EAAE,MAAiF,OAA3En4B,EAAEg6D,aAAah6D,EAAEunC,QAAQT,UAAU9mC,EAAEi6D,cAAch6D,EAAEi6D,GAAGl6D,EAAEm4D,GAAGE,IAAIS,GAAG94D,EAAEkoC,MAAY,IAAI,CACvd,SAASkyB,GAAGp6D,EAAEC,GAAG,IAAIghB,EAAE6kC,GAAEA,IAAG,EAAE,IAAI,OAAO9lD,EAAEC,EAAE,CAAC,QAAY,KAAJ6lD,GAAE7kC,KAAU6zC,GAAG5sB,KAAI,IAAI+Y,IAAIE,KAAK,CAAC,CAAC,SAASkZ,GAAGr6D,GAAG,OAAOu4D,IAAI,IAAIA,GAAGh8B,KAAK,KAAO,EAAFupB,KAAM0T,KAAK,IAAIv5D,EAAE6lD,GAAEA,IAAG,EAAE,IAAI7kC,EAAE22C,GAAG5qB,WAAWrhC,EAAE6+B,GAAE,IAAI,GAAGotB,GAAG5qB,WAAW,KAAKxC,GAAE,EAAExqC,EAAE,OAAOA,GAAG,CAAC,QAAQwqC,GAAE7+B,EAAEisD,GAAG5qB,WAAW/rB,EAAM,KAAO,GAAX6kC,GAAE7lD,KAAakhD,IAAI,CAAC,CAAC,SAAS4T,KAAKrD,GAAGD,GAAGlqB,QAAQjlB,GAAEmvC,GAAG,CAChT,SAASkI,GAAG35D,EAAEC,GAAGD,EAAEg6D,aAAa,KAAKh6D,EAAEi6D,cAAc,EAAE,IAAIh5C,EAAEjhB,EAAEm6D,cAAiD,IAAlC,IAAIl5C,IAAIjhB,EAAEm6D,eAAe,EAAE3b,GAAGv9B,IAAO,OAAO42C,GAAE,IAAI52C,EAAE42C,GAAE9wB,OAAO,OAAO9lB,GAAG,CAAC,IAAItV,EAAEsV,EAAQ,OAAN+gC,GAAGr2C,GAAUA,EAAE4wB,KAAK,KAAK,EAA6B,QAA3B5wB,EAAEA,EAAE+tB,KAAK8mB,yBAA4B,IAAS70C,GAAG80C,KAAK,MAAM,KAAK,EAAE+I,KAAKlnC,GAAE29B,IAAI39B,GAAE09B,IAAG8J,KAAK,MAAM,KAAK,EAAEJ,GAAG/9C,GAAG,MAAM,KAAK,EAAE69C,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGlnC,GAAEvW,IAAG,MAAM,KAAK,GAAG+3C,GAAGn4C,EAAE+tB,KAAKiD,UAAU,MAAM,KAAK,GAAG,KAAK,GAAGo4B,KAAK9zC,EAAEA,EAAE8lB,MAAM,CAAqE,GAApEulB,GAAEtsD,EAAE63D,GAAE73D,EAAEwoD,GAAGxoD,EAAEunC,QAAQ,MAAMuwB,GAAEpG,GAAGzxD,EAAE40D,GAAE,EAAEkD,GAAG,KAAKE,GAAGD,GAAGtsD,GAAG,EAAEysD,GAAGD,GAAG,KAAQ,OAAOxT,GAAG,CAAC,IAAIzkD,EAC1f,EAAEA,EAAEykD,GAAGpkD,OAAOL,IAAI,GAA2B,QAAhB0L,GAARsV,EAAEyjC,GAAGzkD,IAAO4kD,aAAqB,CAAC5jC,EAAE4jC,YAAY,KAAK,IAAI/nC,EAAEnR,EAAE2Q,KAAK6c,EAAElY,EAAEqkC,QAAQ,GAAG,OAAOnsB,EAAE,CAAC,IAAIC,EAAED,EAAE7c,KAAK6c,EAAE7c,KAAKQ,EAAEnR,EAAE2Q,KAAK8c,CAAC,CAACnY,EAAEqkC,QAAQ35C,CAAC,CAAC+4C,GAAG,IAAI,CAAC,OAAO1kD,CAAC,CAC3K,SAAS65D,GAAG75D,EAAEC,GAAG,OAAE,CAAC,IAAIghB,EAAE42C,GAAE,IAAuB,GAAnBhU,KAAKmG,GAAGziB,QAAQ0jB,GAAMV,GAAG,CAAC,IAAI,IAAI5+C,EAAEy+C,GAAEnjB,cAAc,OAAOt7B,GAAG,CAAC,IAAImR,EAAEnR,EAAE0/C,MAAM,OAAOvuC,IAAIA,EAAEwoC,QAAQ,MAAM35C,EAAEA,EAAE2Q,IAAI,CAACiuC,IAAG,CAAE,CAA4C,GAA3CJ,GAAG,EAAEG,GAAED,GAAED,GAAE,KAAKI,IAAG,EAAGC,GAAG,EAAEkN,GAAGpwB,QAAQ,KAAQ,OAAOtmB,GAAG,OAAOA,EAAE8lB,OAAO,CAAC8tB,GAAE,EAAEkD,GAAG93D,EAAE43D,GAAE,KAAK,KAAK,CAAC73D,EAAE,CAAC,IAAIm5B,EAAEn5B,EAAEo5B,EAAEnY,EAAE8lB,OAAOt7B,EAAEwV,EAAE1gB,EAAEN,EAAqB,GAAnBA,EAAE63D,GAAErsD,EAAExI,OAAO,MAAS,OAAO1C,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEw+C,KAAK,CAAC,IAAIhgC,EAAExe,EAAEsC,EAAE4I,EAAEy6C,EAAErjD,EAAE05B,IAAI,GAAG,KAAY,EAAP15B,EAAEigD,QAAU,IAAIoD,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAIC,EAAEtjD,EAAEikC,UAAUqf,GAAGtjD,EAAEoiD,YAAYkB,EAAElB,YAAYpiD,EAAEokC,cAAckf,EAAElf,cACxepkC,EAAEwhD,MAAM8B,EAAE9B,QAAQxhD,EAAEoiD,YAAY,KAAKpiD,EAAEokC,cAAc,KAAK,CAAC,IAAIh7B,EAAEwkD,GAAGr3B,GAAG,GAAG,OAAOntB,EAAE,CAACA,EAAEhJ,QAAQ,IAAIytD,GAAGzkD,EAAEmtB,EAAE3tB,EAAE0tB,EAAEl5B,GAAU,EAAPgM,EAAE62C,MAAQwN,GAAGn3B,EAAEpa,EAAE9e,GAAOM,EAAEwe,EAAE,IAAI7M,GAAZjS,EAAEgM,GAAcg5C,YAAY,GAAG,OAAO/yC,EAAE,CAAC,IAAInO,EAAE,IAAIu0B,IAAIv0B,EAAEkT,IAAI1W,GAAGN,EAAEglD,YAAYlhD,CAAC,MAAMmO,EAAE+E,IAAI1W,GAAG,MAAMP,CAAC,CAAM,GAAG,KAAO,EAAFC,GAAK,CAACqwD,GAAGn3B,EAAEpa,EAAE9e,GAAGizD,KAAK,MAAMlzD,CAAC,CAACO,EAAE4F,MAAMgyB,EAAE,KAAM,MAAM,GAAGgqB,IAAU,EAAP12C,EAAEq3C,KAAO,CAAC,IAAIhG,EAAE2T,GAAGr3B,GAAG,GAAG,OAAO0jB,EAAE,CAAC,KAAa,MAARA,EAAE75C,SAAe65C,EAAE75C,OAAO,KAAKytD,GAAG5T,EAAE1jB,EAAE3tB,EAAE0tB,EAAEl5B,GAAGojD,GAAGiM,GAAG/uD,EAAEkL,IAAI,MAAMzL,CAAC,CAAC,CAACm5B,EAAE54B,EAAE+uD,GAAG/uD,EAAEkL,GAAG,IAAIopD,KAAIA,GAAE,GAAG,OAAOqD,GAAGA,GAAG,CAAC/+B,GAAG++B,GAAGh3D,KAAKi4B,GAAGA,EAAEC,EAAE,EAAE,CAAC,OAAOD,EAAEoD,KAAK,KAAK,EAAEpD,EAAEl2B,OAAO,MACpfhD,IAAIA,EAAEk5B,EAAEkrB,OAAOpkD,EAAkB+lD,GAAG7sB,EAAb22B,GAAG32B,EAAE54B,EAAEN,IAAW,MAAMD,EAAE,KAAK,EAAEyL,EAAElL,EAAE,IAAIsL,EAAEstB,EAAEO,KAAK/rB,EAAEwrB,EAAEqM,UAAU,GAAG,KAAa,IAARrM,EAAEl2B,SAAa,oBAAoB4I,EAAEqkD,0BAA0B,OAAOviD,GAAG,oBAAoBA,EAAEwiD,oBAAoB,OAAOC,KAAKA,GAAG/T,IAAI1uC,KAAK,CAACwrB,EAAEl2B,OAAO,MAAMhD,IAAIA,EAAEk5B,EAAEkrB,OAAOpkD,EAAkB+lD,GAAG7sB,EAAb82B,GAAG92B,EAAE1tB,EAAExL,IAAW,MAAMD,CAAC,EAAEm5B,EAAEA,EAAE4N,MAAM,OAAO,OAAO5N,EAAE,CAACmhC,GAAGr5C,EAAE,CAAC,MAAMo8B,GAAIp9C,EAAEo9C,EAAGwa,KAAI52C,GAAG,OAAOA,IAAI42C,GAAE52C,EAAEA,EAAE8lB,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAAC,SAAS2yB,KAAK,IAAI15D,EAAE03D,GAAGnwB,QAAsB,OAAdmwB,GAAGnwB,QAAQ0jB,GAAU,OAAOjrD,EAAEirD,GAAGjrD,CAAC,CACrd,SAASkzD,KAAQ,IAAI2B,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOvI,IAAG,KAAQ,UAAH5gD,KAAe,KAAQ,UAAHssD,KAAea,GAAGvM,GAAEwL,GAAE,CAAC,SAAS2B,GAAGz5D,EAAEC,GAAG,IAAIghB,EAAE6kC,GAAEA,IAAG,EAAE,IAAIn6C,EAAE+tD,KAAqC,IAA7BpN,KAAItsD,GAAG83D,KAAI73D,IAAEo4D,GAAG,KAAKsB,GAAG35D,EAAEC,UAAUs6D,KAAK,KAAK,CAAC,MAAMz9C,GAAG+8C,GAAG75D,EAAE8c,EAAE,CAAgC,GAAtB+mC,KAAKiC,GAAE7kC,EAAEy2C,GAAGnwB,QAAQ57B,EAAK,OAAOksD,GAAE,MAAM1xD,MAAMgyB,EAAE,MAAiB,OAAXm0B,GAAE,KAAKwL,GAAE,EAASjD,EAAC,CAAC,SAAS0F,KAAK,KAAK,OAAO1C,IAAG2C,GAAG3C,GAAE,CAAC,SAAS+B,KAAK,KAAK,OAAO/B,KAAI/vB,MAAM0yB,GAAG3C,GAAE,CAAC,SAAS2C,GAAGx6D,GAAG,IAAIC,EAAEu3D,GAAGx3D,EAAE8mC,UAAU9mC,EAAE0xD,IAAI1xD,EAAEkjD,cAAcljD,EAAE0iD,aAAa,OAAOziD,EAAEq6D,GAAGt6D,GAAG63D,GAAE53D,EAAE03D,GAAGpwB,QAAQ,IAAI,CAC1d,SAAS+yB,GAAGt6D,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIihB,EAAEhhB,EAAE6mC,UAAqB,GAAX9mC,EAAEC,EAAE8mC,OAAU,KAAa,MAAR9mC,EAAEgD,QAAc,GAAgB,QAAbge,EAAEizC,GAAGjzC,EAAEhhB,EAAEyxD,KAAkB,YAAJmG,GAAE52C,OAAc,CAAW,GAAG,QAAbA,EAAE+zC,GAAG/zC,EAAEhhB,IAAmC,OAAnBghB,EAAEhe,OAAO,WAAM40D,GAAE52C,GAAS,GAAG,OAAOjhB,EAAmE,OAAX60D,GAAE,OAAEgD,GAAE,MAA5D73D,EAAEiD,OAAO,MAAMjD,EAAEszD,aAAa,EAAEtzD,EAAEwiD,UAAU,IAA4B,CAAa,GAAG,QAAfviD,EAAEA,EAAEqnC,SAAyB,YAAJuwB,GAAE53D,GAAS43D,GAAE53D,EAAED,CAAC,OAAO,OAAOC,GAAG,IAAI40D,KAAIA,GAAE,EAAE,CAAC,SAASqF,GAAGl6D,EAAEC,EAAEghB,GAAG,IAAItV,EAAE6+B,GAAE1tB,EAAE86C,GAAG5qB,WAAW,IAAI4qB,GAAG5qB,WAAW,KAAKxC,GAAE,EAC3Y,SAAYxqC,EAAEC,EAAEghB,EAAEtV,GAAG,GAAG6tD,WAAW,OAAOjB,IAAI,GAAG,KAAO,EAAFzS,IAAK,MAAM3/C,MAAMgyB,EAAE,MAAMlX,EAAEjhB,EAAEg6D,aAAa,IAAIl9C,EAAE9c,EAAEi6D,cAAc,GAAG,OAAOh5C,EAAE,OAAO,KAA2C,GAAtCjhB,EAAEg6D,aAAa,KAAKh6D,EAAEi6D,cAAc,EAAKh5C,IAAIjhB,EAAEunC,QAAQ,MAAMphC,MAAMgyB,EAAE,MAAMn4B,EAAE+4D,aAAa,KAAK/4D,EAAEm5D,iBAAiB,EAAE,IAAIhgC,EAAElY,EAAEojC,MAAMpjC,EAAEgjC,WAA8J,GA1NtT,SAAYjkD,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAE4pC,cAAc3pC,EAAED,EAAE4pC,aAAa3pC,EAAED,EAAE6pC,eAAe,EAAE7pC,EAAE8pC,YAAY,EAAE9pC,EAAEi5D,cAAch5D,EAAED,EAAEy6D,kBAAkBx6D,EAAED,EAAE+pC,gBAAgB9pC,EAAEA,EAAED,EAAEgqC,cAAc,IAAIr+B,EAAE3L,EAAEsqC,WAAW,IAAItqC,EAAEA,EAAEg5D,gBAAgB,EAAE/3C,GAAG,CAAC,IAAInE,EAAE,GAAGosB,GAAGjoB,GAAGkY,EAAE,GAAGrc,EAAE7c,EAAE6c,GAAG,EAAEnR,EAAEmR,IAAI,EAAE9c,EAAE8c,IAAI,EAAEmE,IAAIkY,CAAC,CAAC,CA0N5GuhC,CAAG16D,EAAEm5B,GAAGn5B,IAAIssD,KAAIuL,GAAEvL,GAAE,KAAKwL,GAAE,GAAG,KAAoB,KAAf72C,EAAEqyC,eAAoB,KAAa,KAARryC,EAAEhe,QAAaq1D,KAAKA,IAAG,EAAGgB,GAAG5wB,IAAG,WAAgB,OAAL8wB,KAAY,IAAI,KAAIrgC,EAAE,KAAa,MAARlY,EAAEhe,OAAgB,KAAoB,MAAfge,EAAEqyC,eAAqBn6B,EAAE,CAACA,EAAEy+B,GAAG5qB,WAAW4qB,GAAG5qB,WAAW,KAChf,IAAI5T,EAAEoR,GAAEA,GAAE,EAAE,IAAI/+B,EAAEq6C,GAAEA,IAAG,EAAE6R,GAAGpwB,QAAQ,KA1CpC,SAAYvnC,EAAEC,GAAgB,GAAbi+C,GAAGtyC,GAAa4sC,GAAVx4C,EAAEo4C,MAAc,CAAC,GAAG,mBAAmBp4C,EAAE,IAAIihB,EAAE,CAAC63B,MAAM94C,EAAEg5C,eAAeD,IAAI/4C,EAAEi5C,mBAAmBj5C,EAAE,CAA8C,IAAI2L,GAAjDsV,GAAGA,EAAEjhB,EAAE6+B,gBAAgB5d,EAAEi4B,aAAavgB,QAAewgB,cAAcl4B,EAAEk4B,eAAe,GAAGxtC,GAAG,IAAIA,EAAEytC,WAAW,CAACn4B,EAAEtV,EAAE0tC,WAAW,IAAIv8B,EAAEnR,EAAE2tC,aAAangB,EAAExtB,EAAE4tC,UAAU5tC,EAAEA,EAAE6tC,YAAY,IAAIv4B,EAAEuf,SAASrH,EAAEqH,QAAQ,CAAC,MAAMuc,GAAG97B,EAAE,KAAK,MAAMjhB,CAAC,CAAC,IAAIo5B,EAAE,EAAE3tB,GAAG,EAAElL,GAAG,EAAEwe,EAAE,EAAElc,EAAE,EAAEqjD,EAAElmD,EAAEmmD,EAAE,KAAKlmD,EAAE,OAAO,CAAC,IAAI,IAAIgM,EAAKi6C,IAAIjlC,GAAG,IAAInE,GAAG,IAAIopC,EAAE1lB,WAAW/0B,EAAE2tB,EAAEtc,GAAGopC,IAAI/sB,GAAG,IAAIxtB,GAAG,IAAIu6C,EAAE1lB,WAAWjgC,EAAE64B,EAAEztB,GAAG,IAAIu6C,EAAE1lB,WAAWpH,GACnf8sB,EAAEzlB,UAAUngC,QAAW,QAAQ2L,EAAEi6C,EAAEjmB,aAAkBkmB,EAAED,EAAEA,EAAEj6C,EAAE,OAAO,CAAC,GAAGi6C,IAAIlmD,EAAE,MAAMC,EAA8C,GAA5CkmD,IAAIllC,KAAKlC,IAAIjC,IAAIrR,EAAE2tB,GAAG+sB,IAAIhtB,KAAKt2B,IAAI8I,IAAIpL,EAAE64B,GAAM,QAAQntB,EAAEi6C,EAAElO,aAAa,MAAUmO,GAAJD,EAAEC,GAAMjhB,UAAU,CAACghB,EAAEj6C,CAAC,CAACgV,GAAG,IAAIxV,IAAI,IAAIlL,EAAE,KAAK,CAACu4C,MAAMrtC,EAAEstC,IAAIx4C,EAAE,MAAM0gB,EAAE,IAAI,CAACA,EAAEA,GAAG,CAAC63B,MAAM,EAAEC,IAAI,EAAE,MAAM93B,EAAE,KAA+C,IAA1Ck9B,GAAG,CAACxF,YAAY34C,EAAE44C,eAAe33B,GAAGrV,IAAG,EAAOypD,GAAEp1D,EAAE,OAAOo1D,IAAG,GAAOr1D,GAAJC,EAAEo1D,IAAMhuB,MAAM,KAAoB,KAAfpnC,EAAEqzD,eAAoB,OAAOtzD,EAAEA,EAAE+mC,OAAO9mC,EAAEo1D,GAAEr1D,OAAO,KAAK,OAAOq1D,IAAG,CAACp1D,EAAEo1D,GAAE,IAAI,IAAInjD,EAAEjS,EAAE6mC,UAAU,GAAG,KAAa,KAAR7mC,EAAEgD,OAAY,OAAOhD,EAAEs8B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAOrqB,EAAE,CAAC,IAAInO,EAAEmO,EAAEgxC,cAAcpG,EAAE5qC,EAAE+0B,cAAc90B,EAAElS,EAAEulC,UAAU35B,EAAEsG,EAAE21C,wBAAwB7nD,EAAEsiD,cAActiD,EAAEy5B,KAAK31B,EAAEw/C,GAAGtjD,EAAEy5B,KAAK31B,GAAG+4C,GAAG3qC,EAAEmlD,oCAAoCzrD,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI8B,EAAE1N,EAAEulC,UAAU6G,cAAc,IAAI1+B,EAAE6yB,SAAS7yB,EAAE+xB,YAAY,GAAG,IAAI/xB,EAAE6yB,UAAU7yB,EAAEkrC,iBAAiBlrC,EAAEuyB,YAAYvyB,EAAEkrC,iBAAiB,MAAyC,QAAQ,MAAM1yC,MAAMgyB,EAAE,MAAO,CAAC,MAAM4kB,GAAG16B,GAAEpiB,EAAEA,EAAE8mC,OAAOgW,EAAE,CAAa,GAAG,QAAf/8C,EAAEC,EAAEqnC,SAAoB,CAACtnC,EAAE+mC,OAAO9mC,EAAE8mC,OAAOsuB,GAAEr1D,EAAE,KAAK,CAACq1D,GAAEp1D,EAAE8mC,MAAM,CAAC70B,EAAEsjD,GAAGA,IAAG,CAAW,CAwCldmF,CAAG36D,EAAEihB,GAAG21C,GAAG31C,EAAEjhB,GAAG04C,GAAGyF,IAAIvyC,KAAKsyC,GAAGC,GAAGD,GAAG,KAAKl+C,EAAEunC,QAAQtmB,EAAEi2C,GAAGj2C,EAAEjhB,EAAE8c,GAAGkrB,KAAK8d,GAAEr6C,EAAE++B,GAAEpR,EAAEw+B,GAAG5qB,WAAW7T,CAAC,MAAMn5B,EAAEunC,QAAQtmB,EAAsF,GAApFq3C,KAAKA,IAAG,EAAGC,GAAGv4D,EAAEw4D,GAAG17C,GAAGqc,EAAEn5B,EAAE4pC,aAAa,IAAIzQ,IAAIi3B,GAAG,MAjOmJ,SAAYpwD,GAAG,GAAGipC,IAAI,oBAAoBA,GAAG2xB,kBAAkB,IAAI3xB,GAAG2xB,kBAAkB5xB,GAAGhpC,OAAE,EAAO,OAAuB,IAAhBA,EAAEunC,QAAQtkC,OAAW,CAAC,MAAMhD,GAAG,CAAC,CAiOxR46D,CAAG55C,EAAEukB,WAAaszB,GAAG94D,EAAEkoC,MAAQ,OAAOjoC,EAAE,IAAI0L,EAAE3L,EAAE86D,mBAAmB75C,EAAE,EAAEA,EAAEhhB,EAAEK,OAAO2gB,IAAInE,EAAE7c,EAAEghB,GAAGtV,EAAEmR,EAAEzO,MAAM,CAACgiD,eAAevzC,EAAE1W,MAAMopD,OAAO1yC,EAAE0yC,SAAS,GAAGO,GAAG,MAAMA,IAAG,EAAG/vD,EAAEgwD,GAAGA,GAAG,KAAKhwD,EAAE,KAAQ,EAAHw4D,KAAO,IAAIx4D,EAAEu8B,KAAKi9B,KAAKrgC,EAAEn5B,EAAE4pC,aAAa,KAAO,EAAFzQ,GAAKn5B,IAAI04D,GAAGD,MAAMA,GAAG,EAAEC,GAAG14D,GAAGy4D,GAAG,EAAEtX,IAAgB,CAFxF4Z,CAAG/6D,EAAEC,EAAEghB,EAAEtV,EAAE,CAAC,QAAQisD,GAAG5qB,WAAWlwB,EAAE0tB,GAAE7+B,CAAC,CAAC,OAAO,IAAI,CAGhc,SAAS6tD,KAAK,GAAG,OAAOjB,GAAG,CAAC,IAAIv4D,EAAEyqC,GAAG+tB,IAAIv4D,EAAE23D,GAAG5qB,WAAW/rB,EAAEupB,GAAE,IAAmC,GAA/BotB,GAAG5qB,WAAW,KAAKxC,GAAE,GAAGxqC,EAAE,GAAGA,EAAK,OAAOu4D,GAAG,IAAI5sD,GAAE,MAAO,CAAmB,GAAlB3L,EAAEu4D,GAAGA,GAAG,KAAKC,GAAG,EAAK,KAAO,EAAF1S,IAAK,MAAM3/C,MAAMgyB,EAAE,MAAM,IAAIrb,EAAEgpC,GAAO,IAALA,IAAG,EAAMuP,GAAEr1D,EAAEunC,QAAQ,OAAO8tB,IAAG,CAAC,IAAIl8B,EAAEk8B,GAAEj8B,EAAED,EAAEkO,MAAM,GAAG,KAAa,GAARguB,GAAEpyD,OAAU,CAAC,IAAIwI,EAAE0tB,EAAEqpB,UAAU,GAAG,OAAO/2C,EAAE,CAAC,IAAI,IAAIlL,EAAE,EAAEA,EAAEkL,EAAEnL,OAAOC,IAAI,CAAC,IAAIwe,EAAEtT,EAAElL,GAAG,IAAI80D,GAAEt2C,EAAE,OAAOs2C,IAAG,CAAC,IAAIxyD,EAAEwyD,GAAE,OAAOxyD,EAAE05B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGk5B,GAAG,EAAE5yD,EAAEs2B,GAAG,IAAI+sB,EAAErjD,EAAEwkC,MAAM,GAAG,OAAO6e,EAAEA,EAAEnf,OAAOlkC,EAAEwyD,GAAEnP,OAAO,KAAK,OAAOmP,IAAG,CAAK,IAAIlP,GAARtjD,EAAEwyD,IAAU/tB,QAAQr7B,EAAEpJ,EAAEkkC,OAAa,GAAN6uB,GAAG/yD,GAAMA,IACnfkc,EAAE,CAACs2C,GAAE,KAAK,KAAK,CAAC,GAAG,OAAOlP,EAAE,CAACA,EAAEpf,OAAO96B,EAAEopD,GAAElP,EAAE,KAAK,CAACkP,GAAEppD,CAAC,CAAC,CAAC,CAAC,IAAIiG,EAAEinB,EAAE2N,UAAU,GAAG,OAAO50B,EAAE,CAAC,IAAInO,EAAEmO,EAAEm1B,MAAM,GAAG,OAAOtjC,EAAE,CAACmO,EAAEm1B,MAAM,KAAK,EAAE,CAAC,IAAIyV,EAAE/4C,EAAEujC,QAAQvjC,EAAEujC,QAAQ,KAAKvjC,EAAE+4C,CAAC,OAAO,OAAO/4C,EAAE,CAAC,CAACsxD,GAAEl8B,CAAC,CAAC,CAAC,GAAG,KAAoB,KAAfA,EAAEm6B,eAAoB,OAAOl6B,EAAEA,EAAE2N,OAAO5N,EAAEk8B,GAAEj8B,OAAOn5B,EAAE,KAAK,OAAOo1D,IAAG,CAAK,GAAG,KAAa,MAApBl8B,EAAEk8B,IAAYpyD,OAAY,OAAOk2B,EAAEoD,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGk5B,GAAG,EAAEt8B,EAAEA,EAAE4N,QAAQ,IAAI50B,EAAEgnB,EAAEmO,QAAQ,GAAG,OAAOn1B,EAAE,CAACA,EAAE40B,OAAO5N,EAAE4N,OAAOsuB,GAAEljD,EAAE,MAAMlS,CAAC,CAACo1D,GAAEl8B,EAAE4N,MAAM,CAAC,CAAC,IAAIl7B,EAAE7L,EAAEunC,QAAQ,IAAI8tB,GAAExpD,EAAE,OAAOwpD,IAAG,CAAK,IAAI1nD,GAARyrB,EAAEi8B,IAAUhuB,MAAM,GAAG,KAAoB,KAAfjO,EAAEk6B,eAAoB,OAClf3lD,EAAEA,EAAEo5B,OAAO3N,EAAEi8B,GAAE1nD,OAAO1N,EAAE,IAAIm5B,EAAEvtB,EAAE,OAAOwpD,IAAG,CAAK,GAAG,KAAa,MAApB5pD,EAAE4pD,IAAYpyD,OAAY,IAAI,OAAOwI,EAAE8wB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGm5B,GAAG,EAAEjqD,GAAG,CAAC,MAAM4xC,GAAIh7B,GAAE5W,EAAEA,EAAEs7B,OAAOsW,EAAG,CAAC,GAAG5xC,IAAI2tB,EAAE,CAACi8B,GAAE,KAAK,MAAMp1D,CAAC,CAAC,IAAI88C,EAAEtxC,EAAE67B,QAAQ,GAAG,OAAOyV,EAAE,CAACA,EAAEhW,OAAOt7B,EAAEs7B,OAAOsuB,GAAEtY,EAAE,MAAM98C,CAAC,CAACo1D,GAAE5pD,EAAEs7B,MAAM,CAAC,CAAU,GAAT+e,GAAEhpC,EAAEqkC,KAAQlY,IAAI,oBAAoBA,GAAG+xB,sBAAsB,IAAI/xB,GAAG+xB,sBAAsBhyB,GAAGhpC,EAAE,CAAC,MAAMq9C,GAAI,CAAC1xC,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ6+B,GAAEvpB,EAAE22C,GAAG5qB,WAAW/sC,CAAC,CAAC,CAAC,OAAM,CAAE,CAAC,SAASg7D,GAAGj7D,EAAEC,EAAEghB,GAAyBjhB,EAAE6lD,GAAG7lD,EAAjBC,EAAE6vD,GAAG9vD,EAAfC,EAAEqvD,GAAGruC,EAAEhhB,GAAY,GAAY,GAAGA,EAAEqK,KAAI,OAAOtK,IAAIqqC,GAAGrqC,EAAE,EAAEC,GAAG64D,GAAG94D,EAAEC,GAAG,CACze,SAASoiB,GAAEriB,EAAEC,EAAEghB,GAAG,GAAG,IAAIjhB,EAAEu8B,IAAI0+B,GAAGj7D,EAAEA,EAAEihB,QAAQ,KAAK,OAAOhhB,GAAG,CAAC,GAAG,IAAIA,EAAEs8B,IAAI,CAAC0+B,GAAGh7D,EAAED,EAAEihB,GAAG,KAAK,CAAM,GAAG,IAAIhhB,EAAEs8B,IAAI,CAAC,IAAI5wB,EAAE1L,EAAEulC,UAAU,GAAG,oBAAoBvlC,EAAEy5B,KAAKw2B,0BAA0B,oBAAoBvkD,EAAEwkD,oBAAoB,OAAOC,KAAKA,GAAG/T,IAAI1wC,IAAI,CAAuB1L,EAAE4lD,GAAG5lD,EAAjBD,EAAEiwD,GAAGhwD,EAAfD,EAAEsvD,GAAGruC,EAAEjhB,GAAY,GAAY,GAAGA,EAAEsK,KAAI,OAAOrK,IAAIoqC,GAAGpqC,EAAE,EAAED,GAAG84D,GAAG74D,EAAED,IAAI,KAAK,CAAC,CAACC,EAAEA,EAAE8mC,MAAM,CAAC,CACnV,SAASypB,GAAGxwD,EAAEC,EAAEghB,GAAG,IAAItV,EAAE3L,EAAEuwD,UAAU,OAAO5kD,GAAGA,EAAE+/B,OAAOzrC,GAAGA,EAAEqK,KAAItK,EAAE8pC,aAAa9pC,EAAE6pC,eAAe5oB,EAAEqrC,KAAItsD,IAAI83D,GAAE72C,KAAKA,IAAI,IAAI4zC,IAAG,IAAIA,KAAM,UAAFiD,MAAeA,IAAG,IAAI5vB,KAAI6uB,GAAG4C,GAAG35D,EAAE,GAAGi4D,IAAIh3C,GAAG63C,GAAG94D,EAAEC,EAAE,CAAC,SAASi7D,GAAGl7D,EAAEC,GAAG,IAAIA,IAAI,KAAY,EAAPD,EAAE8iD,MAAQ7iD,EAAE,GAAGA,EAAEwpC,GAAU,KAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAIxoB,EAAE3W,KAAc,QAAVtK,EAAE8kD,GAAG9kD,EAAEC,MAAcoqC,GAAGrqC,EAAEC,EAAEghB,GAAG63C,GAAG94D,EAAEihB,GAAG,CAAC,SAASkyC,GAAGnzD,GAAG,IAAIC,EAAED,EAAEinC,cAAchmB,EAAE,EAAE,OAAOhhB,IAAIghB,EAAEhhB,EAAE2iD,WAAWsY,GAAGl7D,EAAEihB,EAAE,CACjZ,SAASy1C,GAAG12D,EAAEC,GAAG,IAAIghB,EAAE,EAAE,OAAOjhB,EAAEu8B,KAAK,KAAK,GAAG,IAAI5wB,EAAE3L,EAAEwlC,UAAc1oB,EAAE9c,EAAEinC,cAAc,OAAOnqB,IAAImE,EAAEnE,EAAE8lC,WAAW,MAAM,KAAK,GAAGj3C,EAAE3L,EAAEwlC,UAAU,MAAM,QAAQ,MAAMr/B,MAAMgyB,EAAE,MAAO,OAAOxsB,GAAGA,EAAE+/B,OAAOzrC,GAAGi7D,GAAGl7D,EAAEihB,EAAE,CAQqK,SAASq4C,GAAGt5D,EAAEC,GAAG,OAAOynC,GAAG1nC,EAAEC,EAAE,CACjZ,SAASk7D,GAAGn7D,EAAEC,EAAEghB,EAAEtV,GAAG3H,KAAKu4B,IAAIv8B,EAAEgE,KAAK8B,IAAImb,EAAEjd,KAAKsjC,QAAQtjC,KAAKqjC,MAAMrjC,KAAK+iC,OAAO/iC,KAAKwhC,UAAUxhC,KAAK01B,KAAK11B,KAAKu+C,YAAY,KAAKv+C,KAAKovB,MAAM,EAAEpvB,KAAKmkD,IAAI,KAAKnkD,KAAK0+C,aAAaziD,EAAE+D,KAAKmgD,aAAangD,KAAKijC,cAAcjjC,KAAKihD,YAAYjhD,KAAKk/C,cAAc,KAAKl/C,KAAK8+C,KAAKn3C,EAAE3H,KAAKsvD,aAAatvD,KAAKf,MAAM,EAAEe,KAAKw+C,UAAU,KAAKx+C,KAAKigD,WAAWjgD,KAAKqgD,MAAM,EAAErgD,KAAK8iC,UAAU,IAAI,CAAC,SAASwb,GAAGtiD,EAAEC,EAAEghB,EAAEtV,GAAG,OAAO,IAAIwvD,GAAGn7D,EAAEC,EAAEghB,EAAEtV,EAAE,CAAC,SAASslD,GAAGjxD,GAAiB,UAAdA,EAAEA,EAAEL,aAAuBK,EAAEo7D,iBAAiB,CAEpd,SAAS5S,GAAGxoD,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAE8mC,UACuB,OADb,OAAO7lB,IAAGA,EAAEqhC,GAAGtiD,EAAEu8B,IAAIt8B,EAAED,EAAE8F,IAAI9F,EAAE8iD,OAAQP,YAAYviD,EAAEuiD,YAAYthC,EAAEyY,KAAK15B,EAAE05B,KAAKzY,EAAEukB,UAAUxlC,EAAEwlC,UAAUvkB,EAAE6lB,UAAU9mC,EAAEA,EAAE8mC,UAAU7lB,IAAIA,EAAEyhC,aAAaziD,EAAEghB,EAAEyY,KAAK15B,EAAE05B,KAAKzY,EAAEhe,MAAM,EAAEge,EAAEqyC,aAAa,EAAEryC,EAAEuhC,UAAU,MAAMvhC,EAAEhe,MAAc,SAARjD,EAAEiD,MAAege,EAAEgjC,WAAWjkD,EAAEikD,WAAWhjC,EAAEojC,MAAMrkD,EAAEqkD,MAAMpjC,EAAEomB,MAAMrnC,EAAEqnC,MAAMpmB,EAAEiiC,cAAcljD,EAAEkjD,cAAcjiC,EAAEgmB,cAAcjnC,EAAEinC,cAAchmB,EAAEgkC,YAAYjlD,EAAEilD,YAAYhlD,EAAED,EAAEmkD,aAAaljC,EAAEkjC,aAAa,OAAOlkD,EAAE,KAAK,CAACokD,MAAMpkD,EAAEokD,MAAMD,aAAankD,EAAEmkD,cAC/enjC,EAAEqmB,QAAQtnC,EAAEsnC,QAAQrmB,EAAEmS,MAAMpzB,EAAEozB,MAAMnS,EAAEknC,IAAInoD,EAAEmoD,IAAWlnC,CAAC,CACxD,SAASynC,GAAG1oD,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,GAAG,IAAIC,EAAE,EAAM,GAAJztB,EAAE3L,EAAK,oBAAoBA,EAAEixD,GAAGjxD,KAAKo5B,EAAE,QAAQ,GAAG,kBAAkBp5B,EAAEo5B,EAAE,OAAOp5B,EAAE,OAAOA,GAAG,KAAK46B,EAAG,OAAOiuB,GAAG5nC,EAAEqe,SAASxiB,EAAEqc,EAAEl5B,GAAG,KAAK46B,EAAGzB,EAAE,EAAEtc,GAAG,EAAE,MAAM,KAAKge,EAAG,OAAO96B,EAAEsiD,GAAG,GAAGrhC,EAAEhhB,EAAI,EAAF6c,IAAOylC,YAAYznB,EAAG96B,EAAEqkD,MAAMlrB,EAAEn5B,EAAE,KAAKk7B,EAAG,OAAOl7B,EAAEsiD,GAAG,GAAGrhC,EAAEhhB,EAAE6c,IAAKylC,YAAYrnB,EAAGl7B,EAAEqkD,MAAMlrB,EAAEn5B,EAAE,KAAKm7B,EAAG,OAAOn7B,EAAEsiD,GAAG,GAAGrhC,EAAEhhB,EAAE6c,IAAKylC,YAAYpnB,EAAGn7B,EAAEqkD,MAAMlrB,EAAEn5B,EAAE,KAAKs7B,EAAG,OAAOu3B,GAAG5xC,EAAEnE,EAAEqc,EAAEl5B,GAAG,QAAQ,GAAG,kBAAkBD,GAAG,OAAOA,EAAE,OAAOA,EAAE08B,UAAU,KAAK3B,EAAG3B,EAAE,GAAG,MAAMp5B,EAAE,KAAKg7B,EAAG5B,EAAE,EAAE,MAAMp5B,EAAE,KAAKi7B,EAAG7B,EAAE,GACpf,MAAMp5B,EAAE,KAAKo7B,EAAGhC,EAAE,GAAG,MAAMp5B,EAAE,KAAKq7B,EAAGjC,EAAE,GAAGztB,EAAE,KAAK,MAAM3L,EAAE,MAAMmG,MAAMgyB,EAAE,IAAI,MAAMn4B,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAEqiD,GAAGlpB,EAAEnY,EAAEhhB,EAAE6c,IAAKylC,YAAYviD,EAAEC,EAAEy5B,KAAK/tB,EAAE1L,EAAEokD,MAAMlrB,EAASl5B,CAAC,CAAC,SAAS4oD,GAAG7oD,EAAEC,EAAEghB,EAAEtV,GAA2B,OAAxB3L,EAAEsiD,GAAG,EAAEtiD,EAAE2L,EAAE1L,IAAKokD,MAAMpjC,EAASjhB,CAAC,CAAC,SAAS6yD,GAAG7yD,EAAEC,EAAEghB,EAAEtV,GAAuE,OAApE3L,EAAEsiD,GAAG,GAAGtiD,EAAE2L,EAAE1L,IAAKsiD,YAAYjnB,EAAGt7B,EAAEqkD,MAAMpjC,EAAEjhB,EAAEwlC,UAAU,CAACsxB,UAAS,GAAW92D,CAAC,CAAC,SAASyoD,GAAGzoD,EAAEC,EAAEghB,GAA8B,OAA3BjhB,EAAEsiD,GAAG,EAAEtiD,EAAE,KAAKC,IAAKokD,MAAMpjC,EAASjhB,CAAC,CAC5W,SAAS4oD,GAAG5oD,EAAEC,EAAEghB,GAA8J,OAA3JhhB,EAAEqiD,GAAG,EAAE,OAAOtiD,EAAEs/B,SAASt/B,EAAEs/B,SAAS,GAAGt/B,EAAE8F,IAAI7F,IAAKokD,MAAMpjC,EAAEhhB,EAAEulC,UAAU,CAAC6G,cAAcrsC,EAAEqsC,cAAcgvB,gBAAgB,KAAK1S,eAAe3oD,EAAE2oD,gBAAuB1oD,CAAC,CACtL,SAASq7D,GAAGt7D,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG9Y,KAAKu4B,IAAIt8B,EAAE+D,KAAKqoC,cAAcrsC,EAAEgE,KAAKg2D,aAAah2D,KAAKusD,UAAUvsD,KAAKujC,QAAQvjC,KAAKq3D,gBAAgB,KAAKr3D,KAAKm2D,eAAe,EAAEn2D,KAAK+0D,aAAa/0D,KAAKmuD,eAAenuD,KAAKwgD,QAAQ,KAAKxgD,KAAKm1D,iBAAiB,EAAEn1D,KAAKsmC,WAAWF,GAAG,GAAGpmC,KAAKg1D,gBAAgB5uB,IAAI,GAAGpmC,KAAK+lC,eAAe/lC,KAAKi2D,cAAcj2D,KAAKy2D,iBAAiBz2D,KAAKi1D,aAAaj1D,KAAK8lC,YAAY9lC,KAAK6lC,eAAe7lC,KAAK4lC,aAAa,EAAE5lC,KAAKgmC,cAAcI,GAAG,GAAGpmC,KAAKqrD,iBAAiB1jD,EAAE3H,KAAK82D,mBAAmBh+C,EAAE9Y,KAAKu3D,gCAC/e,IAAI,CAAC,SAASC,GAAGx7D,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,EAAEC,EAAE3tB,EAAElL,GAAgN,OAA7MP,EAAE,IAAIs7D,GAAGt7D,EAAEC,EAAEghB,EAAExV,EAAElL,GAAG,IAAIN,GAAGA,EAAE,GAAE,IAAKk5B,IAAIl5B,GAAG,IAAIA,EAAE,EAAEk5B,EAAEmpB,GAAG,EAAE,KAAK,KAAKriD,GAAGD,EAAEunC,QAAQpO,EAAEA,EAAEqM,UAAUxlC,EAAEm5B,EAAE8N,cAAc,CAAC6S,QAAQnuC,EAAEygC,aAAanrB,EAAEw6C,MAAM,KAAKjK,YAAY,KAAKkK,0BAA0B,MAAM1W,GAAG7rB,GAAUn5B,CAAC,CACzP,SAAS27D,GAAG37D,GAAG,IAAIA,EAAE,OAAO+/C,GAAuB//C,EAAE,CAAC,GAAG6mC,GAA1B7mC,EAAEA,EAAE2mD,mBAA8B3mD,GAAG,IAAIA,EAAEu8B,IAAI,MAAMp2B,MAAMgyB,EAAE,MAAM,IAAIl4B,EAAED,EAAE,EAAE,CAAC,OAAOC,EAAEs8B,KAAK,KAAK,EAAEt8B,EAAEA,EAAEulC,UAAUgf,QAAQ,MAAMxkD,EAAE,KAAK,EAAE,GAAGugD,GAAGtgD,EAAEy5B,MAAM,CAACz5B,EAAEA,EAAEulC,UAAUsb,0CAA0C,MAAM9gD,CAAC,EAAEC,EAAEA,EAAE8mC,MAAM,OAAO,OAAO9mC,GAAG,MAAMkG,MAAMgyB,EAAE,KAAM,CAAC,GAAG,IAAIn4B,EAAEu8B,IAAI,CAAC,IAAItb,EAAEjhB,EAAE05B,KAAK,GAAG6mB,GAAGt/B,GAAG,OAAO0/B,GAAG3gD,EAAEihB,EAAEhhB,EAAE,CAAC,OAAOA,CAAC,CACpW,SAAS27D,GAAG57D,EAAEC,EAAEghB,EAAEtV,EAAEmR,EAAEqc,EAAEC,EAAE3tB,EAAElL,GAAwK,OAArKP,EAAEw7D,GAAGv6C,EAAEtV,GAAE,EAAG3L,EAAE8c,EAAEqc,EAAEC,EAAE3tB,EAAElL,IAAKikD,QAAQmX,GAAG,MAAM16C,EAAEjhB,EAAEunC,SAAsBpO,EAAEssB,GAAhB95C,EAAErB,KAAIwS,EAAE+pC,GAAG5lC,KAAe3hB,cAAS,IAASW,GAAG,OAAOA,EAAEA,EAAE,KAAK4lD,GAAG5kC,EAAEkY,EAAErc,GAAG9c,EAAEunC,QAAQ8c,MAAMvnC,EAAEutB,GAAGrqC,EAAE8c,EAAEnR,GAAGmtD,GAAG94D,EAAE2L,GAAU3L,CAAC,CAAC,SAAS67D,GAAG77D,EAAEC,EAAEghB,EAAEtV,GAAG,IAAImR,EAAE7c,EAAEsnC,QAAQpO,EAAE7uB,KAAI8uB,EAAEytB,GAAG/pC,GAAsL,OAAnLmE,EAAE06C,GAAG16C,GAAG,OAAOhhB,EAAEukD,QAAQvkD,EAAEukD,QAAQvjC,EAAEhhB,EAAEkyD,eAAelxC,GAAEhhB,EAAEwlD,GAAGtsB,EAAEC,IAAKwsB,QAAQ,CAAC9L,QAAQ95C,GAAuB,QAApB2L,OAAE,IAASA,EAAE,KAAKA,KAAa1L,EAAEX,SAASqM,GAAe,QAAZ3L,EAAE6lD,GAAG/oC,EAAE7c,EAAEm5B,MAAc0tB,GAAG9mD,EAAE8c,EAAEsc,EAAED,GAAG4sB,GAAG/lD,EAAE8c,EAAEsc,IAAWA,CAAC,CAC3b,SAAS0iC,GAAG97D,GAAe,OAAZA,EAAEA,EAAEunC,SAAcF,OAAyBrnC,EAAEqnC,MAAM9K,IAAoDv8B,EAAEqnC,MAAM7B,WAAhF,IAA0F,CAAC,SAASu2B,GAAG/7D,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAEinC,gBAA2B,OAAOjnC,EAAEknC,WAAW,CAAC,IAAIjmB,EAAEjhB,EAAE4iD,UAAU5iD,EAAE4iD,UAAU,IAAI3hC,GAAGA,EAAEhhB,EAAEghB,EAAEhhB,CAAC,CAAC,CAAC,SAAS+7D,GAAGh8D,EAAEC,GAAG87D,GAAG/7D,EAAEC,IAAID,EAAEA,EAAE8mC,YAAYi1B,GAAG/7D,EAAEC,EAAE,CAnB7Su3D,GAAG,SAASx3D,EAAEC,EAAEghB,GAAG,GAAG,OAAOjhB,EAAE,GAAGA,EAAEkjD,gBAAgBjjD,EAAEyiD,cAAczC,GAAG1Y,QAAQ+c,IAAG,MAAO,CAAC,GAAG,KAAKtkD,EAAEqkD,MAAMpjC,IAAI,KAAa,IAARhhB,EAAEgD,OAAW,OAAOqhD,IAAG,EAzE1I,SAAYtkD,EAAEC,EAAEghB,GAAG,OAAOhhB,EAAEs8B,KAAK,KAAK,EAAE21B,GAAGjyD,GAAGmjD,KAAK,MAAM,KAAK,EAAEqG,GAAGxpD,GAAG,MAAM,KAAK,EAAEsgD,GAAGtgD,EAAEy5B,OAAOmnB,GAAG5gD,GAAG,MAAM,KAAK,EAAEqpD,GAAGrpD,EAAEA,EAAEulC,UAAU6G,eAAe,MAAM,KAAK,GAAG,IAAI1gC,EAAE1L,EAAEy5B,KAAKiD,SAAS7f,EAAE7c,EAAEijD,cAAc70C,MAAMyxC,GAAE2D,GAAG93C,EAAEo4C,eAAep4C,EAAEo4C,cAAcjnC,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBnR,EAAE1L,EAAEgnC,eAA2B,OAAG,OAAOt7B,EAAEu7B,YAAkB4Y,GAAE/zC,GAAY,EAAVA,GAAEw7B,SAAWtnC,EAAEgD,OAAO,IAAI,MAAQ,KAAKge,EAAEhhB,EAAEonC,MAAM4c,YAAmB0O,GAAG3yD,EAAEC,EAAEghB,IAAG6+B,GAAE/zC,GAAY,EAAVA,GAAEw7B,SAA8B,QAAnBvnC,EAAE+wD,GAAG/wD,EAAEC,EAAEghB,IAAmBjhB,EAAEsnC,QAAQ,MAAKwY,GAAE/zC,GAAY,EAAVA,GAAEw7B,SAAW,MAAM,KAAK,GAC7d,GADge57B,EAAE,KAAKsV,EACrfhhB,EAAEgkD,YAAe,KAAa,IAARjkD,EAAEiD,OAAW,CAAC,GAAG0I,EAAE,OAAOooD,GAAG/zD,EAAEC,EAAEghB,GAAGhhB,EAAEgD,OAAO,GAAG,CAA6F,GAA1E,QAAlB6Z,EAAE7c,EAAEgnC,iBAAyBnqB,EAAE42C,UAAU,KAAK52C,EAAE+2C,KAAK,KAAK/2C,EAAE0vC,WAAW,MAAM1M,GAAE/zC,GAAEA,GAAEw7B,SAAY57B,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO1L,EAAEokD,MAAM,EAAEgN,GAAGrxD,EAAEC,EAAEghB,GAAG,OAAO8vC,GAAG/wD,EAAEC,EAAEghB,EAAE,CAwE7Gg7C,CAAGj8D,EAAEC,EAAEghB,GAAGqjC,GAAG,KAAa,OAARtkD,EAAEiD,MAAmB,MAAMqhD,IAAG,EAAGnC,IAAG,KAAa,QAARliD,EAAEgD,QAAgB6+C,GAAG7hD,EAAEshD,GAAGthD,EAAEmzB,OAAiB,OAAVnzB,EAAEokD,MAAM,EAASpkD,EAAEs8B,KAAK,KAAK,EAAE,IAAI5wB,EAAE1L,EAAEy5B,KAAKm4B,GAAG7xD,EAAEC,GAAGD,EAAEC,EAAEyiD,aAAa,IAAI5lC,EAAEqjC,GAAGlgD,EAAE+/C,GAAEzY,SAAS2c,GAAGjkD,EAAEghB,GAAGnE,EAAE+tC,GAAG,KAAK5qD,EAAE0L,EAAE3L,EAAE8c,EAAEmE,GAAG,IAAIkY,EAAE+xB,KACvI,OAD4IjrD,EAAEgD,OAAO,EAAE,kBAAkB6Z,GAAG,OAAOA,GAAG,oBAAoBA,EAAE0f,aAAQ,IAAS1f,EAAE4f,UAAUz8B,EAAEs8B,IAAI,EAAEt8B,EAAEgnC,cAAc,KAAKhnC,EAAEglD,YAC1e,KAAK1E,GAAG50C,IAAIwtB,GAAE,EAAG0nB,GAAG5gD,IAAIk5B,GAAE,EAAGl5B,EAAEgnC,cAAc,OAAOnqB,EAAEwqC,YAAO,IAASxqC,EAAEwqC,MAAMxqC,EAAEwqC,MAAM,KAAKtC,GAAG/kD,GAAG6c,EAAEyqC,QAAQd,GAAGxmD,EAAEulC,UAAU1oB,EAAEA,EAAE6pC,gBAAgB1mD,EAAE0nD,GAAG1nD,EAAE0L,EAAE3L,EAAEihB,GAAGhhB,EAAEgyD,GAAG,KAAKhyD,EAAE0L,GAAE,EAAGwtB,EAAElY,KAAKhhB,EAAEs8B,IAAI,EAAE4lB,IAAGhpB,GAAG4oB,GAAG9hD,GAAG4wD,GAAG,KAAK5wD,EAAE6c,EAAEmE,GAAGhhB,EAAEA,EAAEonC,OAAcpnC,EAAE,KAAK,GAAG0L,EAAE1L,EAAEsiD,YAAYviD,EAAE,CAAqF,OAApF6xD,GAAG7xD,EAAEC,GAAGD,EAAEC,EAAEyiD,aAAuB/2C,GAAVmR,EAAEnR,EAAEkxB,OAAUlxB,EAAEixB,UAAU38B,EAAEy5B,KAAK/tB,EAAEmR,EAAE7c,EAAEs8B,IAQtU,SAAYv8B,GAAG,GAAG,oBAAoBA,EAAE,OAAOixD,GAAGjxD,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAE08B,YAAgBzB,EAAG,OAAO,GAAG,GAAGj7B,IAAIo7B,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAR2L8gC,CAAGvwD,GAAG3L,EAAEujD,GAAG53C,EAAE3L,GAAU8c,GAAG,KAAK,EAAE7c,EAAEmxD,GAAG,KAAKnxD,EAAE0L,EAAE3L,EAAEihB,GAAG,MAAMjhB,EAAE,KAAK,EAAEC,EAAE2xD,GAAG,KAAK3xD,EAAE0L,EAAE3L,EAAEihB,GAAG,MAAMjhB,EAAE,KAAK,GAAGC,EAAE6wD,GAAG,KAAK7wD,EAAE0L,EAAE3L,EAAEihB,GAAG,MAAMjhB,EAAE,KAAK,GAAGC,EAAE+wD,GAAG,KAAK/wD,EAAE0L,EAAE43C,GAAG53C,EAAE+tB,KAAK15B,GAAGihB,GAAG,MAAMjhB,EAAE,MAAMmG,MAAMgyB,EAAE,IACvgBxsB,EAAE,IAAK,CAAC,OAAO1L,EAAE,KAAK,EAAE,OAAO0L,EAAE1L,EAAEy5B,KAAK5c,EAAE7c,EAAEyiD,aAA2C0O,GAAGpxD,EAAEC,EAAE0L,EAArCmR,EAAE7c,EAAEsiD,cAAc52C,EAAEmR,EAAEymC,GAAG53C,EAAEmR,GAAcmE,GAAG,KAAK,EAAE,OAAOtV,EAAE1L,EAAEy5B,KAAK5c,EAAE7c,EAAEyiD,aAA2CkP,GAAG5xD,EAAEC,EAAE0L,EAArCmR,EAAE7c,EAAEsiD,cAAc52C,EAAEmR,EAAEymC,GAAG53C,EAAEmR,GAAcmE,GAAG,KAAK,EAAEjhB,EAAE,CAAO,GAANkyD,GAAGjyD,GAAM,OAAOD,EAAE,MAAMmG,MAAMgyB,EAAE,MAAMxsB,EAAE1L,EAAEyiD,aAA+B5lC,GAAlBqc,EAAEl5B,EAAEgnC,eAAkB6S,QAAQ0L,GAAGxlD,EAAEC,GAAGgmD,GAAGhmD,EAAE0L,EAAE,KAAKsV,GAAG,IAAImY,EAAEn5B,EAAEgnC,cAA0B,GAAZt7B,EAAEytB,EAAE0gB,QAAW3gB,EAAEiT,aAAY,CAAC,GAAGjT,EAAE,CAAC2gB,QAAQnuC,EAAEygC,cAAa,EAAGqvB,MAAMriC,EAAEqiC,MAAMC,0BAA0BtiC,EAAEsiC,0BAA0BlK,YAAYp4B,EAAEo4B,aAAavxD,EAAEglD,YAAYC,UAChf/rB,EAAEl5B,EAAEgnC,cAAc9N,EAAU,IAARl5B,EAAEgD,MAAU,CAAuBhD,EAAEmyD,GAAGpyD,EAAEC,EAAE0L,EAAEsV,EAAjCnE,EAAEwyC,GAAGnpD,MAAMgyB,EAAE,MAAMl4B,IAAmB,MAAMD,CAAC,CAAM,GAAG2L,IAAImR,EAAE,CAAuB7c,EAAEmyD,GAAGpyD,EAAEC,EAAE0L,EAAEsV,EAAjCnE,EAAEwyC,GAAGnpD,MAAMgyB,EAAE,MAAMl4B,IAAmB,MAAMD,CAAC,CAAM,IAAIkiD,GAAG/C,GAAGl/C,EAAEulC,UAAU6G,cAAcpM,YAAYgiB,GAAGhiD,EAAEkiD,IAAE,EAAGC,GAAG,KAAKnhC,EAAE+nC,GAAG/oD,EAAE,KAAK0L,EAAEsV,GAAGhhB,EAAEonC,MAAMpmB,EAAEA,GAAGA,EAAEhe,OAAe,EAATge,EAAEhe,MAAS,KAAKge,EAAEA,EAAEqmB,OAAQ,KAAI,CAAM,GAAL8b,KAAQz3C,IAAImR,EAAE,CAAC7c,EAAE8wD,GAAG/wD,EAAEC,EAAEghB,GAAG,MAAMjhB,CAAC,CAAC6wD,GAAG7wD,EAAEC,EAAE0L,EAAEsV,EAAE,CAAChhB,EAAEA,EAAEonC,KAAK,CAAC,OAAOpnC,EAAE,KAAK,EAAE,OAAOwpD,GAAGxpD,GAAG,OAAOD,GAAG+iD,GAAG9iD,GAAG0L,EAAE1L,EAAEy5B,KAAK5c,EAAE7c,EAAEyiD,aAAavpB,EAAE,OAAOn5B,EAAEA,EAAEkjD,cAAc,KAAK9pB,EAAEtc,EAAEwiB,SAAS8e,GAAGzyC,EAAEmR,GAAGsc,EAAE,KAAK,OAAOD,GAAGilB,GAAGzyC,EAAEwtB,KAAKl5B,EAAEgD,OAAO,IACnf0uD,GAAG3xD,EAAEC,GAAG4wD,GAAG7wD,EAAEC,EAAEm5B,EAAEnY,GAAGhhB,EAAEonC,MAAM,KAAK,EAAE,OAAO,OAAOrnC,GAAG+iD,GAAG9iD,GAAG,KAAK,KAAK,GAAG,OAAO0yD,GAAG3yD,EAAEC,EAAEghB,GAAG,KAAK,EAAE,OAAOqoC,GAAGrpD,EAAEA,EAAEulC,UAAU6G,eAAe1gC,EAAE1L,EAAEyiD,aAAa,OAAO1iD,EAAEC,EAAEonC,MAAM0hB,GAAG9oD,EAAE,KAAK0L,EAAEsV,GAAG4vC,GAAG7wD,EAAEC,EAAE0L,EAAEsV,GAAGhhB,EAAEonC,MAAM,KAAK,GAAG,OAAO17B,EAAE1L,EAAEy5B,KAAK5c,EAAE7c,EAAEyiD,aAA2CoO,GAAG9wD,EAAEC,EAAE0L,EAArCmR,EAAE7c,EAAEsiD,cAAc52C,EAAEmR,EAAEymC,GAAG53C,EAAEmR,GAAcmE,GAAG,KAAK,EAAE,OAAO4vC,GAAG7wD,EAAEC,EAAEA,EAAEyiD,aAAazhC,GAAGhhB,EAAEonC,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAOwpB,GAAG7wD,EAAEC,EAAEA,EAAEyiD,aAAapjB,SAASre,GAAGhhB,EAAEonC,MAAM,KAAK,GAAGrnC,EAAE,CACxZ,GADyZ2L,EAAE1L,EAAEy5B,KAAKiD,SAAS7f,EAAE7c,EAAEyiD,aAAavpB,EAAEl5B,EAAEijD,cAClf9pB,EAAEtc,EAAEzO,MAAMyxC,GAAE2D,GAAG93C,EAAEo4C,eAAep4C,EAAEo4C,cAAc3qB,EAAK,OAAOD,EAAE,GAAGwe,GAAGxe,EAAE9qB,MAAM+qB,IAAI,GAAGD,EAAEmG,WAAWxiB,EAAEwiB,WAAW2gB,GAAG1Y,QAAQ,CAACtnC,EAAE8wD,GAAG/wD,EAAEC,EAAEghB,GAAG,MAAMjhB,CAAC,OAAO,IAAc,QAAVm5B,EAAEl5B,EAAEonC,SAAiBlO,EAAE4N,OAAO9mC,GAAG,OAAOk5B,GAAG,CAAC,IAAI1tB,EAAE0tB,EAAEgrB,aAAa,GAAG,OAAO14C,EAAE,CAAC2tB,EAAED,EAAEkO,MAAM,IAAI,IAAI9mC,EAAEkL,EAAE24C,aAAa,OAAO7jD,GAAG,CAAC,GAAGA,EAAEikD,UAAU74C,EAAE,CAAC,GAAG,IAAIwtB,EAAEoD,IAAI,EAACh8B,EAAEklD,IAAI,EAAExkC,GAAGA,IAAKsb,IAAI,EAAE,IAAIxd,EAAEoa,EAAE8rB,YAAY,GAAG,OAAOlmC,EAAE,CAAY,IAAIlc,GAAfkc,EAAEA,EAAEsmC,QAAeC,QAAQ,OAAOziD,EAAEtC,EAAE+b,KAAK/b,GAAGA,EAAE+b,KAAKzZ,EAAEyZ,KAAKzZ,EAAEyZ,KAAK/b,GAAGwe,EAAEumC,QAAQ/kD,CAAC,CAAC,CAAC44B,EAAEkrB,OAAOpjC,EAAgB,QAAd1gB,EAAE44B,EAAE2N,aAAqBvmC,EAAE8jD,OAAOpjC,GAAG+iC,GAAG7qB,EAAE4N,OAClf9lB,EAAEhhB,GAAGwL,EAAE44C,OAAOpjC,EAAE,KAAK,CAAC1gB,EAAEA,EAAE+b,IAAI,CAAC,MAAM,GAAG,KAAK6c,EAAEoD,IAAInD,EAAED,EAAEO,OAAOz5B,EAAEy5B,KAAK,KAAKP,EAAEkO,WAAW,GAAG,KAAKlO,EAAEoD,IAAI,CAAY,GAAG,QAAdnD,EAAED,EAAE4N,QAAmB,MAAM5gC,MAAMgyB,EAAE,MAAMiB,EAAEirB,OAAOpjC,EAAgB,QAAdxV,EAAE2tB,EAAE0N,aAAqBr7B,EAAE44C,OAAOpjC,GAAG+iC,GAAG5qB,EAAEnY,EAAEhhB,GAAGm5B,EAAED,EAAEmO,OAAO,MAAMlO,EAAED,EAAEkO,MAAM,GAAG,OAAOjO,EAAEA,EAAE2N,OAAO5N,OAAO,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAGA,IAAIn5B,EAAE,CAACm5B,EAAE,KAAK,KAAK,CAAa,GAAG,QAAfD,EAAEC,EAAEkO,SAAoB,CAACnO,EAAE4N,OAAO3N,EAAE2N,OAAO3N,EAAED,EAAE,KAAK,CAACC,EAAEA,EAAE2N,MAAM,CAAC5N,EAAEC,CAAC,CAACy3B,GAAG7wD,EAAEC,EAAE6c,EAAEwiB,SAASre,GAAGhhB,EAAEA,EAAEonC,KAAK,CAAC,OAAOpnC,EAAE,KAAK,EAAE,OAAO6c,EAAE7c,EAAEy5B,KAAK/tB,EAAE1L,EAAEyiD,aAAapjB,SAAS4kB,GAAGjkD,EAAEghB,GAAWtV,EAAEA,EAAVmR,EAAEynC,GAAGznC,IAAU7c,EAAEgD,OAAO,EAAE4tD,GAAG7wD,EAAEC,EAAE0L,EAAEsV,GACpfhhB,EAAEonC,MAAM,KAAK,GAAG,OAAgBvqB,EAAEymC,GAAX53C,EAAE1L,EAAEy5B,KAAYz5B,EAAEyiD,cAA6BsO,GAAGhxD,EAAEC,EAAE0L,EAAtBmR,EAAEymC,GAAG53C,EAAE+tB,KAAK5c,GAAcmE,GAAG,KAAK,GAAG,OAAOkwC,GAAGnxD,EAAEC,EAAEA,EAAEy5B,KAAKz5B,EAAEyiD,aAAazhC,GAAG,KAAK,GAAG,OAAOtV,EAAE1L,EAAEy5B,KAAK5c,EAAE7c,EAAEyiD,aAAa5lC,EAAE7c,EAAEsiD,cAAc52C,EAAEmR,EAAEymC,GAAG53C,EAAEmR,GAAG+0C,GAAG7xD,EAAEC,GAAGA,EAAEs8B,IAAI,EAAEgkB,GAAG50C,IAAI3L,GAAE,EAAG6gD,GAAG5gD,IAAID,GAAE,EAAGkkD,GAAGjkD,EAAEghB,GAAGmmC,GAAGnnD,EAAE0L,EAAEmR,GAAG6qC,GAAG1nD,EAAE0L,EAAEmR,EAAEmE,GAAGgxC,GAAG,KAAKhyD,EAAE0L,GAAE,EAAG3L,EAAEihB,GAAG,KAAK,GAAG,OAAO8yC,GAAG/zD,EAAEC,EAAEghB,GAAG,KAAK,GAAG,OAAOowC,GAAGrxD,EAAEC,EAAEghB,GAAG,MAAM9a,MAAMgyB,EAAE,IAAIl4B,EAAEs8B,KAAM,EAYxC,IAAI4/B,GAAG,oBAAoBC,YAAYA,YAAY,SAASp8D,GAAGyF,QAAQkqD,MAAM3vD,EAAE,EAAE,SAASq8D,GAAGr8D,GAAGgE,KAAKs4D,cAAct8D,CAAC,CACjI,SAASu8D,GAAGv8D,GAAGgE,KAAKs4D,cAAct8D,CAAC,CAC5J,SAASw8D,GAAGx8D,GAAG,SAASA,GAAG,IAAIA,EAAEwgC,UAAU,IAAIxgC,EAAEwgC,UAAU,KAAKxgC,EAAEwgC,SAAS,CAAC,SAASi8B,GAAGz8D,GAAG,SAASA,GAAG,IAAIA,EAAEwgC,UAAU,IAAIxgC,EAAEwgC,UAAU,KAAKxgC,EAAEwgC,WAAW,IAAIxgC,EAAEwgC,UAAU,iCAAiCxgC,EAAEygC,WAAW,CAAC,SAASi8B,KAAK,CAExa,SAASC,GAAG38D,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,IAAIqc,EAAElY,EAAEg1C,oBAAoB,GAAG98B,EAAE,CAAC,IAAIC,EAAED,EAAE,GAAG,oBAAoBrc,EAAE,CAAC,IAAIrR,EAAEqR,EAAEA,EAAE,WAAW,IAAI9c,EAAE87D,GAAG1iC,GAAG3tB,EAAE5L,KAAKG,EAAE,CAAC,CAAC67D,GAAG57D,EAAEm5B,EAAEp5B,EAAE8c,EAAE,MAAMsc,EADxJ,SAAYp5B,EAAEC,EAAEghB,EAAEtV,EAAEmR,GAAG,GAAGA,EAAE,CAAC,GAAG,oBAAoBnR,EAAE,CAAC,IAAIwtB,EAAExtB,EAAEA,EAAE,WAAW,IAAI3L,EAAE87D,GAAG1iC,GAAGD,EAAEt5B,KAAKG,EAAE,CAAC,CAAC,IAAIo5B,EAAEwiC,GAAG37D,EAAE0L,EAAE3L,EAAE,EAAE,MAAK,EAAG,EAAG,GAAG08D,IAAmF,OAA/E18D,EAAEi2D,oBAAoB78B,EAAEp5B,EAAEi9C,IAAI7jB,EAAEmO,QAAQmV,GAAG,IAAI18C,EAAEwgC,SAASxgC,EAAEklC,WAAWllC,GAAGq6D,KAAYjhC,CAAC,CAAC,KAAKtc,EAAE9c,EAAEugC,WAAWvgC,EAAEkgC,YAAYpjB,GAAG,GAAG,oBAAoBnR,EAAE,CAAC,IAAIF,EAAEE,EAAEA,EAAE,WAAW,IAAI3L,EAAE87D,GAAGv7D,GAAGkL,EAAE5L,KAAKG,EAAE,CAAC,CAAC,IAAIO,EAAEi7D,GAAGx7D,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAG08D,IAA0G,OAAtG18D,EAAEi2D,oBAAoB11D,EAAEP,EAAEi9C,IAAI18C,EAAEgnC,QAAQmV,GAAG,IAAI18C,EAAEwgC,SAASxgC,EAAEklC,WAAWllC,GAAGq6D,IAAG,WAAWwB,GAAG57D,EAAEM,EAAE0gB,EAAEtV,EAAE,IAAUpL,CAAC,CACpUq8D,CAAG37C,EAAEhhB,EAAED,EAAE8c,EAAEnR,GAAG,OAAOmwD,GAAG1iC,EAAE,CAHpLmjC,GAAG58D,UAAU68B,OAAO6/B,GAAG18D,UAAU68B,OAAO,SAASx8B,GAAG,IAAIC,EAAE+D,KAAKs4D,cAAc,GAAG,OAAOr8D,EAAE,MAAMkG,MAAMgyB,EAAE,MAAM0jC,GAAG77D,EAAEC,EAAE,KAAK,KAAK,EAAEs8D,GAAG58D,UAAUk9D,QAAQR,GAAG18D,UAAUk9D,QAAQ,WAAW,IAAI78D,EAAEgE,KAAKs4D,cAAc,GAAG,OAAOt8D,EAAE,CAACgE,KAAKs4D,cAAc,KAAK,IAAIr8D,EAAED,EAAEqsC,cAAcguB,IAAG,WAAWwB,GAAG,KAAK77D,EAAE,KAAK,KAAK,IAAGC,EAAEg9C,IAAI,IAAI,CAAC,EACzTsf,GAAG58D,UAAUm9D,2BAA2B,SAAS98D,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAE4qC,KAAK7qC,EAAE,CAAC8rC,UAAU,KAAK/G,OAAO/kC,EAAEwN,SAASvN,GAAG,IAAI,IAAIghB,EAAE,EAAEA,EAAEsqB,GAAGjrC,QAAQ,IAAIL,GAAGA,EAAEsrC,GAAGtqB,GAAGzT,SAASyT,KAAKsqB,GAAGwxB,OAAO97C,EAAE,EAAEjhB,GAAG,IAAIihB,GAAGirB,GAAGlsC,EAAE,CAAC,EAEX0qC,GAAG,SAAS1qC,GAAG,OAAOA,EAAEu8B,KAAK,KAAK,EAAE,IAAIt8B,EAAED,EAAEwlC,UAAU,GAAGvlC,EAAEsnC,QAAQN,cAAcmF,aAAa,CAAC,IAAInrB,EAAEyoB,GAAGzpC,EAAE2pC,cAAc,IAAI3oB,IAAIspB,GAAGtqC,EAAI,EAAFghB,GAAK63C,GAAG74D,EAAEioC,MAAK,KAAO,EAAF4d,MAAOgP,GAAG5sB,KAAI,IAAIiZ,MAAM,CAAC,MAAM,KAAK,GAAGkZ,IAAG,WAAW,IAAIp6D,EAAE6kD,GAAG9kD,EAAE,GAAG,GAAG,OAAOC,EAAE,CAAC,IAAIghB,EAAE3W,KAAIw8C,GAAG7mD,EAAED,EAAE,EAAEihB,EAAE,CAAC,IAAG+6C,GAAGh8D,EAAE,GAAG,EAC/b2qC,GAAG,SAAS3qC,GAAG,GAAG,KAAKA,EAAEu8B,IAAI,CAAC,IAAIt8B,EAAE6kD,GAAG9kD,EAAE,WAAW,GAAG,OAAOC,EAAa6mD,GAAG7mD,EAAED,EAAE,UAAXsK,MAAwB0xD,GAAGh8D,EAAE,UAAU,CAAC,EAAE4qC,GAAG,SAAS5qC,GAAG,GAAG,KAAKA,EAAEu8B,IAAI,CAAC,IAAIt8B,EAAE4mD,GAAG7mD,GAAGihB,EAAE6jC,GAAG9kD,EAAEC,GAAG,GAAG,OAAOghB,EAAa6lC,GAAG7lC,EAAEjhB,EAAEC,EAAXqK,MAAgB0xD,GAAGh8D,EAAEC,EAAE,CAAC,EAAE4qC,GAAG,WAAW,OAAOL,EAAC,EAAEM,GAAG,SAAS9qC,EAAEC,GAAG,IAAIghB,EAAEupB,GAAE,IAAI,OAAOA,GAAExqC,EAAEC,GAAG,CAAC,QAAQuqC,GAAEvpB,CAAC,CAAC,EAClSkkB,GAAG,SAASnlC,EAAEC,EAAEghB,GAAG,OAAOhhB,GAAG,IAAK,QAAyB,GAAjBy+B,EAAG1+B,EAAEihB,GAAGhhB,EAAEghB,EAAEza,KAAQ,UAAUya,EAAEyY,MAAM,MAAMz5B,EAAE,CAAC,IAAIghB,EAAEjhB,EAAEihB,EAAEikB,YAAYjkB,EAAEA,EAAEikB,WAAsF,IAA3EjkB,EAAEA,EAAE+7C,iBAAiB,cAAcC,KAAKC,UAAU,GAAGj9D,GAAG,mBAAuBA,EAAE,EAAEA,EAAEghB,EAAE3gB,OAAOL,IAAI,CAAC,IAAI0L,EAAEsV,EAAEhhB,GAAG,GAAG0L,IAAI3L,GAAG2L,EAAEwxD,OAAOn9D,EAAEm9D,KAAK,CAAC,IAAIrgD,EAAE2oB,GAAG95B,GAAG,IAAImR,EAAE,MAAM3W,MAAMgyB,EAAE,KAAKyF,EAAGjyB,GAAG+yB,EAAG/yB,EAAEmR,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAW0iB,GAAGx/B,EAAEihB,GAAG,MAAM,IAAK,SAAmB,OAAVhhB,EAAEghB,EAAE5S,QAAe0wB,GAAG/+B,IAAIihB,EAAEozC,SAASp0D,GAAE,GAAI,EAAE2lC,GAAGw0B,GAAGv0B,GAAGw0B,GACpa,IAAI+C,GAAG,CAACC,uBAAsB,EAAGC,OAAO,CAAC/3B,GAAGqR,GAAGnR,GAAGC,GAAGC,GAAGy0B,KAAKmD,GAAG,CAACC,wBAAwBrxB,GAAGsxB,WAAW,EAAEpmC,QAAQ,SAASqmC,oBAAoB,aAC1IC,GAAG,CAACF,WAAWF,GAAGE,WAAWpmC,QAAQkmC,GAAGlmC,QAAQqmC,oBAAoBH,GAAGG,oBAAoBE,eAAeL,GAAGK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB9jC,EAAGyvB,uBAAuBsU,wBAAwB,SAASv+D,GAAW,OAAO,QAAfA,EAAEonC,GAAGpnC,IAAmB,KAAKA,EAAEwlC,SAAS,EAAEg4B,wBAAwBD,GAAGC,yBARjN,WAAc,OAAO,IAAI,EASpUgB,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,kCAAkC,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGC,YAAYD,GAAGE,cAAc,IAAIj2B,GAAG+1B,GAAGG,OAAOvB,IAAI10B,GAAG81B,EAAE,CAAC,MAAM/+D,IAAG,CAAC,CAACjB,EAAQ07B,mDAAmD2iC,GAC9Yr+D,EAAQogE,aAAa,SAASn/D,EAAEC,GAAG,IAAIghB,EAAE,EAAE7hB,UAAUkB,aAAQ,IAASlB,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIo9D,GAAGv8D,GAAG,MAAMkG,MAAMgyB,EAAE,MAAM,OAbuH,SAAYn4B,EAAEC,EAAEghB,GAAG,IAAItV,EAAE,EAAEvM,UAAUkB,aAAQ,IAASlB,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACs9B,SAAS/B,EAAG70B,IAAI,MAAM6F,EAAE,KAAK,GAAGA,EAAE2zB,SAASt/B,EAAEqsC,cAAcpsC,EAAE0oD,eAAe1nC,EAAE,CAa1Rm+C,CAAGp/D,EAAEC,EAAE,KAAKghB,EAAE,EAAEliB,EAAQsgE,WAAW,SAASr/D,EAAEC,GAAG,IAAIu8D,GAAGx8D,GAAG,MAAMmG,MAAMgyB,EAAE,MAAM,IAAIlX,GAAE,EAAGtV,EAAE,GAAGmR,EAAEq/C,GAA4P,OAAzP,OAAOl8D,QAAG,IAASA,KAAI,IAAKA,EAAEq/D,sBAAsBr+C,GAAE,QAAI,IAAShhB,EAAEovD,mBAAmB1jD,EAAE1L,EAAEovD,uBAAkB,IAASpvD,EAAE66D,qBAAqBh+C,EAAE7c,EAAE66D,qBAAqB76D,EAAEu7D,GAAGx7D,EAAE,GAAE,EAAG,KAAK,EAAKihB,EAAE,EAAGtV,EAAEmR,GAAG9c,EAAEi9C,IAAIh9C,EAAEsnC,QAAQmV,GAAG,IAAI18C,EAAEwgC,SAASxgC,EAAEklC,WAAWllC,GAAU,IAAIq8D,GAAGp8D,EAAE,EACrflB,EAAQwgE,YAAY,SAASv/D,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEwgC,SAAS,OAAOxgC,EAAE,IAAIC,EAAED,EAAE2mD,gBAAgB,QAAG,IAAS1mD,EAAE,CAAC,GAAG,oBAAoBD,EAAEw8B,OAAO,MAAMr2B,MAAMgyB,EAAE,MAAiC,MAA3Bn4B,EAAEN,OAAO2G,KAAKrG,GAAGkG,KAAK,KAAWC,MAAMgyB,EAAE,IAAIn4B,GAAI,CAAqC,OAA5BA,EAAE,QAAVA,EAAEonC,GAAGnnC,IAAc,KAAKD,EAAEwlC,SAAkB,EAAEzmC,EAAQygE,UAAU,SAASx/D,GAAG,OAAOq6D,GAAGr6D,EAAE,EAAEjB,EAAQ0gE,QAAQ,SAASz/D,EAAEC,EAAEghB,GAAG,IAAIw7C,GAAGx8D,GAAG,MAAMkG,MAAMgyB,EAAE,MAAM,OAAOwkC,GAAG,KAAK38D,EAAEC,GAAE,EAAGghB,EAAE,EAC/YliB,EAAQ2gE,YAAY,SAAS1/D,EAAEC,EAAEghB,GAAG,IAAIu7C,GAAGx8D,GAAG,MAAMmG,MAAMgyB,EAAE,MAAM,IAAIxsB,EAAE,MAAMsV,GAAGA,EAAE0+C,iBAAiB,KAAK7iD,GAAE,EAAGqc,EAAE,GAAGC,EAAE+iC,GAAyO,GAAtO,OAAOl7C,QAAG,IAASA,KAAI,IAAKA,EAAEq+C,sBAAsBxiD,GAAE,QAAI,IAASmE,EAAEouC,mBAAmBl2B,EAAElY,EAAEouC,uBAAkB,IAASpuC,EAAE65C,qBAAqB1hC,EAAEnY,EAAE65C,qBAAqB76D,EAAE27D,GAAG37D,EAAE,KAAKD,EAAE,EAAE,MAAMihB,EAAEA,EAAE,KAAKnE,EAAE,EAAGqc,EAAEC,GAAGp5B,EAAEi9C,IAAIh9C,EAAEsnC,QAAQmV,GAAG18C,GAAM2L,EAAE,IAAI3L,EAAE,EAAEA,EAAE2L,EAAErL,OAAON,IAA2B8c,GAAhBA,GAAPmE,EAAEtV,EAAE3L,IAAO4/D,aAAgB3+C,EAAE4+C,SAAS,MAAM5/D,EAAEs7D,gCAAgCt7D,EAAEs7D,gCAAgC,CAACt6C,EAAEnE,GAAG7c,EAAEs7D,gCAAgCr6D,KAAK+f,EACvhBnE,GAAG,OAAO,IAAIy/C,GAAGt8D,EAAE,EAAElB,EAAQy9B,OAAO,SAASx8B,EAAEC,EAAEghB,GAAG,IAAIw7C,GAAGx8D,GAAG,MAAMkG,MAAMgyB,EAAE,MAAM,OAAOwkC,GAAG,KAAK38D,EAAEC,GAAE,EAAGghB,EAAE,EAAEliB,EAAQ+gE,uBAAuB,SAAS9/D,GAAG,IAAIy8D,GAAGz8D,GAAG,MAAMmG,MAAMgyB,EAAE,KAAK,QAAOn4B,EAAEi2D,sBAAqBoE,IAAG,WAAWsC,GAAG,KAAK,KAAK38D,GAAE,GAAG,WAAWA,EAAEi2D,oBAAoB,KAAKj2D,EAAEi9C,IAAI,IAAI,GAAE,KAAG,EAAM,EAAEl+C,EAAQghE,wBAAwB3F,GAC/Ur7D,EAAQihE,oCAAoC,SAAShgE,EAAEC,EAAEghB,EAAEtV,GAAG,IAAI8wD,GAAGx7C,GAAG,MAAM9a,MAAMgyB,EAAE,MAAM,GAAG,MAAMn4B,QAAG,IAASA,EAAE2mD,gBAAgB,MAAMxgD,MAAMgyB,EAAE,KAAK,OAAOwkC,GAAG38D,EAAEC,EAAEghB,GAAE,EAAGtV,EAAE,EAAE5M,EAAQs4B,QAAQ,iEChUzLx0B,EAAIo1B,EAAQ,KAEdl5B,EAAQ,EAAa8D,EAAEw8D,WACDx8D,EAAE68D,yCCH1B,SAASO,IAEP,GAC4C,qBAAnCnB,gCAC4C,oBAA5CA,+BAA+BmB,SAcxC,IAEEnB,+BAA+BmB,SAASA,EAC1C,CAAE,MAAOC,GAGPz6D,QAAQkqD,MAAMuQ,EAChB,CACF,CAKED,GACAvjD,EAAO3d,QAAU,EAAjB2d,qCCzBeyc,EAAElB,EAAQ,KAAS13B,EAAE6xB,OAAOC,IAAI,iBAAiBtT,EAAEqT,OAAOC,IAAI,kBAAkBxvB,EAAEnD,OAAOC,UAAUO,eAAegS,EAAEinB,EAAEsB,mDAAmDm2B,kBAAkBz4B,EAAE,CAACryB,KAAI,EAAGqiD,KAAI,EAAGgY,QAAO,EAAGC,UAAS,GAChP,SAASla,EAAEjlC,EAAEjhB,EAAEo5B,GAAG,IAAIn5B,EAAE0L,EAAE,CAAC,EAAEmR,EAAE,KAAKrR,EAAE,KAAiF,IAAIxL,UAAhF,IAASm5B,IAAItc,EAAE,GAAGsc,QAAG,IAASp5B,EAAE8F,MAAMgX,EAAE,GAAG9c,EAAE8F,UAAK,IAAS9F,EAAEmoD,MAAM18C,EAAEzL,EAAEmoD,KAAcnoD,EAAE6C,EAAEhD,KAAKG,EAAEC,KAAKk4B,EAAEj4B,eAAeD,KAAK0L,EAAE1L,GAAGD,EAAEC,IAAI,GAAGghB,GAAGA,EAAEuiC,aAAa,IAAIvjD,KAAKD,EAAEihB,EAAEuiC,kBAAe,IAAS73C,EAAE1L,KAAK0L,EAAE1L,GAAGD,EAAEC,IAAI,MAAM,CAACy8B,SAASn8B,EAAEm5B,KAAKzY,EAAEnb,IAAIgX,EAAEqrC,IAAI18C,EAAEm8C,MAAMj8C,EAAEy8C,OAAOl2C,EAAEq1B,QAAQ,CAAoBxoC,EAAQshE,IAAIna,EAAEnnD,EAAQuhE,KAAKpa,4BCD7V,IAAInnC,EAAEqT,OAAOC,IAAI,iBAAiBngB,EAAEkgB,OAAOC,IAAI,gBAAgB8F,EAAE/F,OAAOC,IAAI,kBAAkB6zB,EAAE9zB,OAAOC,IAAI,qBAAqB8zB,EAAE/zB,OAAOC,IAAI,kBAAkBtuB,EAAEquB,OAAOC,IAAI,kBAAkB1kB,EAAEykB,OAAOC,IAAI,iBAAiB6G,EAAE9G,OAAOC,IAAI,qBAAqBxmB,EAAEumB,OAAOC,IAAI,kBAAkBlgB,EAAEigB,OAAOC,IAAI,cAAcpmB,EAAEmmB,OAAOC,IAAI,cAAcwH,EAAEzH,OAAOoJ,SACzW,IAAI0M,EAAE,CAACwe,UAAU,WAAW,OAAM,CAAE,EAAEM,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAEH,gBAAgB,WAAW,GAAGpc,EAAE9qC,OAAOg3B,OAAOylB,EAAE,CAAC,EAAE,SAAS75B,EAAEtiB,EAAEC,EAAE6c,GAAG9Y,KAAK4jD,MAAM5nD,EAAEgE,KAAKwgD,QAAQvkD,EAAE+D,KAAKuiD,KAAKpK,EAAEn4C,KAAKujD,QAAQzqC,GAAGorB,CAAC,CACwI,SAAS6U,IAAI,CAAyB,SAAS+C,EAAE9/C,EAAEC,EAAE6c,GAAG9Y,KAAK4jD,MAAM5nD,EAAEgE,KAAKwgD,QAAQvkD,EAAE+D,KAAKuiD,KAAKpK,EAAEn4C,KAAKujD,QAAQzqC,GAAGorB,CAAC,CADxP5lB,EAAE3iB,UAAUy7D,iBAAiB,CAAC,EACpQ94C,EAAE3iB,UAAU4gE,SAAS,SAASvgE,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMmG,MAAM,yHAAyHnC,KAAKujD,QAAQX,gBAAgB5iD,KAAKhE,EAAEC,EAAE,WAAW,EAAEqiB,EAAE3iB,UAAU6gE,YAAY,SAASxgE,GAAGgE,KAAKujD,QAAQP,mBAAmBhjD,KAAKhE,EAAE,cAAc,EAAgB+8C,EAAEp9C,UAAU2iB,EAAE3iB,UAAsF,IAAIqgD,EAAEF,EAAEngD,UAAU,IAAIo9C,EACrfiD,EAAE3iB,YAAYyiB,EAAEtV,EAAEwV,EAAE19B,EAAE3iB,WAAWqgD,EAAEmH,sBAAqB,EAAG,IAAIhF,EAAE1iD,MAAMF,QAAQu9C,EAAEp9C,OAAOC,UAAUO,eAAe4lD,EAAE,CAACve,QAAQ,MAAMj9B,EAAE,CAACxE,KAAI,EAAGqiD,KAAI,EAAGgY,QAAO,EAAGC,UAAS,GACtK,SAASr0D,EAAE/L,EAAEC,EAAE6c,GAAG,IAAInR,EAAEsV,EAAE,CAAC,EAAE1gB,EAAE,KAAKkL,EAAE,KAAK,GAAG,MAAMxL,EAAE,IAAI0L,UAAK,IAAS1L,EAAEkoD,MAAM18C,EAAExL,EAAEkoD,UAAK,IAASloD,EAAE6F,MAAMvF,EAAE,GAAGN,EAAE6F,KAAK7F,EAAE68C,EAAEj9C,KAAKI,EAAE0L,KAAKrB,EAAEpK,eAAeyL,KAAKsV,EAAEtV,GAAG1L,EAAE0L,IAAI,IAAIytB,EAAEh6B,UAAUkB,OAAO,EAAE,GAAG,IAAI84B,EAAEnY,EAAEqe,SAASxiB,OAAO,GAAG,EAAEsc,EAAE,CAAC,IAAI,IAAID,EAAE15B,MAAM25B,GAAGv2B,EAAE,EAAEA,EAAEu2B,EAAEv2B,IAAIs2B,EAAEt2B,GAAGzD,UAAUyD,EAAE,GAAGoe,EAAEqe,SAASnG,CAAC,CAAC,GAAGn5B,GAAGA,EAAEwjD,aAAa,IAAI73C,KAAKytB,EAAEp5B,EAAEwjD,kBAAe,IAASviC,EAAEtV,KAAKsV,EAAEtV,GAAGytB,EAAEztB,IAAI,MAAM,CAAC+wB,SAAS3d,EAAE2a,KAAK15B,EAAE8F,IAAIvF,EAAE4nD,IAAI18C,EAAEm8C,MAAM3mC,EAAEmnC,OAAOtC,EAAEve,QAAQ,CAChV,SAAS8iB,EAAErqD,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE08B,WAAW3d,CAAC,CAAoG,IAAIurC,EAAE,OAAO,SAASK,EAAE3qD,EAAEC,GAAG,MAAM,kBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAE8F,IAA7K,SAAgB9F,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAEyJ,QAAQ,SAAQ,SAASzJ,GAAG,OAAOC,EAAED,EAAE,GAAE,CAA+EygE,CAAO,GAAGzgE,EAAE8F,KAAK7F,EAAEL,SAAS,GAAG,CAC/W,SAAS0sD,EAAEtsD,EAAEC,EAAE6c,EAAEnR,EAAEsV,GAAG,IAAI1gB,SAASP,EAAK,cAAcO,GAAG,YAAYA,IAAEP,EAAE,MAAK,IAAIyL,GAAE,EAAG,GAAG,OAAOzL,EAAEyL,GAAE,OAAQ,OAAOlL,GAAG,IAAK,SAAS,IAAK,SAASkL,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOzL,EAAE08B,UAAU,KAAK3d,EAAE,KAAK7M,EAAEzG,GAAE,GAAI,GAAGA,EAAE,OAAWwV,EAAEA,EAANxV,EAAEzL,GAASA,EAAE,KAAK2L,EAAE,IAAIg/C,EAAEl/C,EAAE,GAAGE,EAAEw2C,EAAElhC,IAAInE,EAAE,GAAG,MAAM9c,IAAI8c,EAAE9c,EAAEyJ,QAAQ6gD,EAAE,OAAO,KAAKgC,EAAErrC,EAAEhhB,EAAE6c,EAAE,IAAG,SAAS9c,GAAG,OAAOA,CAAC,KAAI,MAAMihB,IAAIopC,EAAEppC,KAAKA,EADnW,SAAWjhB,EAAEC,GAAG,MAAM,CAACy8B,SAAS3d,EAAE2a,KAAK15B,EAAE05B,KAAK5zB,IAAI7F,EAAEkoD,IAAInoD,EAAEmoD,IAAIP,MAAM5nD,EAAE4nD,MAAMQ,OAAOpoD,EAAEooD,OAAO,CACyQgC,CAAEnpC,EAAEnE,IAAImE,EAAEnb,KAAK2F,GAAGA,EAAE3F,MAAMmb,EAAEnb,IAAI,IAAI,GAAGmb,EAAEnb,KAAK2D,QAAQ6gD,EAAE,OAAO,KAAKtqD,IAAIC,EAAEiB,KAAK+f,IAAI,EAAyB,GAAvBxV,EAAE,EAAEE,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOw2C,EAAEniD,GAAG,IAAI,IAAIo5B,EAAE,EAAEA,EAAEp5B,EAAEM,OAAO84B,IAAI,CAC/e,IAAID,EAAExtB,EAAEg/C,EADwepqD,EACrfP,EAAEo5B,GAAeA,GAAG3tB,GAAG6gD,EAAE/rD,EAAEN,EAAE6c,EAAEqc,EAAElY,EAAE,MAAM,GAAGkY,EAPsU,SAAWn5B,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAE65B,GAAG75B,EAAE65B,IAAI75B,EAAE,eAA0CA,EAAE,IAAI,CAO5b27B,CAAE37B,GAAG,oBAAoBm5B,EAAE,IAAIn5B,EAAEm5B,EAAEt5B,KAAKG,GAAGo5B,EAAE,IAAI74B,EAAEP,EAAEsc,QAAQwsC,MAA6Br9C,GAAG6gD,EAA1B/rD,EAAEA,EAAE8N,MAA0BpO,EAAE6c,EAAtBqc,EAAExtB,EAAEg/C,EAAEpqD,EAAE64B,KAAkBnY,QAAQ,GAAG,WAAW1gB,EAAE,MAAMN,EAAE8pB,OAAO/pB,GAAGmG,MAAM,mDAAmD,oBAAoBlG,EAAE,qBAAqBP,OAAO2G,KAAKrG,GAAGkG,KAAK,MAAM,IAAIjG,GAAG,6EAA6E,OAAOwL,CAAC,CACzZ,SAASwoD,EAAEj0D,EAAEC,EAAE6c,GAAG,GAAG,MAAM9c,EAAE,OAAOA,EAAE,IAAI2L,EAAE,GAAGsV,EAAE,EAAmD,OAAjDqrC,EAAEtsD,EAAE2L,EAAE,GAAG,IAAG,SAAS3L,GAAG,OAAOC,EAAEJ,KAAKid,EAAE9c,EAAEihB,IAAI,IAAUtV,CAAC,CAAC,SAASkpD,EAAE70D,GAAG,IAAI,IAAIA,EAAE0gE,QAAQ,CAAC,IAAIzgE,EAAED,EAAE2gE,SAAQ1gE,EAAEA,KAAM8+C,MAAK,SAAS9+C,GAAM,IAAID,EAAE0gE,UAAU,IAAI1gE,EAAE0gE,UAAQ1gE,EAAE0gE,QAAQ,EAAE1gE,EAAE2gE,QAAQ1gE,EAAC,IAAE,SAASA,GAAM,IAAID,EAAE0gE,UAAU,IAAI1gE,EAAE0gE,UAAQ1gE,EAAE0gE,QAAQ,EAAE1gE,EAAE2gE,QAAQ1gE,EAAC,KAAI,IAAID,EAAE0gE,UAAU1gE,EAAE0gE,QAAQ,EAAE1gE,EAAE2gE,QAAQ1gE,EAAE,CAAC,GAAG,IAAID,EAAE0gE,QAAQ,OAAO1gE,EAAE2gE,QAAQC,QAAQ,MAAM5gE,EAAE2gE,OAAQ,CAC5Z,IAAIzL,EAAE,CAAC3tB,QAAQ,MAAM8tB,EAAE,CAACroB,WAAW,MAAM3qB,EAAE,CAAC4nC,uBAAuBiL,EAAEpoB,wBAAwBuoB,EAAEzE,kBAAkB9K,GAAG/mD,EAAQ8hE,SAAS,CAACjgE,IAAIqzD,EAAE52C,QAAQ,SAASrd,EAAEC,EAAE6c,GAAGm3C,EAAEj0D,GAAE,WAAWC,EAAEd,MAAM6E,KAAK5E,UAAU,GAAE0d,EAAE,EAAEgkD,MAAM,SAAS9gE,GAAG,IAAIC,EAAE,EAAuB,OAArBg0D,EAAEj0D,GAAE,WAAWC,GAAG,IAAUA,CAAC,EAAEwoB,QAAQ,SAASzoB,GAAG,OAAOi0D,EAAEj0D,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAE+gE,KAAK,SAAS/gE,GAAG,IAAIqqD,EAAErqD,GAAG,MAAMmG,MAAM,yEAAyE,OAAOnG,CAAC,GAAGjB,EAAQunD,UAAUhkC,EAAEvjB,EAAQiiE,SAAS7oC,EACnep5B,EAAQkiE,SAAS9a,EAAEpnD,EAAQmiE,cAAcphB,EAAE/gD,EAAQoiE,WAAWjb,EAAEnnD,EAAQqiE,SAASv1D,EAAE9M,EAAQ07B,mDAAmDpY,EAC9ItjB,EAAQsiE,aAAa,SAASrhE,EAAEC,EAAE6c,GAAG,GAAG,OAAO9c,QAAG,IAASA,EAAE,MAAMmG,MAAM,iFAAiFnG,EAAE,KAAK,IAAI2L,EAAE6+B,EAAE,CAAC,EAAExqC,EAAE4nD,OAAO3mC,EAAEjhB,EAAE8F,IAAIvF,EAAEP,EAAEmoD,IAAI18C,EAAEzL,EAAEooD,OAAO,GAAG,MAAMnoD,EAAE,CAAoE,QAAnE,IAASA,EAAEkoD,MAAM5nD,EAAEN,EAAEkoD,IAAI18C,EAAEq6C,EAAEve,cAAS,IAAStnC,EAAE6F,MAAMmb,EAAE,GAAGhhB,EAAE6F,KAAQ9F,EAAE05B,MAAM15B,EAAE05B,KAAK8pB,aAAa,IAAIpqB,EAAEp5B,EAAE05B,KAAK8pB,aAAa,IAAIrqB,KAAKl5B,EAAE68C,EAAEj9C,KAAKI,EAAEk5B,KAAK7uB,EAAEpK,eAAei5B,KAAKxtB,EAAEwtB,QAAG,IAASl5B,EAAEk5B,SAAI,IAASC,EAAEA,EAAED,GAAGl5B,EAAEk5B,GAAG,CAAC,IAAIA,EAAE/5B,UAAUkB,OAAO,EAAE,GAAG,IAAI64B,EAAExtB,EAAE2zB,SAASxiB,OAAO,GAAG,EAAEqc,EAAE,CAACC,EAAE35B,MAAM05B,GACrf,IAAI,IAAIt2B,EAAE,EAAEA,EAAEs2B,EAAEt2B,IAAIu2B,EAAEv2B,GAAGzD,UAAUyD,EAAE,GAAG8I,EAAE2zB,SAASlG,CAAC,CAAC,MAAM,CAACsD,SAAS3d,EAAE2a,KAAK15B,EAAE05B,KAAK5zB,IAAImb,EAAEknC,IAAI5nD,EAAEqnD,MAAMj8C,EAAEy8C,OAAO38C,EAAE,EAAE1M,EAAQuiE,cAAc,SAASthE,GAAqK,OAAlKA,EAAE,CAAC08B,SAAS/uB,EAAEo2C,cAAc/jD,EAAEuhE,eAAevhE,EAAEwhE,aAAa,EAAEC,SAAS,KAAKC,SAAS,KAAKC,cAAc,KAAKC,YAAY,OAAQH,SAAS,CAAC/kC,SAAS34B,EAAE44B,SAAS38B,GAAUA,EAAE0hE,SAAS1hE,CAAC,EAAEjB,EAAQ85B,cAAc9sB,EAAEhN,EAAQ8iE,cAAc,SAAS7hE,GAAG,IAAIC,EAAE8L,EAAE4wC,KAAK,KAAK38C,GAAY,OAATC,EAAEy5B,KAAK15B,EAASC,CAAC,EAAElB,EAAQ+iE,UAAU,WAAW,MAAM,CAACv6B,QAAQ,KAAK,EAC9dxoC,EAAQgjE,WAAW,SAAS/hE,GAAG,MAAM,CAAC08B,SAASxD,EAAEsD,OAAOx8B,EAAE,EAAEjB,EAAQijE,eAAe3X,EAAEtrD,EAAQkjE,KAAK,SAASjiE,GAAG,MAAM,CAAC08B,SAASzwB,EAAE2wB,SAAS,CAAC8jC,SAAS,EAAEC,QAAQ3gE,GAAG68B,MAAMg4B,EAAE,EAAE91D,EAAQmjE,KAAK,SAASliE,EAAEC,GAAG,MAAM,CAACy8B,SAASvqB,EAAEunB,KAAK15B,EAAEkxD,aAAQ,IAASjxD,EAAE,KAAKA,EAAE,EAAElB,EAAQojE,gBAAgB,SAASniE,GAAG,IAAIC,EAAEo1D,EAAEroB,WAAWqoB,EAAEroB,WAAW,CAAC,EAAE,IAAIhtC,GAAG,CAAC,QAAQq1D,EAAEroB,WAAW/sC,CAAC,CAAC,EAAElB,EAAQqjE,aAAa,WAAW,MAAMj8D,MAAM,2DAA4D,EAC1cpH,EAAQqvD,YAAY,SAASpuD,EAAEC,GAAG,OAAOi1D,EAAE3tB,QAAQ6mB,YAAYpuD,EAAEC,EAAE,EAAElB,EAAQsvD,WAAW,SAASruD,GAAG,OAAOk1D,EAAE3tB,QAAQ8mB,WAAWruD,EAAE,EAAEjB,EAAQ+vD,cAAc,WAAW,EAAE/vD,EAAQgwD,iBAAiB,SAAS/uD,GAAG,OAAOk1D,EAAE3tB,QAAQwnB,iBAAiB/uD,EAAE,EAAEjB,EAAQuvD,UAAU,SAAStuD,EAAEC,GAAG,OAAOi1D,EAAE3tB,QAAQ+mB,UAAUtuD,EAAEC,EAAE,EAAElB,EAAQowD,MAAM,WAAW,OAAO+F,EAAE3tB,QAAQ4nB,OAAO,EAAEpwD,EAAQwvD,oBAAoB,SAASvuD,EAAEC,EAAE6c,GAAG,OAAOo4C,EAAE3tB,QAAQgnB,oBAAoBvuD,EAAEC,EAAE6c,EAAE,EAC7b/d,EAAQyvD,mBAAmB,SAASxuD,EAAEC,GAAG,OAAOi1D,EAAE3tB,QAAQinB,mBAAmBxuD,EAAEC,EAAE,EAAElB,EAAQ0vD,gBAAgB,SAASzuD,EAAEC,GAAG,OAAOi1D,EAAE3tB,QAAQknB,gBAAgBzuD,EAAEC,EAAE,EAAElB,EAAQ2vD,QAAQ,SAAS1uD,EAAEC,GAAG,OAAOi1D,EAAE3tB,QAAQmnB,QAAQ1uD,EAAEC,EAAE,EAAElB,EAAQ4vD,WAAW,SAAS3uD,EAAEC,EAAE6c,GAAG,OAAOo4C,EAAE3tB,QAAQonB,WAAW3uD,EAAEC,EAAE6c,EAAE,EAAE/d,EAAQ6vD,OAAO,SAAS5uD,GAAG,OAAOk1D,EAAE3tB,QAAQqnB,OAAO5uD,EAAE,EAAEjB,EAAQ8vD,SAAS,SAAS7uD,GAAG,OAAOk1D,EAAE3tB,QAAQsnB,SAAS7uD,EAAE,EAAEjB,EAAQmwD,qBAAqB,SAASlvD,EAAEC,EAAE6c,GAAG,OAAOo4C,EAAE3tB,QAAQ2nB,qBAAqBlvD,EAAEC,EAAE6c,EAAE,EAC/e/d,EAAQiwD,cAAc,WAAW,OAAOkG,EAAE3tB,QAAQynB,eAAe,EAAEjwD,EAAQs4B,QAAQ,qCCtBjF3a,EAAO3d,QAAU,EAAjB2d,iCCAAA,EAAO3d,QAAU,EAAjB2d,+BCMW,SAASyc,EAAEn5B,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAEM,OAAON,EAAEkB,KAAKjB,GAAGD,EAAE,KAAK,EAAEihB,GAAG,CAAC,IAAItV,EAAEsV,EAAE,IAAI,EAAEnE,EAAE9c,EAAE2L,GAAG,KAAG,EAAEytB,EAAEtc,EAAE7c,IAA0B,MAAMD,EAA7BA,EAAE2L,GAAG1L,EAAED,EAAEihB,GAAGnE,EAAEmE,EAAEtV,CAAc,CAAC,CAAC,SAASF,EAAEzL,GAAG,OAAO,IAAIA,EAAEM,OAAO,KAAKN,EAAE,EAAE,CAAC,SAASO,EAAEP,GAAG,GAAG,IAAIA,EAAEM,OAAO,OAAO,KAAK,IAAIL,EAAED,EAAE,GAAGihB,EAAEjhB,EAAEqiE,MAAM,GAAGphD,IAAIhhB,EAAE,CAACD,EAAE,GAAGihB,EAAEjhB,EAAE,IAAI,IAAI2L,EAAE,EAAEmR,EAAE9c,EAAEM,OAAOuL,EAAEiR,IAAI,EAAEnR,EAAEE,GAAG,CAAC,IAAIhJ,EAAE,GAAG8I,EAAE,GAAG,EAAE6+B,EAAExqC,EAAE6C,GAAGqP,EAAErP,EAAE,EAAEsP,EAAEnS,EAAEkS,GAAG,GAAG,EAAEknB,EAAEoR,EAAEvpB,GAAG/O,EAAE4K,GAAG,EAAEsc,EAAEjnB,EAAEq4B,IAAIxqC,EAAE2L,GAAGwG,EAAEnS,EAAEkS,GAAG+O,EAAEtV,EAAEuG,IAAIlS,EAAE2L,GAAG6+B,EAAExqC,EAAE6C,GAAGoe,EAAEtV,EAAE9I,OAAQ,MAAGqP,EAAE4K,GAAG,EAAEsc,EAAEjnB,EAAE8O,IAA0B,MAAMjhB,EAA7BA,EAAE2L,GAAGwG,EAAEnS,EAAEkS,GAAG+O,EAAEtV,EAAEuG,CAAc,EAAC,CAAC,OAAOjS,CAAC,CAC3c,SAASm5B,EAAEp5B,EAAEC,GAAG,IAAIghB,EAAEjhB,EAAEsiE,UAAUriE,EAAEqiE,UAAU,OAAO,IAAIrhD,EAAEA,EAAEjhB,EAAEotC,GAAGntC,EAAEmtC,EAAE,CAAC,GAAG,kBAAkBm1B,aAAa,oBAAoBA,YAAYx6D,IAAI,CAAC,IAAIgX,EAAEwjD,YAAYxjE,EAAQopC,aAAa,WAAW,OAAOppB,EAAEhX,KAAK,CAAC,KAAK,CAAC,IAAIowB,EAAEx3B,KAAKulD,EAAE/tB,EAAEpwB,MAAMhJ,EAAQopC,aAAa,WAAW,OAAOhQ,EAAEpwB,MAAMm+C,CAAC,CAAC,CAAC,IAAIC,EAAE,GAAGpiD,EAAE,GAAG4J,EAAE,EAAEurB,EAAE,KAAKjtB,EAAE,EAAE4tB,GAAE,EAAG8B,GAAE,EAAGuM,GAAE,EAAGiU,EAAE,oBAAoBoC,WAAWA,WAAW,KAAKj8B,EAAE,oBAAoBm8B,aAAaA,aAAa,KAAK1B,EAAE,qBAAqBylB,aAAaA,aAAa,KACnT,SAAS1iB,EAAE9/C,GAAG,IAAI,IAAIC,EAAEwL,EAAE1H,GAAG,OAAO9D,GAAG,CAAC,GAAG,OAAOA,EAAEX,SAASiB,EAAEwD,OAAQ,MAAG9D,EAAEwiE,WAAWziE,GAAgD,MAA9CO,EAAEwD,GAAG9D,EAAEqiE,UAAUriE,EAAEyiE,eAAevpC,EAAEgtB,EAAElmD,EAAa,CAACA,EAAEwL,EAAE1H,EAAE,CAAC,CAAC,SAASi8C,EAAEhgD,GAAa,GAAVkoC,GAAE,EAAG4X,EAAE9/C,IAAO27B,EAAE,GAAG,OAAOlwB,EAAE06C,GAAGxqB,GAAE,EAAGwmB,EAAErF,OAAO,CAAC,IAAI78C,EAAEwL,EAAE1H,GAAG,OAAO9D,GAAG6lD,EAAE9F,EAAE//C,EAAEwiE,UAAUziE,EAAE,CAAC,CACra,SAAS88C,EAAE98C,EAAEC,GAAG07B,GAAE,EAAGuM,IAAIA,GAAE,EAAG5lB,EAAEhY,GAAGA,GAAG,GAAGuvB,GAAE,EAAG,IAAI5Y,EAAEhV,EAAE,IAAS,IAAL6zC,EAAE7/C,GAAOi5B,EAAEztB,EAAE06C,GAAG,OAAOjtB,MAAMA,EAAEwpC,eAAeziE,IAAID,IAAI+L,MAAM,CAAC,IAAIJ,EAAEutB,EAAE55B,SAAS,GAAG,oBAAoBqM,EAAE,CAACutB,EAAE55B,SAAS,KAAK2M,EAAEitB,EAAEypC,cAAc,IAAI7lD,EAAEnR,EAAEutB,EAAEwpC,gBAAgBziE,GAAGA,EAAElB,EAAQopC,eAAe,oBAAoBrrB,EAAEoc,EAAE55B,SAASwd,EAAEoc,IAAIztB,EAAE06C,IAAI5lD,EAAE4lD,GAAGrG,EAAE7/C,EAAE,MAAMM,EAAE4lD,GAAGjtB,EAAEztB,EAAE06C,EAAE,CAAC,GAAG,OAAOjtB,EAAE,IAAIrtB,GAAE,MAAO,CAAC,IAAIhJ,EAAE4I,EAAE1H,GAAG,OAAOlB,GAAGijD,EAAE9F,EAAEn9C,EAAE4/D,UAAUxiE,GAAG4L,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQqtB,EAAE,KAAKjtB,EAAEgV,EAAE4Y,GAAE,CAAE,CAAC,CAD1a,qBAAqB+oC,gBAAW,IAASA,UAAUC,iBAAY,IAASD,UAAUC,WAAWC,gBAAgBF,UAAUC,WAAWC,eAAenmB,KAAKimB,UAAUC,YAC2Q,IACzP5O,EAD6P7J,GAAE,EAAGC,EAAE,KAAK//C,GAAG,EAAEggD,EAAE,EAAEK,GAAG,EACvc,SAAS5+C,IAAI,QAAOhN,EAAQopC,eAAewiB,EAAEL,EAAO,CAAC,SAASgC,IAAI,GAAG,OAAOjC,EAAE,CAAC,IAAIrqD,EAAEjB,EAAQopC,eAAewiB,EAAE3qD,EAAE,IAAIC,GAAE,EAAG,IAAIA,EAAEoqD,GAAE,EAAGrqD,EAAE,CAAC,QAAQC,EAAEg0D,KAAK7J,GAAE,EAAGC,EAAE,KAAK,CAAC,MAAMD,GAAE,CAAE,CAAO,GAAG,oBAAoBrN,EAAEkX,EAAE,WAAWlX,EAAEuP,EAAE,OAAO,GAAG,qBAAqByW,eAAe,CAAC,IAAIlO,EAAE,IAAIkO,eAAe7N,EAAEL,EAAEmO,MAAMnO,EAAEoO,MAAMC,UAAU5W,EAAE2H,EAAE,WAAWiB,EAAEiO,YAAY,KAAK,CAAC,MAAMlP,EAAE,WAAW9X,EAAEmQ,EAAE,EAAE,EAAE,SAASnK,EAAEniD,GAAGqqD,EAAErqD,EAAEoqD,IAAIA,GAAE,EAAG6J,IAAI,CAAC,SAASnO,EAAE9lD,EAAEC,GAAGqK,EAAE6xC,GAAE,WAAWn8C,EAAEjB,EAAQopC,eAAe,GAAEloC,EAAE,CAC5dlB,EAAQgqC,sBAAsB,EAAEhqC,EAAQwpC,2BAA2B,EAAExpC,EAAQ8pC,qBAAqB,EAAE9pC,EAAQ4pC,wBAAwB,EAAE5pC,EAAQqkE,mBAAmB,KAAKrkE,EAAQ0pC,8BAA8B,EAAE1pC,EAAQ8oC,wBAAwB,SAAS7nC,GAAGA,EAAEV,SAAS,IAAI,EAAEP,EAAQskE,2BAA2B,WAAW1nC,GAAG9B,IAAI8B,GAAE,EAAGwmB,EAAErF,GAAG,EAC1U/9C,EAAQukE,wBAAwB,SAAStjE,GAAG,EAAEA,GAAG,IAAIA,EAAEyF,QAAQkqD,MAAM,mHAAmHrF,EAAE,EAAEtqD,EAAEuI,KAAK0F,MAAM,IAAIjO,GAAG,CAAC,EAAEjB,EAAQspC,iCAAiC,WAAW,OAAOp8B,CAAC,EAAElN,EAAQwkE,8BAA8B,WAAW,OAAO93D,EAAE06C,EAAE,EAAEpnD,EAAQykE,cAAc,SAASxjE,GAAG,OAAOiM,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIhM,EAAE,EAAE,MAAM,QAAQA,EAAEgM,EAAE,IAAIgV,EAAEhV,EAAEA,EAAEhM,EAAE,IAAI,OAAOD,GAAG,CAAC,QAAQiM,EAAEgV,CAAC,CAAC,EAAEliB,EAAQ0kE,wBAAwB,WAAW,EAC9f1kE,EAAQkpC,sBAAsB,WAAW,EAAElpC,EAAQ2kE,yBAAyB,SAAS1jE,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIihB,EAAEhV,EAAEA,EAAEjM,EAAE,IAAI,OAAOC,GAAG,CAAC,QAAQgM,EAAEgV,CAAC,CAAC,EAChMliB,EAAQ4oC,0BAA0B,SAAS3nC,EAAEC,EAAEghB,GAAG,IAAItV,EAAE5M,EAAQopC,eAA8F,OAA/E,kBAAkBlnB,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAE0iD,QAA6B,EAAE1iD,EAAEtV,EAAEsV,EAAEtV,EAAGsV,EAAEtV,EAAS3L,GAAG,KAAK,EAAE,IAAI8c,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzM9c,EAAE,CAACotC,GAAGz/B,IAAIrO,SAASW,EAAE0iE,cAAc3iE,EAAEyiE,UAAUxhD,EAAEyhD,eAAvD5lD,EAAEmE,EAAEnE,EAAoEwlD,WAAW,GAAGrhD,EAAEtV,GAAG3L,EAAEsiE,UAAUrhD,EAAEkY,EAAEp1B,EAAE/D,GAAG,OAAOyL,EAAE06C,IAAInmD,IAAIyL,EAAE1H,KAAKmkC,GAAG5lB,EAAEhY,GAAGA,GAAG,GAAG49B,GAAE,EAAG4d,EAAE9F,EAAE/+B,EAAEtV,MAAM3L,EAAEsiE,UAAUxlD,EAAEqc,EAAEgtB,EAAEnmD,GAAG27B,GAAG9B,IAAI8B,GAAE,EAAGwmB,EAAErF,KAAY98C,CAAC,EACnejB,EAAQgpC,qBAAqBh8B,EAAEhN,EAAQ6kE,sBAAsB,SAAS5jE,GAAG,IAAIC,EAAEgM,EAAE,OAAO,WAAW,IAAIgV,EAAEhV,EAAEA,EAAEhM,EAAE,IAAI,OAAOD,EAAEb,MAAM6E,KAAK5E,UAAU,CAAC,QAAQ6M,EAAEgV,CAAC,CAAC,CAAC,8BCf7JvE,EAAO3d,QAAU,EAAjB2d,OCFEmnD,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBtgE,IAAjBugE,EACH,OAAOA,EAAajlE,QAGrB,IAAI2d,EAASmnD,EAAyBE,GAAY,CACjD32B,GAAI22B,EACJE,QAAQ,EACRllE,QAAS,CAAC,GAUX,OANAmlE,EAAoBH,GAAUlkE,KAAK6c,EAAO3d,QAAS2d,EAAQA,EAAO3d,QAAS+kE,GAG3EpnD,EAAOunD,QAAS,EAGTvnD,EAAO3d,OACf,CAGA+kE,EAAoBjhE,EAAIqhE,EC3BxBJ,EAAoB5xD,EAAKwK,IACxB,IAAI6T,EAAS7T,GAAUA,EAAOynD,WAC7B,IAAOznD,EAAiB,QACxB,IAAM,EAEP,OADAonD,EAAoBn4D,EAAE4kB,EAAQ,CAAEvwB,EAAGuwB,IAC5BA,CAAM,QCNd,IACI6zC,EADAC,EAAW3kE,OAAO4kE,eAAkBlkE,GAASV,OAAO4kE,eAAelkE,GAASA,GAASA,EAAa,UAQtG0jE,EAAoB//D,EAAI,SAASsK,EAAOy0C,GAEvC,GADU,EAAPA,IAAUz0C,EAAQrK,KAAKqK,IAChB,EAAPy0C,EAAU,OAAOz0C,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPy0C,GAAaz0C,EAAM81D,WAAY,OAAO91D,EAC1C,GAAW,GAAPy0C,GAAoC,oBAAfz0C,EAAM0wC,KAAqB,OAAO1wC,CAC5D,CACA,IAAIk2D,EAAK7kE,OAAOotD,OAAO,MACvBgX,EAAoB3d,EAAEoe,GACtB,IAAIC,EAAM,CAAC,EACXJ,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI98B,EAAiB,EAAPub,GAAYz0C,EAAyB,iBAAXk5B,KAAyB68B,EAAe7yD,QAAQg2B,GAAUA,EAAU88B,EAAS98B,GACxH7nC,OAAOW,oBAAoBknC,GAASlqB,SAASvX,GAAS0+D,EAAI1+D,GAAO,IAAOuI,EAAMvI,KAI/E,OAFA0+D,EAAa,QAAI,IAAM,EACvBV,EAAoBn4D,EAAE44D,EAAIC,GACnBD,CACR,MCxBAT,EAAoBn4D,EAAI,CAAC5M,EAAS0lE,KACjC,IAAI,IAAI3+D,KAAO2+D,EACXX,EAAoBzxD,EAAEoyD,EAAY3+D,KAASg+D,EAAoBzxD,EAAEtT,EAAS+G,IAC5EpG,OAAOu8B,eAAel9B,EAAS+G,EAAK,CAAEy3B,YAAY,EAAM7uB,IAAK+1D,EAAW3+D,IAE1E,ECNDg+D,EAAoB3qC,EAAI,CAAC,EAGzB2qC,EAAoBhnD,EAAK4nD,GACjB/lB,QAAQgmB,IAAIjlE,OAAO2G,KAAKy9D,EAAoB3qC,GAAGyrC,QAAO,CAACC,EAAU/+D,KACvEg+D,EAAoB3qC,EAAErzB,GAAK4+D,EAASG,GAC7BA,IACL,KCNJf,EAAoBn2D,EAAK+2D,GAEjB,aAAeA,EAAf,qBCFRZ,EAAoBgB,SAAYJ,IAEf,ECHjBZ,EAAoBzxD,EAAI,CAACjS,EAAKmE,IAAU7E,OAAOC,UAAUO,eAAeL,KAAKO,EAAKmE,SCAlF,IAAIwgE,EAAa,CAAC,EACdC,EAAoB,mBAExBlB,EAAoB/kD,EAAI,CAACk3B,EAAK6S,EAAMhjD,EAAK4+D,KACxC,GAAGK,EAAW9uB,GAAQ8uB,EAAW9uB,GAAK/0C,KAAK4nD,OAA3C,CACA,IAAImc,EAAQC,EACZ,QAAWzhE,IAARqC,EAEF,IADA,IAAIq/D,EAAUvsC,SAASwsC,qBAAqB,UACpCrkE,EAAI,EAAGA,EAAIokE,EAAQ7kE,OAAQS,IAAK,CACvC,IAAIuK,EAAI65D,EAAQpkE,GAChB,GAAGuK,EAAE+5D,aAAa,QAAUpvB,GAAO3qC,EAAE+5D,aAAa,iBAAmBL,EAAoBl/D,EAAK,CAAEm/D,EAAS35D,EAAG,KAAO,CACpH,CAEG25D,IACHC,GAAa,GACbD,EAASrsC,SAASC,cAAc,WAEzBysC,QAAU,QACjBL,EAAOM,QAAU,IACbzB,EAAoB0B,IACvBP,EAAO5qC,aAAa,QAASypC,EAAoB0B,IAElDP,EAAO5qC,aAAa,eAAgB2qC,EAAoBl/D,GAExDm/D,EAAO1N,IAAMthB,GAEd8uB,EAAW9uB,GAAO,CAAC6S,GACnB,IAAI2c,EAAmB,CAACC,EAAMrvB,KAE7B4uB,EAAOU,QAAUV,EAAOW,OAAS,KACjCnnB,aAAa8mB,GACb,IAAIM,EAAUd,EAAW9uB,GAIzB,UAHO8uB,EAAW9uB,GAClBgvB,EAAO//B,YAAc+/B,EAAO//B,WAAWhF,YAAY+kC,GACnDY,GAAWA,EAAQxoD,SAASvc,GAAQA,EAAGu1C,KACpCqvB,EAAM,OAAOA,EAAKrvB,EAAM,EAExBkvB,EAAUhnB,WAAWknB,EAAiB9oB,KAAK,UAAMl5C,EAAW,CAAEi2B,KAAM,UAAWqL,OAAQkgC,IAAW,MACtGA,EAAOU,QAAUF,EAAiB9oB,KAAK,KAAMsoB,EAAOU,SACpDV,EAAOW,OAASH,EAAiB9oB,KAAK,KAAMsoB,EAAOW,QACnDV,GAActsC,SAASktC,KAAK3lC,YAAY8kC,EApCkB,CAoCX,MCvChDnB,EAAoB3d,EAAKpnD,IACH,qBAAXqzB,QAA0BA,OAAO2zC,aAC1CrmE,OAAOu8B,eAAel9B,EAASqzB,OAAO2zC,YAAa,CAAE13D,MAAO,WAE7D3O,OAAOu8B,eAAel9B,EAAS,aAAc,CAAEsP,OAAO,GAAO,ECL9Dy1D,EAAoBkC,IAAOtpD,IAC1BA,EAAOupD,MAAQ,GACVvpD,EAAO4iB,WAAU5iB,EAAO4iB,SAAW,IACjC5iB,GCHRonD,EAAoB3rC,EAAI,UCKxB,IAAI+tC,EAAkB,CACrB,IAAK,GAGNpC,EAAoB3qC,EAAE9c,EAAI,CAACqoD,EAASG,KAElC,IAAIsB,EAAqBrC,EAAoBzxD,EAAE6zD,EAAiBxB,GAAWwB,EAAgBxB,QAAWjhE,EACtG,GAA0B,IAAvB0iE,EAGF,GAAGA,EACFtB,EAAS3jE,KAAKilE,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAIznB,SAAQ,CAACG,EAASunB,IAAYF,EAAqBD,EAAgBxB,GAAW,CAAC5lB,EAASunB,KAC1GxB,EAAS3jE,KAAKilE,EAAmB,GAAKC,GAGtC,IAAInwB,EAAM6tB,EAAoB3rC,EAAI2rC,EAAoBn2D,EAAE+2D,GAEpD/U,EAAQ,IAAIxpD,MAgBhB29D,EAAoB/kD,EAAEk3B,GAfFI,IACnB,GAAGytB,EAAoBzxD,EAAE6zD,EAAiBxB,KAEf,KAD1ByB,EAAqBD,EAAgBxB,MACRwB,EAAgBxB,QAAWjhE,GACrD0iE,GAAoB,CACtB,IAAIG,EAAYjwB,IAAyB,SAAfA,EAAM3c,KAAkB,UAAY2c,EAAM3c,MAChE6sC,EAAUlwB,GAASA,EAAMtR,QAAUsR,EAAMtR,OAAOwyB,IACpD5H,EAAMJ,QAAU,iBAAmBmV,EAAU,cAAgB4B,EAAY,KAAOC,EAAU,IAC1F5W,EAAMnpD,KAAO,iBACbmpD,EAAMj2B,KAAO4sC,EACb3W,EAAM6W,QAAUD,EAChBJ,EAAmB,GAAGxW,EACvB,CACD,GAEwC,SAAW+U,EAASA,EAE/D,CACD,EAcF,IAAI+B,EAAuB,CAACC,EAA4B1pD,KACvD,IAKI+mD,EAAUW,EALViC,EAAW3pD,EAAK,GAChB4pD,EAAc5pD,EAAK,GACnB6pD,EAAU7pD,EAAK,GAGIjc,EAAI,EAC3B,GAAG4lE,EAAS1nE,MAAMmuC,GAAgC,IAAxB84B,EAAgB94B,KAAa,CACtD,IAAI22B,KAAY6C,EACZ9C,EAAoBzxD,EAAEu0D,EAAa7C,KACrCD,EAAoBjhE,EAAEkhE,GAAY6C,EAAY7C,IAGhD,GAAG8C,EAAsBA,EAAQ/C,EAClC,CAEA,IADG4C,GAA4BA,EAA2B1pD,GACrDjc,EAAI4lE,EAASrmE,OAAQS,IACzB2jE,EAAUiC,EAAS5lE,GAChB+iE,EAAoBzxD,EAAE6zD,EAAiBxB,IAAYwB,EAAgBxB,IACrEwB,EAAgBxB,GAAS,KAE1BwB,EAAgBxB,GAAW,CAC5B,EAIGoC,EAAqBC,KAAkC,4BAAIA,KAAkC,6BAAK,GACtGD,EAAmBzpD,QAAQopD,EAAqB9pB,KAAK,KAAM,IAC3DmqB,EAAmB5lE,KAAOulE,EAAqB9pB,KAAK,KAAMmqB,EAAmB5lE,KAAKy7C,KAAKmqB,4DCvFvF,MAYA,EAZwBE,IAClBA,GAAeA,aAAuBtgE,UACxC,6BAAqBq4C,MAAKkoB,IAAkD,IAAjD,OAAEC,EAAM,OAAEC,EAAM,OAAEC,EAAM,OAAEC,EAAM,QAAEC,GAASL,EACpEC,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,EAAY,GAExB,0OCFUO,GAAZ,SAAYA,GAQVA,EAAA,UAOAA,EAAA,YAMAA,EAAA,iBACD,CAtBD,CAAYA,IAAAA,EAsBX,KAqKD,MAAMC,EAAoB,WAySV,SAAAC,EAAUp5D,EAAYkhD,GACpC,IAAc,IAAVlhD,GAA6B,OAAVA,GAAmC,qBAAVA,EAC9C,MAAM,IAAIlI,MAAMopD,EAEpB,CAEgB,SAAAmY,EAAQC,EAAWpY,GACjC,IAAKoY,EAAM,CAEc,qBAAZliE,SAAyBA,QAAQH,KAAKiqD,GAEjD,IAME,MAAM,IAAIppD,MAAMopD,EAEjB,CAAC,MAAOzyC,GAAI,CACd,CACH,CASA,SAAS8qD,EAAgB10B,EAAoB9f,GAC3C,MAAO,CACLy0C,IAAK30B,EAASoU,MACdxhD,IAAKotC,EAASptC,IACdgiE,IAAK10C,EAET,CAKM,SAAU20C,EACdxgC,EACAljC,EACAijD,EACAxhD,GAcA,YAfA,IAAAwhD,IAAAA,EAAa,MAGD0gB,EAAA,CACVC,SAA6B,kBAAZ1gC,EAAuBA,EAAUA,EAAQ0gC,SAC1DnyB,OAAQ,GACRoyB,KAAM,IACY,kBAAP7jE,EAAkB8jE,EAAU9jE,GAAMA,EAAE,CAC/CijD,QAKAxhD,IAAMzB,GAAOA,EAAgByB,KAAQA,GAjChCyC,KAAKk0C,SAAS78C,SAAS,IAAIgJ,OAAO,EAAG,IAoC9C,CAKgB,SAAAw/D,EAAUnB,GAIV,IAJW,SACzBgB,EAAW,IAAG,OACdnyB,EAAS,GAAE,KACXoyB,EAAO,IACOjB,EAKd,OAJInxB,GAAqB,MAAXA,IACZmyB,GAAiC,MAArBnyB,EAAOn7B,OAAO,GAAam7B,EAAS,IAAMA,GACpDoyB,GAAiB,MAATA,IACVD,GAA+B,MAAnBC,EAAKvtD,OAAO,GAAautD,EAAO,IAAMA,GAC7CD,CACT,CAKM,SAAUE,EAAUE,GACxB,IAAIC,EAA4B,CAAC,EAEjC,GAAID,EAAM,CACR,IAAIE,EAAYF,EAAK92D,QAAQ,KACzBg3D,GAAa,IACfD,EAAWJ,KAAOG,EAAKz/D,OAAO2/D,GAC9BF,EAAOA,EAAKz/D,OAAO,EAAG2/D,IAGxB,IAAIC,EAAcH,EAAK92D,QAAQ,KAC3Bi3D,GAAe,IACjBF,EAAWxyB,OAASuyB,EAAKz/D,OAAO4/D,GAChCH,EAAOA,EAAKz/D,OAAO,EAAG4/D,IAGpBH,IACFC,EAAWL,SAAWI,EAEzB,CAED,OAAOC,CACT,CASA,SAASG,EACPC,EACAC,EACAC,EACA5pC,QAAA,IAAAA,IAAAA,EAA6B,CAAC,GAE9B,IAAI,OAAErG,EAASC,SAASsgB,YAAY,SAAE2vB,GAAW,GAAU7pC,EACvD8pC,EAAgBnwC,EAAOowC,QACvBrd,EAAS6b,EAAOyB,IAChB9sB,EAA4B,KAE5B9oB,EAAQ61C,IASZ,SAASA,IAEP,OADYH,EAAcxhB,OAAS,CAAEwgB,IAAK,OAC7BA,GACf,CAEA,SAASoB,IACPxd,EAAS6b,EAAOyB,IAChB,IAAIG,EAAYF,IACZG,EAAqB,MAAbD,EAAoB,KAAOA,EAAY/1C,EACnDA,EAAQ+1C,EACJjtB,GACFA,EAAS,CAAEwP,SAAQxY,SAAU61B,EAAQ71B,SAAUk2B,SAEnD,CA+CA,SAASC,EAAUhlE,GAIjB,IAAIglB,EACyB,SAA3BsP,EAAOua,SAASo2B,OACZ3wC,EAAOua,SAASo2B,OAChB3wC,EAAOua,SAASqF,KAElBA,EAAqB,kBAAPl0C,EAAkBA,EAAK+jE,EAAW/jE,GAKpD,OAJAojE,EACEp+C,EACsE,sEAAAkvB,GAEjE,IAAIgxB,IAAIhxB,EAAMlvB,EACvB,CAhFa,MAAT+J,IACFA,EAAQ,EACR01C,EAAcU,aAAYxB,EAAM,GAAAc,EAAcxhB,MAAO,CAAAwgB,IAAK10C,IAAS,KAgFrE,IAAI21C,EAAmB,CACrB,UAAIrd,GACF,OAAOA,GAET,YAAIxY,GACF,OAAOw1B,EAAY/vC,EAAQmwC,IAE7BW,MAAAA,CAAO3oE,GACL,GAAIo7C,EACF,MAAM,IAAI/1C,MAAM,8CAKlB,OAHAwyB,EAAOwN,iBAAiBqhC,EAAmB0B,GAC3ChtB,EAAWp7C,EAEJ,KACL63B,EAAOyN,oBAAoBohC,EAAmB0B,GAC9ChtB,EAAW,IAAI,GAGnBysB,WAAWtkE,GACFskE,EAAWhwC,EAAQt0B,GAE5BglE,YACAK,cAAAA,CAAerlE,GAEb,IAAI4xC,EAAMozB,EAAUhlE,GACpB,MAAO,CACL4jE,SAAUhyB,EAAIgyB,SACdnyB,OAAQG,EAAIH,OACZoyB,KAAMjyB,EAAIiyB,OAGdhnE,KA9FF,SAAcmD,EAAQijD,GACpBoE,EAAS6b,EAAOoC,KAChB,IAAIz2B,EAAW60B,EAAegB,EAAQ71B,SAAU7uC,EAAIijD,GAChDshB,GAAkBA,EAAiB11B,EAAU7uC,GAEjD+uB,EAAQ61C,IAAa,EACrB,IAAIW,EAAehC,EAAgB10B,EAAU9f,GACzC6iB,EAAM8yB,EAAQJ,WAAWz1B,GAG7B,IACE41B,EAAce,UAAUD,EAAc,GAAI3zB,GAC1C,MAAO0Z,GAKP,GAAIA,aAAiBma,cAA+B,mBAAfna,EAAMnpD,KACzC,MAAMmpD,EAIRh3B,EAAOua,SAASxc,OAAOuf,EACxB,CAEG4yB,GAAY3sB,GACdA,EAAS,CAAEwP,SAAQxY,SAAU61B,EAAQ71B,SAAUk2B,MAAO,GAE1D,EAmEE3/D,QAjEF,SAAiBpF,EAAQijD,GACvBoE,EAAS6b,EAAOwC,QAChB,IAAI72B,EAAW60B,EAAegB,EAAQ71B,SAAU7uC,EAAIijD,GAChDshB,GAAkBA,EAAiB11B,EAAU7uC,GAEjD+uB,EAAQ61C,IACR,IAAIW,EAAehC,EAAgB10B,EAAU9f,GACzC6iB,EAAM8yB,EAAQJ,WAAWz1B,GAC7B41B,EAAcU,aAAaI,EAAc,GAAI3zB,GAEzC4yB,GAAY3sB,GACdA,EAAS,CAAEwP,SAAQxY,SAAU61B,EAAQ71B,SAAUk2B,MAAO,GAE1D,EAqDEY,GAAG93D,GACM42D,EAAckB,GAAG93D,IAI5B,OAAO62D,CACT,CCztBA,IAAYkB,GAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,aACD,CALD,CAAYA,IAAAA,EAKX,KAyOM,MAAMC,EAAqB,IAAI5xC,IAAuB,CAC3D,OACA,gBACA,OACA,KACA,QACA,aA6JI,SAAU6xC,EACdC,EACAC,EACAC,EACAC,GAEA,YAHuB,IAAvBD,IAAAA,EAAuB,SACvB,IAAAC,IAAAA,EAA0B,CAAC,GAEpBH,EAAOxpE,KAAI,CAAC4pE,EAAOp3C,KACxB,IAAIq3C,EAAW,IAAIH,EAAYl3C,GAC3Bga,EAAyB,kBAAbo9B,EAAMp9B,GAAkBo9B,EAAMp9B,GAAKq9B,EAASvkE,KAAK,KAWjE,GAVAuhE,GACkB,IAAhB+C,EAAMp3C,QAAmBo3C,EAAMlrC,SAAQ,6CAGzCmoC,GACG8C,EAASn9B,GACV,qCAAqCA,EAArC,qEAvBN,SACEo9B,GAEA,OAAuB,IAAhBA,EAAMp3C,KACf,CAuBQs3C,CAAaF,GAAQ,CACvB,IAAIG,EAAU3C,EAAA,GACTwC,EACAH,EAAmBG,GAAM,CAC5Bp9B,OAGF,OADAm9B,EAASn9B,GAAMu9B,EACRA,CACR,CAAM,CACL,IAAIC,EAAiB5C,EAAA,GAChBwC,EACAH,EAAmBG,GAAM,CAC5Bp9B,KACA9N,cAAU77B,IAaZ,OAXA8mE,EAASn9B,GAAMw9B,EAEXJ,EAAMlrC,WACRsrC,EAAkBtrC,SAAW6qC,EAC3BK,EAAMlrC,SACN+qC,EACAI,EACAF,IAIGK,CACR,IAEL,CAOM,SAAUC,EAGdT,EACAU,EACAC,QAAQ,IAARA,IAAAA,EAAW,KAEX,IAGI9C,EAAW+C,GAFU,kBAAhBF,EAA2B3C,EAAU2C,GAAeA,GAEvB7C,UAAY,IAAK8C,GAEvD,GAAgB,MAAZ9C,EACF,OAAO,KAGT,IAAIgD,EAAWC,EAAcd,IAkM/B,SAA2Ba,GACzBA,EAASr9D,MAAK,CAAC5N,EAAGC,IAChBD,EAAE2jB,QAAU1jB,EAAE0jB,MACV1jB,EAAE0jB,MAAQ3jB,EAAE2jB,MAyCpB,SAAwB3jB,EAAaC,GACnC,IAAIkrE,EACFnrE,EAAEM,SAAWL,EAAEK,QAAUN,EAAEiG,MAAM,GAAI,GAAGmlE,OAAM,CAACl5D,EAAGnR,IAAMmR,IAAMjS,EAAEc,KAElE,OAAOoqE,EAKHnrE,EAAEA,EAAEM,OAAS,GAAKL,EAAEA,EAAEK,OAAS,GAG/B,CACN,CArDQ+qE,CACErrE,EAAEsrE,WAAW1qE,KAAK0jC,GAASA,EAAKinC,gBAChCtrE,EAAEqrE,WAAW1qE,KAAK0jC,GAASA,EAAKinC,kBAG1C,CA1MEC,CAAkBP,GAElB,IAAIhkD,EAAU,KACd,IAAK,IAAIlmB,EAAI,EAAc,MAAXkmB,GAAmBlmB,EAAIkqE,EAAS3qE,SAAUS,EACxDkmB,EAAUwkD,EACRR,EAASlqE,GAOT2qE,EAAgBzD,IAIpB,OAAOhhD,CACT,CAyCA,SAASikD,EAGPd,EACAa,EACAU,EACArB,QAF2C,IAA3CW,IAAAA,EAA2C,SAC3C,IAAAU,IAAAA,EAA4C,SAClC,IAAVrB,IAAAA,EAAa,IAEb,IAAIsB,EAAeA,CACjBpB,EACAp3C,EACAy4C,KAEA,IAAIvnC,EAAmC,CACrCunC,kBACmBpoE,IAAjBooE,EAA6BrB,EAAMnC,MAAQ,GAAKwD,EAClDC,eAAuC,IAAxBtB,EAAMsB,cACrBP,cAAen4C,EACfo3C,SAGElmC,EAAKunC,aAAaE,WAAW,OAC/BtE,EACEnjC,EAAKunC,aAAaE,WAAWzB,GAC7B,wBAAwBhmC,EAAKunC,aAA7B,wBACMvB,EADN,4GAKFhmC,EAAKunC,aAAevnC,EAAKunC,aAAa5lE,MAAMqkE,EAAWhqE,SAGzD,IAAI+nE,EAAO2D,EAAU,CAAC1B,EAAYhmC,EAAKunC,eACnCP,EAAaK,EAAYn0D,OAAO8sB,GAKhCkmC,EAAMlrC,UAAYkrC,EAAMlrC,SAASh/B,OAAS,IAC5CmnE,GAGkB,IAAhB+C,EAAMp3C,MACN,4FACuCi1C,EAAI,MAG7C6C,EAAcV,EAAMlrC,SAAU2rC,EAAUK,EAAYjD,KAKpC,MAAdmC,EAAMnC,MAAiBmC,EAAMp3C,QAIjC63C,EAAS/pE,KAAK,CACZmnE,OACA1kD,MAAOsoD,EAAa5D,EAAMmC,EAAMp3C,OAChCk4C,cACA,EAaJ,OAXAlB,EAAO/sD,SAAQ,CAACmtD,EAAOp3C,KAAS,IAAA84C,EAE9B,GAAmB,KAAf1B,EAAMnC,MAA0B,OAAX6D,EAAC1B,EAAMnC,OAAN6D,EAAY7vC,SAAS,KAG7C,IAAK,IAAI8vC,KAAYC,EAAwB5B,EAAMnC,MACjDuD,EAAapB,EAAOp3C,EAAO+4C,QAH7BP,EAAapB,EAAOp3C,EAKrB,IAGI63C,CACT,CAgBA,SAASmB,EAAwB/D,GAC/B,IAAIgE,EAAWhE,EAAKz1D,MAAM,KAC1B,GAAwB,IAApBy5D,EAAS/rE,OAAc,MAAO,GAElC,IAAKgsE,KAAUC,GAAQF,EAGnBG,EAAaF,EAAMG,SAAS,KAE5BC,EAAWJ,EAAM7iE,QAAQ,MAAO,IAEpC,GAAoB,IAAhB8iE,EAAKjsE,OAGP,OAAOksE,EAAa,CAACE,EAAU,IAAM,CAACA,GAGxC,IAAIC,EAAeP,EAAwBG,EAAKrmE,KAAK,MAEjD6Z,EAAmB,GAqBvB,OAZAA,EAAO7e,QACFyrE,EAAa/rE,KAAKgsE,GACP,KAAZA,EAAiBF,EAAW,CAACA,EAAUE,GAAS1mE,KAAK,QAKrDsmE,GACFzsD,EAAO7e,QAAQyrE,GAIV5sD,EAAOnf,KAAKurE,GACjB9D,EAAK0D,WAAW,MAAqB,KAAbI,EAAkB,IAAMA,GAEpD,CAaA,MAAMU,EAAU,SACVC,EAAsB,EACtBC,EAAkB,EAClBC,EAAoB,EACpBC,EAAqB,GACrBC,GAAgB,EAChBC,EAAW7hE,GAAoB,MAANA,EAE/B,SAAS2gE,EAAa5D,EAAcj1C,GAClC,IAAIi5C,EAAWhE,EAAKz1D,MAAM,KACtBw6D,EAAef,EAAS/rE,OAS5B,OARI+rE,EAASptE,KAAKkuE,KAChBC,GAAgBF,GAGd95C,IACFg6C,GAAgBL,GAGXV,EACJ3hD,QAAQpf,IAAO6hE,EAAQ7hE,KACvBs5D,QACC,CAACjhD,EAAO0pD,IACN1pD,GACCkpD,EAAQ3iE,KAAKmjE,GACVP,EACY,KAAZO,EACAL,EACAC,IACNG,EAEN,CAiBA,SAAS3B,EAIP6B,EACArF,GAEA,IAAI,WAAEqD,GAAegC,EAEjBC,EAAgB,CAAC,EACjBC,EAAkB,IAClBvmD,EAA2D,GAC/D,IAAK,IAAIlmB,EAAI,EAAGA,EAAIuqE,EAAWhrE,SAAUS,EAAG,CAC1C,IAAIujC,EAAOgnC,EAAWvqE,GAClBg4C,EAAMh4C,IAAMuqE,EAAWhrE,OAAS,EAChCmtE,EACkB,MAApBD,EACIvF,EACAA,EAAShiE,MAAMunE,EAAgBltE,SAAW,IAC5CkJ,EAAQkkE,EACV,CAAErF,KAAM/jC,EAAKunC,aAAcC,cAAexnC,EAAKwnC,cAAe/yB,OAC9D00B,GAGF,IAAKjkE,EAAO,OAAO,KAEnB9J,OAAOg3B,OAAO62C,EAAe/jE,EAAMmkE,QAEnC,IAAInD,EAAQlmC,EAAKkmC,MAEjBvjD,EAAQ/lB,KAAK,CAEXysE,OAAQJ,EACRtF,SAAU+D,EAAU,CAACwB,EAAiBhkE,EAAMy+D,WAC5C2F,aAAcC,EACZ7B,EAAU,CAACwB,EAAiBhkE,EAAMokE,gBAEpCpD,UAGyB,MAAvBhhE,EAAMokE,eACRJ,EAAkBxB,EAAU,CAACwB,EAAiBhkE,EAAMokE,eAEvD,CAED,OAAO3mD,CACT,CAiHgB,SAAAymD,EAIdI,EACA7F,GAEuB,kBAAZ6F,IACTA,EAAU,CAAEzF,KAAMyF,EAAShC,eAAe,EAAO/yB,KAAK,IAGxD,IAAKhyB,EAASgnD,GA4ChB,SACE1F,EACAyD,EACA/yB,QADa,IAAb+yB,IAAAA,GAAgB,QACb,IAAH/yB,IAAAA,GAAM,GAEN2uB,EACW,MAATW,IAAiBA,EAAKoE,SAAS,MAAQpE,EAAKoE,SAAS,MACrD,eAAepE,EAAf,oCACMA,EAAK5+D,QAAQ,MAAO,MAD1B,qIAGsC4+D,EAAK5+D,QAAQ,MAAO,MAAK,MAGjE,IAAIkkE,EAA8B,GAC9BK,EACF,IACA3F,EACG5+D,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,qBAAsB,QAC9BA,QAAQ,kBAAkB,CAACwkE,EAAWC,EAAmB1B,KACxDmB,EAAOzsE,KAAK,CAAEgtE,YAAW1B,WAA0B,MAAdA,IAC9BA,EAAa,eAAiB,gBAGvCnE,EAAKoE,SAAS,MAChBkB,EAAOzsE,KAAK,CAAEgtE,UAAW,MACzBF,GACW,MAAT3F,GAAyB,OAATA,EACZ,QACA,qBACGtvB,EAETi1B,GAAgB,QACE,KAAT3F,GAAwB,MAATA,IAQxB2F,GAAgB,iBAKlB,IAAIjnD,EAAU,IAAIjgB,OAAOknE,EAAclC,OAAgBroE,EAAY,KAEnE,MAAO,CAACsjB,EAAS4mD,EACnB,CA9FkCQ,CAC9BL,EAAQzF,KACRyF,EAAQhC,cACRgC,EAAQ/0B,KAGNvvC,EAAQy+D,EAASz+D,MAAMud,GAC3B,IAAKvd,EAAO,OAAO,KAEnB,IAAIgkE,EAAkBhkE,EAAM,GACxBokE,EAAeJ,EAAgB/jE,QAAQ,UAAW,MAClD2kE,EAAgB5kE,EAAMvD,MAAM,GAuBhC,MAAO,CACL0nE,OAvBmBI,EAAenJ,QAClC,CAAC1C,EAAI+E,EAA6B7zC,KAAS,IAApC,UAAE86C,EAAS,WAAE1B,GAAYvF,EAG9B,GAAkB,MAAdiH,EAAmB,CACrB,IAAIG,EAAaD,EAAch7C,IAAU,GACzCw6C,EAAeJ,EACZvnE,MAAM,EAAGunE,EAAgBltE,OAAS+tE,EAAW/tE,QAC7CmJ,QAAQ,UAAW,KACvB,CAED,MAAM4E,EAAQ+/D,EAAch7C,GAM5B,OAJE8uC,EAAKgM,GADH1B,IAAen+D,OACC5K,EAsF1B,SAAkC4K,EAAe6/D,GAC/C,IACE,OAAOI,mBAAmBjgE,GAC1B,MAAOshD,GAQP,OAPA+X,GACE,EACA,gCAAgCwG,EAAhC,6CACkB7/D,EADlB,iFAEqCshD,EAAK,MAGrCthD,CACR,CACH,CAjG0BkgE,CAAyBlgE,GAAS,GAAI6/D,GAEnDhM,CAAI,GAEb,CAAC,GAKD+F,SAAUuF,EACVI,eACAE,UAEJ,CAwDA,SAASpC,EAAgBr9D,GACvB,IACE,OAAOmgE,UAAUngE,GACjB,MAAOshD,GAQP,OAPA+X,GACE,EACA,iBAAiBr5D,EAAjB,oHAEeshD,EAAK,MAGfthD,CACR,CACH,CAoBgB,SAAA28D,EACd/C,EACA8C,GAEA,GAAiB,MAAbA,EAAkB,OAAO9C,EAE7B,IAAKA,EAASl7D,cAAcg/D,WAAWhB,EAASh+D,eAC9C,OAAO,KAKT,IAAI0hE,EAAa1D,EAAS0B,SAAS,KAC/B1B,EAASzqE,OAAS,EAClByqE,EAASzqE,OACTouE,EAAWzG,EAASttD,OAAO8zD,GAC/B,OAAIC,GAAyB,MAAbA,EAEP,KAGFzG,EAAShiE,MAAMwoE,IAAe,GACvC,CA2CA,SAASE,EACPjxB,EACArqB,EACAu7C,EACAvG,GAEA,MACE,qBAAqB3qB,EAArB,2CACQrqB,EAAK,YAAa4pC,KAAKC,UAC7BmL,GAFF,yCAIQuG,EAJR,2HAOJ,CAyBM,SAAUC,EAEd5nD,GACA,OAAOA,EAAQyD,QACb,CAAClhB,EAAO4pB,IACI,IAAVA,GAAgB5pB,EAAMghE,MAAMnC,MAAQ7+D,EAAMghE,MAAMnC,KAAK/nE,OAAS,GAEpE,CAKM,SAAUwuE,EACdC,EACAC,EACAC,EACAC,GAEA,IAAI7qE,OAFU,IAAd6qE,IAAAA,GAAiB,GAGI,kBAAVH,EACT1qE,EAAK8jE,EAAU4G,IAEf1qE,EAAE2jE,EAAQ,GAAA+G,GAEVtH,GACGpjE,EAAG4jE,WAAa5jE,EAAG4jE,SAAS5rC,SAAS,KACtCsyC,EAAoB,IAAK,WAAY,SAAUtqE,IAEjDojE,GACGpjE,EAAG4jE,WAAa5jE,EAAG4jE,SAAS5rC,SAAS,KACtCsyC,EAAoB,IAAK,WAAY,OAAQtqE,IAE/CojE,GACGpjE,EAAGyxC,SAAWzxC,EAAGyxC,OAAOzZ,SAAS,KAClCsyC,EAAoB,IAAK,SAAU,OAAQtqE,KAI/C,IAGIC,EAHA6qE,EAAwB,KAAVJ,GAAgC,KAAhB1qE,EAAG4jE,SACjCmH,EAAaD,EAAc,IAAM9qE,EAAG4jE,SAaxC,GAAIiH,GAAgC,MAAdE,EACpB9qE,EAAO2qE,MACF,CACL,IAAII,EAAqBL,EAAe1uE,OAAS,EAEjD,GAAI8uE,EAAWrD,WAAW,MAAO,CAC/B,IAAIuD,EAAaF,EAAWx8D,MAAM,KAKlC,KAAyB,OAAlB08D,EAAW,IAChBA,EAAW37C,QACX07C,GAAsB,EAGxBhrE,EAAG4jE,SAAWqH,EAAWppE,KAAK,IAC/B,CAID5B,EAAO+qE,GAAsB,EAAIL,EAAeK,GAAsB,GACvE,CAED,IAAIhH,WAvJsBhkE,EAAQkrE,QAAY,IAAZA,IAAAA,EAAe,KACjD,IACEtH,SAAUmH,EAAU,OACpBt5B,EAAS,GAAE,KACXoyB,EAAO,IACS,kBAAP7jE,EAAkB8jE,EAAU9jE,GAAMA,EAEzC4jE,EAAWmH,EACXA,EAAWrD,WAAW,KACpBqD,EAWR,SAAyBvD,EAAsB0D,GAC7C,IAAIlD,EAAWkD,EAAa9lE,QAAQ,OAAQ,IAAImJ,MAAM,KAYtD,OAXuBi5D,EAAaj5D,MAAM,KAEzByK,SAASgwD,IACR,OAAZA,EAEEhB,EAAS/rE,OAAS,GAAG+rE,EAAShK,MACb,MAAZgL,GACThB,EAASnrE,KAAKmsE,EACf,IAGIhB,EAAS/rE,OAAS,EAAI+rE,EAASnmE,KAAK,KAAO,GACpD,CAxBQspE,CAAgBJ,EAAYG,GAC9BA,EAEJ,MAAO,CACLtH,WACAnyB,OAAQ25B,EAAgB35B,GACxBoyB,KAAMwH,EAAcxH,GAExB,CAqIayH,CAAYtrE,EAAIC,GAGvBsrE,EACFR,GAA6B,MAAfA,GAAsBA,EAAW3C,SAAS,KAEtDoD,GACDV,GAA8B,MAAfC,IAAuBH,EAAiBxC,SAAS,KAQnE,OANGpE,EAAKJ,SAASwE,SAAS,OACvBmD,IAA4BC,IAE7BxH,EAAKJ,UAAY,KAGZI,CACT,OAiBa2D,EAAa/F,GACxBA,EAAM//D,KAAK,KAAKuD,QAAQ,SAAU,KAKvBokE,EAAqB5F,GAChCA,EAASx+D,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAKlCgmE,EAAmB35B,GAC7BA,GAAqB,MAAXA,EAEPA,EAAOi2B,WAAW,KAClBj2B,EACA,IAAMA,EAHN,GAQO45B,EAAiBxH,GAC3BA,GAAiB,MAATA,EAAoBA,EAAK6D,WAAW,KAAO7D,EAAO,IAAMA,EAAzC,GA+BgB/hE,YA4P7B2pE,EAOXzyC,WAAAA,CACE0yC,EACAC,EACAhzD,EACAizD,QAAQ,IAARA,IAAAA,GAAW,GAEXjsE,KAAK+rE,OAASA,EACd/rE,KAAKgsE,WAAaA,GAAc,GAChChsE,KAAKisE,SAAWA,EACZjzD,aAAgB7W,OAClBnC,KAAKgZ,KAAOA,EAAKpd,WACjBoE,KAAK2rD,MAAQ3yC,GAEbhZ,KAAKgZ,KAAOA,CAEhB,EAOI,SAAUkzD,EAAqBvgB,GACnC,OACW,MAATA,GACwB,kBAAjBA,EAAMogB,QACe,kBAArBpgB,EAAMqgB,YACa,mBAAnBrgB,EAAMsgB,UACb,SAAUtgB,CAEd,CCn6BA,MAAMwgB,EAAgD,CACpD,OACA,MACA,QACA,UAEIC,EAAuB,IAAI93C,IAC/B63C,GAGIE,EAAuC,CAC3C,SACGF,GAECG,EAAsB,IAAIh4C,IAAgB+3C,GAE1CE,EAAsB,IAAIj4C,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MACnDk4C,EAAoC,IAAIl4C,IAAI,CAAC,IAAK,MAE3Cm4C,EAA4C,CACvDnpB,MAAO,OACPpU,cAAUzvC,EACVitE,gBAAYjtE,EACZktE,gBAAYltE,EACZmtE,iBAAantE,EACbotE,cAAUptE,EACVqtE,UAAMrtE,EACNuyC,UAAMvyC,GAGKstE,EAAsC,CACjDzpB,MAAO,OACPtqC,UAAMvZ,EACNitE,gBAAYjtE,EACZktE,gBAAYltE,EACZmtE,iBAAantE,EACbotE,cAAUptE,EACVqtE,UAAMrtE,EACNuyC,UAAMvyC,GAGKutE,EAAiC,CAC5C1pB,MAAO,YACP2pB,aAASxtE,EACTytE,WAAOztE,EACPyvC,cAAUzvC,GAGN0tE,EAAqB,gCAErBC,EAAyD5G,IAAK,CAClE6G,iBAAkBC,QAAQ9G,EAAM6G,oBAG5BE,EAA0B,2BAW1B,SAAUC,GAAaC,GAC3B,MAAMC,EAAeD,EAAK94C,OACtB84C,EAAK94C,OACa,qBAAXA,OACPA,YACAl1B,EACEkuE,EACoB,qBAAjBD,GAC0B,qBAA1BA,EAAa94C,UAC2B,qBAAxC84C,EAAa94C,SAASC,cACzB+4C,GAAYD,EAOlB,IAAItH,EACJ,GANA5C,EACEgK,EAAKrH,OAAO9pE,OAAS,EACrB,6DAIEmxE,EAAKpH,mBACPA,EAAqBoH,EAAKpH,wBACrB,GAAIoH,EAAKI,oBAAqB,CAEnC,IAAIA,EAAsBJ,EAAKI,oBAC/BxH,EAAsBG,IAAK,CACzB6G,iBAAkBQ,EAAoBrH,IAEzC,MACCH,EAAqB+G,EAIvB,IAQIU,EARAvH,EAA0B,CAAC,EAE3BwH,EAAa5H,EACfsH,EAAKrH,OACLC,OACA5mE,EACA8mE,GAGEQ,EAAW0G,EAAK1G,UAAY,IAE5B3/D,EAAM48D,EAAA,CACRgK,mBAAmB,EACnBC,wBAAwB,EACxBC,oBAAoB,GACjBT,EAAKrmE,QAGN+mE,EAAuC,KAEvCC,EAAc,IAAI95C,IAElB+5C,EAAsD,KAEtDC,EAAkE,KAElEC,EAAsD,KAOtDC,EAA8C,MAAtBf,EAAKgB,cAE7BC,EAAiB7H,EAAYkH,EAAYN,EAAK1I,QAAQ71B,SAAU63B,GAChE4H,EAAkC,KAEtC,GAAsB,MAAlBD,EAAwB,CAG1B,IAAI/iB,EAAQijB,GAAuB,IAAK,CACtC3K,SAAUwJ,EAAK1I,QAAQ71B,SAAS+0B,YAE9B,QAAEhhD,EAAO,MAAEujD,GAAUqI,GAAuBd,GAChDW,EAAiBzrD,EACjB0rD,EAAgB,CAAE,CAACnI,EAAMp9B,IAAKuiB,EAC/B,CAED,IAOImjB,EA2BAC,EAlCAC,GAGDN,EAAezzE,MAAM4D,GAAMA,EAAE2nE,MAAMvI,UAElCyQ,EAAezzE,MAAM4D,GAAMA,EAAE2nE,MAAMyI,UAAiC,MAAtBxB,EAAKgB,eAGnDnrB,EAAqB,CACvB4rB,cAAezB,EAAK1I,QAAQrd,OAC5BxY,SAAUu+B,EAAK1I,QAAQ71B,SACvBjsB,QAASyrD,EACTM,cACAG,WAAY1C,EAEZ2C,sBAA6C,MAAtB3B,EAAKgB,eAAgC,KAC5DY,oBAAoB,EACpBC,aAAc,OACdC,WAAa9B,EAAKgB,eAAiBhB,EAAKgB,cAAcc,YAAe,CAAC,EACtEC,WAAa/B,EAAKgB,eAAiBhB,EAAKgB,cAAce,YAAe,KACrEC,OAAShC,EAAKgB,eAAiBhB,EAAKgB,cAAcgB,QAAWd,EAC7De,SAAU,IAAIroC,IACdsoC,SAAU,IAAItoC,KAKZuoC,EAA+BrM,EAAcyB,IAI7C6K,GAA4B,EAM5BC,GAA+B,EAG/BC,EAAmD,IAAI1oC,IAMvD2oC,EAAmD,KAInDC,GAA8B,EAM9BC,GAAyB,EAIzBC,EAAoC,GAIpCC,EAAkC,GAGlCC,EAAmB,IAAIhpC,IAGvBipC,EAAqB,EAKrBC,GAA2B,EAG3BC,EAAiB,IAAInpC,IAGrBopC,EAAmB,IAAIn8C,IAGvBo8C,EAAmB,IAAIrpC,IAGvBspC,EAAiB,IAAItpC,IAIrBupC,GAAkB,IAAIt8C,IAMtBu8C,GAAkB,IAAIxpC,IAItBypC,GAAmB,IAAIzpC,IAIvB0pC,IAA0B,EA6G9B,SAASC,GACPC,EACAC,GAEA5tB,EAAK0gB,EAAA,GACA1gB,EACA2tB,GAKL,IAAIE,EAA8B,GAC9BC,EAAgC,GAEhChqE,EAAO4mE,mBACT1qB,EAAMosB,SAASr2D,SAAQ,CAACg4D,EAASvvE,KACT,SAAlBuvE,EAAQ/tB,QACNstB,GAAgBv4B,IAAIv2C,GAEtBsvE,EAAoBl0E,KAAK4E,GAIzBqvE,EAAkBj0E,KAAK4E,GAE1B,IAILssE,EAAY/0D,SAASi4D,GACnBA,EAAWhuB,EAAO,CAChBstB,gBAAiBQ,EACjBG,4BAA6BL,MAK7B9pE,EAAO4mE,oBACTmD,EAAkB93D,SAASvX,GAAQwhD,EAAMosB,SAAShoC,OAAO5lC,KACzDsvE,EAAoB/3D,SAASvX,GAAQ0vE,GAAc1vE,KAEvD,CAOA,SAAS2vE,GACPviC,EACA+hC,GAA0E,IAAAS,EAAAC,EAO1E,IAOInC,EAPAoC,EACkB,MAApBtuB,EAAMksB,YACyB,MAA/BlsB,EAAM6rB,WAAWzC,YACjBmF,GAAiBvuB,EAAM6rB,WAAWzC,aACP,YAA3BppB,EAAM6rB,WAAW7rB,QACe,KAAlB,OAAdouB,EAAAxiC,EAASoU,YAAK,EAAdouB,EAAgBI,aAKdtC,EAFAyB,EAASzB,WACP9zE,OAAO2G,KAAK4uE,EAASzB,YAAYlzE,OAAS,EAC/B20E,EAASzB,WAGT,KAENoC,EAEItuB,EAAMksB,WAGN,KAIf,IAAID,EAAa0B,EAAS1B,WACtBwC,GACEzuB,EAAMisB,WACN0B,EAAS1B,WACT0B,EAAShuD,SAAW,GACpBguD,EAASxB,QAEXnsB,EAAMisB,WAINI,EAAWrsB,EAAMqsB,SACjBA,EAASlf,KAAO,IAClBkf,EAAW,IAAItoC,IAAIsoC,GACnBA,EAASt2D,SAAQ,CAAC4wD,EAAG1tE,IAAMozE,EAAShtE,IAAIpG,EAAGywE,MAK7C,IAqBIkE,EArBA7B,GAC4B,IAA9BQ,GACgC,MAA/BvsB,EAAM6rB,WAAWzC,YAChBmF,GAAiBvuB,EAAM6rB,WAAWzC,cACF,KAAhC,OAAAiF,EAAAziC,EAASoU,YAAT,EAAAquB,EAAgBG,aAoBpB,GAlBIhE,IACFC,EAAaD,EACbA,OAAqBruE,GAGnBwwE,GAEOL,IAAkBrM,EAAcyB,MAEhC4K,IAAkBrM,EAAcoC,KACzC8H,EAAK1I,QAAQ7nE,KAAKgyC,EAAUA,EAASoU,OAC5BssB,IAAkBrM,EAAcwC,SACzC0H,EAAK1I,QAAQt/D,QAAQypC,EAAUA,EAASoU,QAMtCssB,IAAkBrM,EAAcyB,IAAK,CAEvC,IAAIgN,EAAajC,EAAuBrlE,IAAI44C,EAAMpU,SAAS+0B,UACvD+N,GAAcA,EAAW35B,IAAInJ,EAAS+0B,UACxCiN,EAAqB,CACnBe,gBAAiB3uB,EAAMpU,SACvBgjC,aAAchjC,GAEP6gC,EAAuB13B,IAAInJ,EAAS+0B,YAG7CiN,EAAqB,CACnBe,gBAAiB/iC,EACjBgjC,aAAc5uB,EAAMpU,gBAGnB,GAAI4gC,EAA8B,CAEvC,IAAIqC,EAAUpC,EAAuBrlE,IAAI44C,EAAMpU,SAAS+0B,UACpDkO,EACFA,EAAQl/D,IAAIi8B,EAAS+0B,WAErBkO,EAAU,IAAI79C,IAAY,CAAC4a,EAAS+0B,WACpC8L,EAAuBptE,IAAI2gD,EAAMpU,SAAS+0B,SAAUkO,IAEtDjB,EAAqB,CACnBe,gBAAiB3uB,EAAMpU,SACvBgjC,aAAchjC,EAEjB,CAED8hC,GAAWhN,EAAC,CAAD,EAEJiN,EAAU,CACbzB,aACAD,aACAL,cAAeU,EACf1gC,WACA8/B,aAAa,EACbG,WAAY1C,EACZ6C,aAAc,OACdF,sBAAuBgD,GACrBljC,EACA+hC,EAAShuD,SAAWqgC,EAAMrgC,SAE5BosD,qBACAM,aAEFuB,GAIFtB,EAAgBrM,EAAcyB,IAC9B6K,GAA4B,EAC5BC,GAA+B,EAC/BG,GAA8B,EAC9BC,GAAyB,EACzBC,EAA0B,GAC1BC,EAAwB,EAC1B,CAgJAiC,eAAeC,GACbpD,EACAhgC,EACAqjC,GAcAxD,GAA+BA,EAA4ByD,QAC3DzD,EAA8B,KAC9Ba,EAAgBV,EAChBe,GACoD,KAAjDsC,GAAQA,EAAKE,gCAuuClB,SACEvjC,EACAjsB,GAEA,GAAIorD,GAAwBE,EAAmB,CAC7C,IAAIzsE,EAAM4wE,GAAaxjC,EAAUjsB,GACjCorD,EAAqBvsE,GAAOysE,GAC7B,CACH,CA3uCEoE,CAAmBrvB,EAAMpU,SAAUoU,EAAMrgC,SACzC4sD,GAAkE,KAArC0C,GAAQA,EAAKlD,oBAE1CS,GAAuE,KAAvCyC,GAAQA,EAAKK,sBAE7C,IAAIC,EAAc/E,GAAsBC,EACpC+E,EAAoBP,GAAQA,EAAKQ,mBACjC9vD,EAAU4jD,EAAYgM,EAAa3jC,EAAU63B,GAGjD,IAAK9jD,EAAS,CACZ,IAAI0oC,EAAQijB,GAAuB,IAAK,CAAE3K,SAAU/0B,EAAS+0B,YACvDhhD,QAAS+vD,EAAe,MAAExM,GAC9BqI,GAAuBgE,GAUzB,OARAI,UACAxB,GAAmBviC,EAAU,CAC3BjsB,QAAS+vD,EACTzD,WAAY,CAAC,EACbE,OAAQ,CACN,CAACjJ,EAAMp9B,IAAKuiB,IAIjB,CAQD,GACErI,EAAM0rB,cACLkB,GA62FP,SAA0Bl0E,EAAaC,GACrC,GAAID,EAAEioE,WAAahoE,EAAEgoE,UAAYjoE,EAAE81C,SAAW71C,EAAE61C,OAC9C,OAAO,EAGT,GAAe,KAAX91C,EAAEkoE,KAEJ,MAAkB,KAAXjoE,EAAEioE,KACJ,GAAIloE,EAAEkoE,OAASjoE,EAAEioE,KAEtB,OAAO,EACF,GAAe,KAAXjoE,EAAEioE,KAEX,OAAO,EAKT,OAAO,CACT,CA/3FMgP,CAAiB5vB,EAAMpU,SAAUA,MAC/BqjC,GAAQA,EAAKY,YAActB,GAAiBU,EAAKY,WAAWzG,aAG9D,YADA+E,GAAmBviC,EAAU,CAAEjsB,YAKjC8rD,EAA8B,IAAIqE,gBAClC,IAMIC,EACAC,EAPA9Q,EAAU+Q,GACZ9F,EAAK1I,QACL71B,EACA6/B,EAA4ByE,OAC5BjB,GAAQA,EAAKY,YAKf,GAAIZ,GAAQA,EAAKe,aAKfA,EAAe,CACb,CAACG,GAAoBxwD,GAASujD,MAAMp9B,IAAKmpC,EAAKe,mBAE3C,GACLf,GACAA,EAAKY,YACLtB,GAAiBU,EAAKY,WAAWzG,YACjC,CAEA,IAAIgH,QAoDRrB,eACE7P,EACAtzB,EACAikC,EACAlwD,EACAsvD,QAAA,IAAAA,IAAAA,EAA8B,CAAC,GAE/BoB,KAGA,IAII53D,EAJAozD,EAygGR,SACEjgC,EACAikC,GAEA,IAAIhE,EAA6C,CAC/C7rB,MAAO,aACPpU,WACAw9B,WAAYyG,EAAWzG,WACvBC,WAAYwG,EAAWxG,WACvBC,YAAauG,EAAWvG,YACxBC,SAAUsG,EAAWtG,SACrBC,KAAMqG,EAAWrG,KACjB96B,KAAMmhC,EAAWnhC,MAEnB,OAAOm9B,CACT,CAxhGqByE,CAAwB1kC,EAAUikC,GACnDnC,GAAY,CAAE7B,eAId,IAAI0E,EAAcC,GAAe7wD,EAASisB,GAE1C,GAAK2kC,EAAYrN,MAAM9e,QAAWmsB,EAAYrN,MAAMvI,MAoBlD,GAVAliD,QAAeg4D,GACb,SACAvR,EACAqR,EACA5wD,EACAsjD,EACAF,EACAU,GAGEvE,EAAQgR,OAAOQ,QACjB,MAAO,CAAEC,gBAAgB,QApB3Bl4D,EAAS,CACP2Z,KAAMuwC,EAAWta,MACjBA,MAAOijB,GAAuB,IAAK,CACjCsF,OAAQ1R,EAAQ0R,OAChBjQ,SAAU/0B,EAAS+0B,SACnBkQ,QAASN,EAAYrN,MAAMp9B,MAmBjC,GAAIgrC,GAAiBr4D,GAAS,CAC5B,IAAItW,EAWJ,OATEA,EADE8sE,GAAwB,MAAhBA,EAAK9sE,QACL8sE,EAAK9sE,QAMbsW,EAAOmzB,WAAaoU,EAAMpU,SAAS+0B,SAAW3gB,EAAMpU,SAAS4C,aAE3DuiC,GAAwB/wB,EAAOvnC,EAAQ,CAAEo3D,aAAY1tE,YACpD,CAAEwuE,gBAAgB,EAC1B,CAED,GAAIK,GAAcv4D,GAAS,CAGzB,IAAIw4D,EAAgBd,GAAoBxwD,EAAS4wD,EAAYrN,MAAMp9B,IAUnE,OAJ+B,KAA1BmpC,GAAQA,EAAK9sE,WAChBmqE,EAAgBrM,EAAcoC,MAGzB,CAEL0N,kBAAmB,CAAC,EACpBmB,mBAAoB,CAAE,CAACD,EAAc/N,MAAMp9B,IAAKrtB,EAAO4vC,OAE1D,CAED,GAAI8oB,GAAiB14D,GACnB,MAAM6yD,GAAuB,IAAK,CAAEl5C,KAAM,iBAG5C,MAAO,CACL29C,kBAAmB,CAAE,CAACQ,EAAYrN,MAAMp9B,IAAKrtB,EAAO/C,MAExD,CAxI6B07D,CACvBlS,EACAtzB,EACAqjC,EAAKY,WACLlwD,EACA,CAAExd,QAAS8sE,EAAK9sE,UAGlB,GAAIiuE,EAAaO,eACf,OAGFZ,EAAoBK,EAAaL,kBACjCC,EAAeI,EAAac,mBAC5B1B,EAAoB6B,GAAqBzlC,EAAUqjC,EAAKY,YAGxD3Q,EAAU,IAAIoS,QAAQpS,EAAQvwB,IAAK,CAAEuhC,OAAQhR,EAAQgR,QACtD,CAGD,IAAI,eAAES,EAAc,WAAE1E,EAAU,OAAEE,SAuHpC4C,eACE7P,EACAtzB,EACAjsB,EACA8vD,EACAI,EACA0B,EACApvE,EACA4tE,EACAC,GAGA,IAAIR,EACFC,GAAsB4B,GAAqBzlC,EAAUikC,GAInD2B,EACF3B,GACA0B,GACAE,GAA4BjC,GAE1BD,EAAc/E,GAAsBC,GACnCiH,EAAeC,GAAwBC,GAC1CzH,EAAK1I,QACLzhB,EACArgC,EACA6xD,EACA5lC,EACAghC,EACAC,EACAC,EACAM,EACAD,EACAoC,EACA9L,EACAsM,EACAC,GAeF,GATAL,IACGkB,KACGlxD,GAAWA,EAAQhoB,MAAM4D,GAAMA,EAAE2nE,MAAMp9B,KAAO+qC,MAC/Ca,GAAiBA,EAAc/5E,MAAM4D,GAAMA,EAAE2nE,MAAMp9B,KAAO+qC,MAG/D5D,IAA4BD,EAGC,IAAzB0E,EAAc14E,QAAgD,IAAhC24E,EAAqB34E,OAAc,CACnE,IAAI64E,EAAkBC,KAStB,OARA3D,GAAmBviC,EAAQ80B,EAAA,CACzB/gD,UACAssD,WAAY,CAAC,EAEbE,OAAQ6D,GAAgB,MACpBD,EAAoB,CAAE7D,WAAY6D,GAAsB,CAAC,EACzD8B,EAAkB,CAAEzF,SAAU,IAAIroC,IAAIic,EAAMosB,WAAc,CAAC,IAE1D,CAAEuE,gBAAgB,EAC1B,CAMD,IAAKhE,EAA6B,CAChCgF,EAAqB57D,SAASm/B,IAC5B,IAAI64B,EAAU/tB,EAAMosB,SAAShlE,IAAI8tC,EAAG12C,KAChCuzE,EAAsBC,QACxB71E,EACA4xE,EAAUA,EAAQr4D,UAAOvZ,GAE3B6jD,EAAMosB,SAAS/sE,IAAI61C,EAAG12C,IAAKuzE,EAAoB,IAEjD,IAAI7F,EAAa6D,GAAqB/vB,EAAMksB,WAC5CwB,GAAWhN,EAAC,CACVmL,WAAY2D,GACRtD,EACmC,IAAnC9zE,OAAO2G,KAAKmtE,GAAYlzE,OACtB,CAAEkzE,WAAY,MACd,CAAEA,cACJ,CAAC,EACDyF,EAAqB34E,OAAS,EAC9B,CAAEozE,SAAU,IAAIroC,IAAIic,EAAMosB,WAC1B,CAAC,GAER,CAEDuF,EAAqB57D,SAASm/B,IACxB63B,EAAiBh4B,IAAIG,EAAG12C,MAC1ByzE,GAAa/8B,EAAG12C,KAEd02C,EAAGg9B,YAILnF,EAAiB1tE,IAAI61C,EAAG12C,IAAK02C,EAAGg9B,WACjC,IAIH,IAAIC,EAAiCA,IACnCR,EAAqB57D,SAAS8b,GAAMogD,GAAapgD,EAAErzB,OACjDitE,GACFA,EAA4ByE,OAAOrxC,iBACjC,QACAszC,GAIJ,IAAI,QAAEC,EAAO,cAAEC,EAAa,eAAEC,SACtBC,GACJvyB,EAAMrgC,QACNA,EACA+xD,EACAC,EACAzS,GAGJ,GAAIA,EAAQgR,OAAOQ,QACjB,MAAO,CAAEC,gBAAgB,GAMvBlF,GACFA,EAA4ByE,OAAOpxC,oBACjC,QACAqzC,GAGJR,EAAqB57D,SAASm/B,GAAO63B,EAAiB3oC,OAAO8Q,EAAG12C,OAGhE,IAAIg0E,EAAWC,GAAaL,GAC5B,GAAII,EAAU,CACZ,GAAIA,EAAShS,KAAOkR,EAAc14E,OAAQ,CAIxC,IAAI05E,EACFf,EAAqBa,EAAShS,IAAMkR,EAAc14E,QAAQwF,IAC5D2uE,EAAiBx9D,IAAI+iE,EACtB,CAED,aADM3B,GAAwB/wB,EAAOwyB,EAAS/5D,OAAQ,CAAEtW,YACjD,CAAEwuE,gBAAgB,EAC1B,CAGD,IAAI,WAAE1E,EAAU,OAAEE,GAAWwG,GAC3B3yB,EACArgC,EACA+xD,EACAW,EACArC,EACA2B,EACAW,EACA/E,IAIFA,GAAgBx3D,SAAQ,CAAC68D,EAAc/B,KACrC+B,EAAaC,WAAWnC,KAIlBA,GAAWkC,EAAapxB,OAC1B+rB,GAAgBnpC,OAAOysC,EACxB,GACD,IAGJ,IAAIgB,EAAkBC,KAClBgB,EAAqBC,GAAqB9F,GAC1C+F,EACFnB,GAAmBiB,GAAsBnB,EAAqB34E,OAAS,EAEzE,OAAA0nE,EAAA,CACEuL,aACAE,UACI6G,EAAuB,CAAE5G,SAAU,IAAIroC,IAAIic,EAAMosB,WAAc,CAAC,EAExE,CAlTqD6G,CACjD/T,EACAtzB,EACAjsB,EACA6vD,EACAP,GAAQA,EAAKY,WACbZ,GAAQA,EAAKsC,kBACbtC,GAAQA,EAAK9sE,QACb4tE,EACAC,GAGEW,IAOJlF,EAA8B,KAE9B0C,GAAmBviC,EAAQ80B,EAAA,CACzB/gD,WACIowD,EAAoB,CAAE7D,WAAY6D,GAAsB,CAAC,EAAC,CAC9D9D,aACAE,YAEJ,CAyRA,SAAS+G,GAAwB10E,GAS/B,OARIsF,EAAO4mE,oBACT2C,EAAehuE,IAAIb,GAAM6uE,EAAejmE,IAAI5I,IAAQ,GAAK,GAGrD8uE,GAAgBv4B,IAAIv2C,IACtB8uE,GAAgBlpC,OAAO5lC,IAGpBwhD,EAAMosB,SAAShlE,IAAI5I,IAAQirE,CACpC,CAsbAsF,eAAegC,GACb/wB,EACAwyB,EAAwBW,GASlB,IARN,WACEtD,EAAU,kBACV0B,EAAiB,QACjBpvE,cAKE,CAAC,EAACgxE,EAEFX,EAASY,aACXxG,GAAyB,GAG3B,IAAIyG,EAAmB5S,EAAezgB,EAAMpU,SAAU4mC,EAAS5mC,SAAU,CACvE4iC,aAAa,IAOf,GALArO,EACEkT,EACA,kDAGEhJ,EAAW,CACb,IAAIiJ,GAAmB,EAEvB,GAAId,EAASe,eAEXD,GAAmB,OACd,GAAIzJ,EAAmBjnE,KAAK4vE,EAAS5mC,UAAW,CACrD,MAAM+C,EAAMw7B,EAAK1I,QAAQM,UAAUyQ,EAAS5mC,UAC5C0nC,EAEE3kC,EAAIqzB,SAAWoI,EAAax+B,SAASo2B,QAEI,MAAzC0B,EAAc/0B,EAAIgyB,SAAU8C,EAC/B,CAED,GAAI6P,EAMF,YALInxE,EACFioE,EAAax+B,SAASzpC,QAAQqwE,EAAS5mC,UAEvCw+B,EAAax+B,SAASxc,OAAOojD,EAAS5mC,UAI3C,CAID6/B,EAA8B,KAE9B,IAAI+H,GACU,IAAZrxE,EAAmB89D,EAAcwC,QAAUxC,EAAcoC,MAIvD,WAAE+G,EAAU,WAAEC,EAAU,YAAEC,GAAgBtpB,EAAM6rB,YAEjDgE,IACA0B,GACDnI,GACAC,GACAC,IAEAuG,EAAa4B,GAA4BzxB,EAAM6rB,aAMjD,IAAI2F,EAAmB3B,GAAc0B,EACrC,GACErI,EAAkCn0B,IAAIy9B,EAAS/J,SAC/C+I,GACAjD,GAAiBiD,EAAiBpI,kBAE5B4F,GAAgBwE,EAAuBH,EAAkB,CAC7DxD,WAAUnP,EAAA,GACL8Q,EAAgB,CACnBnI,WAAYmJ,EAAS5mC,WAGvBmgC,mBAAoBQ,QAEjB,CAGL,IAAIkD,EAAqB4B,GACvBgC,EACAxD,SAEIb,GAAgBwE,EAAuBH,EAAkB,CAC7D5D,qBAEA8B,oBAEAxF,mBAAoBQ,GAEvB,CACH,CAEAwC,eAAewD,GACbkB,EACA9zD,EACA+xD,EACAgC,EACAxU,GAKA,IAAIkT,QAAgB/6B,QAAQgmB,IAAI,IAC3BqU,EAAcp4E,KAAK4I,GACpBuuE,GACE,SACAvR,EACAh9D,EACAyd,EACAsjD,EACAF,EACAU,QAGDiQ,EAAep6E,KAAKu4B,IACrB,GAAIA,EAAElS,SAAWkS,EAAE3vB,OAAS2vB,EAAEqgD,WAC5B,OAAOzB,GACL,SACAR,GAAwB9F,EAAK1I,QAAS5vC,EAAEkvC,KAAMlvC,EAAEqgD,WAAWhC,QAC3Dr+C,EAAE3vB,MACF2vB,EAAElS,QACFsjD,EACAF,EACAU,GAOF,MAJyB,CACvBrxC,KAAMuwC,EAAWta,MACjBA,MAAOijB,GAAuB,IAAK,CAAE3K,SAAU9uC,EAAEkvC,OAGpD,MAGDsR,EAAgBD,EAAQzzE,MAAM,EAAG+yE,EAAc14E,QAC/Cs5E,EAAiBF,EAAQzzE,MAAM+yE,EAAc14E,QAoBjD,aAlBMq+C,QAAQgmB,IAAI,CAChBsW,GACEF,EACA/B,EACAW,EACAA,EAAc/4E,KAAI,IAAM4lE,EAAQgR,UAChC,EACAlwB,EAAMisB,YAER0H,GACEF,EACAC,EAAep6E,KAAKu4B,GAAMA,EAAE3vB,QAC5BowE,EACAoB,EAAep6E,KAAKu4B,GAAOA,EAAEqgD,WAAargD,EAAEqgD,WAAWhC,OAAS,QAChE,KAIG,CAAEkC,UAASC,gBAAeC,iBACnC,CAEA,SAASjC,KAEPzD,GAAyB,EAIzBC,EAAwBjzE,QAAQ+1E,MAGhCvC,EAAiBr3D,SAAQ,CAAC4wD,EAAGnoE,KACvBuuE,EAAiBh4B,IAAIv2C,KACvBsuE,EAAsBlzE,KAAK4E,GAC3ByzE,GAAazzE,GACd,GAEL,CAEA,SAASo1E,GAAgBp1E,EAAaqyE,EAAiBxoB,GACrD,IAAI4oB,EAAgBd,GAAoBnwB,EAAMrgC,QAASkxD,GACvD3C,GAAc1vE,GACdkvE,GAAY,CACVvB,OAAQ,CACN,CAAC8E,EAAc/N,MAAMp9B,IAAKuiB,GAE5B+jB,SAAU,IAAIroC,IAAIic,EAAMosB,WAE5B,CAEA,SAAS8B,GAAc1vE,GACrB,IAAIuvE,EAAU/tB,EAAMosB,SAAShlE,IAAI5I,IAK/BuuE,EAAiBh4B,IAAIv2C,IACnBuvE,GAA6B,YAAlBA,EAAQ/tB,OAAuBktB,EAAen4B,IAAIv2C,IAE/DyzE,GAAazzE,GAEf4uE,EAAiBhpC,OAAO5lC,GACxB0uE,EAAe9oC,OAAO5lC,GACtB2uE,EAAiB/oC,OAAO5lC,GACxB8uE,GAAgBlpC,OAAO5lC,GACvBwhD,EAAMosB,SAAShoC,OAAO5lC,EACxB,CAiBA,SAASyzE,GAAazzE,GACpB,IAAI0zE,EAAanF,EAAiB3lE,IAAI5I,GACtC2hE,EAAU+R,EAA0C,8BAAA1zE,GACpD0zE,EAAWhD,QACXnC,EAAiB3oC,OAAO5lC,EAC1B,CAEA,SAASq1E,GAAiB90E,GACxB,IAAK,IAAIP,KAAOO,EAAM,CACpB,IACI+0E,EAAcC,GADJb,GAAW10E,GACgBkX,MACzCsqC,EAAMosB,SAAS/sE,IAAIb,EAAKs1E,EACzB,CACH,CAEA,SAAShC,KACP,IAAIkC,EAAW,GACXnC,GAAkB,EACtB,IAAK,IAAIrzE,KAAO2uE,EAAkB,CAChC,IAAIY,EAAU/tB,EAAMosB,SAAShlE,IAAI5I,GACjC2hE,EAAU4N,EAA8B,qBAAAvvE,GAClB,YAAlBuvE,EAAQ/tB,QACVmtB,EAAiB/oC,OAAO5lC,GACxBw1E,EAASp6E,KAAK4E,GACdqzE,GAAkB,EAErB,CAED,OADAgC,GAAiBG,GACVnC,CACT,CAEA,SAASkB,GAAqBkB,GAC5B,IAAIC,EAAa,GACjB,IAAK,IAAK11E,EAAKsnC,KAAOonC,EACpB,GAAIpnC,EAAKmuC,EAAU,CACjB,IAAIlG,EAAU/tB,EAAMosB,SAAShlE,IAAI5I,GACjC2hE,EAAU4N,EAA8B,qBAAAvvE,GAClB,YAAlBuvE,EAAQ/tB,QACViyB,GAAazzE,GACb0uE,EAAe9oC,OAAO5lC,GACtB01E,EAAWt6E,KAAK4E,GAEnB,CAGH,OADAq1E,GAAiBK,GACVA,EAAWl7E,OAAS,CAC7B,CAYA,SAASm7E,GAAc31E,GACrBwhD,EAAMqsB,SAASjoC,OAAO5lC,GACtBgvE,GAAiBppC,OAAO5lC,EAC1B,CAGA,SAAS41E,GAAc51E,EAAa61E,GAClC,IAAIC,EAAUt0B,EAAMqsB,SAASjlE,IAAI5I,IAAQkrE,EAIzCvJ,EACqB,cAAlBmU,EAAQt0B,OAA8C,YAArBq0B,EAAWr0B,OACxB,YAAlBs0B,EAAQt0B,OAA4C,YAArBq0B,EAAWr0B,OACxB,YAAlBs0B,EAAQt0B,OAA4C,eAArBq0B,EAAWr0B,OACxB,YAAlBs0B,EAAQt0B,OAA4C,cAArBq0B,EAAWr0B,OACxB,eAAlBs0B,EAAQt0B,OAA+C,cAArBq0B,EAAWr0B,MAAsB,qCACjCs0B,EAAQt0B,MAAK,OAAOq0B,EAAWr0B,OAGtE,IAAIqsB,EAAW,IAAItoC,IAAIic,EAAMqsB,UAC7BA,EAAShtE,IAAIb,EAAK61E,GAClB3G,GAAY,CAAErB,YAChB,CAEA,SAASkI,GAAqBC,GAQ7B,IAR8B,gBAC7B7F,EAAe,aACfC,EAAY,cACZhD,GAKD4I,EACC,GAA8B,IAA1BhH,GAAiBrgB,KACnB,OAKEqgB,GAAiBrgB,KAAO,GAC1BiT,GAAQ,EAAO,gDAGjB,IAAIqU,EAAUt8E,MAAM6E,KAAKwwE,GAAiBiH,YACrCC,EAAYC,GAAmBF,EAAQA,EAAQz7E,OAAS,GACzDs7E,EAAUt0B,EAAMqsB,SAASjlE,IAAIstE,GAEjC,OAAIJ,GAA6B,eAAlBA,EAAQt0B,WAAvB,EAQI20B,EAAgB,CAAEhG,kBAAiBC,eAAchD,kBAC5C8I,OADT,CAGF,CAEA,SAAS/E,GACPiF,GAEA,IAAIC,EAA8B,GAWlC,OAVAtH,GAAgBx3D,SAAQ,CAAC++D,EAAKjE,KACvB+D,IAAaA,EAAU/D,KAI1BiE,EAAIC,SACJF,EAAkBj7E,KAAKi3E,GACvBtD,GAAgBnpC,OAAOysC,GACxB,IAEIgE,CACT,CA+BA,SAASzF,GAAaxjC,EAAoBjsB,GACxC,GAAIqrD,EAAyB,CAK3B,OAJUA,EACRp/B,EACAjsB,EAAQrmB,KAAKiC,GDxjEL,SACd2G,EACA+pE,GAEA,IAAI,MAAE/I,EAAK,SAAEvC,EAAQ,OAAE0F,GAAWnkE,EAClC,MAAO,CACL4jC,GAAIo9B,EAAMp9B,GACV66B,WACA0F,SACA3wD,KAAMu2D,EAAW/I,EAAMp9B,IACvBkvC,OAAQ9R,EAAM8R,OAElB,CC4iE2BC,CAA2B15E,EAAGykD,EAAMisB,gBAE3CrgC,EAASptC,GACxB,CACD,OAAOotC,EAASptC,GAClB,CAYA,SAASswE,GACPljC,EACAjsB,GAEA,GAAIorD,EAAsB,CACxB,IAAIvsE,EAAM4wE,GAAaxjC,EAAUjsB,GAC7Bhb,EAAIomE,EAAqBvsE,GAC7B,GAAiB,kBAANmG,EACT,OAAOA,CAEV,CACD,OAAO,IACT,CA+CA,OAnCA6mE,EAAS,CACP,YAAI/H,GACF,OAAOA,GAET,SAAIzjB,GACF,OAAOA,GAET,UAAI8iB,GACF,OAAO2H,GAET,UAAIp5C,GACF,OAAO+4C,GAET8K,WA1tDF,WA4DE,GAzDArK,EAAkBV,EAAK1I,QAAQU,QAC7BxC,IAA+C,IAA5Cvb,OAAQwnB,EAAa,SAAEhgC,EAAQ,MAAEk2B,GAAOnC,EAGzC,GAAI8N,GAEF,YADAA,IAA0B,GAI5BrN,EAC4B,IAA1BoN,GAAiBrgB,MAAuB,MAAT2U,EAC/B,8YAQF,IAAI4S,EAAaH,GAAsB,CACrC5F,gBAAiB3uB,EAAMpU,SACvBgjC,aAAchjC,EACdggC,kBAGF,OAAI8I,GAAuB,MAAT5S,GAEhB2L,IAA0B,EAC1BtD,EAAK1I,QAAQiB,IAAY,EAATZ,QAGhBsS,GAAcM,EAAY,CACxB10B,MAAO,UACPpU,WACA+9B,OAAAA,GACEyK,GAAcM,EAAa,CACzB10B,MAAO,aACP2pB,aAASxtE,EACTytE,WAAOztE,EACPyvC,aAGFu+B,EAAK1I,QAAQiB,GAAGZ,IAElB8H,KAAAA,GACE,IAAIyC,EAAW,IAAItoC,IAAIic,EAAMqsB,UAC7BA,EAAShtE,IAAIq1E,EAAahL,GAC1BgE,GAAY,CAAErB,YAChB,KAKG2C,GAAgBpD,EAAehgC,EAAS,IAI/Cy+B,EAAW,EAqmHnB,SACE8K,EACAjrB,GAEA,IACE,IAAIkrB,EAAmBD,EAAQE,eAAeC,QAC5CrL,GAEF,GAAImL,EAAkB,CACpB,IAAI5L,EAAO7T,KAAK4f,MAAMH,GACtB,IAAK,IAAKn8E,EAAG24B,KAAMx5B,OAAOq8E,QAAQjL,GAAQ,CAAC,GACrC53C,GAAKz5B,MAAMF,QAAQ25B,IACrBs4B,EAAY7qD,IAAIpG,EAAG,IAAI+3B,IAAIY,GAAK,IAGrC,EACD,MAAOpc,GACP,CAEJ,CArnHMggE,CAA0BpL,EAAcqC,GACxC,IAAIgJ,EAA0BA,IAsnHpC,SACEN,EACAjrB,GAEA,GAAIA,EAAYiD,KAAO,EAAG,CACxB,IAAIqc,EAAiC,CAAC,EACtC,IAAK,IAAKvwE,EAAG24B,KAAMs4B,EACjBsf,EAAKvwE,GAAK,IAAI24B,GAEhB,IACEujD,EAAQE,eAAeK,QACrBzL,EACAtU,KAAKC,UAAU4T,IAEjB,MAAOnhB,GACP+X,GACE,EAC8D,8DAAA/X,EAAK,KAEtE,CACF,CACH,CA1oHQstB,CAA0BvL,EAAcqC,GAC1CrC,EAAavrC,iBAAiB,WAAY42C,GAC1C/I,EAA8BA,IAC5BtC,EAAatrC,oBAAoB,WAAY22C,EAChD,CAWD,OAJKz1B,EAAM0rB,aACTsD,GAAgB/O,EAAcyB,IAAK1hB,EAAMpU,UAGpC4/B,CACT,EA0oDEqH,UAznDF,SAAmBr5E,GAEjB,OADAsxE,EAAYn7D,IAAInW,GACT,IAAMsxE,EAAY1mC,OAAO5qC,EAClC,EAunDEo8E,wBAvFF,SACEC,EACAC,EACAC,GASA,GAPAhL,EAAuB8K,EACvB5K,EAAoB6K,EACpB9K,EAA0B+K,GAAU,MAK/B7K,GAAyBlrB,EAAM6rB,aAAe1C,EAAiB,CAClE+B,GAAwB,EACxB,IAAIvmE,EAAImqE,GAAuB9uB,EAAMpU,SAAUoU,EAAMrgC,SAC5C,MAALhb,GACF+oE,GAAY,CAAE5B,sBAAuBnnE,GAExC,CAED,MAAO,KACLomE,EAAuB,KACvBE,EAAoB,KACpBD,EAA0B,IAAI,CAElC,EA+DEgL,SA17CFjH,eAAeiH,EACbj5E,EACAkyE,GAEA,GAAkB,kBAAPlyE,EAET,YADAotE,EAAK1I,QAAQiB,GAAG3lE,GAIlB,IAAIk5E,EAAiBC,GACnBl2B,EAAMpU,SACNoU,EAAMrgC,QACN8jD,EACA3/D,EAAO8mE,mBACP7tE,EACI,MAAJkyE,OAAI,EAAJA,EAAMkH,YACF,MAAJlH,OAAI,EAAJA,EAAMmH,WAEJ,KAAErV,EAAI,WAAE8O,EAAU,MAAExnB,GAAUguB,GAChCvyE,EAAO6mE,wBACP,EACAsL,EACAhH,GAGEN,EAAkB3uB,EAAMpU,SACxBgjC,EAAenO,EAAezgB,EAAMpU,SAAUm1B,EAAMkO,GAAQA,EAAKjvB,OAOrE4uB,EAAYlO,EACP,GAAAkO,EACAzE,EAAK1I,QAAQW,eAAewM,IAGjC,IAAI0H,EAAcrH,GAAwB,MAAhBA,EAAK9sE,QAAkB8sE,EAAK9sE,aAAUhG,EAE5DyvE,EAAgB3L,EAAcoC,MAEd,IAAhBiU,EACF1K,EAAgB3L,EAAcwC,SACL,IAAhB6T,GAGK,MAAdzG,GACAtB,GAAiBsB,EAAWzG,aAC5ByG,EAAWxG,aAAerpB,EAAMpU,SAAS+0B,SAAW3gB,EAAMpU,SAAS4C,SAMnEo9B,EAAgB3L,EAAcwC,SAGhC,IAAIsJ,EACFkD,GAAQ,uBAAwBA,GACA,IAA5BA,EAAKlD,wBACL5vE,EAEFu4E,EAAaH,GAAsB,CACrC5F,kBACAC,eACAhD,kBAGF,IAAI8I,EAwBJ,aAAa1F,GAAgBpD,EAAegD,EAAc,CACxDiB,aAGAG,aAAc3nB,EACd0jB,qBACA5pE,QAAS8sE,GAAQA,EAAK9sE,QACtBmtE,qBAAsBL,GAAQA,EAAKsH,0BA7BnCnC,GAAcM,EAAY,CACxB10B,MAAO,UACPpU,SAAUgjC,EACVjF,OAAAA,GACEyK,GAAcM,EAAa,CACzB10B,MAAO,aACP2pB,aAASxtE,EACTytE,WAAOztE,EACPyvC,SAAUgjC,IAGZoH,EAASj5E,EAAIkyE,IAEfrF,KAAAA,GACE,IAAIyC,EAAW,IAAItoC,IAAIic,EAAMqsB,UAC7BA,EAAShtE,IAAIq1E,EAAahL,GAC1BgE,GAAY,CAAErB,YAChB,GAcN,EAq1CEmK,MA73BF,SACEh4E,EACAqyE,EACA5/B,EACAg+B,GAEA,GAAI3E,EACF,MAAM,IAAIzrE,MACR,oMAMAkuE,EAAiBh4B,IAAIv2C,IAAMyzE,GAAazzE,GAE5C,IAAI+wE,EAAc/E,GAAsBC,EACpCwL,EAAiBC,GACnBl2B,EAAMpU,SACNoU,EAAMrgC,QACN8jD,EACA3/D,EAAO8mE,mBACP35B,EACA4/B,EACA,MAAA5B,OAAA,EAAAA,EAAMmH,UAEJz2D,EAAU4jD,EAAYgM,EAAa0G,EAAgBxS,GAEvD,IAAK9jD,EAMH,YALAi0D,GACEp1E,EACAqyE,EACAvF,GAAuB,IAAK,CAAE3K,SAAUsV,KAK5C,IAAI,KAAElV,EAAI,WAAE8O,EAAU,MAAExnB,GAAUguB,GAChCvyE,EAAO6mE,wBACP,EACAsL,EACAhH,GAGF,GAAI5mB,EAEF,YADAurB,GAAgBp1E,EAAKqyE,EAASxoB,GAIhC,IAAInmD,EAAQsuE,GAAe7wD,EAASohD,GAEpCwL,GAAkE,KAArC0C,GAAQA,EAAKlD,oBAEtC8D,GAActB,GAAiBsB,EAAWzG,YAahD2F,eACEvwE,EACAqyE,EACA9P,EACA7+D,EACAu0E,EACA5G,GAKA,GAHAQ,KACAjD,EAAiBhpC,OAAO5lC,IAEnB0D,EAAMghE,MAAM9e,SAAWliD,EAAMghE,MAAMvI,KAAM,CAC5C,IAAItS,EAAQijB,GAAuB,IAAK,CACtCsF,OAAQf,EAAWzG,WACnBzI,SAAUI,EACV8P,QAASA,IAGX,YADA+C,GAAgBp1E,EAAKqyE,EAASxoB,EAE/B,CAGD,IAAIquB,EAAkB12B,EAAMosB,SAAShlE,IAAI5I,GACrCuvE,EAwsFR,SACE8B,EACA6G,GAEA,IAAI3I,EAAuC,CACzC/tB,MAAO,aACPopB,WAAYyG,EAAWzG,WACvBC,WAAYwG,EAAWxG,WACvBC,YAAauG,EAAWvG,YACxBC,SAAUsG,EAAWtG,SACrBC,KAAMqG,EAAWrG,KACjB96B,KAAMmhC,EAAWnhC,KACjBh5B,KAAMghE,EAAkBA,EAAgBhhE,UAAOvZ,GAEjD,OAAO4xE,CACT,CAvtFkB4I,CAAqB9G,EAAY6G,GAC/C12B,EAAMosB,SAAS/sE,IAAIb,EAAKuvE,GACxBL,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,YAGtC,IAAIwK,EAAkB,IAAI9G,gBACtB+G,EAAe5G,GACjB9F,EAAK1I,QACLV,EACA6V,EAAgB1G,OAChBL,GAEF9C,EAAiB1tE,IAAIb,EAAKo4E,GAE1B,IAAIE,EAAoB9J,EACpB+J,QAAqBtG,GACvB,SACAoG,EACA30E,EACAu0E,EACAxT,EACAF,EACAU,GAGF,GAAIoT,EAAa3G,OAAOQ,QAMtB,YAHI3D,EAAiB3lE,IAAI5I,KAASo4E,GAChC7J,EAAiB3oC,OAAO5lC,IAK5B,GAAI8uE,GAAgBv4B,IAAIv2C,GAGtB,OAFAwhD,EAAMosB,SAAS/sE,IAAIb,EAAKu1E,QAAe53E,SACvCuxE,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,YAIxC,GAAI0E,GAAiBiG,GAAe,CAElC,GADAhK,EAAiB3oC,OAAO5lC,GACpByuE,EAA0B6J,EAAmB,CAK/C,IAAIhD,EAAcC,QAAe53E,GAGjC,OAFA6jD,EAAMosB,SAAS/sE,IAAIb,EAAKs1E,QACxBpG,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,WAEvC,CAAM,CACLe,EAAiBx9D,IAAInR,GACrB,IAAIw4E,EAAiBhF,GAAkBnC,GAIvC,OAHA7vB,EAAMosB,SAAS/sE,IAAIb,EAAKw4E,GACxBtJ,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,YAE/B2E,GAAwB/wB,EAAO+2B,EAAc,CAClDxF,kBAAmB1B,GAEtB,CACF,CAGD,GAAImB,GAAc+F,GAEhB,YADAnD,GAAgBp1E,EAAKqyE,EAASkG,EAAa1uB,OAI7C,GAAI8oB,GAAiB4F,GACnB,MAAMzL,GAAuB,IAAK,CAAEl5C,KAAM,iBAK5C,IAAIw8C,EAAe5uB,EAAM6rB,WAAWjgC,UAAYoU,EAAMpU,SAClDqrC,EAAsBhH,GACxB9F,EAAK1I,QACLmN,EACAgI,EAAgB1G,QAEdX,EAAc/E,GAAsBC,EACpC9qD,EACyB,SAA3BqgC,EAAM6rB,WAAW7rB,MACbujB,EAAYgM,EAAavvB,EAAM6rB,WAAWjgC,SAAU63B,GACpDzjB,EAAMrgC,QAEZwgD,EAAUxgD,EAAS,gDAEnB,IAAIu3D,IAAWlK,EACfE,EAAe7tE,IAAIb,EAAK04E,GAExB,IAAIC,EAAcnF,GAAkBnC,EAAYkH,EAAarhE,MAC7DsqC,EAAMosB,SAAS/sE,IAAIb,EAAK24E,GAExB,IAAKzF,EAAeC,GAAwBC,GAC1CzH,EAAK1I,QACLzhB,EACArgC,EACAkwD,EACAjB,EACAhC,EACAC,EACAC,EACAM,EACAD,EACAoC,EACA9L,EACA,CAAE,CAACvhE,EAAMghE,MAAMp9B,IAAKixC,EAAarhE,WACjCvZ,GAMFw1E,EACGvuD,QAAQ8xB,GAAOA,EAAG12C,MAAQA,IAC1BuX,SAASm/B,IACR,IAAIkiC,EAAWliC,EAAG12C,IACdk4E,EAAkB12B,EAAMosB,SAAShlE,IAAIgwE,GACrCrF,EAAsBC,QACxB71E,EACAu6E,EAAkBA,EAAgBhhE,UAAOvZ,GAE3C6jD,EAAMosB,SAAS/sE,IAAI+3E,EAAUrF,GACzBhF,EAAiBh4B,IAAIqiC,IACvBnF,GAAamF,GAEXliC,EAAGg9B,YACLnF,EAAiB1tE,IAAI+3E,EAAUliC,EAAGg9B,WACnC,IAGLxE,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,YAEtC,IAAI+F,EAAiCA,IACnCR,EAAqB57D,SAASm/B,GAAO+8B,GAAa/8B,EAAG12C,OAEvDo4E,EAAgB1G,OAAOrxC,iBACrB,QACAszC,GAGF,IAAI,QAAEC,EAAO,cAAEC,EAAa,eAAEC,SACtBC,GACJvyB,EAAMrgC,QACNA,EACA+xD,EACAC,EACAsF,GAGJ,GAAIL,EAAgB1G,OAAOQ,QACzB,OAGFkG,EAAgB1G,OAAOpxC,oBACrB,QACAqzC,GAGFjF,EAAe9oC,OAAO5lC,GACtBuuE,EAAiB3oC,OAAO5lC,GACxBmzE,EAAqB57D,SAAS8oC,GAAMkuB,EAAiB3oC,OAAOya,EAAErgD,OAE9D,IAAIg0E,EAAWC,GAAaL,GAC5B,GAAII,EAAU,CACZ,GAAIA,EAAShS,KAAOkR,EAAc14E,OAAQ,CAIxC,IAAI05E,EACFf,EAAqBa,EAAShS,IAAMkR,EAAc14E,QAAQwF,IAC5D2uE,EAAiBx9D,IAAI+iE,EACtB,CACD,OAAO3B,GAAwB/wB,EAAOwyB,EAAS/5D,OAChD,CAGD,IAAI,WAAEwzD,EAAU,OAAEE,GAAWwG,GAC3B3yB,EACAA,EAAMrgC,QACN+xD,EACAW,OACAl2E,EACAw1E,EACAW,EACA/E,IAKF,GAAIvtB,EAAMosB,SAASr3B,IAAIv2C,GAAM,CAC3B,IAAIs1E,EAAcC,GAAegD,EAAarhE,MAC9CsqC,EAAMosB,SAAS/sE,IAAIb,EAAKs1E,EACzB,CAEDf,GAAqBmE,GAMQ,YAA3Bl3B,EAAM6rB,WAAW7rB,OACjBk3B,EAASjK,GAET9M,EAAUmM,EAAe,2BACzBb,GAA+BA,EAA4ByD,QAE3Df,GAAmBnuB,EAAM6rB,WAAWjgC,SAAU,CAC5CjsB,UACAssD,aACAE,SACAC,SAAU,IAAIroC,IAAIic,EAAMosB,cAM1BsB,GAAY,CACVvB,SACAF,WAAYwC,GACVzuB,EAAMisB,WACNA,EACAtsD,EACAwsD,GAEFC,SAAU,IAAIroC,IAAIic,EAAMosB,YAE1BQ,GAAyB,EAE7B,CA1QIyK,CAAoB74E,EAAKqyE,EAAS9P,EAAM7+D,EAAOyd,EAASkwD,IAM1DzC,EAAiB/tE,IAAIb,EAAK,CAAEqyE,UAAS9P,SAuQvCgO,eACEvwE,EACAqyE,EACA9P,EACA7+D,EACAyd,EACAkwD,GAEA,IAAI6G,EAAkB12B,EAAMosB,SAAShlE,IAAI5I,GAErCw4E,EAAiBhF,GACnBnC,EACA6G,EAAkBA,EAAgBhhE,UAAOvZ,GAE3C6jD,EAAMosB,SAAS/sE,IAAIb,EAAKw4E,GACxBtJ,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,YAGtC,IAAIwK,EAAkB,IAAI9G,gBACtB+G,EAAe5G,GACjB9F,EAAK1I,QACLV,EACA6V,EAAgB1G,QAElBnD,EAAiB1tE,IAAIb,EAAKo4E,GAE1B,IAAIE,EAAoB9J,EACpBv0D,QAA2Bg4D,GAC7B,SACAoG,EACA30E,EACAyd,EACAsjD,EACAF,EACAU,GAOE0N,GAAiB14D,KACnBA,QACS6+D,GAAoB7+D,EAAQo+D,EAAa3G,QAAQ,IACxDz3D,GAKAs0D,EAAiB3lE,IAAI5I,KAASo4E,GAChC7J,EAAiB3oC,OAAO5lC,GAG1B,GAAIq4E,EAAa3G,OAAOQ,QACtB,OAGF,GAAIpD,GAAgBv4B,IAAIv2C,GAGtB,OAFAwhD,EAAMosB,SAAS/sE,IAAIb,EAAKu1E,QAAe53E,SACvCuxE,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,YAKxC,GAAI0E,GAAiBr4D,GAAS,CAC5B,GAAIw0D,EAA0B6J,EAAmB,CAG/C,IAAIhD,EAAcC,QAAe53E,GAGjC,OAFA6jD,EAAMosB,SAAS/sE,IAAIb,EAAKs1E,QACxBpG,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,WAEvC,CAGC,OAFAe,EAAiBx9D,IAAInR,cACfuyE,GAAwB/wB,EAAOvnC,EAGxC,CAGD,GAAIu4D,GAAcv4D,GAEhB,YADAm7D,GAAgBp1E,EAAKqyE,EAASp4D,EAAO4vC,OAIvC8X,GAAWgR,GAAiB14D,GAAS,mCAGrC,IAAIq7D,EAAcC,GAAet7D,EAAO/C,MACxCsqC,EAAMosB,SAAS/sE,IAAIb,EAAKs1E,GACxBpG,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,WACxC,CAjWEmL,CAAoB/4E,EAAKqyE,EAAS9P,EAAM7+D,EAAOyd,EAASkwD,GAC1D,EAg0BEuD,WAj1CF,WACE/C,KACA3C,GAAY,CAAE1B,aAAc,YAIG,eAA3BhsB,EAAM6rB,WAAW7rB,QAOU,SAA3BA,EAAM6rB,WAAW7rB,MAUrBgvB,GACE1C,GAAiBtsB,EAAM4rB,cACvB5rB,EAAM6rB,WAAWjgC,SACjB,CAAE6jC,mBAAoBzvB,EAAM6rB,aAZ5BmD,GAAgBhvB,EAAM4rB,cAAe5rB,EAAMpU,SAAU,CACnDujC,gCAAgC,IAatC,EAwzCE9N,WAAatkE,GAAWotE,EAAK1I,QAAQJ,WAAWtkE,GAChDqlE,eAAiBrlE,GAAWotE,EAAK1I,QAAQW,eAAerlE,GACxDm2E,cACAhF,cAzPF,SAAqC1vE,GACnC,GAAIsF,EAAO4mE,kBAAmB,CAC5B,IAAIlR,GAAS6T,EAAejmE,IAAI5I,IAAQ,GAAK,EACzCg7D,GAAS,GACX6T,EAAejpC,OAAO5lC,GACtB8uE,GAAgB39D,IAAInR,IAEpB6uE,EAAehuE,IAAIb,EAAKg7D,EAE3B,MACC0U,GAAc1vE,GAEhBkvE,GAAY,CAAEtB,SAAU,IAAIroC,IAAIic,EAAMosB,WACxC,EA6OEoL,QAlpDF,WACM3M,GACFA,IAEE6B,GACFA,IAEF5B,EAAY2M,QACZhM,GAA+BA,EAA4ByD,QAC3DlvB,EAAMosB,SAASr2D,SAAQ,CAAC4wD,EAAGnoE,IAAQ0vE,GAAc1vE,KACjDwhD,EAAMqsB,SAASt2D,SAAQ,CAAC4wD,EAAGnoE,IAAQ21E,GAAc31E,IACnD,EAwoDEk5E,WA5LF,SAAoBl5E,EAAahF,GAC/B,IAAI86E,EAAmBt0B,EAAMqsB,SAASjlE,IAAI5I,IAAQkrE,EAMlD,OAJI8D,GAAiBpmE,IAAI5I,KAAShF,GAChCg0E,GAAiBnuE,IAAIb,EAAKhF,GAGrB86E,CACT,EAqLEH,iBACAwD,0BAA2B5K,EAC3B6K,yBAA0BrK,GAG1BsK,mBA1CF,SAA4BC,GAC1B7U,EAAW,CAAC,EACZuH,EAAqB3H,EACnBiV,EACA/U,OACA5mE,EACA8mE,EAEJ,GAqCOuI,CACT,CAOsC1gD,OAAO,YAoiB7C,SAASorD,GACPtqC,EACAjsB,EACA8jD,EACAsU,EACAh7E,EACAo5E,EACAC,GAEA,IAAI4B,EACAC,EACJ,GAAmB,MAAf9B,GAAoC,SAAbC,EAAqB,CAK9C4B,EAAoB,GACpB,IAAK,IAAI91E,KAASyd,EAEhB,GADAq4D,EAAkBp+E,KAAKsI,GACnBA,EAAMghE,MAAMp9B,KAAOqwC,EAAa,CAClC8B,EAAmB/1E,EACnB,KACD,CAEJ,MACC81E,EAAoBr4D,EACpBs4D,EAAmBt4D,EAAQA,EAAQ3mB,OAAS,GAI9C,IAAI+nE,EAAOyG,EACTzqE,GAAU,IACVwqE,EAA2ByQ,GAAmB1+E,KAAKiC,GAAMA,EAAE+qE,eAC3D5C,EAAc93B,EAAS+0B,SAAU8C,IAAa73B,EAAS+0B,SAC1C,SAAbyV,GAgCF,OA1BU,MAANr5E,IACFgkE,EAAKvyB,OAAS5C,EAAS4C,OACvBuyB,EAAKH,KAAOh1B,EAASg1B,MAKd,MAAN7jE,GAAqB,KAAPA,GAAoB,MAAPA,IAC5Bk7E,IACAA,EAAiB/U,MAAMp3C,OACtBosD,GAAmBnX,EAAKvyB,UAEzBuyB,EAAKvyB,OAASuyB,EAAKvyB,OACfuyB,EAAKvyB,OAAOrsC,QAAQ,MAAO,WAC3B,UAOF41E,GAAgC,MAAbtU,IACrB1C,EAAKJ,SACe,MAAlBI,EAAKJ,SAAmB8C,EAAWiB,EAAU,CAACjB,EAAU1C,EAAKJ,YAG1DG,EAAWC,EACpB,CAIA,SAASsV,GACP8B,EACAC,EACArX,EACAkO,GAOA,IAAKA,IA5FP,SACEA,GAEA,OACU,MAARA,IACE,aAAcA,GAAyB,MAAjBA,EAAK1F,UAC1B,SAAU0F,QAAsB9yE,IAAd8yE,EAAKv4C,KAE9B,CAoFgB2hD,CAAuBpJ,GACnC,MAAO,CAAElO,QAGX,GAAIkO,EAAK7F,aAAekP,GAAcrJ,EAAK7F,YACzC,MAAO,CACLrI,OACA1Y,MAAOijB,GAAuB,IAAK,CAAEsF,OAAQ3B,EAAK7F,cAItD,IA0EImP,EACAhP,EA3EAiP,EAAsBA,KAAA,CACxBzX,OACA1Y,MAAOijB,GAAuB,IAAK,CAAEl5C,KAAM,mBAIzCqmD,EAAgBxJ,EAAK7F,YAAc,MACnCA,EAAa+O,EACZM,EAAcn1E,cACdm1E,EAAchzE,cACf4jE,EAAaqP,GAAkB3X,GAEnC,QAAkB5kE,IAAd8yE,EAAKv4C,KAAoB,CAC3B,GAAyB,eAArBu4C,EAAK3F,YAA8B,CAErC,IAAKiF,GAAiBnF,GACpB,OAAOoP,IAGT,IAAI9pC,EACmB,kBAAdugC,EAAKv4C,KACRu4C,EAAKv4C,KACLu4C,EAAKv4C,gBAAgBiiD,UACrB1J,EAAKv4C,gBAAgBkiD,gBAErBzgF,MAAM6E,KAAKiyE,EAAKv4C,KAAK+9C,WAAWnX,QAC9B,CAACub,EAAGC,KAAA,IAAG55E,EAAM6H,GAAM+xE,EAAA,SAAQD,EAAM35E,EAAI,IAAI6H,EAAK,OAC9C,IAEF0b,OAAOwsD,EAAKv4C,MAElB,MAAO,CACLqqC,OACA8O,WAAY,CACVzG,aACAC,aACAC,YAAa2F,EAAK3F,YAClBC,cAAUptE,EACVqtE,UAAMrtE,EACNuyC,QAGL,CAAM,GAAyB,qBAArBugC,EAAK3F,YAAoC,CAElD,IAAKiF,GAAiBnF,GACpB,OAAOoP,IAGT,IACE,IAAIhP,EACmB,kBAAdyF,EAAKv4C,KAAoBi/B,KAAK4f,MAAMtG,EAAKv4C,MAAQu4C,EAAKv4C,KAE/D,MAAO,CACLqqC,OACA8O,WAAY,CACVzG,aACAC,aACAC,YAAa2F,EAAK3F,YAClBC,cAAUptE,EACVqtE,OACA96B,UAAMvyC,IAGV,MAAOqZ,GACP,OAAOgjE,GACR,CACF,CACF,CAUD,GARArY,EACsB,oBAAbwY,SACP,iDAME1J,EAAK1F,SACPgP,EAAeQ,GAA8B9J,EAAK1F,UAClDA,EAAW0F,EAAK1F,cACX,GAAI0F,EAAKv4C,gBAAgBiiD,SAC9BJ,EAAeQ,GAA8B9J,EAAKv4C,MAClD6yC,EAAW0F,EAAKv4C,UACX,GAAIu4C,EAAKv4C,gBAAgBkiD,gBAC9BL,EAAetJ,EAAKv4C,KACpB6yC,EAAWyP,GAA8BT,QACpC,GAAiB,MAAbtJ,EAAKv4C,KACd6hD,EAAe,IAAIK,gBACnBrP,EAAW,IAAIoP,cAEf,IACEJ,EAAe,IAAIK,gBAAgB3J,EAAKv4C,MACxC6yC,EAAWyP,GAA8BT,GACzC,MAAO/iE,GACP,OAAOgjE,GACR,CAGH,IAAI3I,EAAyB,CAC3BzG,aACAC,aACAC,YACG2F,GAAQA,EAAK3F,aAAgB,oCAChCC,WACAC,UAAMrtE,EACNuyC,UAAMvyC,GAGR,GAAIoyE,GAAiBsB,EAAWzG,YAC9B,MAAO,CAAErI,OAAM8O,cAIjB,IAAI7O,EAAaH,EAAUE,GAS3B,OALIqX,GAAapX,EAAWxyB,QAAU0pC,GAAmBlX,EAAWxyB,SAClE+pC,EAAaU,OAAO,QAAS,IAE/BjY,EAAWxyB,OAAS,IAAI+pC,EAEjB,CAAExX,KAAMD,EAAWE,GAAa6O,aACzC,CAIA,SAASqJ,GACPv5D,EACAw5D,GAEA,IAAIC,EAAkBz5D,EACtB,GAAIw5D,EAAY,CACd,IAAIrtD,EAAQnM,EAAQ05D,WAAW99E,GAAMA,EAAE2nE,MAAMp9B,KAAOqzC,IAChDrtD,GAAS,IACXstD,EAAkBz5D,EAAQhhB,MAAM,EAAGmtB,GAEtC,CACD,OAAOstD,CACT,CAEA,SAASxH,GACPnQ,EACAzhB,EACArgC,EACAkwD,EACAjkC,EACAghC,EACAC,EACAC,EACAM,EACAD,EACAoC,EACA9L,EACAsM,EACAC,GAEA,IAAI+G,EAAe/G,EACf53E,OAAOqd,OAAOu6D,GAAc,GAC5BD,EACA33E,OAAOqd,OAAOs6D,GAAmB,QACjC5zE,EAEAm9E,EAAa7X,EAAQM,UAAU/hB,EAAMpU,UACrC2tC,EAAU9X,EAAQM,UAAUn2B,GAG5ButC,EAAanJ,EAAe53E,OAAO2G,KAAKixE,GAAc,QAAK7zE,EAG3Dq9E,EAFkBN,GAA8Bv5D,EAASw5D,GAErB/1D,QAAO,CAAClhB,EAAO4pB,KACrD,GAAI5pB,EAAMghE,MAAMvI,KAEd,OAAO,EAET,GAA0B,MAAtBz4D,EAAMghE,MAAMyI,OACd,OAAO,EAIT,GA8GJ,SACE8N,EACAC,EACAx3E,GAEA,IAAIy3E,GAEDD,GAEDx3E,EAAMghE,MAAMp9B,KAAO4zC,EAAaxW,MAAMp9B,GAIpC8zC,OAAsDz9E,IAAtCs9E,EAAkBv3E,EAAMghE,MAAMp9B,IAGlD,OAAO6zC,GAASC,CAClB,CA9HMC,CAAY75B,EAAMisB,WAAYjsB,EAAMrgC,QAAQmM,GAAQ5pB,IACpD2qE,EAAwBl1E,MAAMmuC,GAAOA,IAAO5jC,EAAMghE,MAAMp9B,KAExD,OAAO,EAOT,IAAIg0C,EAAoB95B,EAAMrgC,QAAQmM,GAClCiuD,EAAiB73E,EAErB,OAAO83E,GAAuB93E,EAAKw+D,EAAA,CACjC4Y,aACAW,cAAeH,EAAkBzT,OACjCkT,UACAW,WAAYH,EAAe1T,QACxBwJ,EAAU,CACbkH,eACAoD,wBAEEvN,GAEA0M,EAAW3Y,SAAW2Y,EAAW9qC,SAC/B+qC,EAAQ5Y,SAAW4Y,EAAQ/qC,QAE7B8qC,EAAW9qC,SAAW+qC,EAAQ/qC,QAC9B4rC,GAAmBN,EAAmBC,KACxC,IAIApI,EAA8C,GAyElD,OAxEAvE,EAAiBr3D,SAAQ,CAAC8b,EAAGrzB,KAE3B,IAAKmhB,EAAQhoB,MAAM4D,GAAMA,EAAE2nE,MAAMp9B,KAAOjU,EAAEg/C,UACxC,OAGF,IAAIwJ,EAAiB9W,EAAYgM,EAAa19C,EAAEkvC,KAAM0C,GAMtD,IAAK4W,EASH,YARA1I,EAAqB/3E,KAAK,CACxB4E,MACAqyE,QAASh/C,EAAEg/C,QACX9P,KAAMlvC,EAAEkvC,KACRphD,QAAS,KACTzd,MAAO,KACPgwE,WAAY,OAQhB,IAAInE,EAAU/tB,EAAMosB,SAAShlE,IAAI5I,GAC7B87E,EAAe9J,GAAe6J,EAAgBxoD,EAAEkvC,MAEhDwZ,GAAmB,EAGrBA,GAFEpN,EAAiBp4B,IAAIv2C,OAGdsuE,EAAsB/3C,SAASv2B,KAIxCuvE,GACkB,SAAlBA,EAAQ/tB,YACS7jD,IAAjB4xE,EAAQr4D,KAKWk3D,EAIAoN,GAAuBM,EAAY5Z,EAAA,CACpD4Y,aACAW,cAAej6B,EAAMrgC,QAAQqgC,EAAMrgC,QAAQ3mB,OAAS,GAAGqtE,OACvDkT,UACAW,WAAYv6D,EAAQA,EAAQ3mB,OAAS,GAAGqtE,QACrCwJ,EAAU,CACbkH,eACAoD,wBAAyBvN,OAIzB2N,GACF5I,EAAqB/3E,KAAK,CACxB4E,MACAqyE,QAASh/C,EAAEg/C,QACX9P,KAAMlvC,EAAEkvC,KACRphD,QAAS06D,EACTn4E,MAAOo4E,EACPpI,WAAY,IAAIpC,iBAEnB,IAGI,CAAC0J,EAAmB7H,EAC7B,CAqBA,SAASyI,GACPV,EACAx3E,GAEA,IAAIs4E,EAAcd,EAAaxW,MAAMnC,KACrC,OAEE2Y,EAAa/Y,WAAaz+D,EAAMy+D,UAGhB,MAAf6Z,GACCA,EAAYrV,SAAS,MACrBuU,EAAarT,OAAO,OAASnkE,EAAMmkE,OAAO,IAEhD,CAEA,SAAS2T,GACPS,EACAl8E,GAEA,GAAIk8E,EAAYvX,MAAMqX,iBAAkB,CACtC,IAAIG,EAAcD,EAAYvX,MAAMqX,iBAAiBh8E,GACrD,GAA2B,mBAAhBm8E,EACT,OAAOA,CAEV,CAED,OAAOn8E,EAAI47E,uBACb,CAOApL,eAAe4L,GACbzX,EACAH,EACAE,GAEA,IAAKC,EAAMvI,KACT,OAGF,IAAIigB,QAAkB1X,EAAMvI,OAK5B,IAAKuI,EAAMvI,KACT,OAGF,IAAIkgB,EAAgB5X,EAASC,EAAMp9B,IACnCq6B,EAAU0a,EAAe,8BAUzB,IAAIC,EAAoC,CAAC,EACzC,IAAK,IAAIC,KAAqBH,EAAW,CACvC,IAGII,OACmB7+E,IAHrB0+E,EAAcE,IAMQ,qBAAtBA,EAEF3a,GACG4a,EACD,UAAUH,EAAc/0C,GAAE,4BAA4Bi1C,EAAtD,yGAE8BA,EAAiB,sBAI9CC,GACApY,EAAmB7tB,IAAIgmC,KAExBD,EAAaC,GACXH,EAAUG,GAEf,CAID3iF,OAAOg3B,OAAOyrD,EAAeC,GAK7B1iF,OAAOg3B,OAAOyrD,EAAana,EAKtB,GAAAqC,EAAmB8X,GAAc,CACpClgB,UAAMx+D,IAEV,CAEA4yE,eAAe0B,GACbr+C,EACA8sC,EACAh9D,EACAyd,EACAsjD,EACAF,EACAU,EACAwL,GAMA,IAAIgM,EACAxiE,EACAyiE,OARJ,IAAAjM,IAAAA,EAII,CAAC,GAML,IAAIkM,EAAcC,IAEhB,IAAIrc,EACAsc,EAAe,IAAIhkC,SAAQ,CAACsvB,EAAG9nB,IAAOkgB,EAASlgB,IAGnD,OAFAq8B,EAAWA,IAAMnc,IACjBG,EAAQgR,OAAOrxC,iBAAiB,QAASq8C,GAClC7jC,QAAQikC,KAAK,CAClBF,EAAQ,CACNlc,UACAmH,OAAQnkE,EAAMmkE,OACdnpB,QAAS+xB,EAAKsM,iBAEhBF,GACA,EAGJ,IACE,IAAID,EAAUl5E,EAAMghE,MAAM9wC,GAE1B,GAAIlwB,EAAMghE,MAAMvI,KACd,GAAIygB,EAAS,CAEX,IAAII,EACA/lE,QAAe4hC,QAAQgmB,IAAI,CAI7B8d,EAAWC,GAAS1jC,OAAOliC,IACzBgmE,EAAehmE,CAAC,IAElBmlE,GAAoBz4E,EAAMghE,MAAOH,EAAoBE,KAEvD,GAAIuY,EACF,MAAMA,EAER/iE,EAAShD,EAAO,EACjB,KAAM,CAKL,SAHMklE,GAAoBz4E,EAAMghE,MAAOH,EAAoBE,GAE3DmY,EAAUl5E,EAAMghE,MAAM9wC,IAClBgpD,EAKG,IAAa,WAAThpD,EAAmB,CAC5B,IAAIuc,EAAM,IAAIszB,IAAI/C,EAAQvwB,KACtBgyB,EAAWhyB,EAAIgyB,SAAWhyB,EAAIH,OAClC,MAAM88B,GAAuB,IAAK,CAChCsF,OAAQ1R,EAAQ0R,OAChBjQ,WACAkQ,QAAS3uE,EAAMghE,MAAMp9B,IAExB,CAGC,MAAO,CAAE1T,KAAMuwC,EAAWjtD,KAAMA,UAAMvZ,EACvC,CAbCsc,QAAe0iE,EAAWC,EAc7B,KACI,KAAKA,EAAS,CACnB,IAAIzsC,EAAM,IAAIszB,IAAI/C,EAAQvwB,KAE1B,MAAM28B,GAAuB,IAAK,CAChC3K,SAFahyB,EAAIgyB,SAAWhyB,EAAIH,QAInC,CACC/1B,QAAe0iE,EAAWC,EAC3B,CAEDjb,OACahkE,IAAXsc,EACA,gBAAwB,WAAT2Z,EAAoB,YAAc,YAAjD,eACMlwB,EAAMghE,MAAMp9B,GAA8C,4CAAA1T,EADhE,gDAIF,MAAO5c,GACPylE,EAAatY,EAAWta,MACxB5vC,EAASjD,CACV,SACK0lE,GACFhc,EAAQgR,OAAOpxC,oBAAoB,QAASo8C,EAE/C,CAED,GAAIO,GAAWhjE,GAAS,CACtB,IA+DI/C,EA/DA+yD,EAAShwD,EAAOgwD,OAGpB,GAAIQ,EAAoBl0B,IAAI0zB,GAAS,CACnC,IAAI78B,EAAWnzB,EAAOijE,QAAQt0E,IAAI,YAOlC,GANA+4D,EACEv0B,EACA,8EAIGi+B,EAAmBjnE,KAAKgpC,IAQtB,IAAKqjC,EAAK0M,gBAAiB,CAIhC,IAAIrC,EAAa,IAAIrX,IAAI/C,EAAQvwB,KAC7BA,EAAM/C,EAAS64B,WAAW,MAC1B,IAAIxC,IAAIqX,EAAWsC,SAAWhwC,GAC9B,IAAIq2B,IAAIr2B,GACRiwC,EAA0D,MAAzCnY,EAAc/0B,EAAIgyB,SAAU8C,GAC7C90B,EAAIqzB,SAAWsX,EAAWtX,QAAU6Z,IACtCjwC,EAAW+C,EAAIgyB,SAAWhyB,EAAIH,OAASG,EAAIiyB,KAE9C,OAnBCh1B,EAAWsqC,GACT,IAAIjU,IAAI/C,EAAQvwB,KAChBhvB,EAAQhhB,MAAM,EAAGghB,EAAQ1V,QAAQ/H,GAAS,GAC1CuhE,GACA,EACA73B,GAoBJ,GAAIqjC,EAAK0M,gBAEP,MADAljE,EAAOijE,QAAQr8E,IAAI,WAAYusC,GACzBnzB,EAGR,MAAO,CACL2Z,KAAMuwC,EAAW6P,SACjB/J,SACA78B,WACAwnC,WAAyD,OAA7C36D,EAAOijE,QAAQt0E,IAAI,sBAC/BmsE,eAAkE,OAAlD96D,EAAOijE,QAAQt0E,IAAI,2BAEtC,CAKD,GAAI6nE,EAAK6M,eAAgB,CAMvB,KAL6C,CAC3C1pD,KACE6oD,IAAetY,EAAWta,MAAQsa,EAAWta,MAAQsa,EAAWjtD,KAClEqmE,SAAUtjE,EAGb,CAGD,IAAIujE,EAAcvjE,EAAOijE,QAAQt0E,IAAI,gBASrC,OALEsO,EADEsmE,GAAe,wBAAwBp5E,KAAKo5E,SACjCvjE,EAAO+wD,aAEP/wD,EAAOi2B,OAGlBusC,IAAetY,EAAWta,MACrB,CACLj2B,KAAM6oD,EACN5yB,MAAO,IAAImgB,EAAkBC,EAAQhwD,EAAOiwD,WAAYhzD,GACxDgmE,QAASjjE,EAAOijE,SAIb,CACLtpD,KAAMuwC,EAAWjtD,KACjBA,OACAumE,WAAYxjE,EAAOgwD,OACnBiT,QAASjjE,EAAOijE,QAEnB,CAED,OAAIT,IAAetY,EAAWta,MACrB,CAAEj2B,KAAM6oD,EAAY5yB,MAAO5vC,GA4ZhC,SAAyB1R,GAC7B,IAAIm1E,EAAyBn1E,EAC7B,OACEm1E,GACoB,kBAAbA,GACkB,kBAAlBA,EAASxmE,MACc,oBAAvBwmE,EAASrJ,WACW,oBAApBqJ,EAASnH,QACgB,oBAAzBmH,EAASC,WAEpB,CAnaMC,CAAe3jE,GACV,CACL2Z,KAAMuwC,EAAWuZ,SACjBtJ,aAAcn6D,EACdwjE,WAAuB,OAAbI,EAAE5jE,EAAO0xD,WAAI,EAAXkS,EAAa5T,OACzBiT,SAAS,OAAAY,EAAA7jE,EAAO0xD,WAAP,EAAAmS,EAAaZ,UAAW,IAAIa,QAAQ9jE,EAAO0xD,KAAKuR,UAItD,CAAEtpD,KAAMuwC,EAAWjtD,KAAMA,KAAM+C,GATV,IAAA4jE,EAAAC,CAU9B,CAKA,SAASrM,GACPxO,EACA71B,EACAskC,EACAL,GAEA,IAAIlhC,EAAM8yB,EAAQM,UAAU2W,GAAkB9sC,IAAWtzC,WACrD6xE,EAAoB,CAAE+F,UAE1B,GAAIL,GAActB,GAAiBsB,EAAWzG,YAAa,CACzD,IAAI,WAAEA,EAAU,YAAEE,GAAgBuG,EAIlC1F,EAAKyG,OAASxH,EAAW9lE,cAEL,qBAAhBgmE,GACFa,EAAKuR,QAAU,IAAIa,QAAQ,CAAE,eAAgBjT,IAC7Ca,EAAKzzC,KAAOi/B,KAAKC,UAAUia,EAAWrG,OACb,eAAhBF,EAETa,EAAKzzC,KAAOm5C,EAAWnhC,KAEP,sCAAhB46B,GACAuG,EAAWtG,SAGXY,EAAKzzC,KAAOqiD,GAA8BlJ,EAAWtG,UAGrDY,EAAKzzC,KAAOm5C,EAAWtG,QAE1B,CAED,OAAO,IAAI+H,QAAQ3iC,EAAKw7B,EAC1B,CAEA,SAAS4O,GAA8BxP,GACrC,IAAIgP,EAAe,IAAIK,gBAEvB,IAAK,IAAKp6E,EAAKuI,KAAUwiE,EAASkL,UAEhC8D,EAAaU,OAAOz6E,EAAsB,kBAAVuI,EAAqBA,EAAQA,EAAM7H,MAGrE,OAAOq5E,CACT,CAEA,SAASS,GACPT,GAEA,IAAIhP,EAAW,IAAIoP,SACnB,IAAK,IAAKn6E,EAAKuI,KAAUwxE,EAAa9D,UACpClL,EAAS0P,OAAOz6E,EAAKuI,GAEvB,OAAOwiE,CACT,CAEA,SAASiT,GACP78D,EACA+xD,EACAU,EACApC,EACAzC,GAQA,IAEI0O,EAFAhQ,EAAwC,CAAC,EACzCE,EAAuC,KAEvCsQ,GAAa,EACbC,EAAyC,CAAC,EA0E9C,OAvEAtK,EAAQr8D,SAAQ,CAAC0C,EAAQqT,KACvB,IAAIga,EAAK4rC,EAAc5lD,GAAOo3C,MAAMp9B,GAKpC,GAJAq6B,GACG2Q,GAAiBr4D,GAClB,uDAEEu4D,GAAcv4D,GAAS,CAGzB,IAAIw4D,EAAgBd,GAAoBxwD,EAASmmB,GAC7CuiB,EAAQ5vC,EAAO4vC,MAIf2nB,IACF3nB,EAAQjwD,OAAOqd,OAAOu6D,GAAc,GACpCA,OAAe7zE,GAGjBgwE,EAASA,GAAU,CAAC,EAGkB,MAAlCA,EAAO8E,EAAc/N,MAAMp9B,MAC7BqmC,EAAO8E,EAAc/N,MAAMp9B,IAAMuiB,GAInC4jB,EAAWnmC,QAAM3pC,EAIZsgF,IACHA,GAAa,EACbR,EAAarT,EAAqBnwD,EAAO4vC,OACrC5vC,EAAO4vC,MAAMogB,OACb,KAEFhwD,EAAOijE,UACTgB,EAAc52C,GAAMrtB,EAAOijE,QAE9B,MACKvK,GAAiB14D,IACnB80D,EAAgBluE,IAAIymC,EAAIrtB,EAAOm6D,cAC/B3G,EAAWnmC,GAAMrtB,EAAOm6D,aAAal9D,MAErCu2D,EAAWnmC,GAAMrtB,EAAO/C,KAMH,MAArB+C,EAAOwjE,YACe,MAAtBxjE,EAAOwjE,YACNQ,IAEDR,EAAaxjE,EAAOwjE,YAElBxjE,EAAOijE,UACTgB,EAAc52C,GAAMrtB,EAAOijE,QAE9B,IAMC1L,IACF7D,EAAS6D,EACT/D,EAAW7zE,OAAO2G,KAAKixE,GAAc,SAAM7zE,GAGtC,CACL8vE,aACAE,SACA8P,WAAYA,GAAc,IAC1BS,gBAEJ,CAEA,SAAS/J,GACP3yB,EACArgC,EACA+xD,EACAU,EACApC,EACA2B,EACAW,EACA/E,GAKA,IAAI,WAAEtB,EAAU,OAAEE,GAAWqQ,GAC3B78D,EACA+xD,EACAU,EACApC,EACAzC,GAIF,IAAK,IAAIzhD,EAAQ,EAAGA,EAAQ6lD,EAAqB34E,OAAQ8yB,IAAS,CAChE,IAAI,IAAEttB,EAAG,MAAE0D,EAAK,WAAEgwE,GAAeP,EAAqB7lD,GACtDq0C,OACqBhkE,IAAnBm2E,QAA0Dn2E,IAA1Bm2E,EAAexmD,GAC/C,6CAEF,IAAIrT,EAAS65D,EAAexmD,GAG5B,IAAIomD,IAAcA,EAAWhC,OAAOQ,QAG7B,GAAIM,GAAcv4D,GAAS,CAChC,IAAIw4D,EAAgBd,GAAoBnwB,EAAMrgC,QAAc,MAALzd,OAAK,EAALA,EAAOghE,MAAMp9B,IAC9DqmC,GAAUA,EAAO8E,EAAc/N,MAAMp9B,MACzCqmC,EAAMzL,EAAA,GACDyL,EAAM,CACT,CAAC8E,EAAc/N,MAAMp9B,IAAKrtB,EAAO4vC,SAGrCrI,EAAMosB,SAAShoC,OAAO5lC,EACvB,MAAM,GAAIsyE,GAAiBr4D,GAG1B0nD,GAAU,EAAO,gDACZ,GAAIgR,GAAiB14D,GAG1B0nD,GAAU,EAAO,uCACZ,CACL,IAAI2T,EAAcC,GAAet7D,EAAO/C,MACxCsqC,EAAMosB,SAAS/sE,IAAIb,EAAKs1E,EACzB,CACF,CAED,MAAO,CAAE7H,aAAYE,SACvB,CAEA,SAASsC,GACPxC,EACA0Q,EACAh9D,EACAwsD,GAEA,IAAIyQ,EAAgBlc,EAAA,GAAQic,GAC5B,IAAK,IAAIz6E,KAASyd,EAAS,CACzB,IAAImmB,EAAK5jC,EAAMghE,MAAMp9B,GAerB,GAdI62C,EAAc/jF,eAAektC,QACL3pC,IAAtBwgF,EAAc72C,KAChB82C,EAAiB92C,GAAM62C,EAAc72C,SAMX3pC,IAAnB8vE,EAAWnmC,IAAqB5jC,EAAMghE,MAAMyI,SAGrDiR,EAAiB92C,GAAMmmC,EAAWnmC,IAGhCqmC,GAAUA,EAAOvzE,eAAektC,GAElC,KAEH,CACD,OAAO82C,CACT,CAKA,SAASzM,GACPxwD,EACAkxD,GAKA,OAHsBA,EAClBlxD,EAAQhhB,MAAM,EAAGghB,EAAQ05D,WAAW99E,GAAMA,EAAE2nE,MAAMp9B,KAAO+qC,IAAW,GACpE,IAAIlxD,IAEUk9D,UAAUC,MAAMvhF,IAAmC,IAA7BA,EAAE2nE,MAAM6G,oBAC9CpqD,EAAQ,EAEZ,CAEA,SAAS4rD,GAAuBzI,GAK9B,IAAII,EACgB,IAAlBJ,EAAO9pE,OACH8pE,EAAO,GACPA,EAAOga,MAAMj+B,GAAMA,EAAE/yB,QAAU+yB,EAAEkiB,MAAmB,MAAXliB,EAAEkiB,QAAiB,CAC1Dj7B,GAAI,wBAGZ,MAAO,CACLnmB,QAAS,CACP,CACE0mD,OAAQ,CAAC,EACT1F,SAAU,GACV2F,aAAc,GACdpD,UAGJA,QAEJ,CAEA,SAASoI,GACP7C,EAAcsU,GAWR,IAVN,SACEpc,EAAQ,QACRkQ,EAAO,OACPD,EAAM,KACNx+C,cAME,CAAC,EAAC2qD,EAEFrU,EAAa,uBACbsU,EAAe,kCAgCnB,OA9Be,MAAXvU,GACFC,EAAa,cACTkI,GAAUjQ,GAAYkQ,EACxBmM,EACE,cAAcpM,EAAM,gBAAgBjQ,EAApC,+CAC2CkQ,EAD3C,+CAGgB,iBAATz+C,EACT4qD,EAAe,sCACG,iBAAT5qD,IACT4qD,EAAe,qCAEG,MAAXvU,GACTC,EAAa,YACbsU,EAAyB,UAAAnM,EAAgC,yBAAAlQ,EAAW,KAChD,MAAX8H,GACTC,EAAa,YACbsU,EAAe,yBAAyBrc,EAAW,KAC/B,MAAX8H,IACTC,EAAa,qBACTkI,GAAUjQ,GAAYkQ,EACxBmM,EACE,cAAcpM,EAAOttE,cAAa,gBAAgBq9D,EAAlD,gDAC4CkQ,EAD5C,+CAGOD,IACToM,EAAe,2BAA2BpM,EAAOttE,cAAgB,MAI9D,IAAIklE,EACTC,GAAU,IACVC,EACA,IAAI7pE,MAAMm+E,IACV,EAEJ,CAGA,SAASvK,GACPL,GAEA,IAAK,IAAI34E,EAAI24E,EAAQp5E,OAAS,EAAGS,GAAK,EAAGA,IAAK,CAC5C,IAAIgf,EAAS25D,EAAQ34E,GACrB,GAAIq3E,GAAiBr4D,GACnB,MAAO,CAAEA,SAAQ+nD,IAAK/mE,EAEzB,CACH,CAEA,SAASi/E,GAAkB3X,GAEzB,OAAOD,EAAUJ,EAAC,CAAC,EADc,kBAATK,EAAoBF,EAAUE,GAAQA,EAC3B,CAAAH,KAAM,KAC3C,CAuBA,SAASuQ,GAAiB14D,GACxB,OAAOA,EAAO2Z,OAASuwC,EAAWuZ,QACpC,CAEA,SAASlL,GAAcv4D,GACrB,OAAOA,EAAO2Z,OAASuwC,EAAWta,KACpC,CAEA,SAASyoB,GAAiBr4D,GACxB,OAAQA,GAAUA,EAAO2Z,QAAUuwC,EAAW6P,QAChD,CAcA,SAASiJ,GAAW10E,GAClB,OACW,MAATA,GACwB,kBAAjBA,EAAM0hE,QACe,kBAArB1hE,EAAM2hE,YACY,kBAAlB3hE,EAAM20E,SACS,qBAAf30E,EAAM2vB,IAEjB,CAoBA,SAAS4hD,GAAc1H,GACrB,OAAO5H,EAAoBj0B,IAAI67B,EAAOnrE,cACxC,CAEA,SAAS8oE,GACPqC,GAEA,OAAO9H,EAAqB/zB,IAAI67B,EAAOnrE,cACzC,CAEAspE,eAAe4E,GACbF,EACA/B,EACAU,EACA6K,EACA7E,EACAqB,GAEA,IAAK,IAAI3tD,EAAQ,EAAGA,EAAQsmD,EAAQp5E,OAAQ8yB,IAAS,CACnD,IAAIrT,EAAS25D,EAAQtmD,GACjB5pB,EAAQwvE,EAAc5lD,GAI1B,IAAK5pB,EACH,SAGF,IAAIw3E,EAAejG,EAAeqJ,MAC/BvhF,GAAMA,EAAE2nE,MAAMp9B,KAAO5jC,EAAOghE,MAAMp9B,KAEjCo3C,EACc,MAAhBxD,IACCU,GAAmBV,EAAcx3E,SAC2B/F,KAA5Ds9E,GAAqBA,EAAkBv3E,EAAMghE,MAAMp9B,KAEtD,GAAIqrC,GAAiB14D,KAAY2/D,GAAa8E,GAAuB,CAInE,IAAIhN,EAAS+M,EAAQnxD,GACrBq0C,EACE+P,EACA,0EAEIoH,GAAoB7+D,EAAQy3D,EAAQkI,GAAW3gC,MAAMh/B,IACrDA,IACF25D,EAAQtmD,GAASrT,GAAU25D,EAAQtmD,GACpC,GAEJ,CACF,CACH,CAEAijD,eAAeuI,GACb7+D,EACAy3D,EACAiN,GAGA,QAHM,IAANA,IAAAA,GAAS,UAEW1kE,EAAOm6D,aAAauJ,YAAYjM,GACpD,CAIA,GAAIiN,EACF,IACE,MAAO,CACL/qD,KAAMuwC,EAAWjtD,KACjBA,KAAM+C,EAAOm6D,aAAawK,eAE5B,MAAO5nE,GAEP,MAAO,CACL4c,KAAMuwC,EAAWta,MACjBA,MAAO7yC,EAEV,CAGH,MAAO,CACL4c,KAAMuwC,EAAWjtD,KACjBA,KAAM+C,EAAOm6D,aAAal9D,KAnB3B,CAqBH,CAEA,SAASwiE,GAAmB1pC,GAC1B,OAAO,IAAIoqC,gBAAgBpqC,GAAQ6uC,OAAO,SAAS1lF,MAAMi6B,GAAY,KAANA,GACjE,CAEA,SAAS4+C,GACP7wD,EACAisB,GAEA,IAAI4C,EACkB,kBAAb5C,EAAwBi1B,EAAUj1B,GAAU4C,OAAS5C,EAAS4C,OACvE,GACE7uB,EAAQA,EAAQ3mB,OAAS,GAAGkqE,MAAMp3C,OAClCosD,GAAmB1pC,GAAU,IAG7B,OAAO7uB,EAAQA,EAAQ3mB,OAAS,GAIlC,IAAIskF,EAAc/V,EAA2B5nD,GAC7C,OAAO29D,EAAYA,EAAYtkF,OAAS,EAC1C,CAEA,SAASy4E,GACP5F,GAEA,IAAI,WAAEzC,EAAU,WAAEC,EAAU,YAAEC,EAAW,KAAE56B,EAAI,SAAE66B,EAAQ,KAAEC,GACzDqC,EACF,GAAKzC,GAAeC,GAAeC,EAInC,OAAY,MAAR56B,EACK,CACL06B,aACAC,aACAC,cACAC,cAAUptE,EACVqtE,UAAMrtE,EACNuyC,QAEmB,MAAZ66B,EACF,CACLH,aACAC,aACAC,cACAC,WACAC,UAAMrtE,EACNuyC,UAAMvyC,QAEUA,IAATqtE,EACF,CACLJ,aACAC,aACAC,cACAC,cAAUptE,EACVqtE,OACA96B,UAAMvyC,QAPH,CAUT,CAEA,SAASk1E,GACPzlC,EACAikC,GAEA,GAAIA,EAAY,CAWd,MAV8C,CAC5C7vB,MAAO,UACPpU,WACAw9B,WAAYyG,EAAWzG,WACvBC,WAAYwG,EAAWxG,WACvBC,YAAauG,EAAWvG,YACxBC,SAAUsG,EAAWtG,SACrBC,KAAMqG,EAAWrG,KACjB96B,KAAMmhC,EAAWnhC,KAGpB,CAWC,MAV8C,CAC5CsR,MAAO,UACPpU,WACAw9B,gBAAYjtE,EACZktE,gBAAYltE,EACZmtE,iBAAantE,EACbotE,cAAUptE,EACVqtE,UAAMrtE,EACNuyC,UAAMvyC,EAIZ,CAmBA,SAAS61E,GACPnC,EACAn6D,GAEA,GAAIm6D,EAAY,CAWd,MAVwC,CACtC7vB,MAAO,UACPopB,WAAYyG,EAAWzG,WACvBC,WAAYwG,EAAWxG,WACvBC,YAAauG,EAAWvG,YACxBC,SAAUsG,EAAWtG,SACrBC,KAAMqG,EAAWrG,KACjB96B,KAAMmhC,EAAWnhC,KACjBh5B,OAGH,CAWC,MAVwC,CACtCsqC,MAAO,UACPopB,gBAAYjtE,EACZktE,gBAAYltE,EACZmtE,iBAAantE,EACbotE,cAAUptE,EACVqtE,UAAMrtE,EACNuyC,UAAMvyC,EACNuZ,OAIN,CAmBA,SAASq+D,GAAer+D,GAWtB,MAVqC,CACnCsqC,MAAO,OACPopB,gBAAYjtE,EACZktE,gBAAYltE,EACZmtE,iBAAantE,EACbotE,cAAUptE,EACVqtE,UAAMrtE,EACNuyC,UAAMvyC,EACNuZ,OAGJ,wOCx+IO,MAAM6nE,GACXC,EAAAA,cAAoD,MAK/C,MAAMC,GAAyBD,EAAAA,cAEpC,MA0CK,MAAME,GAAoBF,EAAAA,cAC/B,MAYK,MAAMG,GAAkBH,EAAAA,cAC7B,YAaWI,GAAeJ,EAAAA,cAAwC,CAClEK,OAAQ,KACRl+D,QAAS,GACTm+D,aAAa,IAOR,MAAMC,GAAoBP,EAAAA,cAAyB,MCxEnD,SAASQ,KACd,OAA4C,MAArCR,EAAAA,WAAiBG,GAC1B,CAYO,SAASM,KAQd,OANED,MADFE,GAAU,GAOHV,EAAAA,WAAiBG,IAAiB/xC,QAC3C,CAkDA,SAASuyC,GACP9mD,GAEemmD,EAAAA,WAAiBE,IAAmBU,QAKjDZ,EAAAA,gBAAsBnmD,EAE1B,CAQO,SAASgnD,KACd,IAAI,YAAEP,GAAgBN,EAAAA,WAAiBI,IAGvC,OAAOE,EA2yBT,WACE,IAAI,OAAEtS,GAAW8S,GAAqBC,GAAeC,mBACjD14C,EAAK24C,GAAkBC,GAAoBF,mBAE3CG,EAAYnB,EAAAA,QAAa,GAC7BW,IAA0B,KACxBQ,EAAU1+C,SAAU,CAAI,IAG1B,IAAI+1C,EAA6BwH,EAAAA,aAC/B,SAACzgF,EAAiB26B,QAAwB,IAAxBA,IAAAA,EAA2B,CAAC,GAKvCinD,EAAU1+C,UAEG,kBAAPljC,EACTyuE,EAAOwK,SAASj5E,GAEhByuE,EAAOwK,SAASj5E,EAAE2jE,GAAA,CAAIyV,YAAarwC,GAAOpO,IAE9C,GACA,CAAC8zC,EAAQ1lC,IAGX,OAAOkwC,CACT,CAt0BuB4I,GAGvB,WAEIZ,MADFE,GAAU,GAOV,IAAIW,EAAoBrB,EAAAA,WAAiBD,KACrC,SAAE9Z,EAAQ,UAAEnI,GAAckiB,EAAAA,WAAiBE,KAC3C,QAAE/9D,GAAY69D,EAAAA,WAAiBI,KAC7Bjd,SAAUgH,GAAqBsW,KAEjCa,EAAqBnpB,KAAKC,UAC5BmpB,EAA2Bp/D,GAASrmB,KAAK4I,GAAUA,EAAMokE,gBAGvDqY,EAAYnB,EAAAA,QAAa,GAqD7B,OApDAW,IAA0B,KACxBQ,EAAU1+C,SAAU,CAAI,IAGOu9C,EAAAA,aAC/B,SAACzgF,EAAiB26B,GAKhB,QALwC,IAAxBA,IAAAA,EAA2B,CAAC,IAKvCinD,EAAU1+C,QAAS,OAExB,GAAkB,kBAAPljC,EAET,YADAu+D,EAAUoH,GAAG3lE,GAIf,IAAIgkE,EAAOyG,EACTzqE,EACA44D,KAAK4f,MAAMuJ,GACXnX,EACqB,SAArBjwC,EAAQ0+C,UASe,MAArByI,GAA0C,MAAbpb,IAC/B1C,EAAKJ,SACe,MAAlBI,EAAKJ,SACD8C,EACAiB,EAAU,CAACjB,EAAU1C,EAAKJ,aAG/BjpC,EAAQv1B,QAAUm5D,EAAUn5D,QAAUm5D,EAAU1hE,MACjDmnE,EACArpC,EAAQsoB,MACRtoB,EAEJ,GACA,CACE+rC,EACAnI,EACAwjB,EACAnX,EACAkX,GAKN,CA1E6CG,EAC7C,CAkKO,SAASC,GACdnc,EACAU,EACA0b,GAGElB,MADFE,GAAU,GAOV,IAAI,UAAE5iB,GAAckiB,EAAAA,WAAiBE,KAC/B/9D,QAASw/D,GAAkB3B,EAAAA,WAAiBI,IAC9CwB,EAAaD,EAAcA,EAAcnmF,OAAS,GAClDqmF,EAAeD,EAAaA,EAAW/Y,OAAS,CAAC,EAEjDiZ,GADiBF,GAAaA,EAAWze,SACpBye,EAAaA,EAAW9Y,aAAe,KAC9C8Y,GAAcA,EAAWlc,MAqC3C,IAEIt3B,EAFA2zC,EAAsBtB,KAG1B,GAAIza,EAAa,KAAAgc,EACf,IAAIC,EACqB,kBAAhBjc,EAA2B3C,EAAU2C,GAAeA,EAGpC,MAAvB8b,IAC4B,OADFE,EACxBC,EAAkB9e,eAAQ,EAA1B6e,EAA4B/a,WAAW6a,KAF3CpB,GAAU,GASVtyC,EAAW6zC,CACb,MACE7zC,EAAW2zC,EAGb,IAAI5e,EAAW/0B,EAAS+0B,UAAY,IAMhChhD,EAAU4jD,EAAYT,EAAQ,CAAEnC,SAJX,MAAvB2e,EACI3e,EACAA,EAAShiE,MAAM2gF,EAAmBtmF,SAAW,MAoBnD,IAAI0mF,EAAkBC,GACpBhgE,GACEA,EAAQrmB,KAAK4I,GACX9J,OAAOg3B,OAAO,CAAC,EAAGltB,EAAO,CACvBmkE,OAAQjuE,OAAOg3B,OAAO,CAAC,EAAGiwD,EAAcn9E,EAAMmkE,QAC9C1F,SAAU+D,EAAU,CAClB4a,EAEAhkB,EAAU8G,eACN9G,EAAU8G,eAAelgE,EAAMy+D,UAAUA,SACzCz+D,EAAMy+D,WAEZ2F,aACyB,MAAvBpkE,EAAMokE,aACFgZ,EACA5a,EAAU,CACR4a,EAEAhkB,EAAU8G,eACN9G,EAAU8G,eAAelgE,EAAMokE,cAAc3F,SAC7Cz+D,EAAMokE,mBAIxB6Y,EACAD,GAMF,OAAI1b,GAAekc,EAEflC,EAAAA,cAACG,GAAgBxjB,SAAQ,CACvBpzD,MAAO,CACL6kC,SAAQ80B,GAAA,CACNC,SAAU,IACVnyB,OAAQ,GACRoyB,KAAM,GACN5gB,MAAO,KACPxhD,IAAK,WACFotC,GAELg0C,eAAgB3f,EAAeyB,MAGhCge,GAKAA,CACT,CAEA,SAASG,KACP,IAAIx3B,EAoYC,WAAkC,IAAAy3B,EACvC,IAAIz3B,EAAQm1B,EAAAA,WAAiBO,IACzB/9B,EAAQ+/B,GAAmBrB,GAAoBsB,eAC/CnP,EAAU4N,GAAkBC,GAAoBsB,eAIpD,GAAI33B,EACF,OAAOA,EAIT,OAAO,OAAPy3B,EAAO9/B,EAAMmsB,aAAN,EAAA2T,EAAejP,EACxB,CAjZcoP,GACRh4B,EAAU2gB,EAAqBvgB,GAC5BA,EAAMogB,OAAU,IAAApgB,EAAMqgB,WACzBrgB,aAAiBxpD,MACjBwpD,EAAMJ,QACN0N,KAAKC,UAAUvN,GACfvpD,EAAQupD,aAAiBxpD,MAAQwpD,EAAMvpD,MAAQ,KAC/CohF,EAAY,yBACZC,EAAY,CAAEC,QAAS,SAAUC,gBAAiBH,GAsBtD,OACE1C,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAI,2CACJA,EAAAA,cAAA,MAAIrhD,MAAO,CAAEmkD,UAAW,WAAar4B,GACpCnpD,EAAQ0+E,EAAAA,cAAA,OAAKrhD,MAAOgkD,GAAYrhF,GAAe,KAvBtC,KA2BhB,CAEA,MAAMyhF,GAAsB/C,EAAAA,cAACqC,GAAqB,MAgB3C,MAAMW,WAA4BhD,EAAAA,UAIvCznD,WAAAA,CAAYuqB,GACVmgC,MAAMngC,GACN5jD,KAAKsjD,MAAQ,CACXpU,SAAU0U,EAAM1U,SAChBogC,aAAc1rB,EAAM0rB,aACpB3jB,MAAO/H,EAAM+H,MAEjB,CAEA,+BAAOO,CAAyBP,GAC9B,MAAO,CAAEA,MAAOA,EAClB,CAEA,+BAAO9H,CACLD,EACAN,GAUA,OACEA,EAAMpU,WAAa0U,EAAM1U,UACD,SAAvBoU,EAAMgsB,cAAkD,SAAvB1rB,EAAM0rB,aAEjC,CACL3jB,MAAO/H,EAAM+H,MACbzc,SAAU0U,EAAM1U,SAChBogC,aAAc1rB,EAAM0rB,cAQjB,CACL3jB,MAAO/H,EAAM+H,OAASrI,EAAMqI,MAC5Bzc,SAAUoU,EAAMpU,SAChBogC,aAAc1rB,EAAM0rB,cAAgBhsB,EAAMgsB,aAE9C,CAEAnjB,iBAAAA,CAAkBR,EAAYq4B,GAC5BviF,QAAQkqD,MACN,wDACAA,EACAq4B,EAEJ,CAEAxrD,MAAAA,GACE,OAAOx4B,KAAKsjD,MAAMqI,MAChBm1B,EAAAA,cAACI,GAAazjB,SAAQ,CAACpzD,MAAOrK,KAAK4jD,MAAMqgC,cACvCnD,EAAAA,cAACO,GAAkB5jB,SAAQ,CACzBpzD,MAAOrK,KAAKsjD,MAAMqI,MAClBrwB,SAAUt7B,KAAK4jD,MAAMsgC,aAIzBlkF,KAAK4jD,MAAMtoB,QAEf,EASF,SAAS6oD,GAAalhB,GAAwD,IAAvD,aAAEghB,EAAY,MAAEz+E,EAAK,SAAE81B,GAA8B2nC,EACtEkf,EAAoBrB,EAAAA,WAAiBD,IAazC,OAREsB,GACAA,EAAkBT,QAClBS,EAAkBiC,gBACjB5+E,EAAMghE,MAAM6d,cAAgB7+E,EAAMghE,MAAM8d,iBAEzCnC,EAAkBiC,cAAcG,2BAA6B/+E,EAAMghE,MAAMp9B,IAIzE03C,EAAAA,cAACI,GAAazjB,SAAQ,CAACpzD,MAAO45E,GAC3B3oD,EAGP,CAEO,SAAS2nD,GACdhgE,EACAw/D,EACAD,GAC2B,IAAAgC,EAC3B,QAH2B,IAA3B/B,IAAAA,EAA8B,SACc,IAA5CD,IAAAA,EAA+C,MAEhC,MAAXv/D,EAAiB,KAAAwhE,EACnB,GAAmB,OAAnBA,EAAIjC,KAAAiC,EAAiBhV,OAKnB,OAAO,KAFPxsD,EAAUu/D,EAAgBv/D,OAI9B,CAEA,IAAI+/D,EAAkB//D,EAGlBwsD,EAAS,OAAH+U,EAAGhC,QAAA,EAAAgC,EAAiB/U,OAC9B,GAAc,MAAVA,EAAgB,CAClB,IAAIiV,EAAa1B,EAAgBrG,WAC9B99E,GAAMA,EAAE2nE,MAAMp9B,KAAM,MAAAqmC,OAAA,EAAAA,EAAS5wE,EAAE2nE,MAAMp9B,OAGtCs7C,GAAc,GADhBlD,GAAU,GAMVwB,EAAkBA,EAAgB/gF,MAChC,EACAsC,KAAK2L,IAAI8yE,EAAgB1mF,OAAQooF,EAAa,GAElD,CAEA,OAAO1B,EAAgB2B,aAAY,CAACxD,EAAQ37E,EAAO4pB,KACjD,IAAIu8B,EAAQnmD,EAAMghE,MAAMp9B,GAAW,MAANqmC,OAAM,EAANA,EAASjqE,EAAMghE,MAAMp9B,IAAM,KAEpDi7C,EAAuC,KACvC7B,IACF6B,EAAe7+E,EAAMghE,MAAM6d,cAAgBR,IAE7C,IAAI5gE,EAAUw/D,EAAcjvE,OAAOwvE,EAAgB/gF,MAAM,EAAGmtB,EAAQ,IAChEw1D,EAAcA,KAChB,IAAItpD,EAgBJ,OAdEA,EADEqwB,EACS04B,EACF7+E,EAAMghE,MAAMlkB,UAOVw+B,EAAAA,cAACt7E,EAAMghE,MAAMlkB,UAAS,MACxB98C,EAAMghE,MAAM1wB,QACVtwC,EAAMghE,MAAM1wB,QAEZqrC,EAGXL,EAAAA,cAACqD,GAAa,CACZ3+E,MAAOA,EACPy+E,aAAc,CACZ9C,SACAl+D,UACAm+D,YAAgC,MAAnBoB,GAEflnD,SAAUA,GACV,EAMN,OAAOknD,IACJh9E,EAAMghE,MAAM8d,eAAiB9+E,EAAMghE,MAAM6d,cAA0B,IAAVj1D,GAC1D0xD,EAAAA,cAACgD,GAAmB,CAClB50C,SAAUszC,EAAgBtzC,SAC1BogC,aAAckT,EAAgBlT,aAC9B4U,UAAWG,EACX14B,MAAOA,EACPrwB,SAAUspD,IACVX,aAAc,CAAE9C,OAAQ,KAAMl+D,UAASm+D,aAAa,KAGtDwD,GACD,GACA,KACL,CAAC,IAEI/C,GAAc,SAAdA,GAAc,OAAdA,EAAc,wBAAdA,EAAc,gCAAdA,EAAc,gCAAdA,CAAc,EAAdA,IAAc,IAMdG,GAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,wBAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,wCAAnBA,EAAmB,wBAAnBA,EAAmB,gCAAnBA,EAAmB,gCAAnBA,EAAmB,wBAAnBA,CAAmB,EAAnBA,IAAmB,IAmBxB,SAASJ,GAAqBiD,GAC5B,IAAIC,EAAMhE,EAAAA,WAAiBD,IAE3B,OADUiE,GAAVtD,GAAU,GACHsD,CACT,CAEA,SAASzB,GAAmBwB,GAC1B,IAAIvhC,EAAQw9B,EAAAA,WAAiBC,IAE7B,OADUz9B,GAAVk+B,GAAU,GACHl+B,CACT,CASA,SAASy+B,GAAkB8C,GACzB,IAAIre,EARN,SAAyBqe,GACvB,IAAIre,EAAQsa,EAAAA,WAAiBI,IAE7B,OADU1a,GAAVgb,GAAU,GACHhb,CACT,CAIcue,GACRC,EAAYxe,EAAMvjD,QAAQujD,EAAMvjD,QAAQ3mB,OAAS,GAKrD,OAHE0oF,EAAUxe,MAAMp9B,IADlBo4C,GAAU,GAIHwD,EAAUxe,MAAMp9B,EACzB,CC5sB4B03C,EAAsB,gBA2K3C,SAASmE,GAAQC,GAKA,IALC,GACvB7kF,EAAE,QACFoF,EAAO,MACP69C,EAAK,SACLo2B,GACcwL,EAEZ5D,MADFE,GAAU,GAcV,IAAI,QAAEv+D,GAAY69D,EAAAA,WAAiBI,KAC7Bjd,SAAUgH,GAAqBsW,KACjCjI,EAAWqI,KAIXtd,EAAOyG,EACTzqE,EACAgiF,EAA2Bp/D,GAASrmB,KAAK4I,GAAUA,EAAMokE,eACzDqB,EACa,SAAbyO,GAEEyL,EAAWlsB,KAAKC,UAAUmL,GAO9B,OALAyc,EAAAA,WACE,IAAMxH,EAASrgB,KAAK4f,MAAMsM,GAAW,CAAE1/E,UAAS69C,QAAOo2B,cACvD,CAACJ,EAAU6L,EAAUzL,EAAUj0E,EAAS69C,IAGnC,IACT,CAsFO,SAAS8hC,GAAMC,GAOqB,IANzCte,SAAUue,EAAe,IAAG,SAC5BhqD,EAAW,KACX4T,SAAUq2C,EAAY,eACtBrC,EAAiB3f,EAAeyB,IAAG,UACnCpG,EACA8iB,OAAQ8D,GAAa,GACTH,EAET/D,MADHE,GAAU,GAQV,IAAIza,EAAWue,EAAa7/E,QAAQ,OAAQ,KACxCggF,EAAoB3E,EAAAA,SACtB,KAAM,CAAG/Z,WAAUnI,YAAW8iB,OAAQ8D,KACtC,CAACze,EAAUnI,EAAW4mB,IAGI,kBAAjBD,IACTA,EAAephB,EAAUohB,IAG3B,IAAI,SACFthB,EAAW,IAAG,OACdnyB,EAAS,GAAE,KACXoyB,EAAO,GAAE,MACT5gB,EAAQ,KAAI,IACZxhD,EAAM,WACJyjF,EAEAG,EAAkB5E,EAAAA,SAAc,KAClC,IAAI6E,EAAmB3e,EAAc/C,EAAU8C,GAE/C,OAAwB,MAApB4e,EACK,KAGF,CACLz2C,SAAU,CACR+0B,SAAU0hB,EACV7zC,SACAoyB,OACA5gB,QACAxhD,OAEFohF,iBACD,GACA,CAACnc,EAAU9C,EAAUnyB,EAAQoyB,EAAM5gB,EAAOxhD,EAAKohF,IASlD,OAAuB,MAAnBwC,EACK,KAIP5E,EAAAA,cAACE,GAAkBvjB,SAAQ,CAACpzD,MAAOo7E,GACjC3E,EAAAA,cAACG,GAAgBxjB,SAAQ,CAACniC,SAAUA,EAAUjxB,MAAOq7E,IAG3D,CAyD4B,IAAI/qC,SAAQ,SAEPmmC,EAAAA,UC/RjC,SAASza,GAAmBG,GAC1B,IAAIof,EAAgE,CAGlEvY,iBAAyC,MAAvB7G,EAAM8d,eAA+C,MAAtB9d,EAAM6d,cAmCzD,OAhCI7d,EAAMlkB,WAUR5mD,OAAOg3B,OAAOkzD,EAAS,CACrB9vC,QAASgrC,EAAAA,cAAoBta,EAAMlkB,WACnCA,eAAW7iD,IAIX+mE,EAAM8d,eAUR5oF,OAAOg3B,OAAOkzD,EAAS,CACrBvB,aAAcvD,EAAAA,cAAoBta,EAAM8d,eACxCA,mBAAe7kF,IAIZmmF,CACT,wOClDgD,IAAItxD,IAAI,CACtD,oCACA,sBACA,eCqDF,SAASuxD,KAAkB,IAAApN,EACzB,IAAIn1B,EAAQ,OAAHm1B,EAAG9jD,aAAA,EAAA8jD,EAAQqN,4BAOpB,OANIxiC,GAASA,EAAMmsB,SACjBnsB,EAAK0gB,GAAA,GACA1gB,EAAK,CACRmsB,OAAQsW,GAAkBziC,EAAMmsB,WAG7BnsB,CACT,CAEA,SAASyiC,GACPtW,GAEA,IAAKA,EAAQ,OAAO,KACpB,IAAIsI,EAAUr8E,OAAOq8E,QAAQtI,GACzBuW,EAA6C,CAAC,EAClD,IAAK,IAAKlkF,EAAKtB,KAAQu3E,EAGrB,GAAIv3E,GAAsB,uBAAfA,EAAIylF,OACbD,EAAWlkF,GAAO,IAAIokF,EACpB1lF,EAAIurE,OACJvrE,EAAIwrE,WACJxrE,EAAIwY,MACa,IAAjBxY,EAAIyrE,eAED,GAAIzrE,GAAsB,UAAfA,EAAIylF,OAAoB,CAExC,GAAIzlF,EAAI2lF,UAAW,CACjB,IAAIC,EAAmBzxD,OAAOn0B,EAAI2lF,WAClC,GAAgC,oBAArBC,EACT,IAEE,IAAIz6B,EAAQ,IAAIy6B,EAAiB5lF,EAAI+qD,SAGrCI,EAAMvpD,MAAQ,GACd4jF,EAAWlkF,GAAO6pD,EAClB,MAAO7yC,GACP,CAGL,CAED,GAAuB,MAAnBktE,EAAWlkF,GAAc,CAC3B,IAAI6pD,EAAQ,IAAIxpD,MAAM3B,EAAI+qD,SAG1BI,EAAMvpD,MAAQ,GACd4jF,EAAWlkF,GAAO6pD,CACnB,CACF,MACCq6B,EAAWlkF,GAAOtB,EAGtB,OAAOwlF,CACT,CAkBA,MAAMK,GAAwBvF,EAAAA,cAAiD,CAC7EwF,iBAAiB,IAWb,MAAAC,GAAkBzF,EAAAA,cAA2C,IAAIz5C,KAkCvE,MACMm/C,GAAsB1F,EAAsB,gBAiBlD,MAAM2F,GAOJptD,WAAAA,GANA,KAAM0yC,OAAwC,UAO5C/rE,KAAKoiE,QAAU,IAAIznB,SAAQ,CAACG,EAASunB,KACnCriE,KAAK86C,QAAWzwC,IACM,YAAhBrK,KAAK+rE,SACP/rE,KAAK+rE,OAAS,WACdjxB,EAAQzwC,GACT,EAEHrK,KAAKqiE,OAAUqkB,IACO,YAAhB1mF,KAAK+rE,SACP/rE,KAAK+rE,OAAS,WACd1J,EAAOqkB,GACR,CACF,GAEL,EAMI,SAAUC,GAAc1jB,GAIR,IAJS,gBAC7B2jB,EAAe,OACf9X,EAAM,OACN1nE,GACoB67D,GACf3f,EAAOujC,GAAgB/F,EAAAA,SAAehS,EAAOxrB,QAC7CwjC,EAAcC,GAAmBjG,EAAAA,YACjCkG,EAAWC,GAAgBnG,EAAAA,SAA4C,CAC1EwF,iBAAiB,KAEdY,EAAWC,GAAgBrG,EAAAA,YAC3B93C,EAAYo+C,GAAiBtG,EAAAA,YAC7BuG,EAAcC,GAAmBxG,EAAAA,WAKlCyG,EAAczG,EAAAA,OAA+B,IAAIz5C,MACjD,mBAAEmgD,GAAuBpgF,GAAU,CAAC,EAEpCqgF,EAAuB3G,EAAAA,aACxBnmD,IACK6sD,EAjEV,SAA6B7sD,GACvB6rD,GACFA,GAAoB7rD,GAEpBA,GAEJ,CA4DQ+sD,CAAoB/sD,GAEpBA,GACD,GAEH,CAAC6sD,IAGCjrB,EAAWukB,EAAAA,aACb,CACE7P,EAAqB6G,KAEnB,IADF,gBAAElH,EAAiBW,4BAA6BL,GAAoB4G,EAEpElH,EAAgBv3D,SAASvX,GAAQylF,EAAYhkD,QAAQmE,OAAO5lC,KAC5DmvE,EAASvB,SAASr2D,SAAQ,CAACg4D,EAASvvE,UACbrC,IAAjB4xE,EAAQr4D,MACVuuE,EAAYhkD,QAAQ5gC,IAAIb,EAAKuvE,EAAQr4D,KACtC,IAIAk4D,GACgB,MAAjBpC,EAAOn6C,QAC+C,oBAA/Cm6C,EAAOn6C,OAAOC,SAAS+yD,oBAIrB3+C,GAAck+C,GAGvBA,EAAUpsC,UACV9R,EAAW4+C,iBACXN,EAAgB,CACdhkC,MAAO2tB,EACPgB,gBAAiBf,EAAmBe,gBACpCC,aAAchB,EAAmBgB,iBAInC6U,EAAgB9V,GAChBgW,EAAa,CACXX,iBAAiB,EACjBrU,gBAAiBf,EAAmBe,gBACpCC,aAAchB,EAAmBgB,gBAjBnCuV,GAAqB,IAAMZ,EAAa5V,IAmBzC,GAEH,CAACnC,EAAOn6C,OAAQqU,EAAYk+C,EAAWK,EAAaE,IAKtD3G,EAAAA,iBAAsB,IAAMhS,EAAOqH,UAAU5Z,IAAW,CAACuS,EAAQvS,IAIjEukB,EAAAA,WAAgB,KACVkG,EAAUV,iBACZa,EAAa,IAAIV,GAClB,GACA,CAACO,EAAUV,kBAKdxF,EAAAA,WAAgB,KACd,GAAIoG,GAAaJ,GAAgBhY,EAAOn6C,OAAQ,CAC9C,IAAIs8C,EAAW6V,EACXe,EAAgBX,EAAU9kB,QAC1Bp5B,EAAa8lC,EAAOn6C,OAAOC,SAAS+yD,qBAAoBtV,UAC1DoV,GAAqB,IAAMZ,EAAa5V,WAClC4W,CAAa,IAErB7+C,EAAW8+C,SAASC,SAAQ,KAC1BZ,OAAa1nF,GACb2nF,OAAc3nF,GACdsnF,OAAgBtnF,GAChBwnF,EAAa,CAAEX,iBAAiB,GAAQ,IAE1Cc,EAAcp+C,EACf,IACA,CAACy+C,EAAsBX,EAAcI,EAAWpY,EAAOn6C,SAI1DmsD,EAAAA,WAAgB,KAEZoG,GACAJ,GACAxjC,EAAMpU,SAASptC,MAAQglF,EAAa53C,SAASptC,KAE7ColF,EAAUpsC,SACX,GACA,CAACosC,EAAWl+C,EAAYsa,EAAMpU,SAAU43C,IAI3ChG,EAAAA,WAAgB,MACTkG,EAAUV,iBAAmBe,IAChCN,EAAgBM,EAAa/jC,OAC7B2jC,EAAa,CACXX,iBAAiB,EACjBrU,gBAAiBoV,EAAapV,gBAC9BC,aAAcmV,EAAanV,eAE7BoV,OAAgB7nF,GACjB,GACA,CAACunF,EAAUV,gBAAiBe,IAE/B,IAAIzoB,EAAYkiB,EAAAA,SAAc,KACrB,CACLnc,WAAYmK,EAAOnK,WACnBe,eAAgBoJ,EAAOpJ,eACvBM,GAAK93D,GAAM4gE,EAAOwK,SAASprE,GAC3BhR,KAAMA,CAACmD,EAAIijD,EAAOivB,IAChBzD,EAAOwK,SAASj5E,EAAI,CAClBijD,QACA+rB,mBAAoB,MAAAkD,OAAA,EAAAA,EAAMlD,qBAE9B5pE,QAASA,CAACpF,EAAIijD,EAAOivB,IACnBzD,EAAOwK,SAASj5E,EAAI,CAClBoF,SAAS,EACT69C,QACA+rB,mBAAoB,MAAAkD,OAAA,EAAAA,EAAMlD,wBAG/B,CAACP,IAEA/H,EAAW+H,EAAO/H,UAAY,IAE9Bob,EAAoBrB,EAAAA,SACtB,KAAM,CACJhS,SACAlQ,YACA8iB,QAAQ,EACR3a,cAEF,CAAC+H,EAAQlQ,EAAWmI,IAStB,OACE+Z,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACkH,GAAkBvqB,SAAS,CAAApzD,MAAO83E,GACjCrB,EAAAA,cAACmH,GAAuBxqB,SAAS,CAAApzD,MAAOi5C,GACtCw9B,EAAAA,cAACyF,GAAgB9oB,SAAQ,CAACpzD,MAAOk9E,EAAYhkD,SAC3Cu9C,EAAAA,cAACuF,GAAsB5oB,SAAS,CAAApzD,MAAO28E,GACrClG,EAAAA,cAACsE,GACC,CAAAre,SAAUA,EACV73B,SAAUoU,EAAMpU,SAChBg0C,eAAgB5/B,EAAM4rB,cACtBtQ,UAAWA,GAEVtb,EAAM0rB,YACL8R,EAAAA,cAACoH,GAAW,CAAA9hB,OAAQ0I,EAAO1I,OAAQ9iB,MAAOA,IAE1CsjC,OAOX,KAGP,CAEA,SAASsB,GAAU9L,GAMlB,IANmB,OAClBhW,EAAM,MACN9iB,GAID84B,EACC,OAAO+L,GAAc/hB,OAAQ3mE,EAAW6jD,EAC1C,CAqKoB,qBAAX3uB,QACoB,qBAApBA,OAAOC,UACPD,OAAOC,SAASC,cAkZzB,IAAKgtD,GAQAG,IARL,SAAKH,GACHA,EAAA,4CACAA,EAAA,sBACAA,EAAA,oCACAA,EAAA,wBACAA,EAAA,+CACD,EAND,CAAKA,KAAAA,GAMJ,KAED,SAAKG,GACHA,EAAA,wBACAA,EAAA,0BACAA,EAAA,2CACD,CAJD,CAAKA,KAAAA,GAIJ,mBC/rCD,MAcA,GAdkBoG,CAACC,EAAgBplB,KAAsB,IAApB,WAAEqlB,GAAYrlB,EACjD,OAAQrf,IACN2kC,EAAAA,GAAAA,KAAA,OAAAjtD,UAMIitD,EAAAA,GAAAA,KAACF,EAAgB,IAAKzkC,KAG3B,2BCfH,MAcA,GAZmByuB,UACjB,MACMgN,QAAiBvF,MAJD,wGAIwB,CAC5CkF,QAAS,CACP,UAAU,GAADxrE,OAHC,2CAQd,aAF6B6rE,EAASvS,MAEjB,ECNjB0b,GAAe,GAgBfC,GAAeA,CAACC,EAAU9+E,IACT8+E,EAAS9+E,MAAK,CAAC5N,EAAGC,KACrC,MAAM0sF,EAAQ3sF,EAAEsqB,WAAW1b,KAAO,IAAIjO,KAAKX,EAAEsqB,WAAW1b,MAAQ,KAC1Dg+E,EAAQ3sF,EAAEqqB,WAAW1b,KAAO,IAAIjO,KAAKV,EAAEqqB,WAAW1b,MAAQ,KAChE,YAAanL,IAATmK,GAA+B,eAATA,EAEV,OAAV++E,GAA4B,OAAVC,EACb,EACED,EAAQC,GACT,EACCD,EAAQC,EACV,EAEAD,EAAQC,EAEC,WAATh/E,EACK,OAAV++E,GAA4B,OAAVC,EACb,EACED,EAAQC,EACV,EACED,EAAQC,GACT,EAEDD,EAAQC,OARZ,CAUP,IAgFEC,GAAOA,KACX,MAAOC,EAAqBC,IAA0Bl+B,EAAAA,EAAAA,WAAS,IACxDm+B,EAAUC,IAAep+B,EAAAA,EAAAA,UAASl2B,OAAOu0D,YAAc,MACvDR,EAAUS,IAAet+B,EAAAA,EAAAA,UAAS,KAClCu+B,EAAgBC,IAAqBx+B,EAAAA,EAAAA,UAAS,KAC9Cy+B,EAAeC,IAAoB1+B,EAAAA,EAAAA,UAAS,IAC5C2+B,EAAQC,IAAU5+B,EAAAA,EAAAA,UAAS,KAC3B6+B,EAAeC,IAAoB9+B,EAAAA,EAAAA,UAAS,KAEnDP,EAAAA,EAAAA,YAAU,KAER,MAAMs/B,EAjESlB,KAEjB,IAAI/nD,EAAK,GACT+nD,EAAS9rF,KAAK84B,IACZiL,EAAGzjC,KAAKw4B,EAAKpP,WAAWujE,KAAK,IAG/B,MAAMC,EAAmBA,CAAC/tE,EAAQ1R,IAC5BA,aAAiB5O,MACZ4O,EAAMu2D,OAAOkpB,EAAkB/tE,IAEtCA,EAAO7e,KAAKmN,GACL0R,GAuCX,OAzBA,WACE,IAAIguE,EAAe,IAAIz1D,IAEvB,QAAA01D,EAAA5uF,UAAAkB,OAH2B2tF,EAAW,IAAAxuF,MAAAuuF,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAXD,EAAWC,GAAA9uF,UAAA8uF,GAatC,OATAD,EAAY5wE,SAASxc,IAGnBA,EAAIwc,SAAS8wE,IACXJ,EAAa92E,IAAIk3E,EAAI,GACrB,IAIG1uF,MAAM6E,KAAKypF,EACpB,CAGkBK,CA3BF,SAAUvtF,GACxB,GAAIA,aAAepB,MACjB,OAAOA,MAAME,UAAUilE,OAAOzlE,MAAM0B,EAAK,CAACitF,EAAkB,KAE5D,MAAM,IAAIO,UAAU,oBAExB,CAEWC,CAAQ3pD,IAsBQ/jC,KAAK2tF,IAAG,CACjC/nF,KAAM+nF,EACN1wD,SAAS,KAGE,EAcO2wD,CAAUpB,GAC5BK,EAAOG,EAAU,GAChB,CAACR,KAGJ9+B,EAAAA,EAAAA,YAAU,KAQRq/B,EAPgB,CACd,CACEc,MAAO,WACP/0D,KAAM,iBACNg1D,SAAUlB,IAGW,GACxB,CAACA,IAEJ,MAAMt6C,EAAWqyC,KACX1F,EAAe,IAAIK,gBAAgBhtC,EAAS4C,QAC5C64C,EAAc35E,SAAS6qE,EAAanxE,IAAI,QAAS,KAAO,GACvDkgF,EAAaC,IAAkBhgC,EAAAA,EAAAA,UAAS8/B,IACxCG,EAASC,IAAclgC,EAAAA,EAAAA,WAAS,IAChCmgC,EAAkBC,IAAuBpgC,EAAAA,EAAAA,WAAS,GAEnDqgC,EAAa,CAAC,YAAa,OAAQ,iBAAkB,eAEpDxkE,EAAQykE,IAAatgC,EAAAA,EAAAA,WAAS,KACnC,MAAMugC,EAAe,CAAC,EAStB,OARAF,EAAW7xE,SAASknB,IAClB,GAAc,mBAAVA,EAA4B,CAC9B,MAAM8qD,EAAaxP,EAAanxE,IAAI61B,GACpC6qD,EAAa7qD,GAAS8qD,EAAaA,EAAWz8E,MAAM,KAAO,EAC7D,MACEw8E,EAAa7qD,GAASs7C,EAAanxE,IAAI61B,IAAU,EACnD,IAEK6qD,CAAY,IAGfE,EAAgB,CACpBC,UAAW,GACX3hF,KAAM,GACN4hF,eAAgB,GAChBC,WAAY,KAYdnhC,EAAAA,EAAAA,YAAU,KATM+nB,WAAa,IAADqZ,EAC1BX,GAAW,GACX,MAAM1L,QAAiBsM,KACvBZ,GAAW,GACX,MAAMa,EAAsC,QAAlBF,EAAW,OAARrM,QAAQ,IAARA,OAAQ,EAARA,EAAUwM,aAAK,IAAAH,EAAAA,EAAI,GAEhDI,EAAeF,EAAqB,EAIpCG,EAAS,GACR,KAEHzhC,EAAAA,EAAAA,YAAU,KACR,MAAM0hC,EAAeA,KACnB/C,EAAYt0D,OAAOu0D,YAAc,IAAI,EAKvC,OAFAv0D,OAAOwN,iBAAiB,SAAU6pD,GAE3B,KACLr3D,OAAOyN,oBAAoB,SAAU4pD,EAAa,CACnD,GACA,KAEH1hC,EAAAA,EAAAA,YAAU,KAER,MAAM2hC,EAAkB,IAAI/P,gBAC5B+P,EAAgBtpF,IAAI,OAAQioF,GAER,CAAC,aAAc,iBAAkB,YAAa,QACtDvxE,SAASknB,IACnB0rD,EAAgBtpF,IAAI49B,EAAO7Z,EAAO6Z,GAAO,IAI3C5L,OAAOowC,QAAQS,aAAa,CAAC,EAAG,GAAG,UAADhyD,OAAYy4E,EAAgBrwF,YAAa,GAC1E,CAACgvF,EAAalkE,KAEjB4jC,EAAAA,EAAAA,YAAU,KACR,MAAM4hC,EACJjzB,KAAKC,UAAUxyC,KAAYuyC,KAAKC,UAAUoyB,GAC5CL,EAAoBiB,GAEpB,MAAMC,EAAsB,GAM5BzC,EAAc9sF,KAAKwvF,IACjB,MAAMC,EACc,mBAAlBD,EAAS12D,KAA4BhP,EAAO8kE,eAAiB,GAC/DY,EAAS1B,SAASrxE,SAASqxE,IAPC4B,EAAC5B,EAAUrgF,KACvCqgF,EAAS7wD,QAAUxvB,CAAK,EAOtBiiF,CAAsB5B,EAAU2B,EAAah0D,SAASqyD,EAASloF,MAAM,IAGvE2pF,EAAoBjvF,KAAKkvF,EAAS,IAGpCzC,EAAiBwC,GAEjB,IAAII,EAAmBnD,EAEvBX,GAAa8D,GAET7lE,EAAO+kE,aACTZ,EAAe,GACf0B,EAlPiBC,EAAC9D,EAAU+C,KAChC,MAAMgB,EAAkB,IAAI3pF,OAAO,MAAD0Q,OAAOi4E,GAAc,KACvD,OAAO/C,EAAShiE,QAAQgmE,GAAYD,EAAgBvmF,KAAKwmF,EAAQlqF,OAAM,EAgPhDgqF,CAAeD,EAAkB7lE,EAAO+kE,aAGzD/kE,EAAO8kE,eAAelvF,SACxBuuF,EAAe,GACf0B,EAlPiBI,EAACjE,EAAUkE,EAAYC,KAC5CprF,QAAQ6jC,IAAIsnD,GACKlE,EAAShiE,QAAQgmE,GACzBA,EAAQpmE,WAAWujE,KAAK5uF,MAAM0rB,GAASimE,EAAWv0D,SAAS1R,QA+O7CgmE,CACjBJ,EACA7lE,EAAO8kE,iBAKP9kE,EAAO6kE,YACTV,EAAe,GACf0B,EApN4BO,EAACpE,EAAUqE,IACpCrE,EAAShiE,QAAQgmE,IACtB,MAAMM,EAAaC,KAAOP,EAAQpmE,WAAW1b,MACvC8S,EAAcuvE,OACdC,EAAiBF,EAAWvkF,KAAKiV,EAAa,SAC9CyvE,EAAkBH,EAAWvkF,KAAKiV,EAAa,UAErD,OAAQqvE,GACN,IAAK,2BACH,OAAOG,GAAkB,GAAKxE,EAChC,IAAK,4BACH,OAAOyE,GAAmB,GAAKzE,EACjC,IAAK,2BACH,OAAOyE,GAAmB,IAAMzE,EAGpC,IAoMqBoE,CACjBP,EACA7lE,EAAO6kE,YAIP7kE,EAAO9c,OACTihF,EAAe,GACf0B,EAAmB9D,GAAa8D,EAAkB7lE,EAAO9c,OAG3Du/E,EAAYoD,GACZhD,EAAiBgD,EAAiBjwF,OAAO,GACxC,CAACoqB,EAAQ0iE,IAEZ,MAAMgE,EAAoBV,IAAa,IAADW,EAGpC,OAF2C,QAAjCA,EAAGX,EAAQpmE,WAAWsO,SAAS,UAAE,IAAAy4D,OAAA,EAA9BA,EAAgCp7C,GAElC,EAGPq7C,EAAkBA,CAACj7C,EAAOk7C,KAC9B,MAAMljF,EAAQgoC,EAAMtR,OAAO12B,MAC3B8gF,GAAWqC,IAAU,IAChBA,EACH,CAACD,GAAYljF,KACZ,EAGCyhF,EAAkB2B,IAClBhyF,MAAMF,QAAQkyF,IAChBtE,EAAYsE,GACZpE,EAAkBoE,GAClBlE,EAAiBkE,EAAanxF,QAC9ByuF,GAAW,KAEXtpF,QAAQkqD,MAAM,uBAEdw9B,EAAY,IACZE,EAAkB,IAClBE,EAAiB,GACnB,EAQImE,EAAsBA,KAC1B,MAAMjjB,GAAcmgB,EAAc,GAAKpC,GACjCmF,EAAWppF,KAAK2L,IAAIu6D,EAAa+d,GAAcE,EAASpsF,QAE9D,GAAIgtF,EAAgB,EAClB,OACEsE,EAAAA,GAAAA,MAAA,KAAGC,UAAU,gBAAevyD,SAAA,YAAA9nB,OACdi3D,EAAa,EAAC,QAAAj3D,OAAOm6E,EAAQ,SACzCpF,EAAAA,GAAAA,KAAA,UAAAjtD,SAAA,GAAA9nB,OAAYk1E,EAASpsF,UAAkB,eAGtC,GAAsB,IAAlBgtF,OACJ,IAAIwB,EACT,OAAOvC,EAAAA,GAAAA,KAAA,KAAGsF,UAAU,qBACf,GAAsB,IAAlBvE,EACT,OACEsE,EAAAA,GAAAA,MAAA,KAAGC,UAAU,gBAAevyD,SAAA,EAC1BitD,EAAAA,GAAAA,KAAA,UAAAjtD,SAASguD,IAAuB,mBAGtC,GAGIwE,EAAYpB,IAChB,MACMqB,EADOd,KAAOP,EAAQpmE,WAAW1b,MACZtN,OAAO,gBAClC,OAAmC,OAA5BovF,EAAQpmE,WAAW1b,KAAgB,GAAKmjF,CAAa,EA0FxDC,EAAmBA,CAACl1E,EAAGm1E,KAC3Bn1E,EAAE2xB,iBACFogD,EAAeoD,EAAK,EAiGhBxjB,GAAcmgB,EAAc,GAAKpC,GACjCmF,EAAWppF,KAAK2L,IAAIu6D,EAAa+d,GAAcE,EAASpsF,QAExD4xF,EAAuBxF,EAASzmF,MAAMwoE,EAAYkjB,GAElDQ,EAAa5pF,KAAKyF,KAAK0+E,EAASpsF,OAASksF,IA0D/C,OACEoF,EAAAA,GAAAA,MAAA,OAAKC,UAAU,kBAAiBvyD,SAAA,EAC9BsyD,EAAAA,GAAAA,MAAA,OAAKC,UAAU,YAAWvyD,SAAA,EACxBitD,EAAAA,GAAAA,KAAA,MAAIn/C,GAAG,kBAAiB9N,SAAC,kBACzBitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,kDAAiDvyD,UAC9DsyD,EAAAA,GAAAA,MAAA,QAAMxkD,GAAG,iBAAiBykD,UAAU,gBAAevyD,SAAA,EACjDitD,EAAAA,GAAAA,KAAA,SACEn/C,GAAG,kBACH,aAAW,SACX1T,KAAK,OACLrrB,MAAOqc,EAAO+kE,WACdoC,UAAU,mCACVO,YAAY,wCACZC,SAAWv1E,GACTqyE,GAAWqC,IAAU,IAChBA,EACH/B,WAAY3yE,EAAEioB,OAAO12B,aAI3Bk+E,EAAAA,GAAAA,KAAA,UACEsF,UAAU,qBACVn4D,KAAK,SACL66B,QAAUz3C,GAAMA,EAAE2xB,iBAAiBnP,UAEnCsyD,EAAAA,GAAAA,MAAA,OAAAtyD,SAAA,EACEitD,EAAAA,GAAAA,KAAA,SAAAjtD,SAAO,YACPitD,EAAAA,GAAAA,KAAA,OACEhyD,UAAU,qBACVge,KAAK,qCAOjBg0C,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,UAASvyD,UACtBsyD,EAAAA,GAAAA,MAAA,OAAKC,UAAU,mDAAkDvyD,SAAA,EAC7D0tD,IA7RN4E,EAAAA,GAAAA,MAAA,OAAKC,UAAU,gCAA+BvyD,SAAA,CAC3CoyD,KACDnF,EAAAA,GAAAA,KAAA,SAAOsF,UAAU,oBAAoBS,QAAQ,OAAMhzD,SAAC,aAGpDitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,iBAAgBvyD,UAC7BsyD,EAAAA,GAAAA,MAAA,UACEC,UAAU,yBACVzkD,GAAG,OACH5mC,KAAK,OACL6H,MAAOqc,EAAO9c,KACdykF,SAAWv1E,GAAMw0E,EAAgBx0E,EAAG,QAASwiB,SAAA,EAE7CitD,EAAAA,GAAAA,KAAA,UAAQl+E,MAAM,aAAYixB,SAAC,iBAC3BitD,EAAAA,GAAAA,KAAA,UAAQl+E,MAAM,SAAQixB,SAAC,oBAgRzBitD,EAAAA,GAAAA,KAAA,OAAK9oD,MAAO,CAAE8uD,cAAe,QAASjzD,SACnC0tD,GAAY0E,MAEd1E,IA5OL4E,EAAAA,GAAAA,MAAA,OAAKC,UAAU,6BAA4BvyD,SAAA,EACzCitD,EAAAA,GAAAA,KAAA,SAAOsF,UAAU,oBAAoBS,QAAQ,QAAOhzD,SAAC,aAGrDitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,iBAAgBvyD,UAC7BitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,iBAAgBvyD,UAC7BsyD,EAAAA,GAAAA,MAAA,UACEC,UAAU,yBACVzkD,GAAG,QACH5mC,KAAK,QACL6H,MAAOqc,EAAO9c,KACdykF,SAAWv1E,GAAMw0E,EAAgBx0E,EAAG,QAASwiB,SAAA,EAE7CitD,EAAAA,GAAAA,KAAA,UAAQl+E,MAAM,GAAEixB,SAAC,iBACjBitD,EAAAA,GAAAA,KAAA,UAAQl+E,MAAM,SAAQixB,SAAC,qBA+N1B0tD,IA3QL4E,EAAAA,GAAAA,MAAA,OAAKC,UAAU,6BAA4BvyD,SAAA,EACzCitD,EAAAA,GAAAA,KAAA,SAAOsF,UAAU,cAAcS,QAAQ,YAAWhzD,UAChDitD,EAAAA,GAAAA,KAAA,MAAAjtD,SAAI,oBAENitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,iBAAgBvyD,UAC7BsyD,EAAAA,GAAAA,MAAA,UACEC,UAAU,yBACVzkD,GAAG,YACH5mC,KAAK,YACL6H,MAAOqc,EAAO6kE,UACd8C,SAAWv1E,GAAMw0E,EAAgBx0E,EAAG,aAAcwiB,SAAA,EAElDitD,EAAAA,GAAAA,KAAA,UAAQl+E,MAAM,GAAEixB,SAAC,aACjBitD,EAAAA,GAAAA,KAAA,UAAQl+E,MAAM,2BAA0BixB,SAAC,8BAGzCitD,EAAAA,GAAAA,KAAA,UAAQl+E,MAAM,4BAA2BixB,SAAC,+BAG1CitD,EAAAA,GAAAA,KAAA,UAAQl+E,MAAM,2BAA0BixB,SAAC,sCAyP3CitD,EAAAA,GAAAA,KAAA,OACEsF,UAAU,oCACVt9B,QAzUmBz3C,IAC3BiwE,GAAwBD,GACxBhwE,EAAE2xB,gBAAgB,EAuUmBnP,UAE7BitD,EAAAA,GAAAA,KAAA,UACEsF,UAAU,uCACVzkD,GAAG,kBACH,gBAAc,gBACd,gBAAc,QAAO9N,SACtB,0BA7GY4yD,KACrB,MAAMM,EAAc/yF,MAAM6E,KAAK,CAAEhE,OAAQ,IAAK,CAAC2tE,EAAG76C,KAChDw+D,EAAAA,GAAAA,MAAA,OAAKC,UAAU,eAAcvyD,SAAA,EAC3BitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,wBACftF,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,2BAFkBz+D,KAKrC,OACEm5D,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,oBAAmBvyD,SAC/BwvD,GACCvC,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,oBAAmBvyD,SAAEkzD,IAClCN,EAAqB5xF,OAAS,EAChC4xF,EAAqBtxF,KAAI,CAAC8vF,EAASt9D,KACjCw+D,EAAAA,GAAAA,MAAA,KAEEr5C,KAAM64C,EAAiBV,GACvBmB,UAAU,0BACV9sD,OAAO,SAAS0tD,IAAI,aAAYnzD,SAAA,EAEhCitD,EAAAA,GAAAA,KAAA,MAAIsF,UAAU,gBAAevyD,SAAEoxD,EAAQlqF,QACvC+lF,EAAAA,GAAAA,KAAA,KAAGsF,UAAU,UAASvyD,UACpBitD,EAAAA,GAAAA,KAAA,UAAAjtD,SAASwyD,EAASpB,SAPft9D,MAYTw+D,EAAAA,GAAAA,MAAA,OACEC,UAAU,yCACVpuD,MAAO,CAAEivD,UAAW,QAASpzD,SAAA,EAE7BsyD,EAAAA,GAAAA,MAAA,OAAKC,UAAU,yBAAwBvyD,SAAA,EACrCitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,uBAAsBvyD,UACnCitD,EAAAA,GAAAA,KAAA,OACEhyD,UAAU,6BACVge,KAAK,kCAGTg0C,EAAAA,GAAAA,KAAA,MAAIsF,UAAU,8BAA6BvyD,SAAC,sCAI9CsyD,EAAAA,GAAAA,MAAA,OAAKC,UAAU,uBAAsBvyD,SAAA,EACnCitD,EAAAA,GAAAA,KAAA,KAAAjtD,SAAG,qCACHsyD,EAAAA,GAAAA,MAAA,MAAIC,UAAU,oBAAmBvyD,SAAA,EAC/BitD,EAAAA,GAAAA,KAAA,MAAAjtD,SAAI,sBACJitD,EAAAA,GAAAA,KAAA,MAAAjtD,SAAI,mCACJitD,EAAAA,GAAAA,KAAA,MAAAjtD,SAAI,0BACJitD,EAAAA,GAAAA,KAAA,MAAAjtD,SAAI,oDAKR,EA6DDqzD,CAAcT,IACfN,EAAAA,GAAAA,MAAA,OAAKC,UAAU,0BAAyBvyD,SAAA,CACrCsvD,EAAc,IACbgD,EAAAA,GAAAA,MAAA,UACEr9B,QApOUz3C,IACtBA,EAAE2xB,iBACFogD,GAAgB+D,GAAarqF,KAAKI,IAAIiqF,EAAW,EAAG,IAAG,EAmO3CzzD,SAA0B,IAAhByvD,EACViD,UAAU,iEAAgEvyD,SAAA,EAG1EitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,0CAAyCvyD,UACtDitD,EAAAA,GAAAA,KAAA,OACEhyD,UAAU,4BACVge,KAAK,gCAEF,IAAI,oBAIfg0C,EAAAA,GAAAA,KAAA,MAAIsF,UAAU,qBAAoBvyD,SAxORuzD,MAClC,MAAMpjC,EAAK,GACLqjC,EAAwBvqF,KAAKyF,KAAK0+E,EAASpsF,OAASksF,IACpDuG,EAAiBxqF,KAAK0F,MAAM+kF,KAElC,IAAIC,EAAY1qF,KAAKI,IAAIimF,EAAcmE,EAAgB,GACnDG,EAAU3qF,KAAK2L,IACjB++E,EAnbkB,EAmbY,EAC9BH,GAGEI,EAAUD,EAAYD,IACxBC,EAAY1qF,KAAKI,IAAIuqF,EAxbH,EAwb+B,EAAG,IAGlDD,EAAY,IACdxjC,EAAGvuD,MACDqrF,EAAAA,GAAAA,KAAA,MAAYsF,UAAU,sBAAqBvyD,SACxC,IAAMsvD,EACL,GAEArC,EAAAA,GAAAA,KAAA,KACEh0C,KAAK,KACLgc,QAAUz3C,GAAMk1E,EAAiBl1E,EAAG,GACpC+0E,UAAU,UAASvyD,SACpB,OARI,IAeP2zD,EAAY,GACdxjC,EAAGvuD,MACDqrF,EAAAA,GAAAA,KAAA,MAAmBsF,UAAU,sBAAqBvyD,SAAC,OAA3C,cAOd,IAAK,IAAIv+B,EAAIkyF,EAAWlyF,GAAKmyF,EAASnyF,IACpC0uD,EAAGvuD,MACDqrF,EAAAA,GAAAA,KAAA,MAAYsF,UAAW,sBAAsBvyD,SAC1Cv+B,IAAM6tF,EACL7tF,GAEAwrF,EAAAA,GAAAA,KAAA,KACEh0C,KAAK,KACLgc,QAAUz3C,GAAMk1E,EAAiBl1E,EAAG/b,GACpC8wF,UAAU,UAASvyD,SAElBv+B,KATEA,IAgDb,OAhCImyF,EAAUJ,IACRI,EAAUJ,EAAwB,GACpCrjC,EAAGvuD,MACDqrF,EAAAA,GAAAA,KAAA,MAAmBsF,UAAU,sBAAqBvyD,SAAC,OAA3C,aAMZmwB,EAAGvuD,MACDqrF,EAAAA,GAAAA,KAAA,MAEEsF,UAEM,sBAELvyD,SAEAwzD,IAA0BlE,EACzBkE,GAEAvG,EAAAA,GAAAA,KAAA,KACEh0C,KAAK,KACLgc,QAAUz3C,GAAMk1E,EAAiBl1E,EAAGg2E,GACpCjB,UAAU,UAASvyD,SAElBwzD,KAfAA,KAqBJrjC,CAAE,EA8IEojC,KAE8B,KAAhCX,EAAqB5xF,SAAkBwuF,IACtC8C,EAAAA,GAAAA,MAAA,KACEr9B,QA5PUz3C,IACtBA,EAAE2xB,iBACFogD,GAAgB+D,GAAarqF,KAAK2L,IAAI0+E,EAAW,EAAGT,IAAY,EA2PpD55C,KAAK,KACLxT,OAAO,QACP8sD,UAAU,oDAAmDvyD,SAAA,CAC9D,aAECitD,EAAAA,GAAAA,KAAA,OAAKsF,UAAU,2CAA0CvyD,UACvDitD,EAAAA,GAAAA,KAAA,OACEh0C,KAAK,6CAQf,EAeV,GAXa46C,KACX,MAMM9G,EAAmBD,GAAUS,GAAM,CAAEP,WANxB,CACjB,CACE9lF,KAAM,mBAKV,OAAO+lF,EAAAA,GAAAA,KAACF,EAAgB,GAAG,ECrrBvB+G,GAAYx6D,SAASy6D,eAAe,QACpCC,IAAOj0B,EAAAA,EAAAA,GAAW+zB,IAElBtgB,GJgPU,SACd1I,EACAmM,GAEA,OAAO/E,GAAa,CAClBzG,SAAU,MAAAwL,OAAA,EAAAA,EAAMxL,SAChB3/D,OAAM48D,GAAA,GACD,MAAAuO,OAAA,EAAAA,EAAMnrE,OAAM,CACf8mE,oBAAoB,IAEtBnJ,SR6JF/pC,EQ7J6B,CAAErG,OAAQ,MAAA49C,OAAA,EAAAA,EAAM59C,aR6J7C,IAAAqG,IAAAA,EAA8B,CAAC,GAqDxBypC,GAnDP,SACE9vC,EACAmwC,GAEA,IAAI,SACFb,EAAW,IAAG,OACdnyB,EAAS,GAAE,KACXoyB,EAAO,IACLC,EAAUxvC,EAAOua,SAASg1B,KAAKt/D,OAAO,IAY1C,OAJKq/D,EAAS8D,WAAW,MAAS9D,EAAS8D,WAAW,OACpD9D,EAAW,IAAMA,GAGZF,EACL,GACA,CAAEE,WAAUnyB,SAAQoyB,QAEnBY,EAAcxhB,OAASwhB,EAAcxhB,MAAMugB,KAAQ,KACnDiB,EAAcxhB,OAASwhB,EAAcxhB,MAAMxhD,KAAQ,UAExD,IAEA,SAAwB6yB,EAAgBt0B,GACtC,IAAIglB,EAAOsP,EAAOC,SAAS26D,cAAc,QACrCh7C,EAAO,GAEX,GAAIlvB,GAAQA,EAAKg8C,aAAa,QAAS,CACrC,IAAIpvB,EAAMtd,EAAOua,SAASqF,KACtBgwB,EAAYtyB,EAAI1kC,QAAQ,KAC5BgnC,GAAsB,IAAfgwB,EAAmBtyB,EAAMA,EAAIhwC,MAAM,EAAGsiE,EAC9C,CAED,OAAOhwB,EAAO,KAAqB,kBAAPl0C,EAAkBA,EAAK+jE,EAAW/jE,GAChE,IAEA,SAA8B6uC,EAAoB7uC,GAChDqjE,EACkC,MAAhCx0B,EAAS+0B,SAASttD,OAAO,GAAU,6DAC0BsiD,KAAKC,UAChE74D,GACD,IAEL,GAME26B,IQrNAyzC,eAAe,MAAA8D,OAAA,EAAAA,EAAM9D,gBAAiBoX,KACtCzf,4BACAopB,GACA76D,OAAQ,MAAA49C,OAAA,EAAAA,EAAM59C,SACb6jD,aRuJW,IACdx9C,CQvJF,CIhQey0D,CAAiB,CAC9B,CACEprB,KAAM,IACNvuB,SAASyyC,EAAAA,GAAAA,KAACtD,GAAQ,CAAC5kF,GAAK,WAE1B,CACEgkE,KAAM,QACNvuB,SAASyyC,EAAAA,GAAAA,KAACmH,GAAO,OAIrBJ,GAAK92D,QACH+vD,EAAAA,GAAAA,KAACprB,EAAAA,WAAU,CAAA7hC,UACTitD,EAAAA,GAAAA,KAAC5B,GAAc,CAAC7X,OAAQA,QAO5B6gB","sources":["../node_modules/moment/moment.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","reportWebVitals.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router/index.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","layout/index.js","services/getApiData.js","pages/docs/index.js","index.js"],"sourcesContent":["//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"6143bdc9\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"st-publications:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkst_publications\"] = self[\"webpackChunkst_publications\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = safelyDecodeURIComponent(value || \"\", paramName);\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)(\\?)?/g, (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_prependBasename: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_prependBasename: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n viewTransitionOpts?: ViewTransitionOpts\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n subscribers.forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: viewTransitionOpts,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n viewTransitionOpts\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath })\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error);\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher = getSubmittingFetcher(submission, existingFetcher);\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (deletedFetchers.has(key)) {\n state.fetchers.set(key, getDoneFetcher(undefined));\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n let loadingFetcher = getLoadingFetcher(submission);\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher = getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n if (deletedFetchers.has(key)) {\n state.fetchers.set(key, getDoneFetcher(undefined));\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId != null && relative !== \"path\") {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route. When using relative:path,\n // fromRouteId is ignored since that is always relative to the current\n // location path\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getPathContributingMatches(contextualMatches).map((m) => m.pathnameBase),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n errorElement = match.route.errorElement || defaultErrorElement;\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n future?: Partial;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a