{"version":3,"file":"static/js/d3-vendor.c873fe29.js","mappings":"0FAAe,SAASA,EAAIC,EAAQC,GAClC,IAAIF,EACJ,QAAgBG,IAAZD,EACF,IAAK,MAAME,KAASH,EACL,MAATG,IACIJ,EAAMI,QAAkBD,IAARH,GAAqBI,GAASA,KACpDJ,EAAMI,OAGL,CACL,IAAIC,GAAS,EACb,IAAK,IAAID,KAASH,EACiC,OAA5CG,EAAQF,EAAQE,IAASC,EAAOJ,MAC7BD,EAAMI,QAAkBD,IAARH,GAAqBI,GAASA,KACpDJ,EAAMI,EAGZ,CACA,OAAOJ,CACT,C,8FCjBA,SAASM,EAAYC,GACnB,OAAOA,EAAEC,OAAOC,KAClB,CAEO,SAASC,EAAKC,GACnB,OAAOA,EAAKF,KACd,CAEO,SAASG,EAAMD,EAAME,GAC1B,OAAOA,EAAI,EAAIF,EAAKG,MACtB,CAEO,SAASC,EAAQJ,EAAME,GAC5B,OAAOF,EAAKK,YAAYC,OAASN,EAAKF,MAAQI,EAAI,CACpD,CAEO,SAASK,EAAOP,GACrB,OAAOA,EAAKQ,YAAYF,OAASN,EAAKF,MAChCE,EAAKK,YAAYC,QAASjB,EAAAA,EAAAA,GAAIW,EAAKK,YAAaV,GAAe,EAC/D,CACR,C,kBCtBe,SAASc,EAAInB,EAAQC,GAClC,IAAIkB,EAAM,EACV,QAAgBjB,IAAZD,EACF,IAAK,IAAIE,KAASH,GACZG,GAASA,KACXgB,GAAOhB,OAGN,CACL,IAAIC,GAAS,EACb,IAAK,IAAID,KAASH,GACZG,GAASF,EAAQE,IAASC,EAAOJ,MACnCmB,GAAOhB,EAGb,CACA,OAAOgB,CACT,CCjBe,SAASC,EAAIpB,EAAQC,GAClC,IAAImB,EACJ,QAAgBlB,IAAZD,EACF,IAAK,MAAME,KAASH,EACL,MAATG,IACIiB,EAAMjB,QAAkBD,IAARkB,GAAqBjB,GAASA,KACpDiB,EAAMjB,OAGL,CACL,IAAIC,GAAS,EACb,IAAK,IAAID,KAASH,EACiC,OAA5CG,EAAQF,EAAQE,IAASC,EAAOJ,MAC7BoB,EAAMjB,QAAkBD,IAARkB,GAAqBjB,GAASA,KACpDiB,EAAMjB,EAGZ,CACA,OAAOiB,CACT,C,2CCnBe,SAASC,EAASC,GAC/B,OAAO,WACL,OAAOA,CACT,CACF,CCAA,SAASC,EAAuBC,EAAGC,GACjC,OAAOC,EAAiBF,EAAEG,OAAQF,EAAEE,SAAWH,EAAEpB,MAAQqB,EAAErB,KAC7D,CAEA,SAASwB,EAAuBJ,EAAGC,GACjC,OAAOC,EAAiBF,EAAEjB,OAAQkB,EAAElB,SAAWiB,EAAEpB,MAAQqB,EAAErB,KAC7D,CAEA,SAASsB,EAAiBF,EAAGC,GAC3B,OAAOD,EAAEK,GAAKJ,EAAEI,EAClB,CAEA,SAAS1B,EAAMG,GACb,OAAOA,EAAEH,KACX,CAEA,SAAS2B,EAAUxB,GACjB,OAAOA,EAAEF,KACX,CAEA,SAAS2B,EAAaC,GACpB,OAAOA,EAAMC,KACf,CAEA,SAASC,EAAaF,GACpB,OAAOA,EAAMG,KACf,CAEA,SAASC,EAAKC,EAAUC,GACtB,MAAM5B,EAAO2B,EAASE,IAAID,GAC1B,IAAK5B,EAAM,MAAM,IAAI8B,MAAM,YAAcF,GACzC,OAAO5B,CACT,CAEA,SAAS+B,EAAmBC,GAAU,IAAT,MAACT,GAAMS,EAClC,IAAK,MAAMhC,KAAQuB,EAAO,CACxB,IAAIJ,EAAKnB,EAAKmB,GACVc,EAAKd,EACT,IAAK,MAAMe,KAAQlC,EAAKK,YACtB6B,EAAKf,GAAKA,EAAKe,EAAKC,MAAQ,EAC5BhB,GAAMe,EAAKC,MAEb,IAAK,MAAMD,KAAQlC,EAAKQ,YACtB0B,EAAKD,GAAKA,EAAKC,EAAKC,MAAQ,EAC5BF,GAAMC,EAAKC,KAEf,CACF,CAEe,SAASC,IACtB,IAEYC,EAGRC,EACAC,EANAC,EAAK,EAAGrB,EAAK,EAAGsB,EAAK,EAAGR,EAAK,EAC7BS,EAAK,GACLC,EAAK,EACLf,EAAKR,EACLwB,EAAQxC,EAAAA,GAGRmB,EAAQF,EACRI,EAAQD,EACRqB,EAAa,EAEjB,SAASC,IACP,MAAMxB,EAAQ,CAACC,MAAOA,EAAMwB,MAAM,KAAMC,WAAYvB,MAAOA,EAAMsB,MAAM,KAAMC,YAO7E,OAoDF,SAAyBC,GAAiB,IAAhB,MAAC1B,EAAK,MAAEE,GAAMwB,EACtC,IAAK,MAAOC,EAAGlD,KAASuB,EAAM4B,UAC5BnD,EAAKN,MAAQwD,EACblD,EAAKK,YAAc,GACnBL,EAAKQ,YAAc,GAErB,MAAMmB,EAAW,IAAIyB,IAAI7B,EAAM8B,KAAI,CAACzD,EAAGsD,IAAM,CAACtB,EAAGhC,EAAGsD,EAAG3B,GAAQ3B,MAC/D,IAAK,MAAOsD,EAAGhB,KAAST,EAAM0B,UAAW,CACvCjB,EAAKxC,MAAQwD,EACb,IAAI,OAACjC,EAAM,OAAEpB,GAAUqC,EACD,kBAAXjB,IAAqBA,EAASiB,EAAKjB,OAASS,EAAKC,EAAUV,IAChD,kBAAXpB,IAAqBA,EAASqC,EAAKrC,OAAS6B,EAAKC,EAAU9B,IACtEoB,EAAOZ,YAAYiD,KAAKpB,GACxBrC,EAAOW,YAAY8C,KAAKpB,EAC1B,CACA,GAAgB,MAAZK,EACF,IAAK,MAAM,YAAClC,EAAW,YAAEG,KAAgBe,EACvClB,EAAYiC,KAAKC,GACjB/B,EAAY8B,KAAKC,EAGvB,CA/EEgB,CAAiBjC,GAiFnB,SAA0BkC,GAAU,IAAT,MAACjC,GAAMiC,EAChC,IAAK,MAAMxD,KAAQuB,EACjBvB,EAAKP,WAA4BD,IAApBQ,EAAKyD,WACZC,KAAKhD,IAAID,EAAIT,EAAKK,YAAaZ,GAAQgB,EAAIT,EAAKQ,YAAaf,IAC7DO,EAAKyD,UAEf,CAtFEE,CAAkBrC,GAwFpB,SAA0BsC,GAAU,IAAT,MAACrC,GAAMqC,EAChC,MAAM1D,EAAIqB,EAAMjB,OAChB,IAAIuD,EAAU,IAAIC,IAAIvC,GAClBwC,EAAO,IAAID,IACXlD,EAAI,EACR,KAAOiD,EAAQG,MAAM,CACnB,IAAK,MAAMhE,KAAQ6D,EAAS,CAC1B7D,EAAKF,MAAQc,EACb,IAAK,MAAM,OAACf,KAAWG,EAAKK,YAC1B0D,EAAKE,IAAIpE,EAEb,CACA,KAAMe,EAAIV,EAAG,MAAM,IAAI4B,MAAM,iBAC7B+B,EAAUE,EACVA,EAAO,IAAID,GACb,CACF,CAvGEI,CAAkB5C,GAyGpB,SAA2B6C,GAAU,IAAT,MAAC5C,GAAM4C,EACjC,MAAMjE,EAAIqB,EAAMjB,OAChB,IAAIuD,EAAU,IAAIC,IAAIvC,GAClBwC,EAAO,IAAID,IACXlD,EAAI,EACR,KAAOiD,EAAQG,MAAM,CACnB,IAAK,MAAMhE,KAAQ6D,EAAS,CAC1B7D,EAAKG,OAASS,EACd,IAAK,MAAM,OAACK,KAAWjB,EAAKQ,YAC1BuD,EAAKE,IAAIhD,EAEb,CACA,KAAML,EAAIV,EAAG,MAAM,IAAI4B,MAAM,iBAC7B+B,EAAUE,EACVA,EAAO,IAAID,GACb,CACF,CAxHEM,CAAmB9C,GAkKrB,SAA6BA,GAC3B,MAAM+C,EAzCR,SAA0BC,GAAU,IAAT,MAAC/C,GAAM+C,EAChC,MAAM1D,EAAIF,EAAIa,GAAO3B,GAAKA,EAAEE,QAAS,EAC/ByE,GAAM9B,EAAKD,EAAKE,IAAO9B,EAAI,GAC3ByD,EAAU,IAAIG,MAAM5D,GAC1B,IAAK,MAAMZ,KAAQuB,EAAO,CACxB,MAAM2B,EAAIQ,KAAKhD,IAAI,EAAGgD,KAAKrE,IAAIuB,EAAI,EAAG8C,KAAKe,MAAM7B,EAAM8B,KAAK,KAAM1E,EAAMY,MACxEZ,EAAK2E,MAAQzB,EACblD,EAAKwC,GAAKA,EAAKU,EAAIqB,EACnBvE,EAAKyC,GAAKzC,EAAKwC,GAAKE,EAChB2B,EAAQnB,GAAImB,EAAQnB,GAAGI,KAAKtD,GAC3BqE,EAAQnB,GAAK,CAAClD,EACrB,CACA,GAAIsC,EAAM,IAAK,MAAMsC,KAAUP,EAC7BO,EAAOtC,KAAKA,GAEd,OAAO+B,CACT,CAyBkBQ,CAAkBvD,GAClCe,EAAKqB,KAAKrE,IAAIsD,GAAKV,EAAKd,IAAOT,EAAI2D,GAASS,GAAKA,EAAExE,SAAU,IAxB/D,SAAgC+D,GAC9B,MAAMU,GAAK1F,EAAAA,EAAAA,GAAIgF,GAASS,IAAM7C,EAAKd,GAAM2D,EAAExE,OAAS,GAAK+B,GAAM5B,EAAIqE,EAAGrF,KACtE,IAAK,MAAM8B,KAAS8C,EAAS,CAC3B,IAAIW,EAAI7D,EACR,IAAK,MAAMnB,KAAQuB,EAAO,CACxBvB,EAAKmB,GAAK6D,EACVhF,EAAKiC,GAAK+C,EAAIhF,EAAKP,MAAQsF,EAC3BC,EAAIhF,EAAKiC,GAAKI,EACd,IAAK,MAAMH,KAAQlC,EAAKK,YACtB6B,EAAKC,MAAQD,EAAKzC,MAAQsF,CAE9B,CACAC,GAAK/C,EAAK+C,EAAI3C,IAAOd,EAAMjB,OAAS,GACpC,IAAK,IAAI4C,EAAI,EAAGA,EAAI3B,EAAMjB,SAAU4C,EAAG,CACrC,MAAMlD,EAAOuB,EAAM2B,GACnBlD,EAAKmB,IAAM6D,GAAK9B,EAAI,GACpBlD,EAAKiC,IAAM+C,GAAK9B,EAAI,EACtB,CACA+B,EAAa1D,EACf,CACF,CAKE2D,CAAuBb,GACvB,IAAK,IAAInB,EAAI,EAAGA,EAAIL,IAAcK,EAAG,CACnC,MAAMiC,EAAQzB,KAAK0B,IAAI,IAAMlC,GACvBmC,EAAO3B,KAAKhD,IAAI,EAAIyE,GAAQjC,EAAI,GAAKL,GAC3CyC,EAAiBjB,EAASc,EAAOE,GACjCE,EAAiBlB,EAASc,EAAOE,EACnC,CACF,CA3KEG,CAAoBlE,GACpBS,EAAoBT,GACbA,CACT,CA2KA,SAASiE,EAAiBlB,EAASc,EAAOE,GACxC,IAAK,IAAInC,EAAI,EAAGhD,EAAImE,EAAQ/D,OAAQ4C,EAAIhD,IAAKgD,EAAG,CAC9C,MAAM0B,EAASP,EAAQnB,GACvB,IAAK,MAAMrD,KAAU+E,EAAQ,CAC3B,IAAII,EAAI,EACJS,EAAI,EACR,IAAK,MAAM,OAACxE,EAAM,MAAExB,KAAUI,EAAOW,YAAa,CAChD,IAAIkF,EAAIjG,GAASI,EAAO8E,MAAQ1D,EAAO0D,OACvCK,GAAKW,EAAU1E,EAAQpB,GAAU6F,EACjCD,GAAKC,CACP,CACA,KAAMD,EAAI,GAAI,SACd,IAAI9C,GAAMqC,EAAIS,EAAI5F,EAAOsB,IAAMgE,EAC/BtF,EAAOsB,IAAMwB,EACb9C,EAAOoC,IAAMU,EACbiD,EAAiB/F,EACnB,MACaL,IAAT8C,GAAoBsC,EAAOtC,KAAKtB,GACpC6E,EAAkBjB,EAAQS,EAC5B,CACF,CAGA,SAASC,EAAiBjB,EAASc,EAAOE,GACxC,IAAK,IAAwBnC,EAAhBmB,EAAQ/D,OAAgB,EAAG4C,GAAK,IAAKA,EAAG,CACnD,MAAM0B,EAASP,EAAQnB,GACvB,IAAK,MAAMjC,KAAU2D,EAAQ,CAC3B,IAAII,EAAI,EACJS,EAAI,EACR,IAAK,MAAM,OAAC5F,EAAM,MAAEJ,KAAUwB,EAAOZ,YAAa,CAChD,IAAIqF,EAAIjG,GAASI,EAAO8E,MAAQ1D,EAAO0D,OACvCK,GAAKc,EAAU7E,EAAQpB,GAAU6F,EACjCD,GAAKC,CACP,CACA,KAAMD,EAAI,GAAI,SACd,IAAI9C,GAAMqC,EAAIS,EAAIxE,EAAOE,IAAMgE,EAC/BlE,EAAOE,IAAMwB,EACb1B,EAAOgB,IAAMU,EACbiD,EAAiB3E,EACnB,MACazB,IAAT8C,GAAoBsC,EAAOtC,KAAKtB,GACpC6E,EAAkBjB,EAAQS,EAC5B,CACF,CAEA,SAASQ,EAAkBtE,EAAO4D,GAChC,MAAMjC,EAAI3B,EAAMjB,QAAU,EACpByF,EAAUxE,EAAM2B,GACtB8C,EAA6BzE,EAAOwE,EAAQ5E,GAAKkB,EAAIa,EAAI,EAAGiC,GAC5Dc,EAA6B1E,EAAOwE,EAAQ9D,GAAKI,EAAIa,EAAI,EAAGiC,GAC5Da,EAA6BzE,EAAOU,EAAIV,EAAMjB,OAAS,EAAG6E,GAC1Dc,EAA6B1E,EAAOJ,EAAI,EAAGgE,EAC7C,CAGA,SAASc,EAA6B1E,EAAOyD,EAAG9B,EAAGiC,GACjD,KAAOjC,EAAI3B,EAAMjB,SAAU4C,EAAG,CAC5B,MAAMlD,EAAOuB,EAAM2B,GACbP,GAAMqC,EAAIhF,EAAKmB,IAAMgE,EACvBxC,EAAK,OAAM3C,EAAKmB,IAAMwB,EAAI3C,EAAKiC,IAAMU,GACzCqC,EAAIhF,EAAKiC,GAAKI,CAChB,CACF,CAGA,SAAS2D,EAA6BzE,EAAOyD,EAAG9B,EAAGiC,GACjD,KAAOjC,GAAK,IAAKA,EAAG,CAClB,MAAMlD,EAAOuB,EAAM2B,GACbP,GAAM3C,EAAKiC,GAAK+C,GAAKG,EACvBxC,EAAK,OAAM3C,EAAKmB,IAAMwB,EAAI3C,EAAKiC,IAAMU,GACzCqC,EAAIhF,EAAKmB,GAAKkB,CAChB,CACF,CAEA,SAASuD,EAAgBM,GAA6B,IAA5B,YAAC7F,EAAW,YAAEG,GAAY0F,EAClD,QAAiB1G,IAAb+C,EAAwB,CAC1B,IAAK,MAAOtB,QAAQ,YAACZ,MAAiBG,EACpCH,EAAYiC,KAAKpB,GAEnB,IAAK,MAAOrB,QAAQ,YAACW,MAAiBH,EACpCG,EAAY8B,KAAKzB,EAErB,CACF,CAEA,SAASoE,EAAa1D,GACpB,QAAiB/B,IAAb+C,EACF,IAAK,MAAM,YAAClC,EAAW,YAAEG,KAAgBe,EACvClB,EAAYiC,KAAKpB,GACjBV,EAAY8B,KAAKzB,EAGvB,CAGA,SAAS8E,EAAU1E,EAAQpB,GACzB,IAAImF,EAAI/D,EAAOE,IAAMF,EAAOZ,YAAYC,OAAS,GAAK+B,EAAK,EAC3D,IAAK,MAAOxC,OAAQG,EAAI,MAAEmC,KAAUlB,EAAOZ,YAAa,CACtD,GAAIL,IAASH,EAAQ,MACrBmF,GAAK7C,EAAQE,CACf,CACA,IAAK,MAAOpB,OAAQjB,EAAI,MAAEmC,KAAUtC,EAAOW,YAAa,CACtD,GAAIR,IAASiB,EAAQ,MACrB+D,GAAK7C,CACP,CACA,OAAO6C,CACT,CAGA,SAASc,EAAU7E,EAAQpB,GACzB,IAAImF,EAAInF,EAAOsB,IAAMtB,EAAOW,YAAYF,OAAS,GAAK+B,EAAK,EAC3D,IAAK,MAAOpB,OAAQjB,EAAI,MAAEmC,KAAUtC,EAAOW,YAAa,CACtD,GAAIR,IAASiB,EAAQ,MACrB+D,GAAK7C,EAAQE,CACf,CACA,IAAK,MAAOxC,OAAQG,EAAI,MAAEmC,KAAUlB,EAAOZ,YAAa,CACtD,GAAIL,IAASH,EAAQ,MACrBmF,GAAK7C,CACP,CACA,OAAO6C,CACT,CAEA,OAnSAlC,EAAOqD,OAAS,SAAS7E,GAEvB,OADAS,EAAoBT,GACbA,CACT,EAEAwB,EAAOsD,OAAS,SAASC,GACvB,OAAOrD,UAAU1C,QAAUsB,EAAkB,oBAANyE,EAAmBA,EAAI1F,EAAS0F,GAAIvD,GAAUlB,CACvF,EAEAkB,EAAOwD,UAAY,SAASD,GAC1B,OAAOrD,UAAU1C,QAAUsC,EAAqB,oBAANyD,EAAmBA,EAAI1F,EAAS0F,GAAIvD,GAAUF,CAC1F,EAEAE,EAAOyD,SAAW,SAASF,GACzB,OAAOrD,UAAU1C,QAAUgC,EAAO+D,EAAGvD,GAAUR,CACjD,EAEAQ,EAAO0D,UAAY,SAASH,GAC1B,OAAOrD,UAAU1C,QAAUoC,GAAM2D,EAAGvD,GAAUJ,CAChD,EAEAI,EAAO2D,YAAc,SAASJ,GAC5B,OAAOrD,UAAU1C,QAAUqC,EAAKN,GAAMgE,EAAGvD,GAAUH,CACrD,EAEAG,EAAOvB,MAAQ,SAAS8E,GACtB,OAAOrD,UAAU1C,QAAUiB,EAAqB,oBAAN8E,EAAmBA,EAAI1F,EAAS0F,GAAIvD,GAAUvB,CAC1F,EAEAuB,EAAOrB,MAAQ,SAAS4E,GACtB,OAAOrD,UAAU1C,QAAUmB,EAAqB,oBAAN4E,EAAmBA,EAAI1F,EAAS0F,GAAIvD,GAAUrB,CAC1F,EAEAqB,EAAOP,SAAW,SAAS8D,GACzB,OAAOrD,UAAU1C,QAAUiC,EAAW8D,EAAGvD,GAAUP,CACrD,EAEAO,EAAOkB,KAAO,SAASqC,GACrB,OAAOrD,UAAU1C,QAAUkC,EAAKrB,EAAK,EAAGsB,GAAM4D,EAAE,GAAIpE,GAAMoE,EAAE,GAAIvD,GAAU,CAACL,EAAKD,EAAIP,EAAKd,EAC3F,EAEA2B,EAAO4D,OAAS,SAASL,GACvB,OAAOrD,UAAU1C,QAAUkC,GAAM6D,EAAE,GAAG,GAAI5D,GAAM4D,EAAE,GAAG,GAAIlF,GAAMkF,EAAE,GAAG,GAAIpE,GAAMoE,EAAE,GAAG,GAAIvD,GAAU,CAAC,CAACN,EAAIrB,GAAK,CAACsB,EAAIR,GACnH,EAEAa,EAAOD,WAAa,SAASwD,GAC3B,OAAOrD,UAAU1C,QAAUuC,GAAcwD,EAAGvD,GAAUD,CACxD,EAoPOC,CACT,C,mCChXA,IAAI6D,EAAKjD,KAAKkD,GACVC,EAAM,EAAIF,EACVG,EAAU,KACVC,EAAaF,EAAMC,EAEvB,SAASE,IACPC,KAAKC,IAAMD,KAAKE,IAChBF,KAAKG,IAAMH,KAAKI,IAAM,KACtBJ,KAAKZ,EAAI,EACX,CAEA,SAASiB,IACP,OAAO,IAAIN,CACb,CAEAA,EAAKO,UAAYD,EAAKC,UAAY,CAChCC,YAAaR,EACbS,OAAQ,SAAS7G,EAAGoE,GAClBiC,KAAKZ,GAAK,KAAOY,KAAKC,IAAMD,KAAKG,KAAOxG,GAAK,KAAOqG,KAAKE,IAAMF,KAAKI,KAAOrC,EAC7E,EACA0C,UAAW,WACQ,OAAbT,KAAKG,MACPH,KAAKG,IAAMH,KAAKC,IAAKD,KAAKI,IAAMJ,KAAKE,IACrCF,KAAKZ,GAAK,IAEd,EACAsB,OAAQ,SAAS/G,EAAGoE,GAClBiC,KAAKZ,GAAK,KAAOY,KAAKG,KAAOxG,GAAK,KAAOqG,KAAKI,KAAOrC,EACvD,EACA4C,iBAAkB,SAASnF,EAAIR,EAAIrB,EAAGoE,GACpCiC,KAAKZ,GAAK,MAAQ5D,EAAM,MAAQR,EAAM,KAAOgF,KAAKG,KAAOxG,GAAK,KAAOqG,KAAKI,KAAOrC,EACnF,EACA6C,cAAe,SAASpF,EAAIR,EAAI6F,EAAIC,EAAInH,EAAGoE,GACzCiC,KAAKZ,GAAK,MAAQ5D,EAAM,MAAQR,EAAM,MAAQ6F,EAAM,MAAQC,EAAM,KAAOd,KAAKG,KAAOxG,GAAK,KAAOqG,KAAKI,KAAOrC,EAC/G,EACAgD,MAAO,SAASvF,EAAIR,EAAI6F,EAAIC,EAAIE,GAC9BxF,GAAMA,EAAIR,GAAMA,EAAI6F,GAAMA,EAAIC,GAAMA,EAAIE,GAAKA,EAC7C,IAAIzF,EAAKyE,KAAKG,IACVjG,EAAK8F,KAAKI,IACVa,EAAMJ,EAAKrF,EACX0F,EAAMJ,EAAK9F,EACXmG,EAAM5F,EAAKC,EACX4F,EAAMlH,EAAKc,EACXqG,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAIJ,EAAI,EAAG,MAAM,IAAInG,MAAM,oBAAsBmG,GAGjD,GAAiB,OAAbhB,KAAKG,IACPH,KAAKZ,GAAK,KAAOY,KAAKG,IAAM3E,GAAM,KAAOwE,KAAKI,IAAMpF,QAIjD,GAAMqG,EAAQxB,EAKd,GAAMpD,KAAK6E,IAAIF,EAAMH,EAAMC,EAAMC,GAAOtB,GAAamB,EAKrD,CACH,IAAIO,EAAMV,EAAKtF,EACXiG,EAAMV,EAAK5G,EACXuH,EAAQR,EAAMA,EAAMC,EAAMA,EAC1BQ,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAMlF,KAAKmF,KAAKH,GAChBI,EAAMpF,KAAKmF,KAAKP,GAChBS,EAAId,EAAIvE,KAAKsF,KAAKrC,EAAKjD,KAAKuF,MAAMP,EAAQJ,EAAQK,IAAU,EAAIC,EAAME,KAAS,GAC/EI,EAAMH,EAAID,EACVK,EAAMJ,EAAIH,EAGVlF,KAAK6E,IAAIW,EAAM,GAAKpC,IACtBG,KAAKZ,GAAK,KAAO5D,EAAKyG,EAAMd,GAAO,KAAOnG,EAAKiH,EAAMb,IAGvDpB,KAAKZ,GAAK,IAAM4B,EAAI,IAAMA,EAAI,WAAaI,EAAMG,EAAMJ,EAAMK,GAAQ,KAAOxB,KAAKG,IAAM3E,EAAK0G,EAAMjB,GAAO,KAAOjB,KAAKI,IAAMpF,EAAKkH,EAAMhB,EACxI,MArBElB,KAAKZ,GAAK,KAAOY,KAAKG,IAAM3E,GAAM,KAAOwE,KAAKI,IAAMpF,QAsBxD,EACAmH,IAAK,SAASxI,EAAGoE,EAAGiD,EAAGoB,EAAIC,EAAIC,GAC7B3I,GAAKA,EAAGoE,GAAKA,EAAWuE,IAAQA,EAChC,IAAI7G,GADYuF,GAAKA,GACRvE,KAAK8F,IAAIH,GAClB1G,EAAKsF,EAAIvE,KAAK+F,IAAIJ,GAClB7G,EAAK5B,EAAI8B,EACTvB,EAAK6D,EAAIrC,EACT+G,EAAK,EAAIH,EACTI,EAAKJ,EAAMF,EAAKC,EAAKA,EAAKD,EAG9B,GAAIpB,EAAI,EAAG,MAAM,IAAInG,MAAM,oBAAsBmG,GAGhC,OAAbhB,KAAKG,IACPH,KAAKZ,GAAK,IAAM7D,EAAK,IAAMrB,GAIpBuC,KAAK6E,IAAItB,KAAKG,IAAM5E,GAAMsE,GAAWpD,KAAK6E,IAAItB,KAAKI,IAAMlG,GAAM2F,KACtEG,KAAKZ,GAAK,IAAM7D,EAAK,IAAMrB,GAIxB8G,IAGD0B,EAAK,IAAGA,EAAKA,EAAK9C,EAAMA,GAGxB8C,EAAK5C,EACPE,KAAKZ,GAAK,IAAM4B,EAAI,IAAMA,EAAI,QAAUyB,EAAK,KAAO9I,EAAI8B,GAAM,KAAOsC,EAAIrC,GAAM,IAAMsF,EAAI,IAAMA,EAAI,QAAUyB,EAAK,KAAOzC,KAAKG,IAAM5E,GAAM,KAAOyE,KAAKI,IAAMlG,GAIrJwI,EAAK7C,IACZG,KAAKZ,GAAK,IAAM4B,EAAI,IAAMA,EAAI,SAAW0B,GAAMhD,GAAO,IAAM+C,EAAK,KAAOzC,KAAKG,IAAMxG,EAAIqH,EAAIvE,KAAK8F,IAAIF,IAAO,KAAOrC,KAAKI,IAAMrC,EAAIiD,EAAIvE,KAAK+F,IAAIH,KAElJ,EACAM,KAAM,SAAShJ,EAAGoE,EAAGS,EAAGoE,GACtB5C,KAAKZ,GAAK,KAAOY,KAAKC,IAAMD,KAAKG,KAAOxG,GAAK,KAAOqG,KAAKE,IAAMF,KAAKI,KAAOrC,GAAK,MAAQS,EAAK,MAAQoE,EAAK,KAAQpE,EAAK,GACzH,EACAqE,SAAU,WACR,OAAO7C,KAAKZ,CACd,GAGF,UCjIO,IAAI0D,EAAQvF,MAAM+C,UAAUwC,MCApB,WAASnJ,GACtB,OAAO,WACL,OAAOA,CACT,CACF,CCJO,SAASA,EAAEoJ,GAChB,OAAOA,EAAE,EACX,CAEO,SAAShF,EAAEgF,GAChB,OAAOA,EAAE,EACX,CCAA,SAASC,EAAWrK,GAClB,OAAOA,EAAEqB,MACX,CAEA,SAASiJ,EAAWtK,GAClB,OAAOA,EAAEC,MACX,CAEA,SAASqC,EAAKiI,GACZ,IAAIlJ,EAASgJ,EACTpK,EAASqK,EACTtJ,EAAIwJ,EACJpF,EAAIqF,EACJC,EAAU,KAEd,SAASpI,IACP,IAAIqI,EAAQC,EAAOT,EAAMrF,KAAK1B,WAAYyH,EAAIxJ,EAAO8B,MAAMkE,KAAMuD,GAAOE,EAAI7K,EAAOkD,MAAMkE,KAAMuD,GAG/F,GAFKF,IAASA,EAAUC,EAASjD,KACjC6C,EAAMG,GAAU1J,EAAEmC,MAAMkE,MAAOuD,EAAK,GAAKC,EAAGD,KAASxF,EAAEjC,MAAMkE,KAAMuD,IAAQ5J,EAAEmC,MAAMkE,MAAOuD,EAAK,GAAKE,EAAGF,KAASxF,EAAEjC,MAAMkE,KAAMuD,IAC1HD,EAAQ,OAAOD,EAAU,KAAMC,EAAS,IAAM,IACpD,CAsBA,OApBArI,EAAKjB,OAAS,SAASoF,GACrB,OAAOrD,UAAU1C,QAAUW,EAASoF,EAAGnE,GAAQjB,CACjD,EAEAiB,EAAKrC,OAAS,SAASwG,GACrB,OAAOrD,UAAU1C,QAAUT,EAASwG,EAAGnE,GAAQrC,CACjD,EAEAqC,EAAKtB,EAAI,SAASyF,GAChB,OAAOrD,UAAU1C,QAAUM,EAAiB,oBAANyF,EAAmBA,EAAI1F,GAAU0F,GAAInE,GAAQtB,CACrF,EAEAsB,EAAK8C,EAAI,SAASqB,GAChB,OAAOrD,UAAU1C,QAAU0E,EAAiB,oBAANqB,EAAmBA,EAAI1F,GAAU0F,GAAInE,GAAQ8C,CACrF,EAEA9C,EAAKoI,QAAU,SAASjE,GACtB,OAAOrD,UAAU1C,QAAWgK,EAAe,MAALjE,EAAY,KAAOA,EAAInE,GAAQoI,CACvE,EAEOpI,CACT,CAEA,SAASyI,EAAgBL,EAAS9H,EAAIrB,EAAIsB,EAAIR,GAC5CqI,EAAQ7C,OAAOjF,EAAIrB,GACnBmJ,EAAQzC,cAAcrF,GAAMA,EAAKC,GAAM,EAAGtB,EAAIqB,EAAIP,EAAIQ,EAAIR,EAC5D,CCpDA,SAAS2I,EAAiBhL,GACxB,MAAO,CAACA,EAAEqB,OAAOwB,GAAI7C,EAAEuB,GACzB,CAEA,SAAS0J,EAAiBjL,GACxB,MAAO,CAACA,EAAEC,OAAO2C,GAAI5C,EAAEqC,GACzB,CAEe,aACb,OD4DOC,EAAKyI,GC3DP1J,OAAO2J,GACP/K,OAAOgL,EACd,C,kBCde,SAASnK,EAAIpB,EAAQC,GAClC,IAAImB,EACJ,QAAgBlB,IAAZD,EACF,IAAK,MAAME,KAASH,EACL,MAATG,IACIiB,EAAMjB,QAAkBD,IAARkB,GAAqBjB,GAASA,KACpDiB,EAAMjB,OAGL,CACL,IAAIC,GAAS,EACb,IAAK,IAAID,KAASH,EACiC,OAA5CG,EAAQF,EAAQE,IAASC,EAAOJ,MAC7BoB,EAAMjB,QAAkBD,IAARkB,GAAqBjB,GAASA,KACpDiB,EAAMjB,EAGZ,CACA,OAAOiB,CACT,CCnBe,SAASrB,EAAIC,EAAQC,GAClC,IAAIF,EACJ,QAAgBG,IAAZD,EACF,IAAK,MAAME,KAASH,EACL,MAATG,IACIJ,EAAMI,QAAkBD,IAARH,GAAqBI,GAASA,KACpDJ,EAAMI,OAGL,CACL,IAAIC,GAAS,EACb,IAAK,IAAID,KAASH,EACiC,OAA5CG,EAAQF,EAAQE,IAASC,EAAOJ,MAC7BD,EAAMI,QAAkBD,IAARH,GAAqBI,GAASA,KACpDJ,EAAMI,EAGZ,CACA,OAAOJ,CACT,C,4CCnBe,WAASuB,GACtB,OAAOA,CACT,C,2BCAA,IAAIkK,EAAM,EACN7K,EAAQ,EACR8K,EAAS,EACThL,EAAO,EACP+G,EAAU,KAEd,SAASkE,EAAWpK,GAClB,MAAO,aAAeA,EAAI,KAC5B,CAEA,SAASqK,EAAWjG,GAClB,MAAO,eAAiBA,EAAI,GAC9B,CAEA,SAASkG,EAAOC,GACd,OAAOvL,IAAMuL,EAAMvL,EACrB,CAEA,SAASW,EAAO4K,EAAOC,GAGrB,OAFAA,EAAS1H,KAAKhD,IAAI,EAAGyK,EAAME,YAAuB,EAATD,GAAc,EACnDD,EAAMG,UAASF,EAAS1H,KAAK4H,MAAMF,IAChCxL,IAAMuL,EAAMvL,GAAKwL,CAC1B,CAEA,SAASG,IACP,OAAQtE,KAAKuE,MACf,CAEA,SAASC,EAAKC,EAAQP,GACpB,IAAIQ,EAAgB,GAChBC,EAAa,KACbC,EAAa,KACbC,EAAgB,EAChBC,EAAgB,EAChBC,EAAc,EACdZ,EAA2B,qBAAXa,QAA0BA,OAAOC,iBAAmB,EAAI,EAAI,GAC5EC,EAAIT,IAAWZ,GAAOY,IAAW3L,GAAQ,EAAI,EAC7Ca,EAAI8K,IAAW3L,GAAQ2L,IAAWzL,EAAQ,IAAM,IAChDmM,EAAYV,IAAWZ,GAAOY,IAAWX,EAASC,EAAaC,EAEnE,SAASQ,EAAKnB,GACZ,IAAIhL,EAAuB,MAAdsM,EAAsBT,EAAMkB,MAAQlB,EAAMkB,MAAMtJ,MAAMoI,EAAOQ,GAAiBR,EAAMmB,SAAYV,EACzGW,EAAuB,MAAdV,EAAsBV,EAAMU,WAAaV,EAAMU,WAAW9I,MAAMoI,EAAOQ,GAAiBa,EAAYX,EAC7GY,EAAU/I,KAAKhD,IAAIoL,EAAe,GAAKE,EACvCU,EAAQvB,EAAMuB,QACdC,GAAUD,EAAM,GAAKtB,EACrBwB,GAAUF,EAAMA,EAAMpM,OAAS,GAAK8K,EACpCyB,GAAY1B,EAAME,UAAY9K,EAAS2K,GAAQC,EAAM2B,OAAQ1B,GAC7D2B,EAAYzC,EAAQyC,UAAYzC,EAAQyC,YAAczC,EACtDhD,EAAOyF,EAAUC,UAAU,WAAWC,KAAK,CAAC,OAC5CC,EAAOH,EAAUC,UAAU,SAASC,KAAK3N,EAAQ6L,GAAOgC,QACxDC,EAAWF,EAAKG,OAChBC,EAAYJ,EAAKK,QAAQC,OAAO,KAAKC,KAAK,QAAS,QACnDC,EAAOR,EAAKS,OAAO,QACnBC,EAAOV,EAAKS,OAAO,QAEvBrG,EAAOA,EAAKuG,MAAMvG,EAAKiG,QAAQO,OAAO,OAAQ,SACzCL,KAAK,QAAS,UACdA,KAAK,SAAU,iBAEpBP,EAAOA,EAAKW,MAAMP,GAElBI,EAAOA,EAAKG,MAAMP,EAAUE,OAAO,QAC9BC,KAAK,SAAU,gBACfA,KAAK7M,EAAI,IAAKuL,EAAIL,IAEvB8B,EAAOA,EAAKC,MAAMP,EAAUE,OAAO,QAC9BC,KAAK,OAAQ,gBACbA,KAAK7M,EAAGuL,EAAIM,GACZgB,KAAK,KAAM/B,IAAWZ,EAAM,MAAQY,IAAWX,EAAS,SAAW,WAEpET,IAAYyC,IACdzF,EAAOA,EAAKyG,WAAWzD,GACvB4C,EAAOA,EAAKa,WAAWzD,GACvBoD,EAAOA,EAAKK,WAAWzD,GACvBsD,EAAOA,EAAKG,WAAWzD,GAEvB8C,EAAWA,EAASW,WAAWzD,GAC1BmD,KAAK,UAAW3G,GAChB2G,KAAK,aAAa,SAAS7N,GAAK,OAAOoO,SAASpO,EAAIiN,EAASjN,IAAMwM,EAAUxM,EAAIwL,GAAUnE,KAAKgH,aAAa,YAAc,IAEhIX,EACKG,KAAK,UAAW3G,GAChB2G,KAAK,aAAa,SAAS7N,GAAK,IAAIoK,EAAI/C,KAAKiH,WAAW1C,OAAQ,OAAOY,GAAWpC,GAAKgE,SAAShE,EAAIA,EAAEpK,IAAMoK,EAAI6C,EAASjN,IAAMwL,EAAS,KAG/IgC,EAASe,SAET7G,EACKmG,KAAK,IAAK/B,IAAW3L,GAAQ2L,IAAWzL,EAClC8L,EAAgB,IAAMI,EAAIJ,EAAgB,IAAMY,EAAS,IAAMvB,EAAS,IAAMwB,EAAS,IAAMT,EAAIJ,EAAgB,IAAMX,EAAS,IAAMuB,EAAS,IAAMC,EACrJb,EAAgB,IAAMY,EAAS,IAAMR,EAAIJ,EAAgB,IAAMX,EAAS,IAAMwB,EAAS,IAAMT,EAAIJ,EAAgB,IAAMY,EAAS,IAAMvB,EAAS,IAAMwB,GAEhKM,EACKO,KAAK,UAAW,GAChBA,KAAK,aAAa,SAAS7N,GAAK,OAAOwM,EAAUS,EAASjN,GAAKwL,EAAS,IAE7EsC,EACKD,KAAK7M,EAAI,IAAKuL,EAAIL,GAEvB8B,EACKH,KAAK7M,EAAGuL,EAAIM,GACZmB,KAAKrB,GAEVQ,EAAUqB,OAAO7C,GACZkC,KAAK,OAAQ,QACbA,KAAK,YAAa,IAClBA,KAAK,cAAe,cACpBA,KAAK,cAAe/B,IAAWzL,EAAQ,QAAUyL,IAAW3L,EAAO,MAAQ,UAEhFgN,EACKsB,MAAK,WAAapH,KAAKuE,OAASqB,CAAU,GACjD,CA0CA,OAxCApB,EAAKN,MAAQ,SAAS9E,GACpB,OAAOrD,UAAU1C,QAAU6K,EAAQ9E,EAAGoF,GAAQN,CAChD,EAEAM,EAAKY,MAAQ,WACX,OAAOV,EAAgBnH,MAAM8J,KAAKtL,WAAYyI,CAChD,EAEAA,EAAKE,cAAgB,SAAStF,GAC5B,OAAOrD,UAAU1C,QAAUqL,EAAqB,MAALtF,EAAY,GAAK7B,MAAM8J,KAAKjI,GAAIoF,GAAQE,EAAc5B,OACnG,EAEA0B,EAAKG,WAAa,SAASvF,GACzB,OAAOrD,UAAU1C,QAAUsL,EAAkB,MAALvF,EAAY,KAAO7B,MAAM8J,KAAKjI,GAAIoF,GAAQG,GAAcA,EAAW7B,OAC7G,EAEA0B,EAAKI,WAAa,SAASxF,GACzB,OAAOrD,UAAU1C,QAAUuL,EAAaxF,EAAGoF,GAAQI,CACrD,EAEAJ,EAAK8C,SAAW,SAASlI,GACvB,OAAOrD,UAAU1C,QAAUwL,EAAgBC,GAAiB1F,EAAGoF,GAAQK,CACzE,EAEAL,EAAKK,cAAgB,SAASzF,GAC5B,OAAOrD,UAAU1C,QAAUwL,GAAiBzF,EAAGoF,GAAQK,CACzD,EAEAL,EAAKM,cAAgB,SAAS1F,GAC5B,OAAOrD,UAAU1C,QAAUyL,GAAiB1F,EAAGoF,GAAQM,CACzD,EAEAN,EAAKO,YAAc,SAAS3F,GAC1B,OAAOrD,UAAU1C,QAAU0L,GAAe3F,EAAGoF,GAAQO,CACvD,EAEAP,EAAKL,OAAS,SAAS/E,GACrB,OAAOrD,UAAU1C,QAAU8K,GAAU/E,EAAGoF,GAAQL,CAClD,EAEOK,CACT,CAEO,SAAS+C,EAAQrD,GACtB,OAAOM,EAAKX,EAAKK,EACnB,CAMO,SAASsD,EAAWtD,GACzB,OAAOM,EAAKV,EAAQI,EACtB,C,2BC3JA,MAAM,IAAC5C,EAAG,IAAE7H,EAAG,IAAErB,GAAOqE,KAExB,SAASgL,EAAQC,GACf,MAAO,EAAEA,EAAE,IAAKA,EAAE,GACpB,CAEA,SAASC,EAAQD,GACf,MAAO,CAACD,EAAQC,EAAE,IAAKD,EAAQC,EAAE,IACnC,CAIW,CAAC,IAAK,KAAKtL,IAAIwL,GAOf,CAAC,IAAK,KAAKxL,IAAIwL,GAOf,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAAMxL,IAAIwL,GA8D5D,SAASA,EAAKnE,GACZ,MAAO,CAACmE,KAAMnE,EAChB,C,uFCtGO,SAASoE,IAAS,CAElB,IAAIC,EAAS,GACTC,EAAW,EAAID,EAEtBE,EAAM,sBACNC,EAAM,oDACNC,EAAM,qDACNC,EAAQ,qBACRC,EAAe,IAAIC,OAAO,UAADC,OAAWN,EAAG,KAAAM,OAAIN,EAAG,KAAAM,OAAIN,EAAG,SACrDO,EAAe,IAAIF,OAAO,UAADC,OAAWJ,EAAG,KAAAI,OAAIJ,EAAG,KAAAI,OAAIJ,EAAG,SACrDM,EAAgB,IAAIH,OAAO,WAADC,OAAYN,EAAG,KAAAM,OAAIN,EAAG,KAAAM,OAAIN,EAAG,KAAAM,OAAIL,EAAG,SAC9DQ,EAAgB,IAAIJ,OAAO,WAADC,OAAYJ,EAAG,KAAAI,OAAIJ,EAAG,KAAAI,OAAIJ,EAAG,KAAAI,OAAIL,EAAG,SAC9DS,EAAe,IAAIL,OAAO,UAADC,OAAWL,EAAG,KAAAK,OAAIJ,EAAG,KAAAI,OAAIJ,EAAG,SACrDS,EAAgB,IAAIN,OAAO,WAADC,OAAYL,EAAG,KAAAK,OAAIJ,EAAG,KAAAI,OAAIJ,EAAG,KAAAI,OAAIL,EAAG,SAE9DW,EAAQ,CACVC,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXtP,IAAK,SACLuP,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAkBf,SAASC,IACP,OAAOhS,KAAKiS,MAAMC,WACpB,CAUA,SAASC,IACP,OAAOnS,KAAKiS,MAAMG,WACpB,CAEe,SAASC,EAAM/M,GAC5B,IAAIgN,EAAGxQ,EAEP,OADAwD,GAAUA,EAAS,IAAIiN,OAAOC,eACtBF,EAAInK,EAAMsK,KAAKnN,KAAYxD,EAAIwQ,EAAE,GAAGjZ,OAAQiZ,EAAII,SAASJ,EAAE,GAAI,IAAW,IAANxQ,EAAU6Q,EAAKL,GAC/E,IAANxQ,EAAU,IAAI8Q,EAAKN,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,GAAiB,GAAJA,IAAY,EAAU,GAAJA,EAAU,GACzG,IAANxQ,EAAU+Q,EAAKP,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,KAAW,IAAJA,GAAY,KACrE,IAANxQ,EAAU+Q,EAAMP,GAAK,GAAK,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,IAAkB,GAAJA,IAAY,EAAU,GAAJA,GAAY,KAClJ,OACCA,EAAIlK,EAAaqK,KAAKnN,IAAW,IAAIsN,EAAIN,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC3DA,EAAI/J,EAAakK,KAAKnN,IAAW,IAAIsN,EAAW,IAAPN,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAI9J,EAAciK,KAAKnN,IAAWuN,EAAKP,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAI7J,EAAcgK,KAAKnN,IAAWuN,EAAY,IAAPP,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAI5J,EAAa+J,KAAKnN,IAAWwN,EAAKR,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAI3J,EAAc8J,KAAKnN,IAAWwN,EAAKR,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxE1J,EAAMmK,eAAezN,GAAUqN,EAAK/J,EAAMtD,IAC/B,gBAAXA,EAA2B,IAAIsN,EAAII,IAAKA,IAAKA,IAAK,GAClD,IACR,CAEA,SAASL,EAAK1Z,GACZ,OAAO,IAAI2Z,EAAI3Z,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,EAC1D,CAEA,SAAS4Z,EAAK7R,EAAGiS,EAAGnZ,EAAGD,GAErB,OADIA,GAAK,IAAGmH,EAAIiS,EAAInZ,EAAIkZ,KACjB,IAAIJ,EAAI5R,EAAGiS,EAAGnZ,EAAGD,EAC1B,CAEO,SAASqZ,EAAWC,GAEzB,OADMA,aAAatL,IAAQsL,EAAId,EAAMc,IAChCA,EAEE,IAAIP,GADXO,EAAIA,EAAElB,OACWjR,EAAGmS,EAAEF,EAAGE,EAAErZ,EAAGqZ,EAAEC,SAFjB,IAAIR,CAGrB,CAEO,SAASX,EAAIjR,EAAGiS,EAAGnZ,EAAGsZ,GAC3B,OAA4B,IAArBrX,UAAU1C,OAAe6Z,EAAWlS,GAAK,IAAI4R,EAAI5R,EAAGiS,EAAGnZ,EAAc,MAAXsZ,EAAkB,EAAIA,EACzF,CAEO,SAASR,EAAI5R,EAAGiS,EAAGnZ,EAAGsZ,GAC3BpT,KAAKgB,GAAKA,EACVhB,KAAKiT,GAAKA,EACVjT,KAAKlG,GAAKA,EACVkG,KAAKoT,SAAWA,CAClB,CA8BA,SAASC,IACP,MAAO,IAAP/K,OAAWgL,EAAItT,KAAKgB,IAAEsH,OAAGgL,EAAItT,KAAKiT,IAAE3K,OAAGgL,EAAItT,KAAKlG,GAClD,CAMA,SAASyZ,IACP,MAAM1Z,EAAI2Z,EAAOxT,KAAKoT,SACtB,MAAO,GAAP9K,OAAgB,IAANzO,EAAU,OAAS,SAAOyO,OAAGmL,EAAOzT,KAAKgB,GAAE,MAAAsH,OAAKmL,EAAOzT,KAAKiT,GAAE,MAAA3K,OAAKmL,EAAOzT,KAAKlG,IAAEwO,OAAS,IAANzO,EAAU,IAAM,KAAHyO,OAAQzO,EAAC,KACtH,CAEA,SAAS2Z,EAAOJ,GACd,OAAOM,MAAMN,GAAW,EAAI3W,KAAKhD,IAAI,EAAGgD,KAAKrE,IAAI,EAAGgb,GACtD,CAEA,SAASK,EAAOjb,GACd,OAAOiE,KAAKhD,IAAI,EAAGgD,KAAKrE,IAAI,IAAKqE,KAAK4H,MAAM7L,IAAU,GACxD,CAEA,SAAS8a,EAAI9a,GAEX,QADAA,EAAQib,EAAOjb,IACC,GAAK,IAAM,IAAMA,EAAMqK,SAAS,GAClD,CAEA,SAASiQ,EAAKlQ,EAAGY,EAAG1B,EAAGjI,GAIrB,OAHIA,GAAK,EAAG+I,EAAIY,EAAI1B,EAAIkR,IACflR,GAAK,GAAKA,GAAK,EAAGc,EAAIY,EAAIwP,IAC1BxP,GAAK,IAAGZ,EAAIoQ,KACd,IAAIW,EAAI/Q,EAAGY,EAAG1B,EAAGjI,EAC1B,CAEO,SAAS+Z,EAAWT,GACzB,GAAIA,aAAaQ,EAAK,OAAO,IAAIA,EAAIR,EAAEvQ,EAAGuQ,EAAE3P,EAAG2P,EAAErR,EAAGqR,EAAEC,SAEtD,GADMD,aAAatL,IAAQsL,EAAId,EAAMc,KAChCA,EAAG,OAAO,IAAIQ,EACnB,GAAIR,aAAaQ,EAAK,OAAOR,EAE7B,IAAInS,GADJmS,EAAIA,EAAElB,OACIjR,EAAI,IACViS,EAAIE,EAAEF,EAAI,IACVnZ,EAAIqZ,EAAErZ,EAAI,IACV1B,EAAMqE,KAAKrE,IAAI4I,EAAGiS,EAAGnZ,GACrBL,EAAMgD,KAAKhD,IAAIuH,EAAGiS,EAAGnZ,GACrB8I,EAAIoQ,IACJxP,EAAI/J,EAAMrB,EACV0J,GAAKrI,EAAMrB,GAAO,EAUtB,OATIoL,GACaZ,EAAX5B,IAAMvH,GAAUwZ,EAAInZ,GAAK0J,EAAc,GAATyP,EAAInZ,GAC7BmZ,IAAMxZ,GAAUK,EAAIkH,GAAKwC,EAAI,GAC5BxC,EAAIiS,GAAKzP,EAAI,EACvBA,GAAK1B,EAAI,GAAMrI,EAAMrB,EAAM,EAAIqB,EAAMrB,EACrCwK,GAAK,IAELY,EAAI1B,EAAI,GAAKA,EAAI,EAAI,EAAIc,EAEpB,IAAI+Q,EAAI/Q,EAAGY,EAAG1B,EAAGqR,EAAEC,QAC5B,CAMA,SAASO,EAAI/Q,EAAGY,EAAG1B,EAAGsR,GACpBpT,KAAK4C,GAAKA,EACV5C,KAAKwD,GAAKA,EACVxD,KAAK8B,GAAKA,EACV9B,KAAKoT,SAAWA,CAClB,CAsCA,SAASS,EAAOrb,GAEd,OADAA,GAASA,GAAS,GAAK,KACR,EAAIA,EAAQ,IAAMA,CACnC,CAEA,SAASsb,EAAOtb,GACd,OAAOiE,KAAKhD,IAAI,EAAGgD,KAAKrE,IAAI,EAAGI,GAAS,GAC1C,CAGA,SAASub,EAAQnR,EAAGoR,EAAIC,GACtB,OAGY,KAHJrR,EAAI,GAAKoR,GAAMC,EAAKD,GAAMpR,EAAI,GAChCA,EAAI,IAAMqR,EACVrR,EAAI,IAAMoR,GAAMC,EAAKD,IAAO,IAAMpR,GAAK,GACvCoR,EACR,EAlOAE,EAAAA,EAAAA,GAAOrM,EAAOwK,EAAO,CACnBxM,IAAAA,CAAKsO,GACH,OAAOC,OAAOC,OAAO,IAAIrU,KAAKO,YAAaP,KAAMmU,EACnD,EACAG,WAAAA,GACE,OAAOtU,KAAKiS,MAAMqC,aACpB,EACAhB,IAAKtB,EACLE,UAAWF,EACXuC,WAUF,WACE,OAAOvU,KAAKiS,MAAMsC,YACpB,EAXEC,UAaF,WACE,OAAOZ,EAAW5T,MAAMwU,WAC1B,EAdEpC,UAAWD,EACXtP,SAAUsP,KAiEZ+B,EAAAA,EAAAA,GAAOtB,EAAKX,GAAKwC,EAAAA,EAAAA,GAAO5M,EAAO,CAC7BE,QAAAA,CAAS7C,GAEP,OADAA,EAAS,MAALA,EAAY6C,EAAWtL,KAAK0B,IAAI4J,EAAU7C,GACvC,IAAI0N,EAAI5S,KAAKgB,EAAIkE,EAAGlF,KAAKiT,EAAI/N,EAAGlF,KAAKlG,EAAIoL,EAAGlF,KAAKoT,QAC1D,EACAtL,MAAAA,CAAO5C,GAEL,OADAA,EAAS,MAALA,EAAY4C,EAASrL,KAAK0B,IAAI2J,EAAQ5C,GACnC,IAAI0N,EAAI5S,KAAKgB,EAAIkE,EAAGlF,KAAKiT,EAAI/N,EAAGlF,KAAKlG,EAAIoL,EAAGlF,KAAKoT,QAC1D,EACAnB,GAAAA,GACE,OAAOjS,IACT,EACA0U,KAAAA,GACE,OAAO,IAAI9B,EAAIa,EAAOzT,KAAKgB,GAAIyS,EAAOzT,KAAKiT,GAAIQ,EAAOzT,KAAKlG,GAAI0Z,EAAOxT,KAAKoT,SAC7E,EACAkB,WAAAA,GACE,OAAS,IAAOtU,KAAKgB,GAAKhB,KAAKgB,EAAI,QAC1B,IAAOhB,KAAKiT,GAAKjT,KAAKiT,EAAI,QAC1B,IAAOjT,KAAKlG,GAAKkG,KAAKlG,EAAI,OAC3B,GAAKkG,KAAKoT,SAAWpT,KAAKoT,SAAW,CAC/C,EACAE,IAAKD,EACLnB,UAAWmB,EACXkB,WASF,WACE,MAAO,IAAPjM,OAAWgL,EAAItT,KAAKgB,IAAEsH,OAAGgL,EAAItT,KAAKiT,IAAE3K,OAAGgL,EAAItT,KAAKlG,IAAEwO,OAAGgL,EAA+C,KAA1CI,MAAM1T,KAAKoT,SAAW,EAAIpT,KAAKoT,UAC3F,EAVEhB,UAAWmB,EACX1Q,SAAU0Q,MAyEZW,EAAAA,EAAAA,GAAOP,GAXA,SAAa/Q,EAAGY,EAAG1B,EAAGsR,GAC3B,OAA4B,IAArBrX,UAAU1C,OAAeua,EAAWhR,GAAK,IAAI+Q,EAAI/Q,EAAGY,EAAG1B,EAAc,MAAXsR,EAAkB,EAAIA,EACzF,IASiBqB,EAAAA,EAAAA,GAAO5M,EAAO,CAC7BE,QAAAA,CAAS7C,GAEP,OADAA,EAAS,MAALA,EAAY6C,EAAWtL,KAAK0B,IAAI4J,EAAU7C,GACvC,IAAIyO,EAAI3T,KAAK4C,EAAG5C,KAAKwD,EAAGxD,KAAK8B,EAAIoD,EAAGlF,KAAKoT,QAClD,EACAtL,MAAAA,CAAO5C,GAEL,OADAA,EAAS,MAALA,EAAY4C,EAASrL,KAAK0B,IAAI2J,EAAQ5C,GACnC,IAAIyO,EAAI3T,KAAK4C,EAAG5C,KAAKwD,EAAGxD,KAAK8B,EAAIoD,EAAGlF,KAAKoT,QAClD,EACAnB,GAAAA,GACE,IAAIrP,EAAI5C,KAAK4C,EAAI,IAAqB,KAAd5C,KAAK4C,EAAI,GAC7BY,EAAIkQ,MAAM9Q,IAAM8Q,MAAM1T,KAAKwD,GAAK,EAAIxD,KAAKwD,EACzC1B,EAAI9B,KAAK8B,EACTmS,EAAKnS,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAK0B,EACjCwQ,EAAK,EAAIlS,EAAImS,EACjB,OAAO,IAAIrB,EACTmB,EAAQnR,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAKoR,EAAIC,GAC1CF,EAAQnR,EAAGoR,EAAIC,GACfF,EAAQnR,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAKoR,EAAIC,GACzCjU,KAAKoT,QAET,EACAsB,KAAAA,GACE,OAAO,IAAIf,EAAIE,EAAO7T,KAAK4C,GAAIkR,EAAO9T,KAAKwD,GAAIsQ,EAAO9T,KAAK8B,GAAI0R,EAAOxT,KAAKoT,SAC7E,EACAkB,WAAAA,GACE,OAAQ,GAAKtU,KAAKwD,GAAKxD,KAAKwD,GAAK,GAAKkQ,MAAM1T,KAAKwD,KACzC,GAAKxD,KAAK8B,GAAK9B,KAAK8B,GAAK,GACzB,GAAK9B,KAAKoT,SAAWpT,KAAKoT,SAAW,CAC/C,EACAoB,SAAAA,GACE,MAAM3a,EAAI2Z,EAAOxT,KAAKoT,SACtB,MAAO,GAAP9K,OAAgB,IAANzO,EAAU,OAAS,SAAOyO,OAAGuL,EAAO7T,KAAK4C,GAAE,MAAA0F,OAAsB,IAAjBwL,EAAO9T,KAAKwD,GAAQ,OAAA8E,OAAuB,IAAjBwL,EAAO9T,KAAK8B,GAAQ,KAAAwG,OAAU,IAANzO,EAAU,IAAM,KAAHyO,OAAQzO,EAAC,KACpI,I,kBCzXa,WAAS0G,EAAaoU,EAASrU,GAC5CC,EAAYD,UAAYqU,EAAQrU,UAAYA,EAC5CA,EAAUC,YAAcA,CAC1B,CAEO,SAASkU,EAAOG,EAAQC,GAC7B,IAAIvU,EAAY8T,OAAOU,OAAOF,EAAOtU,WACrC,IAAK,IAAIyU,KAAOF,EAAYvU,EAAUyU,GAAOF,EAAWE,GACxD,OAAOzU,CACT,C,0CCTA,SAAS0U,EAAaC,GACpB,IAAKA,EAASC,GAAI,MAAM,IAAIra,MAAMoa,EAASE,OAAS,IAAMF,EAASG,YACnE,OAAOH,EAAStO,MAClB,CCDA,SAAS0O,EAAOzN,GACd,MAAO,CAAC0N,EAAOC,IDEF,SAASD,EAAOC,GAC7B,OAAOC,MAAMF,EAAOC,GAAME,KAAKT,EACjC,CCJ0BrO,CAAK2O,EAAOC,GACjCE,MAAK9O,IAAS,IAAI+O,WAAWC,gBAAgBhP,EAAMiB,IACxD,C,kBAEeyN,EAAO,mBAEJA,EAAO,aAAlB,IAEIO,EAAMP,EAAO,gB,qECTxB,SAASQ,EAAOhc,EAAGlB,GACjB,OAAO,SAAS8K,GACd,OAAO5J,EAAI4J,EAAI9K,CACjB,CACF,CAQO,SAASmd,EAAIjc,EAAGC,GACrB,IAAInB,EAAImB,EAAID,EACZ,OAAOlB,EAAIkd,EAAOhc,EAAGlB,EAAI,KAAOA,GAAK,IAAMA,EAAI,IAAM8D,KAAK4H,MAAM1L,EAAI,KAAOA,IAAKe,EAAAA,EAAAA,GAASga,MAAM7Z,GAAKC,EAAID,EAC1G,CAEO,SAASkc,EAAMhY,GACpB,OAAoB,KAAZA,GAAKA,GAAWiY,EAAU,SAASnc,EAAGC,GAC5C,OAAOA,EAAID,EAbf,SAAqBA,EAAGC,EAAGiE,GACzB,OAAOlE,EAAI4C,KAAK0B,IAAItE,EAAGkE,GAAIjE,EAAI2C,KAAK0B,IAAIrE,EAAGiE,GAAKlE,EAAGkE,EAAI,EAAIA,EAAG,SAAS0F,GACrE,OAAOhH,KAAK0B,IAAItE,EAAI4J,EAAI3J,EAAGiE,EAC7B,CACF,CASmBkY,CAAYpc,EAAGC,EAAGiE,IAAKrE,EAAAA,EAAAA,GAASga,MAAM7Z,GAAKC,EAAID,EAChE,CACF,CAEe,SAASmc,EAAQnc,EAAGC,GACjC,IAAInB,EAAImB,EAAID,EACZ,OAAOlB,EAAIkd,EAAOhc,EAAGlB,IAAKe,EAAAA,EAAAA,GAASga,MAAM7Z,GAAKC,EAAID,EACpD,C,mCC5BA,QAAeF,GAAK,IAAMA,C,8DCAnB,MAAMuc,EAAUzZ,KAAKkD,GAAK,IACpBwW,EAAU,IAAM1Z,KAAKkD,GCK9ByW,EAAK,OACLC,EAAK,EACLC,EAAK,OACLC,EAAK,EAAI,GACTC,EAAK,EAAI,GACTC,EAAK,EAAID,EAAKA,EACdE,EAAKF,EAAKA,EAAKA,EAEnB,SAASG,EAAWxD,GAClB,GAAIA,aAAayD,EAAK,OAAO,IAAIA,EAAIzD,EAAErR,EAAGqR,EAAEtZ,EAAGsZ,EAAErZ,EAAGqZ,EAAEC,SACtD,GAAID,aAAa0D,EAAK,OAAOC,EAAQ3D,GAC/BA,aAAaP,EAAAA,KAAMO,GAAID,EAAAA,EAAAA,IAAWC,IACxC,IAGuExZ,EAAGod,EAHtE/V,EAAIgW,EAAS7D,EAAEnS,GACfiS,EAAI+D,EAAS7D,EAAEF,GACfnZ,EAAIkd,EAAS7D,EAAErZ,GACfiE,EAAIkZ,GAAS,SAAYjW,EAAI,SAAYiS,EAAI,SAAYnZ,GAAKuc,GAKlE,OAJIrV,IAAMiS,GAAKA,IAAMnZ,EAAGH,EAAIod,EAAIhZ,GAC9BpE,EAAIsd,GAAS,SAAYjW,EAAI,SAAYiS,EAAI,SAAYnZ,GAAKsc,GAC9DW,EAAIE,GAAS,SAAYjW,EAAI,SAAYiS,EAAI,SAAYnZ,GAAKwc,IAEzD,IAAIM,EAAI,IAAM7Y,EAAI,GAAI,KAAOpE,EAAIoE,GAAI,KAAOA,EAAIgZ,GAAI5D,EAAEC,QAC/D,CAUO,SAASwD,EAAI9U,EAAGjI,EAAGC,EAAGsZ,GAC3BpT,KAAK8B,GAAKA,EACV9B,KAAKnG,GAAKA,EACVmG,KAAKlG,GAAKA,EACVkG,KAAKoT,SAAWA,CAClB,CAyBA,SAAS6D,EAAQxT,GACf,OAAOA,EAAIiT,EAAKja,KAAK0B,IAAIsF,EAAG,EAAI,GAAKA,EAAIgT,EAAKF,CAChD,CAEA,SAASW,EAAQzT,GACf,OAAOA,EAAI+S,EAAK/S,EAAIA,EAAIA,EAAIgT,GAAMhT,EAAI8S,EACxC,CAEA,SAASY,EAASxd,GAChB,OAAO,KAAOA,GAAK,SAAY,MAAQA,EAAI,MAAQ8C,KAAK0B,IAAIxE,EAAG,EAAI,KAAO,KAC5E,CAEA,SAASqd,EAASrd,GAChB,OAAQA,GAAK,MAAQ,OAAUA,EAAI,MAAQ8C,KAAK0B,KAAKxE,EAAI,MAAS,MAAO,IAC3E,CAEA,SAASyd,EAAWjE,GAClB,GAAIA,aAAa0D,EAAK,OAAO,IAAIA,EAAI1D,EAAEvQ,EAAGuQ,EAAEtV,EAAGsV,EAAErR,EAAGqR,EAAEC,SAEtD,GADMD,aAAayD,IAAMzD,EAAIwD,EAAWxD,IAC5B,IAARA,EAAEtZ,GAAmB,IAARsZ,EAAErZ,EAAS,OAAO,IAAI+c,EAAI7D,IAAK,EAAIG,EAAErR,GAAKqR,EAAErR,EAAI,IAAM,EAAIkR,IAAKG,EAAErR,EAAGqR,EAAEC,SACvF,IAAIxQ,EAAInG,KAAK4a,MAAMlE,EAAErZ,EAAGqZ,EAAEtZ,GAAKsc,EAC/B,OAAO,IAAIU,EAAIjU,EAAI,EAAIA,EAAI,IAAMA,EAAGnG,KAAKmF,KAAKuR,EAAEtZ,EAAIsZ,EAAEtZ,EAAIsZ,EAAErZ,EAAIqZ,EAAErZ,GAAIqZ,EAAErR,EAAGqR,EAAEC,QAC/E,CAMO,SAASkE,EAAI1U,EAAG/E,EAAGiE,EAAGsR,GAC3B,OAA4B,IAArBrX,UAAU1C,OAAe+d,EAAWxU,GAAK,IAAIiU,EAAIjU,EAAG/E,EAAGiE,EAAc,MAAXsR,EAAkB,EAAIA,EACzF,CAEO,SAASyD,EAAIjU,EAAG/E,EAAGiE,EAAGsR,GAC3BpT,KAAK4C,GAAKA,EACV5C,KAAKnC,GAAKA,EACVmC,KAAK8B,GAAKA,EACV9B,KAAKoT,SAAWA,CAClB,CAEA,SAAS0D,EAAQ3D,GACf,GAAIO,MAAMP,EAAEvQ,GAAI,OAAO,IAAIgU,EAAIzD,EAAErR,EAAG,EAAG,EAAGqR,EAAEC,SAC5C,IAAIxQ,EAAIuQ,EAAEvQ,EAAIsT,EACd,OAAO,IAAIU,EAAIzD,EAAErR,EAAGrF,KAAK8F,IAAIK,GAAKuQ,EAAEtV,EAAGpB,KAAK+F,IAAII,GAAKuQ,EAAEtV,EAAGsV,EAAEC,QAC9D,EAlEAc,EAAAA,EAAAA,GAAO0C,GAXQ,SAAa9U,EAAGjI,EAAGC,EAAGsZ,GACnC,OAA4B,IAArBrX,UAAU1C,OAAesd,EAAW7U,GAAK,IAAI8U,EAAI9U,EAAGjI,EAAGC,EAAc,MAAXsZ,EAAkB,EAAIA,EACzF,IASiBqB,EAAAA,EAAAA,GAAO5M,EAAAA,GAAO,CAC7BE,QAAAA,CAAS7C,GACP,OAAO,IAAI0R,EAAI5W,KAAK8B,EAzCd,IAyC4B,MAALoD,EAAY,EAAIA,GAAIlF,KAAKnG,EAAGmG,KAAKlG,EAAGkG,KAAKoT,QACxE,EACAtL,MAAAA,CAAO5C,GACL,OAAO,IAAI0R,EAAI5W,KAAK8B,EA5Cd,IA4C4B,MAALoD,EAAY,EAAIA,GAAIlF,KAAKnG,EAAGmG,KAAKlG,EAAGkG,KAAKoT,QACxE,EACAnB,GAAAA,GACE,IAAIlU,GAAKiC,KAAK8B,EAAI,IAAM,IACpBnI,EAAI+Z,MAAM1T,KAAKnG,GAAKkE,EAAIA,EAAIiC,KAAKnG,EAAI,IACrCkd,EAAIrD,MAAM1T,KAAKlG,GAAKiE,EAAIA,EAAIiC,KAAKlG,EAAI,IAIzC,OAHAH,EAAIyc,EAAKc,EAAQvd,GACjBoE,EAAIsY,EAAKa,EAAQnZ,GACjBgZ,EAAIT,EAAKY,EAAQH,GACV,IAAInE,EAAAA,GACTuE,EAAU,UAAYxd,EAAI,UAAYoE,EAAI,SAAYgZ,GACtDI,GAAU,SAAYxd,EAAI,UAAYoE,EAAI,QAAYgZ,GACtDI,EAAU,SAAYxd,EAAI,SAAYoE,EAAI,UAAYgZ,GACtD/W,KAAKoT,QAET,MAgDFc,EAAAA,EAAAA,GAAO2C,EAAKS,GAAK7C,EAAAA,EAAAA,GAAO5M,EAAAA,GAAO,CAC7BE,QAAAA,CAAS7C,GACP,OAAO,IAAI2R,EAAI7W,KAAK4C,EAAG5C,KAAKnC,EAAGmC,KAAK8B,EA7G9B,IA6G4C,MAALoD,EAAY,EAAIA,GAAIlF,KAAKoT,QACxE,EACAtL,MAAAA,CAAO5C,GACL,OAAO,IAAI2R,EAAI7W,KAAK4C,EAAG5C,KAAKnC,EAAGmC,KAAK8B,EAhH9B,IAgH4C,MAALoD,EAAY,EAAIA,GAAIlF,KAAKoT,QACxE,EACAnB,GAAAA,GACE,OAAO6E,EAAQ9W,MAAMiS,KACvB,K,eCtHF,SAASqF,EAAIxB,GACX,OAAO,SAASyB,EAAOC,GACrB,IAAI5U,EAAIkT,GAAKyB,EAAQE,EAASF,IAAQ3U,GAAI4U,EAAMC,EAASD,IAAM5U,GAC3D/E,GAAIwU,EAAAA,EAAAA,IAAMkF,EAAM1Z,EAAG2Z,EAAI3Z,GACvBiE,GAAIuQ,EAAAA,EAAAA,IAAMkF,EAAMzV,EAAG0V,EAAI1V,GACvBsR,GAAUf,EAAAA,EAAAA,IAAMkF,EAAMnE,QAASoE,EAAIpE,SACvC,OAAO,SAAS3P,GAKd,OAJA8T,EAAM3U,EAAIA,EAAEa,GACZ8T,EAAM1Z,EAAIA,EAAE4F,GACZ8T,EAAMzV,EAAIA,EAAE2B,GACZ8T,EAAMnE,QAAUA,EAAQ3P,GACjB8T,EAAQ,EACjB,CACF,CACF,CAEA,QAAeD,EAAIxB,EAAAA,IACEwB,EAAIjF,EAAAA,G,kBCpBV,WAASxY,EAAGC,GACzB,OAAOD,GAAKA,EAAGC,GAAKA,EAAG,SAAS2J,GAC9B,OAAO5J,GAAK,EAAI4J,GAAK3J,EAAI2J,CAC3B,CACF,C,kECJO,SAASiU,EAAMlB,EAAImB,EAAIC,EAAIC,EAAIC,GACpC,IAAIrB,EAAKD,EAAKA,EAAIE,EAAKD,EAAKD,EAC5B,QAAS,EAAI,EAAIA,EAAK,EAAIC,EAAKC,GAAMiB,GAC9B,EAAI,EAAIlB,EAAK,EAAIC,GAAMkB,GACvB,EAAI,EAAIpB,EAAK,EAAIC,EAAK,EAAIC,GAAMmB,EACjCnB,EAAKoB,GAAM,CACnB,C,eCDA,QAAe,SAAUC,EAASha,GAChC,IAAIsU,GAAQ0D,EAAAA,EAAAA,IAAMhY,GAElB,SAASkU,EAAIsF,EAAOC,GAClB,IAAIxW,EAAIqR,GAAOkF,GAAQS,EAAAA,EAAAA,IAAST,IAAQvW,GAAIwW,GAAMQ,EAAAA,EAAAA,IAASR,IAAMxW,GAC7DiS,EAAIZ,EAAMkF,EAAMtE,EAAGuE,EAAIvE,GACvBnZ,EAAIuY,EAAMkF,EAAMzd,EAAG0d,EAAI1d,GACvBsZ,GAAU4C,EAAAA,EAAAA,IAAQuB,EAAMnE,QAASoE,EAAIpE,SACzC,OAAO,SAAS3P,GAKd,OAJA8T,EAAMvW,EAAIA,EAAEyC,GACZ8T,EAAMtE,EAAIA,EAAExP,GACZ8T,EAAMzd,EAAIA,EAAE2J,GACZ8T,EAAMnE,QAAUA,EAAQ3P,GACjB8T,EAAQ,EACjB,CACF,CAIA,OAFAtF,EAAI8D,MAAQgC,EAEL9F,CACR,CApBD,CAoBG,GAEH,SAASgG,EAAUC,GACjB,OAAO,SAASC,GACd,IAIIlc,EAAGoW,EAJHpZ,EAAIkf,EAAO9e,OACX2H,EAAI,IAAIzD,MAAMtE,GACdga,EAAI,IAAI1V,MAAMtE,GACda,EAAI,IAAIyD,MAAMtE,GAElB,IAAKgD,EAAI,EAAGA,EAAIhD,IAAKgD,EACnBoW,GAAQ2F,EAAAA,EAAAA,IAASG,EAAOlc,IACxB+E,EAAE/E,GAAKoW,EAAMrR,GAAK,EAClBiS,EAAEhX,GAAKoW,EAAMY,GAAK,EAClBnZ,EAAEmC,GAAKoW,EAAMvY,GAAK,EAMpB,OAJAkH,EAAIkX,EAAOlX,GACXiS,EAAIiF,EAAOjF,GACXnZ,EAAIoe,EAAOpe,GACXuY,EAAMe,QAAU,EACT,SAAS3P,GAId,OAHA4O,EAAMrR,EAAIA,EAAEyC,GACZ4O,EAAMY,EAAIA,EAAExP,GACZ4O,EAAMvY,EAAIA,EAAE2J,GACL4O,EAAQ,EACjB,CACF,CACF,CAEsB4F,GD7CP,SAAS5f,GACtB,IAAIY,EAAIZ,EAAOgB,OAAS,EACxB,OAAO,SAASoK,GACd,IAAIxH,EAAIwH,GAAK,EAAKA,EAAI,EAAKA,GAAK,GAAKA,EAAI,EAAGxK,EAAI,GAAKwD,KAAKe,MAAMiG,EAAIxK,GAChE2e,EAAKvf,EAAO4D,GACZ4b,EAAKxf,EAAO4D,EAAI,GAChB0b,EAAK1b,EAAI,EAAI5D,EAAO4D,EAAI,GAAK,EAAI2b,EAAKC,EACtCC,EAAK7b,EAAIhD,EAAI,EAAIZ,EAAO4D,EAAI,GAAK,EAAI4b,EAAKD,EAC9C,OAAOF,GAAOjU,EAAIxH,EAAIhD,GAAKA,EAAG0e,EAAIC,EAAIC,EAAIC,EAC5C,CACF,ICoC4BG,GCpDb,SAAS5f,GACtB,IAAIY,EAAIZ,EAAOgB,OACf,OAAO,SAASoK,GACd,IAAIxH,EAAIQ,KAAKe,QAAQiG,GAAK,GAAK,IAAMA,EAAIA,GAAKxK,GAC1C0e,EAAKtf,GAAQ4D,EAAIhD,EAAI,GAAKA,GAC1B2e,EAAKvf,EAAO4D,EAAIhD,GAChB4e,EAAKxf,GAAQ4D,EAAI,GAAKhD,GACtB6e,EAAKzf,GAAQ4D,EAAI,GAAKhD,GAC1B,OAAOye,GAAOjU,EAAIxH,EAAIhD,GAAKA,EAAG0e,EAAIC,EAAIC,EAAIC,EAC5C,CACF,G,kDCVIM,EAAM,8CACNC,EAAM,IAAIhQ,OAAO+P,EAAIpe,OAAQ,KAclB,WAASH,EAAGC,GACzB,IACIwe,EACAC,EACAC,EAHAC,EAAKL,EAAIM,UAAYL,EAAIK,UAAY,EAIrCzc,GAAK,EACLuH,EAAI,GACJmV,EAAI,GAMR,IAHA9e,GAAQ,GAAIC,GAAQ,IAGZwe,EAAKF,EAAI3F,KAAK5Y,MACd0e,EAAKF,EAAI5F,KAAK3Y,MACf0e,EAAKD,EAAG9f,OAASggB,IACpBD,EAAK1e,EAAEgJ,MAAM2V,EAAID,GACbhV,EAAEvH,GAAIuH,EAAEvH,IAAMuc,EACbhV,IAAIvH,GAAKuc,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IACxB/U,EAAEvH,GAAIuH,EAAEvH,IAAMsc,EACb/U,IAAIvH,GAAKsc,GAEd/U,IAAIvH,GAAK,KACT0c,EAAEtc,KAAK,CAACJ,EAAGA,EAAGtC,GAAGsK,EAAAA,EAAAA,GAAOqU,EAAIC,MAE9BE,EAAKJ,EAAIK,UAYX,OARID,EAAK3e,EAAET,SACTmf,EAAK1e,EAAEgJ,MAAM2V,GACTjV,EAAEvH,GAAIuH,EAAEvH,IAAMuc,EACbhV,IAAIvH,GAAKuc,GAKThV,EAAEnK,OAAS,EAAKsf,EAAE,GA7C3B,SAAa7e,GACX,OAAO,SAAS2J,GACd,OAAO3J,EAAE2J,GAAK,EAChB,CACF,CA0CQmV,CAAID,EAAE,GAAGhf,GApDjB,SAAcG,GACZ,OAAO,WACL,OAAOA,CACT,CACF,CAiDQ+e,CAAK/e,IACJA,EAAI6e,EAAEtf,OAAQ,SAASoK,GACtB,IAAK,IAAW0P,EAAPlX,EAAI,EAAMA,EAAInC,IAAKmC,EAAGuH,GAAG2P,EAAIwF,EAAE1c,IAAIA,GAAKkX,EAAExZ,EAAE8J,GACrD,OAAOD,EAAEsV,KAAK,GAChB,EACR,C,oCC7DA,QCFe,SAASC,GAEtB,IADA,IAAI9f,EAAI8f,EAAU1f,OAAS,EAAI,EAAG8e,EAAS,IAAI5a,MAAMtE,GAAIgD,EAAI,EACtDA,EAAIhD,GAAGkf,EAAOlc,GAAK,IAAM8c,EAAUjW,MAAU,EAAJ7G,EAAa,IAAJA,GACzD,OAAOkc,CACT,CDFA,CAAsB,+D,kBEFf,SAASa,EAAU3T,EAAQI,GAChC,OAAQ1J,UAAU1C,QAChB,KAAK,EAAG,MACR,KAAK,EAAG2G,KAAKyF,MAAMJ,GAAS,MAC5B,QAASrF,KAAKyF,MAAMA,GAAOJ,OAAOA,GAEpC,OAAOrF,IACT,C,6DCJO,MAAMiZ,EAAWC,OAAO,YAEhB,SAASC,IACtB,IAAI1gB,EAAQ,IAAI2gB,EAAAA,EACZ/T,EAAS,GACTI,EAAQ,GACR4T,EAAUJ,EAEd,SAAS/U,EAAMvL,GACb,IAAIsD,EAAIxD,EAAMmC,IAAIjC,GAClB,QAAUJ,IAAN0D,EAAiB,CACnB,GAAIod,IAAYJ,EAAU,OAAOI,EACjC5gB,EAAM6gB,IAAI3gB,EAAGsD,EAAIoJ,EAAOhJ,KAAK1D,GAAK,EACpC,CACA,OAAO8M,EAAMxJ,EAAIwJ,EAAMpM,OACzB,CA0BA,OAxBA6K,EAAMmB,OAAS,SAASjG,GACtB,IAAKrD,UAAU1C,OAAQ,OAAOgM,EAAOvC,QACrCuC,EAAS,GAAI5M,EAAQ,IAAI2gB,EAAAA,EACzB,IAAK,MAAM5gB,KAAS4G,EACd3G,EAAM8gB,IAAI/gB,IACdC,EAAM6gB,IAAI9gB,EAAO6M,EAAOhJ,KAAK7D,GAAS,GAExC,OAAO0L,CACT,EAEAA,EAAMuB,MAAQ,SAASrG,GACrB,OAAOrD,UAAU1C,QAAUoM,EAAQlI,MAAM8J,KAAKjI,GAAI8E,GAASuB,EAAM3C,OACnE,EAEAoB,EAAMmV,QAAU,SAASja,GACvB,OAAOrD,UAAU1C,QAAUggB,EAAUja,EAAG8E,GAASmV,CACnD,EAEAnV,EAAM2B,KAAO,WACX,OAAOsT,EAAQ9T,EAAQI,GAAO4T,QAAQA,EACxC,EAEAL,EAAUld,MAAMoI,EAAOnI,WAEhBmI,CACT,CCzCe,SAASsV,IACtB,IAKIC,EACArV,EANAF,EAAQiV,IAAUE,aAAQ9gB,GAC1B8M,EAASnB,EAAMmB,OACfqU,EAAexV,EAAMuB,MACrBkU,EAAK,EACLC,EAAK,EAGLvV,GAAQ,EACRwV,EAAe,EACfC,EAAe,EACfne,EAAQ,GAIZ,SAASoe,IACP,IAAI9gB,EAAIoM,IAAShM,OACb2gB,EAAUJ,EAAKD,EACfpC,EAAQyC,EAAUJ,EAAKD,EACvBM,EAAOD,EAAUL,EAAKC,EAC1BH,GAAQQ,EAAO1C,GAAS9a,KAAKhD,IAAI,EAAGR,EAAI4gB,EAA8B,EAAfC,GACnDzV,IAAOoV,EAAOhd,KAAKe,MAAMic,IAC7BlC,IAAU0C,EAAO1C,EAAQkC,GAAQxgB,EAAI4gB,IAAiBle,EACtDyI,EAAYqV,GAAQ,EAAII,GACpBxV,IAAOkT,EAAQ9a,KAAK4H,MAAMkT,GAAQnT,EAAY3H,KAAK4H,MAAMD,IAC7D,IAAI/L,EC7BO,SAAekf,EAAO0C,EAAMR,GACzClC,GAASA,EAAO0C,GAAQA,EAAMR,GAAQxgB,EAAI8C,UAAU1C,QAAU,GAAK4gB,EAAO1C,EAAOA,EAAQ,EAAG,GAAKte,EAAI,EAAI,GAAKwgB,EAM9G,IAJA,IAAIxd,GAAK,EACLhD,EAAoD,EAAhDwD,KAAKhD,IAAI,EAAGgD,KAAKyd,MAAMD,EAAO1C,GAASkC,IAC3ChU,EAAQ,IAAIlI,MAAMtE,KAEbgD,EAAIhD,GACXwM,EAAMxJ,GAAKsb,EAAQtb,EAAIwd,EAGzB,OAAOhU,CACT,CDiBiB0U,CAASlhB,GAAGmD,KAAI,SAASH,GAAK,OAAOsb,EAAQkC,EAAOxd,CAAG,IACpE,OAAOyd,EAAaM,EAAU3hB,EAAO2hB,UAAY3hB,EACnD,CAkDA,cAhEO6L,EAAMmV,QAgBbnV,EAAMmB,OAAS,SAASjG,GACtB,OAAOrD,UAAU1C,QAAUgM,EAAOjG,GAAI2a,KAAa1U,GACrD,EAEAnB,EAAMuB,MAAQ,SAASrG,GACrB,OAAOrD,UAAU1C,SAAWsgB,EAAIC,GAAMxa,EAAGua,GAAMA,EAAIC,GAAMA,EAAIG,KAAa,CAACJ,EAAIC,EACjF,EAEA1V,EAAMkW,WAAa,SAAShb,GAC1B,OAAQua,EAAIC,GAAMxa,EAAGua,GAAMA,EAAIC,GAAMA,EAAIvV,GAAQ,EAAM0V,GACzD,EAEA7V,EAAME,UAAY,WAChB,OAAOA,CACT,EAEAF,EAAMuV,KAAO,WACX,OAAOA,CACT,EAEAvV,EAAMG,MAAQ,SAASjF,GACrB,OAAOrD,UAAU1C,QAAUgL,IAAUjF,EAAG2a,KAAa1V,CACvD,EAEAH,EAAMmW,QAAU,SAASjb,GACvB,OAAOrD,UAAU1C,QAAUwgB,EAAepd,KAAKrE,IAAI,EAAG0hB,GAAgB1a,GAAI2a,KAAaF,CACzF,EAEA3V,EAAM2V,aAAe,SAASza,GAC5B,OAAOrD,UAAU1C,QAAUwgB,EAAepd,KAAKrE,IAAI,EAAGgH,GAAI2a,KAAaF,CACzE,EAEA3V,EAAM4V,aAAe,SAAS1a,GAC5B,OAAOrD,UAAU1C,QAAUygB,GAAgB1a,EAAG2a,KAAaD,CAC7D,EAEA5V,EAAMvI,MAAQ,SAASyD,GACrB,OAAOrD,UAAU1C,QAAUsC,EAAQc,KAAKhD,IAAI,EAAGgD,KAAKrE,IAAI,EAAGgH,IAAK2a,KAAape,CAC/E,EAEAuI,EAAM2B,KAAO,WACX,OAAO2T,EAAKnU,IAAU,CAACsU,EAAIC,IACtBvV,MAAMA,GACNwV,aAAaA,GACbC,aAAaA,GACbne,MAAMA,EACb,EAEOqd,EAAUld,MAAMie,IAAWhe,UACpC,CElFA,MAAMue,EAAM7d,KAAKmF,KAAK,IAClB2Y,EAAK9d,KAAKmF,KAAK,IACf4Y,EAAK/d,KAAKmF,KAAK,GAEnB,SAAS6Y,EAASlD,EAAO0C,EAAMS,GAC7B,MAAMjB,GAAQQ,EAAO1C,GAAS9a,KAAKhD,IAAI,EAAGihB,GACtCC,EAAQle,KAAKe,MAAMf,KAAKme,MAAMnB,IAC9BoB,EAAQpB,EAAOhd,KAAK0B,IAAI,GAAIwc,GAC5BG,EAASD,GAASP,EAAM,GAAKO,GAASN,EAAK,EAAIM,GAASL,EAAK,EAAI,EACrE,IAAIO,EAAIC,EAAIC,EAeZ,OAdIN,EAAQ,GACVM,EAAMxe,KAAK0B,IAAI,IAAKwc,GAASG,EAC7BC,EAAKte,KAAK4H,MAAMkT,EAAQ0D,GACxBD,EAAKve,KAAK4H,MAAM4V,EAAOgB,GACnBF,EAAKE,EAAM1D,KAASwD,EACpBC,EAAKC,EAAMhB,KAAQe,EACvBC,GAAOA,IAEPA,EAAMxe,KAAK0B,IAAI,GAAIwc,GAASG,EAC5BC,EAAKte,KAAK4H,MAAMkT,EAAQ0D,GACxBD,EAAKve,KAAK4H,MAAM4V,EAAOgB,GACnBF,EAAKE,EAAM1D,KAASwD,EACpBC,EAAKC,EAAMhB,KAAQe,GAErBA,EAAKD,GAAM,IAAOL,GAASA,EAAQ,EAAUD,EAASlD,EAAO0C,EAAc,EAARS,GAChE,CAACK,EAAIC,EAAIC,EAClB,CAmBO,SAASC,EAAc3D,EAAO0C,EAAMS,GAEzC,OAAOD,EADOlD,GAASA,EAAvB0C,GAAQA,EAAsBS,GAASA,GACH,EACtC,CAEO,SAASS,EAAS5D,EAAO0C,EAAMS,GACNA,GAASA,EACvC,MAAMV,GADNC,GAAQA,IAAM1C,GAASA,GACO0D,EAAMjB,EAAUkB,EAAcjB,EAAM1C,EAAOmD,GAASQ,EAAc3D,EAAO0C,EAAMS,GAC7G,OAAQV,GAAW,EAAI,IAAMiB,EAAM,EAAI,GAAKA,EAAMA,EACpD,CCtDe,SAASG,EAAUvhB,EAAGC,GACnC,OAAY,MAALD,GAAkB,MAALC,EAAYkZ,IAAMnZ,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAIkZ,GAC9E,CCFe,SAASqI,EAAWxhB,EAAGC,GACpC,OAAY,MAALD,GAAkB,MAALC,EAAYkZ,IAC5BlZ,EAAID,GAAK,EACTC,EAAID,EAAI,EACRC,GAAKD,EAAI,EACTmZ,GACN,CCHe,SAASsI,EAASC,GAC/B,IAAIC,EAAUC,EAAUC,EAiBxB,SAAS5iB,EAAKe,EAAGF,GAA0B,IAAvBgiB,EAAE5f,UAAA1C,OAAA,QAAAd,IAAAwD,UAAA,GAAAA,UAAA,GAAG,EAAG6f,EAAE7f,UAAA1C,OAAA,QAAAd,IAAAwD,UAAA,GAAAA,UAAA,GAAGlC,EAAER,OACjC,GAAIsiB,EAAKC,EAAI,CACX,GAAuB,IAAnBJ,EAAS7hB,EAAGA,GAAU,OAAOiiB,EACjC,EAAG,CACD,MAAMC,EAAOF,EAAKC,IAAQ,EACtBH,EAAS5hB,EAAEgiB,GAAMliB,GAAK,EAAGgiB,EAAKE,EAAM,EACnCD,EAAKC,CACZ,OAASF,EAAKC,EAChB,CACA,OAAOD,CACT,CAmBA,OAvCiB,IAAbJ,EAAEliB,QACJmiB,EAAWJ,EACXK,EAAWA,CAAC9iB,EAAGgB,IAAMyhB,EAAUG,EAAE5iB,GAAIgB,GACrC+hB,EAAQA,CAAC/iB,EAAGgB,IAAM4hB,EAAE5iB,GAAKgB,IAEzB6hB,EAAWD,IAAMH,GAAaG,IAAMF,EAAaE,EAAI1C,EACrD4C,EAAWF,EACXG,EAAQH,GAgCH,CAACziB,OAAMQ,OALd,SAAgBO,EAAGF,GAA0B,IAAvBgiB,EAAE5f,UAAA1C,OAAA,QAAAd,IAAAwD,UAAA,GAAAA,UAAA,GAAG,EACzB,MAAME,EAAInD,EAAKe,EAAGF,EAAGgiB,GADS5f,UAAA1C,OAAA,QAAAd,IAAAwD,UAAA,GAAAA,UAAA,GAAGlC,EAAER,QACL,GAC9B,OAAO4C,EAAI0f,GAAMD,EAAM7hB,EAAEoC,EAAI,GAAItC,IAAM+hB,EAAM7hB,EAAEoC,GAAItC,GAAKsC,EAAI,EAAIA,CAClE,EAEsBjD,MAjBtB,SAAea,EAAGF,GAA0B,IAAvBgiB,EAAE5f,UAAA1C,OAAA,QAAAd,IAAAwD,UAAA,GAAAA,UAAA,GAAG,EAAG6f,EAAE7f,UAAA1C,OAAA,QAAAd,IAAAwD,UAAA,GAAAA,UAAA,GAAGlC,EAAER,OAClC,GAAIsiB,EAAKC,EAAI,CACX,GAAuB,IAAnBJ,EAAS7hB,EAAGA,GAAU,OAAOiiB,EACjC,EAAG,CACD,MAAMC,EAAOF,EAAKC,IAAQ,EACtBH,EAAS5hB,EAAEgiB,GAAMliB,IAAM,EAAGgiB,EAAKE,EAAM,EACpCD,EAAKC,CACZ,OAASF,EAAKC,EAChB,CACA,OAAOD,CACT,EAQF,CAEA,SAAS9C,IACP,OAAO,CACT,CCnDA,MAAMiD,EAAkBR,EAASF,GACpBW,EAAcD,EAAgB9iB,MAG3C,GAF0B8iB,EAAgBhjB,KACdwiB,GCPb,SAAgB3hB,GAC7B,OAAa,OAANA,EAAaqZ,KAAOrZ,CAC7B,IDK6CL,OAC7C,G,yBEDO,SAAS0iB,EAAaniB,EAAGC,GAC9B,IAIImC,EAJAggB,EAAKniB,EAAIA,EAAET,OAAS,EACpB6iB,EAAKriB,EAAI4C,KAAKrE,IAAI6jB,EAAIpiB,EAAER,QAAU,EAClCM,EAAI,IAAI4D,MAAM2e,GACdre,EAAI,IAAIN,MAAM0e,GAGlB,IAAKhgB,EAAI,EAAGA,EAAIigB,IAAMjgB,EAAGtC,EAAEsC,GAAKzD,EAAMqB,EAAEoC,GAAInC,EAAEmC,IAC9C,KAAOA,EAAIggB,IAAMhgB,EAAG4B,EAAE5B,GAAKnC,EAAEmC,GAE7B,OAAO,SAASwH,GACd,IAAKxH,EAAI,EAAGA,EAAIigB,IAAMjgB,EAAG4B,EAAE5B,GAAKtC,EAAEsC,GAAGwH,GACrC,OAAO5F,CACT,CACF,CCrBe,WAAShE,EAAGC,GACzB,IAAInB,EAAI,IAAIwjB,KACZ,OAAOtiB,GAAKA,EAAGC,GAAKA,EAAG,SAAS2J,GAC9B,OAAO9K,EAAEyjB,QAAQviB,GAAK,EAAI4J,GAAK3J,EAAI2J,GAAI9K,CACzC,CACF,C,eCHe,WAASkB,EAAGC,GACzB,IAEIoL,EAFAjJ,EAAI,CAAC,EACL4B,EAAI,CAAC,EAMT,IAAKqH,KAHK,OAANrL,GAA2B,kBAANA,IAAgBA,EAAI,CAAC,GACpC,OAANC,GAA2B,kBAANA,IAAgBA,EAAI,CAAC,GAEpCA,EACJoL,KAAKrL,EACPoC,EAAEiJ,GAAK1M,EAAMqB,EAAEqL,GAAIpL,EAAEoL,IAErBrH,EAAEqH,GAAKpL,EAAEoL,GAIb,OAAO,SAASzB,GACd,IAAKyB,KAAKjJ,EAAG4B,EAAEqH,GAAKjJ,EAAEiJ,GAAGzB,GACzB,OAAO5F,CACT,CACF,C,0BCtBe,WAAShE,EAAGC,GACpBA,IAAGA,EAAI,IACZ,IAEImC,EAFAhD,EAAIY,EAAI4C,KAAKrE,IAAI0B,EAAET,OAAQQ,EAAER,QAAU,EACvCwE,EAAI/D,EAAEgJ,QAEV,OAAO,SAASW,GACd,IAAKxH,EAAI,EAAGA,EAAIhD,IAAKgD,EAAG4B,EAAE5B,GAAKpC,EAAEoC,IAAM,EAAIwH,GAAK3J,EAAEmC,GAAKwH,EACvD,OAAO5F,CACT,CACF,CCCe,WAAShE,EAAGC,GACzB,IAAkB+D,EDAUlE,ECAxB8J,SAAW3J,EACf,OAAY,MAALA,GAAmB,YAAN2J,GAAkB/J,EAAAA,EAAAA,GAASI,IAClC,WAAN2J,EAAiBQ,EAAAA,EACZ,WAANR,GAAmB5F,GAAIwU,EAAAA,EAAAA,IAAMvY,KAAOA,EAAI+D,EAAGoU,EAAAA,IAAOoK,EAAAA,EAClDviB,aAAauY,EAAAA,GAAQJ,EAAAA,GACrBnY,aAAaqiB,KAAOG,GDLE3iB,ECMRG,GDLbyiB,YAAYC,OAAO7iB,IAAQA,aAAa8iB,SCMzClf,MAAMmf,QAAQ5iB,GAAKkiB,EACE,oBAAdliB,EAAE6iB,SAAgD,oBAAf7iB,EAAE+I,UAA2B6Q,MAAM5Z,GAAK8iB,EAClF3Y,EAAAA,EAHmB4Y,IAGXhjB,EAAGC,EACnB,CCrBe,WAASD,EAAGC,GACzB,OAAOD,GAAKA,EAAGC,GAAKA,EAAG,SAAS2J,GAC9B,OAAOhH,KAAK4H,MAAMxK,GAAK,EAAI4J,GAAK3J,EAAI2J,EACtC,CACF,CCJe,SAASQ,EAAOtK,GAC7B,OAAQA,CACV,CCGA,IAAImjB,EAAO,CAAC,EAAG,GAER,SAASvX,EAAS5L,GACvB,OAAOA,CACT,CAEA,SAASojB,EAAUljB,EAAGC,GACpB,OAAQA,GAAMD,GAAKA,GACb,SAASF,GAAK,OAAQA,EAAIE,GAAKC,CAAG,GCbRH,EDcjB+Z,MAAM5Z,GAAKkZ,IAAM,GCbzB,WACL,OAAOrZ,CACT,GAHa,IAAmBA,CDelC,CAUA,SAASqjB,EAAM3X,EAAQI,EAAOwX,GAC5B,IAAIC,EAAK7X,EAAO,GAAI8X,EAAK9X,EAAO,GAAIsU,EAAKlU,EAAM,GAAImU,EAAKnU,EAAM,GAG9D,OAFI0X,EAAKD,GAAIA,EAAKH,EAAUI,EAAID,GAAKvD,EAAKsD,EAAYrD,EAAID,KACrDuD,EAAKH,EAAUG,EAAIC,GAAKxD,EAAKsD,EAAYtD,EAAIC,IAC3C,SAASjgB,GAAK,OAAOggB,EAAGuD,EAAGvjB,GAAK,CACzC,CAEA,SAASyjB,EAAQ/X,EAAQI,EAAOwX,GAC9B,IAAII,EAAI5gB,KAAKrE,IAAIiN,EAAOhM,OAAQoM,EAAMpM,QAAU,EAC5CV,EAAI,IAAI4E,MAAM8f,GACdrc,EAAI,IAAIzD,MAAM8f,GACdphB,GAAK,EAQT,IALIoJ,EAAOgY,GAAKhY,EAAO,KACrBA,EAASA,EAAOvC,QAAQkX,UACxBvU,EAAQA,EAAM3C,QAAQkX,aAGf/d,EAAIohB,GACX1kB,EAAEsD,GAAK8gB,EAAU1X,EAAOpJ,GAAIoJ,EAAOpJ,EAAI,IACvC+E,EAAE/E,GAAKghB,EAAYxX,EAAMxJ,GAAIwJ,EAAMxJ,EAAI,IAGzC,OAAO,SAAStC,GACd,IAAIsC,EAAIqhB,EAAOjY,EAAQ1L,EAAG,EAAG0jB,GAAK,EAClC,OAAOrc,EAAE/E,GAAGtD,EAAEsD,GAAGtC,GACnB,CACF,CAEO,SAASkM,EAAK7L,EAAQpB,GAC3B,OAAOA,EACFyM,OAAOrL,EAAOqL,UACdI,MAAMzL,EAAOyL,SACbwX,YAAYjjB,EAAOijB,eACnBvI,MAAM1a,EAAO0a,SACb2E,QAAQrf,EAAOqf,UACtB,CAEO,SAASkE,IACd,IAGIpY,EACAqY,EACAnE,EAEAoE,EACAC,EACApI,EATAjQ,EAASyX,EACTrX,EAAQqX,EACRG,EAAcU,EAIdjJ,EAAQnP,EAKZ,SAASwU,IACP,IAAI9gB,EAAIwD,KAAKrE,IAAIiN,EAAOhM,OAAQoM,EAAMpM,QAItC,OAHIqb,IAAUnP,IAAUmP,EA7D5B,SAAiB7a,EAAGC,GAClB,IAAI2J,EAEJ,OADI5J,EAAIC,IAAG2J,EAAI5J,EAAGA,EAAIC,EAAGA,EAAI2J,GACtB,SAAS9J,GAAK,OAAO8C,KAAKhD,IAAII,EAAG4C,KAAKrE,IAAI0B,EAAGH,GAAK,CAC3D,CAyDoCikB,CAAQvY,EAAO,GAAIA,EAAOpM,EAAI,KAC9DwkB,EAAYxkB,EAAI,EAAImkB,EAAUJ,EAC9BU,EAASpI,EAAQ,KACVpR,CACT,CAEA,SAASA,EAAMvK,GACb,OAAY,MAALA,GAAa+Z,MAAM/Z,GAAKA,GAAK0f,GAAWqE,IAAWA,EAASD,EAAUpY,EAAOjJ,IAAI+I,GAAYM,EAAOwX,KAAe9X,EAAUuP,EAAM/a,IAC5I,CA8BA,OA5BAuK,EAAM2Z,OAAS,SAAS9f,GACtB,OAAO2W,EAAM8I,GAAalI,IAAUA,EAAQmI,EAAUhY,EAAOJ,EAAOjJ,IAAI+I,GAAY2Y,EAAAA,KAAqB/f,IAC3G,EAEAmG,EAAMmB,OAAS,SAASjG,GACtB,OAAOrD,UAAU1C,QAAUgM,EAAS9H,MAAM8J,KAAKjI,EAAG6E,GAAS8V,KAAa1U,EAAOvC,OACjF,EAEAoB,EAAMuB,MAAQ,SAASrG,GACrB,OAAOrD,UAAU1C,QAAUoM,EAAQlI,MAAM8J,KAAKjI,GAAI2a,KAAatU,EAAM3C,OACvE,EAEAoB,EAAMkW,WAAa,SAAShb,GAC1B,OAAOqG,EAAQlI,MAAM8J,KAAKjI,GAAI6d,EAAcc,EAAkBhE,GAChE,EAEA7V,EAAMwQ,MAAQ,SAAStV,GACrB,OAAOrD,UAAU1C,QAAUqb,IAAQtV,GAAWmG,EAAUwU,KAAarF,IAAUnP,CACjF,EAEArB,EAAM+Y,YAAc,SAAS7d,GAC3B,OAAOrD,UAAU1C,QAAU4jB,EAAc7d,EAAG2a,KAAakD,CAC3D,EAEA/Y,EAAMmV,QAAU,SAASja,GACvB,OAAOrD,UAAU1C,QAAUggB,EAAUja,EAAG8E,GAASmV,CACnD,EAEO,SAAS5V,EAAGua,GAEjB,OADA7Y,EAAY1B,EAAG+Z,EAAcQ,EACtBjE,GACT,CACF,CAEe,SAASkE,IACtB,OAAOV,IAAchY,EAAUA,EACjC,CE3HA,ICCW2Y,EDDPC,EAAK,2EAEM,SAASC,EAAgBrF,GACtC,KAAMsF,EAAQF,EAAG1L,KAAKsG,IAAa,MAAM,IAAIle,MAAM,mBAAqBke,GACxE,IAAIsF,EACJ,OAAO,IAAIC,EAAgB,CACzBC,KAAMF,EAAM,GACZ1iB,MAAO0iB,EAAM,GACbG,KAAMH,EAAM,GACZI,OAAQJ,EAAM,GACdxF,KAAMwF,EAAM,GACZnjB,MAAOmjB,EAAM,GACbK,MAAOL,EAAM,GACbM,UAAWN,EAAM,IAAMA,EAAM,GAAGvb,MAAM,GACtCyP,KAAM8L,EAAM,GACZzW,KAAMyW,EAAM,KAEhB,CAIO,SAASC,EAAgBvF,GAC9B/Y,KAAKue,UAA0BhmB,IAAnBwgB,EAAUwF,KAAqB,IAAMxF,EAAUwF,KAAO,GAClEve,KAAKrE,WAA4BpD,IAApBwgB,EAAUpd,MAAsB,IAAMod,EAAUpd,MAAQ,GACrEqE,KAAKwe,UAA0BjmB,IAAnBwgB,EAAUyF,KAAqB,IAAMzF,EAAUyF,KAAO,GAClExe,KAAKye,YAA8BlmB,IAArBwgB,EAAU0F,OAAuB,GAAK1F,EAAU0F,OAAS,GACvEze,KAAK6Y,OAASE,EAAUF,KACxB7Y,KAAK9E,WAA4B3C,IAApBwgB,EAAU7d,WAAsB3C,GAAawgB,EAAU7d,MACpE8E,KAAK0e,QAAU3F,EAAU2F,MACzB1e,KAAK2e,eAAoCpmB,IAAxBwgB,EAAU4F,eAA0BpmB,GAAawgB,EAAU4F,UAC5E3e,KAAKuS,OAASwG,EAAUxG,KACxBvS,KAAK4H,UAA0BrP,IAAnBwgB,EAAUnR,KAAqB,GAAKmR,EAAUnR,KAAO,EACnE,CExBO,SAASgX,EAAmBjlB,EAAGoJ,GACpC,IAAK9G,GAAKtC,EAAIoJ,EAAIpJ,EAAEklB,cAAc9b,EAAI,GAAKpJ,EAAEklB,iBAAiBC,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAI7iB,EAAG8iB,EAAcplB,EAAEmJ,MAAM,EAAG7G,GAIhC,MAAO,CACL8iB,EAAY1lB,OAAS,EAAI0lB,EAAY,GAAKA,EAAYjc,MAAM,GAAKic,GAChEplB,EAAEmJ,MAAM7G,EAAI,GAEjB,CCjBe,WAAStC,GACtB,OAAOA,EAAIilB,EAAmBniB,KAAK6E,IAAI3H,KAASA,EAAE,GAAKqZ,GACzD,CCFe,WAASrZ,EAAGoJ,GACzB,IAAIpK,EAAIimB,EAAmBjlB,EAAGoJ,GAC9B,IAAKpK,EAAG,OAAOgB,EAAI,GACnB,IAAIolB,EAAcpmB,EAAE,GAChBqmB,EAAWrmB,EAAE,GACjB,OAAOqmB,EAAW,EAAI,KAAO,IAAIzhB,OAAOyhB,GAAUlG,KAAK,KAAOiG,EACxDA,EAAY1lB,OAAS2lB,EAAW,EAAID,EAAYjc,MAAM,EAAGkc,EAAW,GAAK,IAAMD,EAAYjc,MAAMkc,EAAW,GAC5GD,EAAc,IAAIxhB,MAAMyhB,EAAWD,EAAY1lB,OAAS,GAAGyf,KAAK,IACxE,CJUAsF,EAAgB9d,UAAYge,EAAgBhe,UAe5Cge,EAAgBhe,UAAUuC,SAAW,WACnC,OAAO7C,KAAKue,KACNve,KAAKrE,MACLqE,KAAKwe,KACLxe,KAAKye,QACJze,KAAK6Y,KAAO,IAAM,UACHtgB,IAAfyH,KAAK9E,MAAsB,GAAKuB,KAAKhD,IAAI,EAAgB,EAAbuG,KAAK9E,SACjD8E,KAAK0e,MAAQ,IAAM,UACAnmB,IAAnByH,KAAK2e,UAA0B,GAAK,IAAMliB,KAAKhD,IAAI,EAAoB,EAAjBuG,KAAK2e,aAC3D3e,KAAKuS,KAAO,IAAM,IACnBvS,KAAK4H,IACb,EK1CA,SACE,IAAKqX,CAACtlB,EAAGoJ,KAAW,IAAJpJ,GAASulB,QAAQnc,GACjC,EAAMpJ,GAAM8C,KAAK4H,MAAM1K,GAAGkJ,SAAS,GACnC,EAAMlJ,GAAMA,EAAI,GAChB,EHRa,SAASA,GACtB,OAAO8C,KAAK6E,IAAI3H,EAAI8C,KAAK4H,MAAM1K,KAAO,KAChCA,EAAEwlB,eAAe,MAAMC,QAAQ,KAAM,IACrCzlB,EAAEkJ,SAAS,GACnB,EGKE,EAAK6E,CAAC/N,EAAGoJ,IAAMpJ,EAAEklB,cAAc9b,GAC/B,EAAKwY,CAAC5hB,EAAGoJ,IAAMpJ,EAAEulB,QAAQnc,GACzB,EAAKkQ,CAACtZ,EAAGoJ,IAAMpJ,EAAE0lB,YAAYtc,GAC7B,EAAMpJ,GAAM8C,KAAK4H,MAAM1K,GAAGkJ,SAAS,GACnC,EAAKE,CAACpJ,EAAGoJ,IAAMuc,EAAkB,IAAJ3lB,EAASoJ,GACtC,EAAKuc,EACL,EJXa,SAAS3lB,EAAGoJ,GACzB,IAAIpK,EAAIimB,EAAmBjlB,EAAGoJ,GAC9B,IAAKpK,EAAG,OAAOgB,EAAI,GACnB,IAAIolB,EAAcpmB,EAAE,GAChBqmB,EAAWrmB,EAAE,GACbsD,EAAI+iB,GAAYd,EAAuE,EAAtDzhB,KAAKhD,KAAK,EAAGgD,KAAKrE,IAAI,EAAGqE,KAAKe,MAAMwhB,EAAW,MAAY,EAC5F/lB,EAAI8lB,EAAY1lB,OACpB,OAAO4C,IAAMhD,EAAI8lB,EACX9iB,EAAIhD,EAAI8lB,EAAc,IAAIxhB,MAAMtB,EAAIhD,EAAI,GAAG6f,KAAK,KAChD7c,EAAI,EAAI8iB,EAAYjc,MAAM,EAAG7G,GAAK,IAAM8iB,EAAYjc,MAAM7G,GAC1D,KAAO,IAAIsB,MAAM,EAAItB,GAAG6c,KAAK,KAAO8F,EAAmBjlB,EAAG8C,KAAKhD,IAAI,EAAGsJ,EAAI9G,EAAI,IAAI,EAC1F,EICE,EAAMtC,GAAM8C,KAAK4H,MAAM1K,GAAGkJ,SAAS,IAAI0c,cACvC,EAAM5lB,GAAM8C,KAAK4H,MAAM1K,GAAGkJ,SAAS,KCjBtB,WAASlJ,GACtB,OAAOA,CACT,CCOA,ICPI6lB,EACOla,EACAma,EDKPrjB,EAAMmB,MAAM+C,UAAUlE,IACtBsjB,GAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAEhE,YAASF,GACtB,IEbsBG,EAAUC,EFa5BC,OAA4BtnB,IAApBinB,EAAOG,eAA+CpnB,IAArBinB,EAAOI,UAA0Bra,GEbxDoa,EFa+EvjB,EAAIqB,KAAK+hB,EAAOG,SAAUG,QEb/FF,EFawGJ,EAAOI,UAAY,GEZpJ,SAASpnB,EAAO0C,GAOrB,IANA,IAAIe,EAAIzD,EAAMa,OACVoK,EAAI,GACJ4Z,EAAI,EACJpK,EAAI0M,EAAS,GACbtmB,EAAS,EAEN4C,EAAI,GAAKgX,EAAI,IACd5Z,EAAS4Z,EAAI,EAAI/X,IAAO+X,EAAIxW,KAAKhD,IAAI,EAAGyB,EAAQ7B,IACpDoK,EAAEpH,KAAK7D,EAAMunB,UAAU9jB,GAAKgX,EAAGhX,EAAIgX,OAC9B5Z,GAAU4Z,EAAI,GAAK/X,KACxB+X,EAAI0M,EAAStC,GAAKA,EAAI,GAAKsC,EAAStmB,QAGtC,OAAOoK,EAAEuW,UAAUlB,KAAK8G,EAC1B,GFFII,OAAqCznB,IAApBinB,EAAOS,SAAyB,GAAKT,EAAOS,SAAS,GAAK,GAC3EC,OAAqC3nB,IAApBinB,EAAOS,SAAyB,GAAKT,EAAOS,SAAS,GAAK,GAC3EE,OAA6B5nB,IAAnBinB,EAAOW,QAAwB,IAAMX,EAAOW,QAAU,GAChEC,OAA+B7nB,IAApBinB,EAAOY,SAAyB7a,EGjBlC,SAAS6a,GACtB,OAAO,SAAS5nB,GACd,OAAOA,EAAM4mB,QAAQ,UAAU,SAASnjB,GACtC,OAAOmkB,GAAUnkB,EACnB,GACF,CACF,CHW4DokB,CAAejkB,EAAIqB,KAAK+hB,EAAOY,SAAUE,SAC/FC,OAA6BhoB,IAAnBinB,EAAOe,QAAwB,IAAMf,EAAOe,QAAU,GAChEC,OAAyBjoB,IAAjBinB,EAAOgB,MAAsB,SAAMhB,EAAOgB,MAAQ,GAC1DC,OAAqBloB,IAAfinB,EAAOiB,IAAoB,MAAQjB,EAAOiB,IAAM,GAE1D,SAASC,EAAU3H,GAGjB,IAAIwF,GAFJxF,EAAYqF,EAAgBrF,IAEPwF,KACjB5iB,EAAQod,EAAUpd,MAClB6iB,EAAOzF,EAAUyF,KACjBC,EAAS1F,EAAU0F,OACnB5F,EAAOE,EAAUF,KACjB3d,EAAQ6d,EAAU7d,MAClBwjB,EAAQ3F,EAAU2F,MAClBC,EAAY5F,EAAU4F,UACtBpM,EAAOwG,EAAUxG,KACjB3K,EAAOmR,EAAUnR,KAGR,MAATA,GAAc8W,GAAQ,EAAM9W,EAAO,KAG7B+Y,EAAY/Y,UAAqBrP,IAAdomB,IAA4BA,EAAY,IAAKpM,GAAO,EAAM3K,EAAO,MAG1FiR,GAAkB,MAAT0F,GAA0B,MAAV5iB,KAAgBkd,GAAO,EAAM0F,EAAO,IAAK5iB,EAAQ,KAI9E,IAAIilB,EAAoB,MAAXnC,EAAiBuB,EAA4B,MAAXvB,GAAkB,SAASoC,KAAKjZ,GAAQ,IAAMA,EAAK4K,cAAgB,GAC9GsO,EAAoB,MAAXrC,EAAiByB,EAAiB,OAAOW,KAAKjZ,GAAQ2Y,EAAU,GAKzEQ,EAAaJ,EAAY/Y,GACzBoZ,EAAc,aAAaH,KAAKjZ,GAUpC,SAAStC,EAAO9M,GACd,IAEIyD,EAAGhD,EAAG4E,EAFNojB,EAAcL,EACdM,EAAcJ,EAGlB,GAAa,MAATlZ,EACFsZ,EAAcH,EAAWvoB,GAAS0oB,EAClC1oB,EAAQ,OACH,CAIL,IAAI2oB,GAHJ3oB,GAASA,GAGmB,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQkb,MAAMlb,GAASioB,EAAMM,EAAWtkB,KAAK6E,IAAI9I,GAAQmmB,GAGrDpM,IAAM/Z,EIjFH,SAASgL,GACtB4d,EAAK,IAAK,IAAkCrG,EAA9B9hB,EAAIuK,EAAEnK,OAAQ4C,EAAI,EAAGolB,GAAM,EAAOplB,EAAIhD,IAAKgD,EACvD,OAAQuH,EAAEvH,IACR,IAAK,IAAKolB,EAAKtG,EAAK9e,EAAG,MACvB,IAAK,IAAgB,IAAPolB,IAAUA,EAAKplB,GAAG8e,EAAK9e,EAAG,MACxC,QAAS,KAAMuH,EAAEvH,GAAI,MAAMmlB,EAASC,EAAK,IAAGA,EAAK,GAGrD,OAAOA,EAAK,EAAI7d,EAAEV,MAAM,EAAGue,GAAM7d,EAAEV,MAAMiY,EAAK,GAAKvX,CACrD,CJwE0B8d,CAAW9oB,IAGzB2oB,GAA4B,KAAV3oB,GAAwB,MAATgmB,IAAc2C,GAAgB,GAGnEF,GAAeE,EAA0B,MAAT3C,EAAeA,EAAOgC,EAAkB,MAAThC,GAAyB,MAATA,EAAe,GAAKA,GAAQyC,EAC3GC,GAAwB,MAATtZ,EAAe8X,GAAS,EAAIxB,EAAiB,GAAK,IAAMgD,GAAeC,GAA0B,MAAT3C,EAAe,IAAM,IAIxHwC,EAEF,IADA/kB,GAAK,EAAGhD,EAAIT,EAAMa,SACT4C,EAAIhD,GACX,GAA6B,IAAzB4E,EAAIrF,EAAM+oB,WAAWtlB,KAAc4B,EAAI,GAAI,CAC7CqjB,GAAqB,KAANrjB,EAAWsiB,EAAU3nB,EAAMsK,MAAM7G,EAAI,GAAKzD,EAAMsK,MAAM7G,IAAMilB,EAC3E1oB,EAAQA,EAAMsK,MAAM,EAAG7G,GACvB,KACF,CAGN,CAGIyiB,IAAU7F,IAAMrgB,EAAQqnB,EAAMrnB,EAAOgpB,MAGzC,IAAInoB,EAAS4nB,EAAY5nB,OAASb,EAAMa,OAAS6nB,EAAY7nB,OACzDghB,EAAUhhB,EAAS6B,EAAQ,IAAIqC,MAAMrC,EAAQ7B,EAAS,GAAGyf,KAAKyF,GAAQ,GAM1E,OAHIG,GAAS7F,IAAMrgB,EAAQqnB,EAAMxF,EAAU7hB,EAAO6hB,EAAQhhB,OAAS6B,EAAQgmB,EAAY7nB,OAASmoB,KAAWnH,EAAU,IAG7G1e,GACN,IAAK,IAAKnD,EAAQyoB,EAAczoB,EAAQ0oB,EAAc7G,EAAS,MAC/D,IAAK,IAAK7hB,EAAQyoB,EAAc5G,EAAU7hB,EAAQ0oB,EAAa,MAC/D,IAAK,IAAK1oB,EAAQ6hB,EAAQvX,MAAM,EAAGzJ,EAASghB,EAAQhhB,QAAU,GAAK4nB,EAAczoB,EAAQ0oB,EAAc7G,EAAQvX,MAAMzJ,GAAS,MAC9H,QAASb,EAAQ6hB,EAAU4G,EAAczoB,EAAQ0oB,EAGnD,OAAOd,EAAS5nB,EAClB,CAMA,OAtEAmmB,OAA0BpmB,IAAdomB,EAA0B,EAChC,SAASkC,KAAKjZ,GAAQnL,KAAKhD,IAAI,EAAGgD,KAAKrE,IAAI,GAAIumB,IAC/CliB,KAAKhD,IAAI,EAAGgD,KAAKrE,IAAI,GAAIumB,IAgE/BrZ,EAAOzC,SAAW,WAChB,OAAOkW,EAAY,EACrB,EAEOzT,CACT,CAYA,MAAO,CACLA,OAAQob,EACRjB,aAZF,SAAsB1G,EAAWvgB,GAC/B,IAAI+iB,EAAImF,IAAW3H,EAAYqF,EAAgBrF,IAAsBnR,KAAO,IAAKmR,IAC7ErR,EAAiE,EAA7DjL,KAAKhD,KAAK,EAAGgD,KAAKrE,IAAI,EAAGqE,KAAKe,MAAMwhB,EAASxmB,GAAS,KAC1D0M,EAAIzI,KAAK0B,IAAI,IAAKuJ,GAClBkZ,EAASlB,GAAS,EAAIhY,EAAI,GAC9B,OAAO,SAASlP,GACd,OAAO+iB,EAAErW,EAAI1M,GAASooB,CACxB,CACF,EAMF,CKhJe,SAAShc,GAAW2S,EAAO0C,EAAMS,EAAO3B,GACrD,IACI4F,EADAlF,EAAO0B,EAAS5D,EAAO0C,EAAMS,GAGjC,QADA3B,EAAYqF,EAA6B,MAAbrF,EAAoB,KAAOA,IACrCnR,MAChB,IAAK,IACH,IAAIpP,EAAQiE,KAAKhD,IAAIgD,KAAK6E,IAAIiW,GAAQ9a,KAAK6E,IAAI2Y,IAE/C,OAD2B,MAAvBlB,EAAU4F,WAAsBjL,MAAMiL,ECRjC,SAASlF,EAAMjhB,GAC5B,OAAOiE,KAAKhD,IAAI,EAAgE,EAA7DgD,KAAKhD,KAAK,EAAGgD,KAAKrE,IAAI,EAAGqE,KAAKe,MAAMwhB,EAASxmB,GAAS,KAAWwmB,EAASviB,KAAK6E,IAAImY,IACxG,CDM4DgI,CAAgBhI,EAAMjhB,MAASugB,EAAU4F,UAAYA,GACpGc,EAAa1G,EAAWvgB,GAEjC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACwB,MAAvBugB,EAAU4F,WAAsBjL,MAAMiL,EEhBjC,SAASlF,EAAMhgB,GAE5B,OADAggB,EAAOhd,KAAK6E,IAAImY,GAAOhgB,EAAMgD,KAAK6E,IAAI7H,GAAOggB,EACtChd,KAAKhD,IAAI,EAAGulB,EAASvlB,GAAOulB,EAASvF,IAAS,CACvD,CFa4DiI,CAAejI,EAAMhd,KAAKhD,IAAIgD,KAAK6E,IAAIiW,GAAQ9a,KAAK6E,IAAI2Y,QAAUlB,EAAU4F,UAAYA,GAAgC,MAAnB5F,EAAUnR,OACrK,MAEF,IAAK,IACL,IAAK,IACwB,MAAvBmR,EAAU4F,WAAsBjL,MAAMiL,EGrBjC,SAASlF,GACtB,OAAOhd,KAAKhD,IAAI,GAAIulB,EAASviB,KAAK6E,IAAImY,IACxC,CHmB4DkI,CAAelI,MAAQV,EAAU4F,UAAYA,EAAuC,GAAP,MAAnB5F,EAAUnR,OAI9H,OAAOtC,EAAOyT,EAChB,CIvBO,SAAS6I,GAAU1d,GACxB,IAAImB,EAASnB,EAAMmB,OAkDnB,OAhDAnB,EAAMkB,MAAQ,SAASsV,GACrB,IAAI/hB,EAAI0M,IACR,O/BkBW,SAAekS,EAAO0C,EAAMS,GAEzC,MAD8BA,GAASA,GACzB,GAAI,MAAO,GACzB,IAFcnD,GAASA,MAAvB0C,GAAQA,GAEY,MAAO,CAAC1C,GAC5B,MAAMyC,EAAUC,EAAO1C,GAAQwD,EAAIC,EAAIC,GAAOjB,EAAUS,EAASR,EAAM1C,EAAOmD,GAASD,EAASlD,EAAO0C,EAAMS,GAC7G,KAAMM,GAAMD,GAAK,MAAO,GACxB,MAAM9hB,EAAI+hB,EAAKD,EAAK,EAAG3V,EAAQ,IAAI7H,MAAMtE,GACzC,GAAI+gB,EACF,GAAIiB,EAAM,EAAG,IAAK,IAAIhf,EAAI,EAAGA,EAAIhD,IAAKgD,EAAGmJ,EAAMnJ,IAAM+e,EAAK/e,IAAMgf,OAC3D,IAAK,IAAIhf,EAAI,EAAGA,EAAIhD,IAAKgD,EAAGmJ,EAAMnJ,IAAM+e,EAAK/e,GAAKgf,OAEvD,GAAIA,EAAM,EAAG,IAAK,IAAIhf,EAAI,EAAGA,EAAIhD,IAAKgD,EAAGmJ,EAAMnJ,IAAM8e,EAAK9e,IAAMgf,OAC3D,IAAK,IAAIhf,EAAI,EAAGA,EAAIhD,IAAKgD,EAAGmJ,EAAMnJ,IAAM8e,EAAK9e,GAAKgf,EAEzD,OAAO7V,CACT,C+BjCWA,CAAMzM,EAAE,GAAIA,EAAEA,EAAEU,OAAS,GAAa,MAATqhB,EAAgB,GAAKA,EAC3D,EAEAxW,EAAMU,WAAa,SAAS8V,EAAO3B,GACjC,IAAIpgB,EAAI0M,IACR,OAAOT,GAAWjM,EAAE,GAAIA,EAAEA,EAAEU,OAAS,GAAa,MAATqhB,EAAgB,GAAKA,EAAO3B,EACvE,EAEA7U,EAAM2d,KAAO,SAASnH,GACP,MAATA,IAAeA,EAAQ,IAE3B,IAKIoH,EACArI,EANA9gB,EAAI0M,IACJgc,EAAK,EACLtG,EAAKpiB,EAAEU,OAAS,EAChBke,EAAQ5e,EAAE0oB,GACVpH,EAAOthB,EAAEoiB,GAGTgH,EAAU,GAOd,IALI9H,EAAO1C,IACTkC,EAAOlC,EAAOA,EAAQ0C,EAAMA,EAAOR,EACnCA,EAAO4H,EAAIA,EAAKtG,EAAIA,EAAKtB,GAGpBsI,KAAY,GAAG,CAEpB,IADAtI,EAAOyB,EAAc3D,EAAO0C,EAAMS,MACrBoH,EAGX,OAFAnpB,EAAE0oB,GAAM9J,EACR5e,EAAEoiB,GAAMd,EACD5U,EAAO1M,GACT,GAAI8gB,EAAO,EAChBlC,EAAQ9a,KAAKe,MAAM+Z,EAAQkC,GAAQA,EACnCQ,EAAOxd,KAAKyd,KAAKD,EAAOR,GAAQA,MAC3B,MAAIA,EAAO,GAIhB,MAHAlC,EAAQ9a,KAAKyd,KAAK3C,EAAQkC,GAAQA,EAClCQ,EAAOxd,KAAKe,MAAMyc,EAAOR,GAAQA,CAGnC,CACAqI,EAAUrI,CACZ,CAEA,OAAOvV,CACT,EAEOA,CACT,CAEe,SAAS2R,KACtB,IAAI3R,EAAQ+Z,IAQZ,OANA/Z,EAAM2B,KAAO,WACX,OAAOA,EAAK3B,EAAO2R,KACrB,EAEAmD,EAAUld,MAAMoI,EAAOnI,WAEhB6lB,GAAU1d,EACnB,CRxDEsb,EAASwC,GAPG,CACZpC,UAAW,IACXD,SAAU,CAAC,GACXM,SAAU,CAAC,IAAK,MAKhB3a,EAASka,EAAOla,OAChBma,EAAeD,EAAOC,a,+GSJxB,SAASwC,GAAOC,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,GAE5C,MAAMC,EAAgB,CACpB,CAACC,GAAAA,EAAS,EAAQC,GAAAA,IAClB,CAACD,GAAAA,EAAS,EAAI,EAAIC,GAAAA,IAClB,CAACD,GAAAA,EAAQ,GAAI,GAAKC,GAAAA,IAClB,CAACD,GAAAA,EAAQ,GAAI,GAAKC,GAAAA,IAClB,CAACH,EAAS,EAAQI,GAAAA,IAClB,CAACJ,EAAS,EAAI,EAAII,GAAAA,IAClB,CAACJ,EAAQ,GAAI,GAAKI,GAAAA,IAClB,CAACJ,EAAQ,GAAI,GAAKI,GAAAA,IAClB,CAAGL,EAAO,EAAQM,GAAAA,IAClB,CAAGN,EAAO,EAAI,EAAIM,GAAAA,IAClB,CAAGN,EAAO,EAAI,EAAIM,GAAAA,IAClB,CAAGN,EAAM,GAAI,GAAKM,GAAAA,IAClB,CAAIP,EAAM,EAAQQ,GAAAA,IAClB,CAAIR,EAAM,EAAI,EAAIQ,GAAAA,IAClB,CAAGT,EAAO,EAAQU,GAAAA,IAClB,CAAEX,EAAQ,EAAQY,GAAAA,IAClB,CAAEZ,EAAQ,EAAI,EAAIY,GAAAA,IAClB,CAAGb,EAAO,EAAQc,GAAAA,KAWpB,SAASC,EAAa1L,EAAO0C,EAAMS,GACjC,MAAM9hB,EAAS6D,KAAK6E,IAAI2Y,EAAO1C,GAASmD,EAClCze,EAAIqf,GAASvgB,IAAA,IAAE,CAAC,CAAE0e,GAAK1e,EAAA,OAAK0e,CAAI,IAAEzgB,MAAMwpB,EAAe5pB,GAC7D,GAAIqD,IAAMumB,EAAcnpB,OAAQ,OAAO6oB,EAAKgB,MAAM/H,EAAS5D,EAAQyL,GAAAA,GAAc/I,EAAO+I,GAAAA,GAActI,IACtG,GAAU,IAANze,EAAS,OAAOknB,GAAAA,EAAYD,MAAMzmB,KAAKhD,IAAI0hB,EAAS5D,EAAO0C,EAAMS,GAAQ,IAC7E,MAAOjX,EAAGgW,GAAQ+I,EAAc5pB,EAAS4pB,EAAcvmB,EAAI,GAAG,GAAKumB,EAAcvmB,GAAG,GAAKrD,EAASqD,EAAI,EAAIA,GAC1G,OAAOwH,EAAEyf,MAAMzJ,EACjB,CAEA,MAAO,CAjBP,SAAelC,EAAO0C,EAAMS,GAC1B,MAAMV,EAAUC,EAAO1C,EACnByC,KAAUzC,EAAO0C,GAAQ,CAACA,EAAM1C,IACpC,MAAM6L,EAAW1I,GAAgC,oBAAhBA,EAAMjV,MAAuBiV,EAAQuI,EAAa1L,EAAO0C,EAAMS,GAC1FtV,EAAQge,EAAWA,EAAS3d,MAAM8R,GAAQ0C,EAAO,GAAK,GAC5D,OAAOD,EAAU5U,EAAM4U,UAAY5U,CACrC,EAWe6d,EACjB,CAEA,MAAOI,GAAUC,IAAmBrB,GAAOsB,GAAAA,GAASC,GAAAA,GAAUC,GAAAA,GAAWC,GAAAA,GAASC,GAAAA,GAASC,GAAAA,KACpFC,GAAWC,IAAoB7B,GAAO8B,GAAAA,GAAUC,GAAAA,GAAWC,GAAAA,GAAYC,GAAAA,GAASC,GAAAA,GAAUC,GAAAA,I,gBCjDjG,SAAS9H,GAAK7Y,GACZ,OAAO,IAAI0Y,KAAK1Y,EAClB,CAEA,SAASQ,GAAOR,GACd,OAAOA,aAAa0Y,MAAQ1Y,GAAK,IAAI0Y,MAAM1Y,EAC7C,CAEO,SAAS4gB,GAASjf,EAAO6d,EAAcf,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQE,EAAQnd,GAC1F,IAAIpB,EAAQ+Z,IACRJ,EAAS3Z,EAAM2Z,OACfxY,EAASnB,EAAMmB,OAEfif,EAAoBhf,EAAO,OAC3Bif,EAAejf,EAAO,OACtBkf,EAAelf,EAAO,SACtBmf,EAAanf,EAAO,SACpBof,EAAYpf,EAAO,SACnBqf,EAAarf,EAAO,SACpBsf,EAActf,EAAO,MACrBuf,EAAavf,EAAO,MAExB,SAASV,EAAW0X,GAClB,OAAQmG,EAAOnG,GAAQA,EAAOgI,EACxB/B,EAAOjG,GAAQA,EAAOiI,EACtBjC,EAAKhG,GAAQA,EAAOkI,EACpBnC,EAAI/F,GAAQA,EAAOmI,EACnBtC,EAAM7F,GAAQA,EAAQ8F,EAAK9F,GAAQA,EAAOoI,EAAYC,EACtDzC,EAAK5F,GAAQA,EAAOsI,EACpBC,GAAYvI,EACpB,CA6BA,OA3BApY,EAAM2Z,OAAS,SAAS9f,GACtB,OAAO,IAAIoe,KAAK0B,EAAO9f,GACzB,EAEAmG,EAAMmB,OAAS,SAASjG,GACtB,OAAOrD,UAAU1C,OAASgM,EAAO9H,MAAM8J,KAAKjI,EAAG6E,KAAWoB,IAASjJ,IAAIkgB,GACzE,EAEApY,EAAMkB,MAAQ,SAASge,GACrB,IAAIzqB,EAAI0M,IACR,OAAOD,EAAMzM,EAAE,GAAIA,EAAEA,EAAEU,OAAS,GAAgB,MAAZ+pB,EAAmB,GAAKA,EAC9D,EAEAlf,EAAMU,WAAa,SAAS8V,EAAO3B,GACjC,OAAoB,MAAbA,EAAoBnU,EAAaU,EAAOyT,EACjD,EAEA7U,EAAM2d,KAAO,SAASuB,GACpB,IAAIzqB,EAAI0M,IAER,OADK+d,GAAsC,oBAAnBA,EAAS3d,QAAsB2d,EAAWH,EAAatqB,EAAE,GAAIA,EAAEA,EAAEU,OAAS,GAAgB,MAAZ+pB,EAAmB,GAAKA,IACvHA,EAAW/d,EC1DP,SAAcA,EAAQ+d,GAGnC,IAII3f,EAJA4d,EAAK,EACLtG,GAHJ1V,EAASA,EAAOvC,SAGAzJ,OAAS,EACrBkC,EAAK8J,EAAOgc,GACZ7lB,EAAK6J,EAAO0V,GAUhB,OAPIvf,EAAKD,IACPkI,EAAI4d,EAAIA,EAAKtG,EAAIA,EAAKtX,EACtBA,EAAIlI,EAAIA,EAAKC,EAAIA,EAAKiI,GAGxB4B,EAAOgc,GAAM+B,EAAS5lB,MAAMjC,GAC5B8J,EAAO0V,GAAMqI,EAASlJ,KAAK1e,GACpB6J,CACT,CDyC6Bwc,CAAKlpB,EAAGyqB,IAAalf,CAChD,EAEAA,EAAM2B,KAAO,WACX,OAAOA,EAAK3B,EAAOmgB,GAASjf,EAAO6d,EAAcf,EAAMC,EAAOC,EAAMC,EAAKC,EAAMC,EAAQE,EAAQnd,GACjG,EAEOpB,CACT,CAEe,SAAS4gB,KACtB,OAAO9L,EAAUld,MAAMuoB,GAASR,GAAWC,GAAkBC,GAAAA,GAAUC,GAAAA,GAAWe,GAAAA,GAAUb,GAAAA,GAASC,GAAAA,GAAUC,GAAAA,GAAYY,GAAAA,EAAYC,GAAAA,IAAY5f,OAAO,CAAC,IAAI8W,KAAK,IAAM,EAAG,GAAI,IAAIA,KAAK,IAAM,EAAG,KAAMpgB,UAC3M,C,kBEhEe,SAASmpB,EAAMvrB,GAC5B,OAAY,MAALA,EAAY,GAAK4D,MAAMmf,QAAQ/iB,GAAKA,EAAI4D,MAAM8J,KAAK1N,EAC5D,C,yECNe,WAASwrB,GACtB,MAA2B,kBAAbA,EACR,IAAIC,EAAAA,GAAU,CAAC,CAACC,SAASC,cAAcH,KAAa,CAACE,SAASE,kBAC9D,IAAIH,EAAAA,GAAU,CAAC,CAACD,IAAYK,EAAAA,GACpC,C,eCHe,WAASL,GACtB,MAA2B,kBAAbA,EACR,IAAIC,EAAAA,GAAU,CAACC,SAASI,iBAAiBN,IAAY,CAACE,SAASE,kBAC/D,IAAIH,EAAAA,GAAU,EAACF,EAAAA,EAAAA,GAAMC,IAAYK,EAAAA,GACzC,C,kBCPe,WAASL,GACtB,OAAO,WACL,OAAOnlB,KAAK0lB,QAAQP,EACtB,CACF,CAEO,SAASQ,EAAaR,GAC3B,OAAO,SAASpsB,GACd,OAAOA,EAAK2sB,QAAQP,EACtB,CACF,C,0ECRe,WAASS,GACtB,IAAIhF,EAASgF,GAAQ,GAAI3pB,EAAI2kB,EAAO9B,QAAQ,KAE5C,OADI7iB,GAAK,GAAqC,WAA/B2kB,EAASgF,EAAK9iB,MAAM,EAAG7G,MAAiB2pB,EAAOA,EAAK9iB,MAAM7G,EAAI,IACtE4pB,EAAAA,EAAW9S,eAAe6N,GAAU,CAACkF,MAAOD,EAAAA,EAAWjF,GAASmF,MAAOH,GAAQA,CACxF,C,2CCNO,IAAII,EAAQ,+BAEnB,SACEpQ,IAAK,6BACLoQ,MAAOA,EACPC,MAAO,+BACPC,IAAK,uCACLC,MAAO,gC,iHCLL1rB,EAAO8C,MAAM+C,UAAU7F,KAQ3B,SAAS2rB,IACP,OAAOpmB,KAAKqmB,iBACd,CCVA,IAAIlf,EAAS5J,MAAM+C,UAAU6G,OAE7B,SAASmf,IACP,OAAO/oB,MAAM8J,KAAKrH,KAAKsmB,SACzB,CCNe,WAASpnB,GACtB,OAAO,IAAI3B,MAAM2B,EAAO7F,OAC1B,CCKO,SAASktB,EAAU3R,EAAQ4R,GAChCxmB,KAAKymB,cAAgB7R,EAAO6R,cAC5BzmB,KAAK0mB,aAAe9R,EAAO8R,aAC3B1mB,KAAK2mB,MAAQ,KACb3mB,KAAK4mB,QAAUhS,EACf5U,KAAK6mB,SAAWL,CAClB,CCTA,SAASM,EAAUlS,EAAQiL,EAAOvZ,EAAOpH,EAAQkH,EAAMJ,GASrD,IARA,IACIjN,EADAkD,EAAI,EAEJ8qB,EAAclH,EAAMxmB,OACpB2tB,EAAahhB,EAAK3M,OAKf4C,EAAI+qB,IAAc/qB,GACnBlD,EAAO8mB,EAAM5jB,KACflD,EAAK8tB,SAAW7gB,EAAK/J,GACrBiD,EAAOjD,GAAKlD,GAEZuN,EAAMrK,GAAK,IAAIsqB,EAAU3R,EAAQ5O,EAAK/J,IAK1C,KAAOA,EAAI8qB,IAAe9qB,GACpBlD,EAAO8mB,EAAM5jB,MACfmK,EAAKnK,GAAKlD,EAGhB,CAEA,SAASkuB,EAAQrS,EAAQiL,EAAOvZ,EAAOpH,EAAQkH,EAAMJ,EAAM+O,GACzD,IAAI9Y,EACAlD,EAKAmuB,EAJAC,EAAiB,IAAIhrB,IACrB4qB,EAAclH,EAAMxmB,OACpB2tB,EAAahhB,EAAK3M,OAClB+tB,EAAY,IAAI7pB,MAAMwpB,GAK1B,IAAK9qB,EAAI,EAAGA,EAAI8qB,IAAe9qB,GACzBlD,EAAO8mB,EAAM5jB,MACfmrB,EAAUnrB,GAAKirB,EAAWnS,EAAItX,KAAK1E,EAAMA,EAAK8tB,SAAU5qB,EAAG4jB,GAAS,GAChEsH,EAAe5N,IAAI2N,GACrB9gB,EAAKnK,GAAKlD,EAEVouB,EAAe7N,IAAI4N,EAAUnuB,IAQnC,IAAKkD,EAAI,EAAGA,EAAI+qB,IAAc/qB,EAC5BirB,EAAWnS,EAAItX,KAAKmX,EAAQ5O,EAAK/J,GAAIA,EAAG+J,GAAQ,IAC5CjN,EAAOouB,EAAevsB,IAAIssB,KAC5BhoB,EAAOjD,GAAKlD,EACZA,EAAK8tB,SAAW7gB,EAAK/J,GACrBkrB,EAAeE,OAAOH,IAEtB5gB,EAAMrK,GAAK,IAAIsqB,EAAU3R,EAAQ5O,EAAK/J,IAK1C,IAAKA,EAAI,EAAGA,EAAI8qB,IAAe9qB,GACxBlD,EAAO8mB,EAAM5jB,KAAQkrB,EAAevsB,IAAIwsB,EAAUnrB,MAAQlD,IAC7DqN,EAAKnK,GAAKlD,EAGhB,CAEA,SAASytB,EAAMztB,GACb,OAAOA,EAAK8tB,QACd,CA+CA,SAASS,EAAUthB,GACjB,MAAuB,kBAATA,GAAqB,WAAYA,EAC3CA,EACAzI,MAAM8J,KAAKrB,EACjB,CC1GA,SAASoV,EAAUvhB,EAAGC,GACpB,OAAOD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAIkZ,GAC/C,CFRAuT,EAAUjmB,UAAY,CACpBC,YAAagmB,EACbgB,YAAa,SAASC,GAAS,OAAOxnB,KAAK4mB,QAAQa,aAAaD,EAAOxnB,KAAK2mB,MAAQ,EACpFc,aAAc,SAASD,EAAO1qB,GAAQ,OAAOkD,KAAK4mB,QAAQa,aAAaD,EAAO1qB,EAAO,EACrFwoB,cAAe,SAASH,GAAY,OAAOnlB,KAAK4mB,QAAQtB,cAAcH,EAAW,EACjFM,iBAAkB,SAASN,GAAY,OAAOnlB,KAAK4mB,QAAQnB,iBAAiBN,EAAW,G,eGlBzF,SAASuC,EAAW9B,GAClB,OAAO,WACL5lB,KAAK2nB,gBAAgB/B,EACvB,CACF,CAEA,SAASgC,EAAaC,GACpB,OAAO,WACL7nB,KAAK8nB,kBAAkBD,EAAS/B,MAAO+B,EAAS9B,MAClD,CACF,CAEA,SAASgC,EAAanC,EAAMptB,GAC1B,OAAO,WACLwH,KAAKgoB,aAAapC,EAAMptB,EAC1B,CACF,CAEA,SAASyvB,EAAeJ,EAAUrvB,GAChC,OAAO,WACLwH,KAAKkoB,eAAeL,EAAS/B,MAAO+B,EAAS9B,MAAOvtB,EACtD,CACF,CAEA,SAAS2vB,EAAavC,EAAMptB,GAC1B,OAAO,WACL,IAAIiG,EAAIjG,EAAMsD,MAAMkE,KAAMjE,WACjB,MAAL0C,EAAWuB,KAAK2nB,gBAAgB/B,GAC/B5lB,KAAKgoB,aAAapC,EAAMnnB,EAC/B,CACF,CAEA,SAAS2pB,EAAeP,EAAUrvB,GAChC,OAAO,WACL,IAAIiG,EAAIjG,EAAMsD,MAAMkE,KAAMjE,WACjB,MAAL0C,EAAWuB,KAAK8nB,kBAAkBD,EAAS/B,MAAO+B,EAAS9B,OAC1D/lB,KAAKkoB,eAAeL,EAAS/B,MAAO+B,EAAS9B,MAAOtnB,EAC3D,CACF,C,eCxCA,SAAS4pB,EAAezC,GACtB,OAAO,kBACE5lB,KAAK4lB,EACd,CACF,CAEA,SAAS0C,EAAiB1C,EAAMptB,GAC9B,OAAO,WACLwH,KAAK4lB,GAAQptB,CACf,CACF,CAEA,SAAS+vB,EAAiB3C,EAAMptB,GAC9B,OAAO,WACL,IAAIiG,EAAIjG,EAAMsD,MAAMkE,KAAMjE,WACjB,MAAL0C,SAAkBuB,KAAK4lB,GACtB5lB,KAAK4lB,GAAQnnB,CACpB,CACF,CClBA,SAAS+pB,EAAWnM,GAClB,OAAOA,EAAO9J,OAAOkW,MAAM,QAC7B,CAEA,SAASC,EAAU3vB,GACjB,OAAOA,EAAK2vB,WAAa,IAAIC,EAAU5vB,EACzC,CAEA,SAAS4vB,EAAU5vB,GACjBiH,KAAK4oB,MAAQ7vB,EACbiH,KAAK6oB,OAASL,EAAWzvB,EAAKiO,aAAa,UAAY,GACzD,CAsBA,SAAS8hB,EAAW/vB,EAAMgwB,GAExB,IADA,IAAIC,EAAON,EAAU3vB,GAAOkD,GAAK,EAAGhD,EAAI8vB,EAAM1vB,SACrC4C,EAAIhD,GAAG+vB,EAAKhsB,IAAI+rB,EAAM9sB,GACjC,CAEA,SAASgtB,EAAclwB,EAAMgwB,GAE3B,IADA,IAAIC,EAAON,EAAU3vB,GAAOkD,GAAK,EAAGhD,EAAI8vB,EAAM1vB,SACrC4C,EAAIhD,GAAG+vB,EAAK9hB,OAAO6hB,EAAM9sB,GACpC,CAEA,SAASitB,EAAYH,GACnB,OAAO,WACLD,EAAW9oB,KAAM+oB,EACnB,CACF,CAEA,SAASI,EAAaJ,GACpB,OAAO,WACLE,EAAcjpB,KAAM+oB,EACtB,CACF,CAEA,SAASK,EAAgBL,EAAOvwB,GAC9B,OAAO,YACJA,EAAMsD,MAAMkE,KAAMjE,WAAa+sB,EAAaG,GAAejpB,KAAM+oB,EACpE,CACF,CC3DA,SAASM,IACPrpB,KAAKspB,YAAc,EACrB,CAEA,SAASC,EAAa/wB,GACpB,OAAO,WACLwH,KAAKspB,YAAc9wB,CACrB,CACF,CAEA,SAASgxB,EAAahxB,GACpB,OAAO,WACL,IAAIiG,EAAIjG,EAAMsD,MAAMkE,KAAMjE,WAC1BiE,KAAKspB,YAAmB,MAAL7qB,EAAY,GAAKA,CACtC,CACF,CCfA,SAASgrB,IACPzpB,KAAK0pB,UAAY,EACnB,CAEA,SAASC,EAAanxB,GACpB,OAAO,WACLwH,KAAK0pB,UAAYlxB,CACnB,CACF,CAEA,SAASoxB,EAAapxB,GACpB,OAAO,WACL,IAAIiG,EAAIjG,EAAMsD,MAAMkE,KAAMjE,WAC1BiE,KAAK0pB,UAAiB,MAALjrB,EAAY,GAAKA,CACpC,CACF,CCfA,SAASorB,IACH7pB,KAAK8pB,aAAa9pB,KAAKiH,WAAWsgB,YAAYvnB,KACpD,CCFA,SAAS+pB,IACH/pB,KAAKgqB,iBAAiBhqB,KAAKiH,WAAWwgB,aAAaznB,KAAMA,KAAKiH,WAAWgjB,WAC/E,CJWAtB,EAAUroB,UAAY,CACpBtD,IAAK,SAAS4oB,GACJ5lB,KAAK6oB,OAAO/J,QAAQ8G,GACpB,IACN5lB,KAAK6oB,OAAOxsB,KAAKupB,GACjB5lB,KAAK4oB,MAAMZ,aAAa,QAAShoB,KAAK6oB,OAAO/P,KAAK,MAEtD,EACA5R,OAAQ,SAAS0e,GACf,IAAI3pB,EAAI+D,KAAK6oB,OAAO/J,QAAQ8G,GACxB3pB,GAAK,IACP+D,KAAK6oB,OAAOqB,OAAOjuB,EAAG,GACtB+D,KAAK4oB,MAAMZ,aAAa,QAAShoB,KAAK6oB,OAAO/P,KAAK,MAEtD,EACAqR,SAAU,SAASvE,GACjB,OAAO5lB,KAAK6oB,OAAO/J,QAAQ8G,IAAS,CACtC,G,eK3BF,SAASwE,EAAexE,GACtB,OAAO,WACL,IAAIP,EAAWrlB,KAAKymB,cAChB4D,EAAMrqB,KAAK0mB,aACf,OAAO2D,IAAQrE,EAAAA,GAASX,EAASE,gBAAgBmB,eAAiBV,EAAAA,EAC5DX,EAASiF,cAAc1E,GACvBP,EAASkF,gBAAgBF,EAAKzE,EACtC,CACF,CAEA,SAAS4E,EAAa3C,GACpB,OAAO,WACL,OAAO7nB,KAAKymB,cAAc8D,gBAAgB1C,EAAS/B,MAAO+B,EAAS9B,MACrE,CACF,CAEe,WAASH,GACtB,IAAIiC,GAAW4C,EAAAA,EAAAA,GAAU7E,GACzB,OAAQiC,EAAS9B,MACXyE,EACAJ,GAAgBvC,EACxB,CCrBA,SAAS6C,IACP,OAAO,IACT,CCLA,SAASxjB,IACP,IAAI0N,EAAS5U,KAAKiH,WACd2N,GAAQA,EAAO+V,YAAY3qB,KACjC,CCHA,SAAS4qB,IACP,IAAIC,EAAQ7qB,KAAK8qB,WAAU,GAAQlW,EAAS5U,KAAKiH,WACjD,OAAO2N,EAASA,EAAO6S,aAAaoD,EAAO7qB,KAAK8pB,aAAee,CACjE,CAEA,SAASE,IACP,IAAIF,EAAQ7qB,KAAK8qB,WAAU,GAAOlW,EAAS5U,KAAKiH,WAChD,OAAO2N,EAASA,EAAO6S,aAAaoD,EAAO7qB,KAAK8pB,aAAee,CACjE,CCMA,SAASG,EAASC,GAChB,OAAO,WACL,IAAIC,EAAKlrB,KAAKmrB,KACd,GAAKD,EAAL,CACA,IAAK,IAAkC/X,EAA9BkK,EAAI,EAAGphB,GAAK,EAAGqW,EAAI4Y,EAAG7xB,OAAWgkB,EAAI/K,IAAK+K,EAC7ClK,EAAI+X,EAAG7N,GAAM4N,EAASrjB,MAAQuL,EAAEvL,OAASqjB,EAASrjB,MAASuL,EAAEyS,OAASqF,EAASrF,KAGjFsF,IAAKjvB,GAAKkX,EAFVnT,KAAKorB,oBAAoBjY,EAAEvL,KAAMuL,EAAEkY,SAAUlY,EAAEmY,WAK7CrvB,EAAGivB,EAAG7xB,OAAS4C,SACT+D,KAAKmrB,IATF,CAUjB,CACF,CAEA,SAASI,GAAMN,EAAUzyB,EAAO8yB,GAC9B,OAAO,WACL,IAAoBnY,EAAhB+X,EAAKlrB,KAAKmrB,KAASE,EAhC3B,SAAyBA,GACvB,OAAO,SAASG,GACdH,EAAS5tB,KAAKuC,KAAMwrB,EAAOxrB,KAAK6mB,SAClC,CACF,CA4BsC4E,CAAgBjzB,GAClD,GAAI0yB,EAAI,IAAK,IAAI7N,EAAI,EAAG/K,EAAI4Y,EAAG7xB,OAAQgkB,EAAI/K,IAAK+K,EAC9C,IAAKlK,EAAI+X,EAAG7N,IAAIzV,OAASqjB,EAASrjB,MAAQuL,EAAEyS,OAASqF,EAASrF,KAI5D,OAHA5lB,KAAKorB,oBAAoBjY,EAAEvL,KAAMuL,EAAEkY,SAAUlY,EAAEmY,SAC/CtrB,KAAK0rB,iBAAiBvY,EAAEvL,KAAMuL,EAAEkY,SAAWA,EAAUlY,EAAEmY,QAAUA,QACjEnY,EAAE3a,MAAQA,GAIdwH,KAAK0rB,iBAAiBT,EAASrjB,KAAMyjB,EAAUC,GAC/CnY,EAAI,CAACvL,KAAMqjB,EAASrjB,KAAMge,KAAMqF,EAASrF,KAAMptB,MAAOA,EAAO6yB,SAAUA,EAAUC,QAASA,GACrFJ,EACAA,EAAG7uB,KAAK8W,GADJnT,KAAKmrB,KAAO,CAAChY,EAExB,CACF,C,gBC5CA,SAASwY,GAAc5yB,EAAM6O,EAAMgkB,GACjC,IAAI5mB,GAAS6mB,EAAAA,GAAAA,GAAY9yB,GACrByyB,EAAQxmB,EAAO8mB,YAEE,oBAAVN,EACTA,EAAQ,IAAIA,EAAM5jB,EAAMgkB,IAExBJ,EAAQxmB,EAAOqgB,SAAS0G,YAAY,SAChCH,GAAQJ,EAAMQ,UAAUpkB,EAAMgkB,EAAOK,QAASL,EAAOM,YAAaV,EAAMW,OAASP,EAAOO,QACvFX,EAAMQ,UAAUpkB,GAAM,GAAO,IAGpC7O,EAAK4yB,cAAcH,EACrB,CAEA,SAASY,GAAiBxkB,EAAMgkB,GAC9B,OAAO,WACL,OAAOD,GAAc3rB,KAAM4H,EAAMgkB,EACnC,CACF,CAEA,SAASS,GAAiBzkB,EAAMgkB,GAC9B,OAAO,WACL,OAAOD,GAAc3rB,KAAM4H,EAAMgkB,EAAO9vB,MAAMkE,KAAMjE,WACtD,CACF,CCQO,IAAIypB,GAAO,CAAC,MAEZ,SAASJ,GAAUkH,EAAQC,GAChCvsB,KAAKwsB,QAAUF,EACftsB,KAAKysB,SAAWF,CAClB,CAEA,SAASzmB,KACP,OAAO,IAAIsf,GAAU,CAAC,CAACC,SAASE,kBAAmBC,GACrD,CAMAJ,GAAU9kB,UAAYwF,GAAUxF,UAAY,CAC1CC,YAAa6kB,GACb1e,OCjDa,SAASA,GACA,oBAAXA,IAAuBA,GAASye,EAAAA,EAAAA,GAASze,IAEpD,IAAK,IAAI4lB,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQqzB,EAAY,IAAInvB,MAAM+U,GAAI+K,EAAI,EAAGA,EAAI/K,IAAK+K,EAC3F,IAAK,IAAiFtkB,EAAM4zB,EAAnF9M,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAQuzB,EAAWF,EAAUrP,GAAK,IAAI9f,MAAMtE,GAAmBgD,EAAI,EAAGA,EAAIhD,IAAKgD,GAC9GlD,EAAO8mB,EAAM5jB,MAAQ0wB,EAAUjmB,EAAOjJ,KAAK1E,EAAMA,EAAK8tB,SAAU5qB,EAAG4jB,MAClE,aAAc9mB,IAAM4zB,EAAQ9F,SAAW9tB,EAAK8tB,UAChD+F,EAAS3wB,GAAK0wB,GAKpB,OAAO,IAAIvH,GAAUsH,EAAW1sB,KAAKysB,SACvC,EDqCE1mB,UE3Ca,SAASW,GACYA,EAAZ,oBAAXA,EAPb,SAAkBA,GAChB,OAAO,WACL,OAAOwe,EAAAA,EAAAA,GAAMxe,EAAO5K,MAAMkE,KAAMjE,WAClC,CACF,CAG6C8wB,CAASnmB,IACtComB,EAAAA,EAAAA,GAAYpmB,GAE1B,IAAK,IAAI4lB,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQqzB,EAAY,GAAIH,EAAU,GAAIlP,EAAI,EAAGA,EAAI/K,IAAK+K,EAC/F,IAAK,IAAyCtkB,EAArC8mB,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAc4C,EAAI,EAAGA,EAAIhD,IAAKgD,GAC9DlD,EAAO8mB,EAAM5jB,MACfywB,EAAUrwB,KAAKqK,EAAOjJ,KAAK1E,EAAMA,EAAK8tB,SAAU5qB,EAAG4jB,IACnD0M,EAAQlwB,KAAKtD,IAKnB,OAAO,IAAIqsB,GAAUsH,EAAWH,EAClC,EF8BEQ,YnBxCa,SAAS1O,GACtB,OAAOre,KAAK0G,OAAgB,MAAT2X,EAAgB+H,EAXrC,SAAmB/H,GACjB,OAAO,WACL,OAAO5jB,EAAKgD,KAAKuC,KAAKsmB,SAAUjI,EAClC,CACF,CAQQ2O,CAA2B,oBAAV3O,EAAuBA,GAAQsH,EAAAA,EAAAA,GAAatH,IACrE,EmBsCE4O,elBzCa,SAAS5O,GACtB,OAAOre,KAAK+F,UAAmB,MAATsY,EAAgBiI,EAPxC,SAAwBjI,GACtB,OAAO,WACL,OAAOlX,EAAO1J,KAAKuC,KAAKsmB,SAAUjI,EACpC,CACF,CAIQ6O,CAAgC,oBAAV7O,EAAuBA,GAAQsH,EAAAA,EAAAA,GAAatH,IAC1E,EkBuCElX,OGrDa,SAASkX,GACD,oBAAVA,IAAsBA,GAAQ8O,EAAAA,EAAAA,GAAQ9O,IAEjD,IAAK,IAAIiO,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQqzB,EAAY,IAAInvB,MAAM+U,GAAI+K,EAAI,EAAGA,EAAI/K,IAAK+K,EAC3F,IAAK,IAAuEtkB,EAAnE8mB,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAQuzB,EAAWF,EAAUrP,GAAK,GAAUphB,EAAI,EAAGA,EAAIhD,IAAKgD,GAC3FlD,EAAO8mB,EAAM5jB,KAAOoiB,EAAM5gB,KAAK1E,EAAMA,EAAK8tB,SAAU5qB,EAAG4jB,IAC1D+M,EAASvwB,KAAKtD,GAKpB,OAAO,IAAIqsB,GAAUsH,EAAW1sB,KAAKysB,SACvC,EH0CEzmB,KfqBa,SAASxN,EAAOuc,GAC7B,IAAKhZ,UAAU1C,OAAQ,OAAOkE,MAAM8J,KAAKrH,KAAMwmB,GAE/C,ImBjFsB7sB,EnBiFlByzB,EAAOrY,EAAMkS,EAAUH,EACvByF,EAAUvsB,KAAKysB,SACfH,EAAStsB,KAAKwsB,QAEG,oBAAVh0B,ImBrFWmB,EnBqF4BnB,EAAjBA,EmBpF1B,WACL,OAAOmB,CACT,GnBoFA,IAAK,IAAI2Y,EAAIga,EAAOjzB,OAAQ6F,EAAS,IAAI3B,MAAM+U,GAAIhM,EAAQ,IAAI/I,MAAM+U,GAAIlM,EAAO,IAAI7I,MAAM+U,GAAI+K,EAAI,EAAGA,EAAI/K,IAAK+K,EAAG,CAC/G,IAAIzI,EAAS2X,EAAQlP,GACjBwC,EAAQyM,EAAOjP,GACf0J,EAAclH,EAAMxmB,OACpB2M,EAAOshB,EAAU9uB,EAAMiF,KAAKmX,EAAQA,GAAUA,EAAOiS,SAAUxJ,EAAGkP,IAClEvF,EAAahhB,EAAK3M,OAClBg0B,EAAa/mB,EAAM+W,GAAK,IAAI9f,MAAMypB,GAClCsG,EAAcpuB,EAAOme,GAAK,IAAI9f,MAAMypB,GAGxCoG,EAAKxY,EAAQiL,EAAOwN,EAAYC,EAFhBlnB,EAAKiX,GAAK,IAAI9f,MAAMwpB,GAEoB/gB,EAAM+O,GAK9D,IAAK,IAAoBwY,EAAUzwB,EAA1BukB,EAAK,EAAGtG,EAAK,EAAmBsG,EAAK2F,IAAc3F,EAC1D,GAAIkM,EAAWF,EAAWhM,GAAK,CAE7B,IADIA,GAAMtG,IAAIA,EAAKsG,EAAK,KACfvkB,EAAOwwB,EAAYvS,OAAUA,EAAKiM,IAC3CuG,EAAS5G,MAAQ7pB,GAAQ,IAC3B,CAEJ,CAKA,OAHAoC,EAAS,IAAIkmB,GAAUlmB,EAAQqtB,IACxBiB,OAASlnB,EAChBpH,EAAOuuB,MAAQrnB,EACRlH,CACT,EezDEoH,MhBvDa,WACb,OAAO,IAAI8e,GAAUplB,KAAKwtB,QAAUxtB,KAAKwsB,QAAQpwB,IAAIsxB,GAAS1tB,KAAKysB,SACrE,EgBsDErmB,KKxDa,WACb,OAAO,IAAIgf,GAAUplB,KAAKytB,OAASztB,KAAKwsB,QAAQpwB,IAAIsxB,GAAS1tB,KAAKysB,SACpE,ELuDE3T,KM5Da,SAAS6U,EAASC,EAAUC,GACzC,IAAIvnB,EAAQtG,KAAKsG,QAASpH,EAASc,KAAMoG,EAAOpG,KAAKoG,OAYrD,MAXuB,oBAAZunB,GACTrnB,EAAQqnB,EAAQrnB,MACLA,EAAQA,EAAMR,aAEzBQ,EAAQA,EAAMC,OAAOonB,EAAU,IAEjB,MAAZC,IACF1uB,EAAS0uB,EAAS1uB,MACNA,EAASA,EAAO4G,aAEhB,MAAV+nB,EAAgBznB,EAAKc,SAAe2mB,EAAOznB,GACxCE,GAASpH,EAASoH,EAAMM,MAAM1H,GAAQgH,QAAUhH,CACzD,EN+CE0H,MO3Da,SAASvD,GAGtB,IAFA,IAAIyC,EAAYzC,EAAQyC,UAAYzC,EAAQyC,YAAczC,EAEjDyqB,EAAU9tB,KAAKwsB,QAASuB,EAAUjoB,EAAU0mB,QAASwB,EAAKF,EAAQz0B,OAAQ2a,EAAK+Z,EAAQ10B,OAAQiZ,EAAI7V,KAAKrE,IAAI41B,EAAIha,GAAKia,EAAS,IAAI1wB,MAAMywB,GAAK3Q,EAAI,EAAGA,EAAI/K,IAAK+K,EACpK,IAAK,IAAmGtkB,EAA/Fm1B,EAASJ,EAAQzQ,GAAI8Q,EAASJ,EAAQ1Q,GAAIpkB,EAAIi1B,EAAO70B,OAAQuN,EAAQqnB,EAAO5Q,GAAK,IAAI9f,MAAMtE,GAAUgD,EAAI,EAAGA,EAAIhD,IAAKgD,GACxHlD,EAAOm1B,EAAOjyB,IAAMkyB,EAAOlyB,MAC7B2K,EAAM3K,GAAKlD,GAKjB,KAAOskB,EAAI2Q,IAAM3Q,EACf4Q,EAAO5Q,GAAKyQ,EAAQzQ,GAGtB,OAAO,IAAI+H,GAAU6I,EAAQjuB,KAAKysB,SACpC,EP4CE3mB,UAhBF,WACE,OAAO9F,IACT,EAeEkG,MQ/Da,WAEb,IAAK,IAAIomB,EAAStsB,KAAKwsB,QAASnP,GAAK,EAAG/K,EAAIga,EAAOjzB,SAAUgkB,EAAI/K,GAC/D,IAAK,IAA8DvZ,EAA1D8mB,EAAQyM,EAAOjP,GAAIphB,EAAI4jB,EAAMxmB,OAAS,EAAGyD,EAAO+iB,EAAM5jB,KAAYA,GAAK,IAC1ElD,EAAO8mB,EAAM5jB,MACXa,GAA6C,EAArC/D,EAAKq1B,wBAAwBtxB,IAAWA,EAAKmK,WAAWwgB,aAAa1uB,EAAM+D,GACvFA,EAAO/D,GAKb,OAAOiH,IACT,ERoDE3E,Kd9Da,SAASgzB,GAGtB,SAASC,EAAYz0B,EAAGC,GACtB,OAAOD,GAAKC,EAAIu0B,EAAQx0B,EAAEgtB,SAAU/sB,EAAE+sB,WAAahtB,GAAKC,CAC1D,CAJKu0B,IAASA,EAAUjT,GAMxB,IAAK,IAAIkR,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQk1B,EAAa,IAAIhxB,MAAM+U,GAAI+K,EAAI,EAAGA,EAAI/K,IAAK+K,EAAG,CAC/F,IAAK,IAAmFtkB,EAA/E8mB,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAQm1B,EAAYD,EAAWlR,GAAK,IAAI9f,MAAMtE,GAAUgD,EAAI,EAAGA,EAAIhD,IAAKgD,GACxGlD,EAAO8mB,EAAM5jB,MACfuyB,EAAUvyB,GAAKlD,GAGnBy1B,EAAUnzB,KAAKizB,EACjB,CAEA,OAAO,IAAIlJ,GAAUmJ,EAAYvuB,KAAKysB,UAAUvmB,OAClD,Ec8CEzI,KSjEa,WACb,IAAIgxB,EAAW1yB,UAAU,GAGzB,OAFAA,UAAU,GAAKiE,KACfyuB,EAAS3yB,MAAM,KAAMC,WACdiE,IACT,ET6DE1F,MUlEa,WACb,OAAOiD,MAAM8J,KAAKrH,KACpB,EViEEjH,KWnEa,WAEb,IAAK,IAAIuzB,EAAStsB,KAAKwsB,QAASnP,EAAI,EAAG/K,EAAIga,EAAOjzB,OAAQgkB,EAAI/K,IAAK+K,EACjE,IAAK,IAAIwC,EAAQyM,EAAOjP,GAAIphB,EAAI,EAAGhD,EAAI4mB,EAAMxmB,OAAQ4C,EAAIhD,IAAKgD,EAAG,CAC/D,IAAIlD,EAAO8mB,EAAM5jB,GACjB,GAAIlD,EAAM,OAAOA,CACnB,CAGF,OAAO,IACT,EX0DEgE,KYpEa,WACb,IAAIA,EAAO,EACX,IAAK,MAAMhE,KAAQiH,OAAQjD,EAC3B,OAAOA,CACT,EZiEE2xB,MarEa,WACb,OAAQ1uB,KAAKjH,MACf,EboEEqO,KctEa,SAASqnB,GAEtB,IAAK,IAAInC,EAAStsB,KAAKwsB,QAASnP,EAAI,EAAG/K,EAAIga,EAAOjzB,OAAQgkB,EAAI/K,IAAK+K,EACjE,IAAK,IAAgDtkB,EAA5C8mB,EAAQyM,EAAOjP,GAAIphB,EAAI,EAAGhD,EAAI4mB,EAAMxmB,OAAc4C,EAAIhD,IAAKgD,GAC9DlD,EAAO8mB,EAAM5jB,KAAIwyB,EAAShxB,KAAK1E,EAAMA,EAAK8tB,SAAU5qB,EAAG4jB,GAI/D,OAAO7f,IACT,Ed8DEwG,Kb7Ba,SAASof,EAAMptB,GAC5B,IAAIqvB,GAAW4C,EAAAA,EAAAA,GAAU7E,GAEzB,GAAI7pB,UAAU1C,OAAS,EAAG,CACxB,IAAIN,EAAOiH,KAAKjH,OAChB,OAAO8uB,EAAS9B,MACVhtB,EAAK41B,eAAe9G,EAAS/B,MAAO+B,EAAS9B,OAC7ChtB,EAAKiO,aAAa6gB,EAC1B,CAEA,OAAO7nB,KAAKoH,MAAe,MAAT5O,EACXqvB,EAAS9B,MAAQ6B,EAAeF,EAAgC,oBAAVlvB,EACtDqvB,EAAS9B,MAAQqC,EAAiBD,EAClCN,EAAS9B,MAAQkC,EAAiBF,GAAgBF,EAAUrvB,GACrE,EagBEo2B,MAAOC,EAAAA,EACPC,SZrDa,SAASlJ,EAAMptB,GAC5B,OAAOuD,UAAU1C,OAAS,EACpB2G,KAAKoH,MAAe,MAAT5O,EACP6vB,EAAkC,oBAAV7vB,EACxB+vB,EACAD,GAAkB1C,EAAMptB,IAC5BwH,KAAKjH,OAAO6sB,EACpB,EY+CEmJ,QXba,SAASnJ,EAAMptB,GAC5B,IAAIuwB,EAAQP,EAAW5C,EAAO,IAE9B,GAAI7pB,UAAU1C,OAAS,EAAG,CAExB,IADA,IAAI2vB,EAAON,EAAU1oB,KAAKjH,QAASkD,GAAK,EAAGhD,EAAI8vB,EAAM1vB,SAC5C4C,EAAIhD,OAAQ+vB,EAAKmB,SAASpB,EAAM9sB,IAAK,OAAO,EACrD,OAAO,CACT,CAEA,OAAO+D,KAAKoH,MAAuB,oBAAV5O,EACnB4wB,EAAkB5wB,EAClB0wB,EACAC,GAAcJ,EAAOvwB,GAC7B,EWCEmO,KV1Da,SAASnO,GACtB,OAAOuD,UAAU1C,OACX2G,KAAKoH,KAAc,MAAT5O,EACN6wB,GAA+B,oBAAV7wB,EACrBgxB,EACAD,GAAc/wB,IAClBwH,KAAKjH,OAAOuwB,WACpB,EUoDE0F,KT3Da,SAASx2B,GACtB,OAAOuD,UAAU1C,OACX2G,KAAKoH,KAAc,MAAT5O,EACNixB,GAA+B,oBAAVjxB,EACrBoxB,EACAD,GAAcnxB,IAClBwH,KAAKjH,OAAO2wB,SACpB,ESqDEG,MRzEa,WACb,OAAO7pB,KAAKoH,KAAKyiB,EACnB,EQwEEE,MP1Ea,WACb,OAAO/pB,KAAKoH,KAAK2iB,EACnB,EOyEExjB,Oe7Ea,SAASqf,GACtB,IAAI9Q,EAAyB,oBAAT8Q,EAAsBA,EAAOqJ,EAAQrJ,GACzD,OAAO5lB,KAAK0G,QAAO,WACjB,OAAO1G,KAAKunB,YAAYzS,EAAOhZ,MAAMkE,KAAMjE,WAC7C,GACF,EfyEE8K,OLzEa,SAAS+e,EAAMsJ,GAC5B,IAAIpa,EAAyB,oBAAT8Q,EAAsBA,EAAOqJ,EAAQrJ,GACrDlf,EAAmB,MAAVwoB,EAAiBxE,EAAiC,oBAAXwE,EAAwBA,GAAS/J,EAAAA,EAAAA,GAAS+J,GAC9F,OAAOlvB,KAAK0G,QAAO,WACjB,OAAO1G,KAAKynB,aAAa3S,EAAOhZ,MAAMkE,KAAMjE,WAAY2K,EAAO5K,MAAMkE,KAAMjE,YAAc,KAC3F,GACF,EKoEEmL,OJ5Ea,WACb,OAAOlH,KAAKoH,KAAKF,EACnB,EI2EE2jB,MHxEa,SAASsE,GACtB,OAAOnvB,KAAK0G,OAAOyoB,EAAOpE,EAAsBH,EAClD,EGuEEpE,MgBnFa,SAAShuB,GACtB,OAAOuD,UAAU1C,OACX2G,KAAK8uB,SAAS,WAAYt2B,GAC1BwH,KAAKjH,OAAO8tB,QACpB,EhBgFEqE,GFpCa,SAASD,EAAUzyB,EAAO8yB,GACvC,IAA+CrvB,EAAyBwH,EAApE2rB,EA3CN,SAAwBA,GACtB,OAAOA,EAAU7c,OAAOkW,MAAM,SAASrsB,KAAI,SAASqH,GAClD,IAAImiB,EAAO,GAAI3pB,EAAIwH,EAAEqb,QAAQ,KAE7B,OADI7iB,GAAK,IAAG2pB,EAAOniB,EAAEX,MAAM7G,EAAI,GAAIwH,EAAIA,EAAEX,MAAM,EAAG7G,IAC3C,CAAC2L,KAAMnE,EAAGmiB,KAAMA,EACzB,GACF,CAqCkByJ,CAAepE,EAAW,IAAQhyB,EAAIm2B,EAAU/1B,OAEhE,KAAI0C,UAAU1C,OAAS,GAAvB,CAaA,IADA6xB,EAAK1yB,EAAQ+yB,GAAQP,EAChB/uB,EAAI,EAAGA,EAAIhD,IAAKgD,EAAG+D,KAAKoH,KAAK8jB,EAAGkE,EAAUnzB,GAAIzD,EAAO8yB,IAC1D,OAAOtrB,IAJP,CATE,IAAIkrB,EAAKlrB,KAAKjH,OAAOoyB,KACrB,GAAID,EAAI,IAAK,IAA0B/X,EAAtBkK,EAAI,EAAG/K,EAAI4Y,EAAG7xB,OAAWgkB,EAAI/K,IAAK+K,EACjD,IAAKphB,EAAI,EAAGkX,EAAI+X,EAAG7N,GAAIphB,EAAIhD,IAAKgD,EAC9B,IAAKwH,EAAI2rB,EAAUnzB,IAAI2L,OAASuL,EAAEvL,MAAQnE,EAAEmiB,OAASzS,EAAEyS,KACrD,OAAOzS,EAAE3a,KAUnB,EEmBE82B,SDxDa,SAAS1nB,EAAMgkB,GAC5B,OAAO5rB,KAAKoH,MAAwB,oBAAXwkB,EACnBS,GACAD,IAAkBxkB,EAAMgkB,GAChC,ECqDE,CAAC1S,OAAOqW,UiBtFK,YACb,IAAK,IAAIjD,EAAStsB,KAAKwsB,QAASnP,EAAI,EAAG/K,EAAIga,EAAOjzB,OAAQgkB,EAAI/K,IAAK+K,EACjE,IAAK,IAAgDtkB,EAA5C8mB,EAAQyM,EAAOjP,GAAIphB,EAAI,EAAGhD,EAAI4mB,EAAMxmB,OAAc4C,EAAIhD,IAAKgD,GAC9DlD,EAAO8mB,EAAM5jB,YAAUlD,EAGjC,GjBmFA,W,0DkBvFA,SAASy2B,EAAY5J,GACnB,OAAO,WACL5lB,KAAK4uB,MAAMa,eAAe7J,EAC5B,CACF,CAEA,SAAS8J,EAAc9J,EAAMptB,EAAOm3B,GAClC,OAAO,WACL3vB,KAAK4uB,MAAMgB,YAAYhK,EAAMptB,EAAOm3B,EACtC,CACF,CAEA,SAASE,EAAcjK,EAAMptB,EAAOm3B,GAClC,OAAO,WACL,IAAIlxB,EAAIjG,EAAMsD,MAAMkE,KAAMjE,WACjB,MAAL0C,EAAWuB,KAAK4uB,MAAMa,eAAe7J,GACpC5lB,KAAK4uB,MAAMgB,YAAYhK,EAAMnnB,EAAGkxB,EACvC,CACF,CAEe,WAAS/J,EAAMptB,EAAOm3B,GACnC,OAAO5zB,UAAU1C,OAAS,EACpB2G,KAAKoH,MAAe,MAAT5O,EACLg3B,EAA+B,oBAAVh3B,EACrBq3B,EACAH,GAAe9J,EAAMptB,EAAmB,MAAZm3B,EAAmB,GAAKA,IAC1DG,EAAW9vB,KAAKjH,OAAQ6sB,EAChC,CAEO,SAASkK,EAAW/2B,EAAM6sB,GAC/B,OAAO7sB,EAAK61B,MAAMmB,iBAAiBnK,KAC5BiG,EAAAA,EAAAA,GAAY9yB,GAAMi3B,iBAAiBj3B,EAAM,MAAMg3B,iBAAiBnK,EACzE,C,kBClCA,SAASqK,IAAQ,CAEF,WAAS9K,GACtB,OAAmB,MAAZA,EAAmB8K,EAAO,WAC/B,OAAOjwB,KAAKslB,cAAcH,EAC5B,CACF,C,kCCNA,SAASuJ,IACP,MAAO,EACT,CAEe,WAASvJ,GACtB,OAAmB,MAAZA,EAAmBuJ,EAAQ,WAChC,OAAO1uB,KAAKylB,iBAAiBN,EAC/B,CACF,C,kCCRe,WAASpsB,GACtB,OAAQA,EAAK0tB,eAAiB1tB,EAAK0tB,cAAcoF,aACzC9yB,EAAKssB,UAAYtsB,GAClBA,EAAK8yB,WACd,C,kCCJe,WAASlyB,GACtB,OAAO,WACL,OAAOA,CACT,CACF,C,2OCJO,MAAM2H,EAAM7E,KAAK6E,IACX+V,EAAQ5a,KAAK4a,MACb9U,EAAM9F,KAAK8F,IACX9I,EAAMgD,KAAKhD,IACXrB,EAAMqE,KAAKrE,IACXoK,EAAM/F,KAAK+F,IACXZ,EAAOnF,KAAKmF,KAEZ/B,EAAU,MACVH,EAAKjD,KAAKkD,GACVuwB,EAASxwB,EAAK,EACdE,EAAM,EAAIF,EAMhB,SAASywB,EAAKx2B,GACnB,OAAOA,GAAK,EAAIu2B,EAASv2B,IAAM,GAAKu2B,EAASzzB,KAAK0zB,KAAKx2B,EACzD,C,2CCnBA,MAAM+F,EAAKjD,KAAKkD,GACZC,EAAM,EAAIF,EACVG,EAAU,KACVC,EAAaF,EAAMC,EAEvB,SAAS0G,EAAO6pB,GACdpwB,KAAKZ,GAAKgxB,EAAQ,GAClB,IAAK,IAAIn0B,EAAI,EAAGhD,EAAIm3B,EAAQ/2B,OAAQ4C,EAAIhD,IAAKgD,EAC3C+D,KAAKZ,GAAKrD,UAAUE,GAAKm0B,EAAQn0B,EAErC,CAeO,MAAM8D,EACXQ,WAAAA,CAAY8vB,GACVrwB,KAAKC,IAAMD,KAAKE,IAChBF,KAAKG,IAAMH,KAAKI,IAAM,KACtBJ,KAAKZ,EAAI,GACTY,KAAKswB,QAAoB,MAAVD,EAAiB9pB,EAlBpC,SAAqB8pB,GACnB,IAAI13B,EAAI8D,KAAKe,MAAM6yB,GACnB,KAAM13B,GAAK,GAAI,MAAM,IAAIkC,MAAM,mBAADyN,OAAoB+nB,IAClD,GAAI13B,EAAI,GAAI,OAAO4N,EACnB,MAAMrB,EAAI,IAAMvM,EAChB,OAAO,SAASy3B,GACdpwB,KAAKZ,GAAKgxB,EAAQ,GAClB,IAAK,IAAIn0B,EAAI,EAAGhD,EAAIm3B,EAAQ/2B,OAAQ4C,EAAIhD,IAAKgD,EAC3C+D,KAAKZ,GAAK3C,KAAK4H,MAAMtI,UAAUE,GAAKiJ,GAAKA,EAAIkrB,EAAQn0B,EAEzD,CACF,CAO6Cs0B,CAAYF,EACvD,CACA7vB,MAAAA,CAAO7G,EAAGoE,GACRiC,KAAKswB,QAAOE,IAAAA,GAAAC,EAAAA,EAAAA,GAAA,eAAIzwB,KAAKC,IAAMD,KAAKG,KAAOxG,EAAKqG,KAAKE,IAAMF,KAAKI,KAAOrC,EACrE,CACA0C,SAAAA,GACmB,OAAbT,KAAKG,MACPH,KAAKG,IAAMH,KAAKC,IAAKD,KAAKI,IAAMJ,KAAKE,IACrCF,KAAKswB,QAAOI,IAAAA,GAAAD,EAAAA,EAAAA,GAAA,SAEhB,CACA/vB,MAAAA,CAAO/G,EAAGoE,GACRiC,KAAKswB,QAAOK,IAAAA,GAAAF,EAAAA,EAAAA,GAAA,eAAIzwB,KAAKG,KAAOxG,EAAKqG,KAAKI,KAAOrC,EAC/C,CACA4C,gBAAAA,CAAiBnF,EAAIR,EAAIrB,EAAGoE,GAC1BiC,KAAKswB,QAAOM,IAAAA,GAAAH,EAAAA,EAAAA,GAAA,wBAAKj1B,GAAOR,EAAMgF,KAAKG,KAAOxG,EAAKqG,KAAKI,KAAOrC,EAC7D,CACA6C,aAAAA,CAAcpF,EAAIR,EAAI6F,EAAIC,EAAInH,EAAGoE,GAC/BiC,KAAKswB,QAAOO,IAAAA,GAAAJ,EAAAA,EAAAA,GAAA,gCAAKj1B,GAAOR,GAAO6F,GAAOC,EAAMd,KAAKG,KAAOxG,EAAKqG,KAAKI,KAAOrC,EAC3E,CACAgD,KAAAA,CAAMvF,EAAIR,EAAI6F,EAAIC,EAAIE,GAIpB,GAHAxF,GAAMA,EAAIR,GAAMA,EAAI6F,GAAMA,EAAIC,GAAMA,GAAIE,GAAKA,GAGrC,EAAG,MAAM,IAAInG,MAAM,oBAADyN,OAAqBtH,IAE/C,IAAIzF,EAAKyE,KAAKG,IACVjG,EAAK8F,KAAKI,IACVa,EAAMJ,EAAKrF,EACX0F,EAAMJ,EAAK9F,EACXmG,EAAM5F,EAAKC,EACX4F,EAAMlH,EAAKc,EACXqG,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAiB,OAAbpB,KAAKG,IACPH,KAAKswB,QAAOQ,IAAAA,GAAAL,EAAAA,EAAAA,GAAA,eAAIzwB,KAAKG,IAAM3E,EAAMwE,KAAKI,IAAMpF,QAIzC,GAAMqG,EAAQxB,EAKd,GAAMpD,KAAK6E,IAAIF,EAAMH,EAAMC,EAAMC,GAAOtB,GAAamB,EAKrD,CACH,IAAIO,EAAMV,EAAKtF,EACXiG,EAAMV,EAAK5G,EACXuH,EAAQR,EAAMA,EAAMC,EAAMA,EAC1BQ,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAMlF,KAAKmF,KAAKH,GAChBI,EAAMpF,KAAKmF,KAAKP,GAChBS,EAAId,EAAIvE,KAAKsF,KAAKrC,EAAKjD,KAAKuF,MAAMP,EAAQJ,EAAQK,IAAU,EAAIC,EAAME,KAAS,GAC/EI,EAAMH,EAAID,EACVK,EAAMJ,EAAIH,EAGVlF,KAAK6E,IAAIW,EAAM,GAAKpC,GACtBG,KAAKswB,QAAOS,IAAAA,GAAAN,EAAAA,EAAAA,GAAA,eAAIj1B,EAAKyG,EAAMd,EAAOnG,EAAKiH,EAAMb,GAG/CpB,KAAKswB,QAAOU,IAAAA,GAAAP,EAAAA,EAAAA,GAAA,+BAAIzvB,EAAKA,IAAWI,EAAMG,EAAMJ,EAAMK,GAAQxB,KAAKG,IAAM3E,EAAK0G,EAAMjB,EAAOjB,KAAKI,IAAMpF,EAAKkH,EAAMhB,EAC/G,MArBElB,KAAKswB,QAAOW,IAAAA,GAAAR,EAAAA,EAAAA,GAAA,eAAIzwB,KAAKG,IAAM3E,EAAMwE,KAAKI,IAAMpF,QAsBhD,CACAmH,GAAAA,CAAIxI,EAAGoE,EAAGiD,EAAGoB,EAAIC,EAAIC,GAInB,GAHA3I,GAAKA,EAAGoE,GAAKA,EAAWuE,IAAQA,GAAhBtB,GAAKA,GAGb,EAAG,MAAM,IAAInG,MAAM,oBAADyN,OAAqBtH,IAE/C,IAAIvF,EAAKuF,EAAIvE,KAAK8F,IAAIH,GAClB1G,EAAKsF,EAAIvE,KAAK+F,IAAIJ,GAClB7G,EAAK5B,EAAI8B,EACTvB,EAAK6D,EAAIrC,EACT+G,EAAK,EAAIH,EACTI,EAAKJ,EAAMF,EAAKC,EAAKA,EAAKD,EAGb,OAAbpC,KAAKG,IACPH,KAAKswB,QAAOY,IAAAA,GAAAT,EAAAA,EAAAA,GAAA,eAAIl1B,EAAMrB,IAIfuC,KAAK6E,IAAItB,KAAKG,IAAM5E,GAAMsE,GAAWpD,KAAK6E,IAAItB,KAAKI,IAAMlG,GAAM2F,IACtEG,KAAKswB,QAAOa,IAAAA,GAAAV,EAAAA,EAAAA,GAAA,eAAIl1B,EAAMrB,GAInB8G,IAGD0B,EAAK,IAAGA,EAAKA,EAAK9C,EAAMA,GAGxB8C,EAAK5C,EACPE,KAAKswB,QAAOc,IAAAA,GAAAX,EAAAA,EAAAA,GAAA,uDAAIzvB,EAAKA,EAASyB,EAAM9I,EAAI8B,EAAMsC,EAAIrC,EAAMsF,EAAKA,EAASyB,EAAMzC,KAAKG,IAAM5E,EAAMyE,KAAKI,IAAMlG,GAIjGwI,EAAK7C,GACZG,KAAKswB,QAAOe,IAAAA,GAAAZ,EAAAA,EAAAA,GAAA,iCAAIzvB,EAAKA,IAAS0B,GAAMhD,GAAO+C,EAAMzC,KAAKG,IAAMxG,EAAIqH,EAAIvE,KAAK8F,IAAIF,GAAOrC,KAAKI,IAAMrC,EAAIiD,EAAIvE,KAAK+F,IAAIH,IAEpH,CACAM,IAAAA,CAAKhJ,EAAGoE,EAAGS,EAAGoE,GACZ5C,KAAKswB,QAAOgB,IAAAA,GAAAb,EAAAA,EAAAA,GAAA,4BAAIzwB,KAAKC,IAAMD,KAAKG,KAAOxG,EAAKqG,KAAKE,IAAMF,KAAKI,KAAOrC,EAAKS,GAAKA,GAAMoE,GAAMpE,EAC3F,CACAqE,QAAAA,GACE,OAAO7C,KAAKZ,CACd,EC7IK,SAASmyB,EAASC,GACvB,IAAInB,EAAS,EAcb,OAZAmB,EAAMnB,OAAS,SAASjxB,GACtB,IAAKrD,UAAU1C,OAAQ,OAAOg3B,EAC9B,GAAS,MAALjxB,EACFixB,EAAS,SACJ,CACL,MAAM13B,EAAI8D,KAAKe,MAAM4B,GACrB,KAAMzG,GAAK,GAAI,MAAM,IAAI84B,WAAW,mBAADnpB,OAAoBlJ,IACvDixB,EAAS13B,CACX,CACA,OAAO64B,CACT,EAEO,IAAM,IAAIzxB,EAAKswB,EACxB,CCdA,SAASqB,EAAe/4B,GACtB,OAAOA,EAAEg5B,WACX,CAEA,SAASC,EAAej5B,GACtB,OAAOA,EAAEk5B,WACX,CAEA,SAASC,EAAcn5B,GACrB,OAAOA,EAAEo5B,UACX,CAEA,SAASC,EAAYr5B,GACnB,OAAOA,EAAEs5B,QACX,CAEA,SAASC,EAAYv5B,GACnB,OAAOA,GAAKA,EAAEw5B,QAChB,CAaA,SAASC,EAAe72B,EAAIrB,EAAIsB,EAAIR,EAAI4e,EAAIyY,EAAI5vB,GAC9C,IAAItB,EAAM5F,EAAKC,EACX4F,EAAMlH,EAAKc,EACX2gB,GAAMlZ,EAAK4vB,GAAMA,GAAMzwB,EAAKT,EAAMA,EAAMC,EAAMA,GAC9CkxB,EAAK3W,EAAKva,EACVmxB,GAAM5W,EAAKxa,EACXqxB,EAAMj3B,EAAK+2B,EACXG,EAAMv4B,EAAKq4B,EACXG,EAAMl3B,EAAK82B,EACXK,EAAM33B,EAAKu3B,EACXK,GAAOJ,EAAME,GAAO,EACpBG,GAAOJ,EAAME,GAAO,EACpBl3B,EAAKi3B,EAAMF,EACX92B,EAAKi3B,EAAMF,EACXK,EAAKr3B,EAAKA,EAAKC,EAAKA,EACpBsF,EAAI4Y,EAAKyY,EACTU,EAAIP,EAAMG,EAAMD,EAAMD,EACtB95B,GAAK+C,EAAK,GAAK,EAAI,GAAKkG,EAAKnI,EAAI,EAAGuH,EAAIA,EAAI8xB,EAAKC,EAAIA,IACrDC,GAAOD,EAAIr3B,EAAKD,EAAK9C,GAAKm6B,EAC1BG,IAAQF,EAAIt3B,EAAKC,EAAK/C,GAAKm6B,EAC3BI,GAAOH,EAAIr3B,EAAKD,EAAK9C,GAAKm6B,EAC1BK,IAAQJ,EAAIt3B,EAAKC,EAAK/C,GAAKm6B,EAC3BM,EAAMJ,EAAMJ,EACZS,EAAMJ,EAAMJ,EACZS,EAAMJ,EAAMN,EACZW,EAAMJ,EAAMN,EAMhB,OAFIO,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IAAKP,EAAME,EAAKD,EAAME,GAE7D,CACLK,GAAIR,EACJS,GAAIR,EACJ9xB,KAAMmxB,EACNlxB,KAAMmxB,EACNC,IAAKQ,GAAOpZ,EAAK5Y,EAAI,GACrByxB,IAAKQ,GAAOrZ,EAAK5Y,EAAI,GAEzB,CAEe,aACb,IAAI2wB,EAAcD,EACdG,EAAcD,EACd8B,EAAeh6B,EAAS,GACxBi6B,EAAY,KACZ5B,EAAaD,EACbG,EAAWD,EACXG,EAAWD,EACX7uB,EAAU,KACVhD,EAAOkxB,EAASpvB,GAEpB,SAASA,IACP,IAAImB,EACAtC,EH5EarH,EG6EbggB,GAAMgY,EAAY71B,MAAMkE,KAAMjE,WAC9B6d,GAAMiY,EAAY/1B,MAAMkE,KAAMjE,WAC9BqG,EAAK2vB,EAAWj2B,MAAMkE,KAAMjE,WAAam0B,EACzC7tB,EAAK4vB,EAASn2B,MAAMkE,KAAMjE,WAAam0B,EACvCxtB,EAAKpB,EAAIe,EAAKD,GACdK,EAAKJ,EAAKD,EAQd,GANKiB,IAASA,EAAUC,EAASjD,KAG7BuZ,EAAKD,IAAI3Y,EAAI4Y,EAAIA,EAAKD,EAAIA,EAAK3Y,GAG7B4Y,EAAK/Z,EAGN,GAAI6C,EAAK9C,EAAMC,EAClBwD,EAAQ7C,OAAOoZ,EAAKrX,EAAIH,GAAKwX,EAAKpX,EAAIJ,IACtCiB,EAAQlB,IAAI,EAAG,EAAGyX,EAAIxX,EAAIC,GAAKI,GAC3BkX,EAAK9Z,IACPwD,EAAQ7C,OAAOmZ,EAAKpX,EAAIF,GAAKsX,EAAKnX,EAAIH,IACtCgB,EAAQlB,IAAI,EAAG,EAAGwX,EAAItX,EAAID,EAAIK,QAK7B,CACH,IAWI8T,EACAC,EAZAod,EAAMxxB,EACNyxB,EAAMxxB,EACNyxB,EAAM1xB,EACN2xB,EAAM1xB,EACN2xB,EAAMtxB,EACNuxB,EAAMvxB,EACNwxB,EAAK/B,EAASr2B,MAAMkE,KAAMjE,WAAa,EACvCo4B,EAAMD,EAAKr0B,IAAa8zB,GAAaA,EAAU73B,MAAMkE,KAAMjE,WAAa6F,EAAK+X,EAAKA,EAAKC,EAAKA,IAC5FyY,EAAKj6B,EAAIkJ,EAAIsY,EAAKD,GAAM,GAAI+Z,EAAa53B,MAAMkE,KAAMjE,YACrDq4B,EAAM/B,EACNgC,EAAMhC,EAKV,GAAI8B,EAAKt0B,EAAS,CAChB,IAAIy0B,EAAKnE,EAAKgE,EAAKxa,EAAKnX,EAAI0xB,IACxBK,EAAKpE,EAAKgE,EAAKva,EAAKpX,EAAI0xB,KACvBF,GAAY,EAALM,GAAUz0B,GAA8Bi0B,GAArBQ,GAAO7xB,EAAK,GAAK,EAAesxB,GAAOO,IACjEN,EAAM,EAAGF,EAAMC,GAAO3xB,EAAKC,GAAM,IACjC4xB,GAAY,EAALM,GAAU10B,GAA8B+zB,GAArBW,GAAO9xB,EAAK,GAAK,EAAeoxB,GAAOU,IACjEN,EAAM,EAAGL,EAAMC,GAAOzxB,EAAKC,GAAM,EACxC,CAEA,IAAIlB,EAAMyY,EAAKrX,EAAIqxB,GACfxyB,EAAMwY,EAAKpX,EAAIoxB,GACflB,EAAM/Y,EAAKpX,EAAIwxB,GACfpB,EAAMhZ,EAAKnX,EAAIuxB,GAGnB,GAAI1B,EAAKxyB,EAAS,CAChB,IAII20B,EAJAhC,EAAM5Y,EAAKrX,EAAIsxB,GACfpB,EAAM7Y,EAAKpX,EAAIqxB,GACfjB,EAAMjZ,EAAKpX,EAAIuxB,GACfjB,EAAMlZ,EAAKnX,EAAIsxB,GAMnB,GAAIpxB,EAAKhD,EACP,GAAI80B,EAtId,SAAmBj5B,EAAIrB,EAAIsB,EAAIR,EAAI6F,EAAIC,EAAI2zB,EAAIC,GAC7C,IAAIhC,EAAMl3B,EAAKD,EAAIo3B,EAAM33B,EAAKd,EAC1By6B,EAAMF,EAAK5zB,EAAI+zB,EAAMF,EAAK5zB,EAC1B2C,EAAImxB,EAAMlC,EAAMiC,EAAMhC,EAC1B,KAAIlvB,EAAIA,EAAI5D,GAEZ,MAAO,CAACtE,GADRkI,GAAKkxB,GAAOz6B,EAAK4G,GAAM8zB,GAAOr5B,EAAKsF,IAAO4C,GACzBivB,EAAKx4B,EAAKuJ,EAAIkvB,EACjC,CA+HmBkC,CAAU1zB,EAAKC,EAAKwxB,EAAKC,EAAKL,EAAKC,EAAKC,EAAKC,GAAM,CAC1D,IAAImC,GAAK3zB,EAAMqzB,EAAG,GACdO,GAAK3zB,EAAMozB,EAAG,GACdQ,GAAKxC,EAAMgC,EAAG,GACdS,GAAKxC,EAAM+B,EAAG,GACdU,GAAK,EAAI1yB,IHtJJ7I,GGsJcm7B,GAAKE,GAAKD,GAAKE,KAAOrzB,EAAKkzB,GAAKA,GAAKC,GAAKA,IAAMnzB,EAAKozB,GAAKA,GAAKC,GAAKA,MHrJ1F,EAAI,EAAIt7B,GAAK,EAAI+F,EAAKjD,KAAKuF,KAAKrI,IGqJkE,GAC/Fw7B,GAAKvzB,EAAK4yB,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IACzCJ,EAAMh8B,EAAIi6B,GAAK1Y,EAAKwb,KAAOD,GAAK,IAChCb,EAAMj8B,EAAIi6B,GAAKzY,EAAKub,KAAOD,GAAK,GAClC,MACEd,EAAMC,EAAM,CAGlB,CAGMJ,EAAMp0B,EAGHw0B,EAAMx0B,GACb0W,EAAK6b,EAAeQ,EAAKC,EAAK1xB,EAAKC,EAAKwY,EAAIya,EAAK5xB,GACjD+T,EAAK4b,EAAeI,EAAKC,EAAKC,EAAKC,EAAK/Y,EAAIya,EAAK5xB,GAEjDY,EAAQ7C,OAAO+V,EAAGid,GAAKjd,EAAGpV,IAAKoV,EAAGkd,GAAKld,EAAGnV,KAGtCizB,EAAMhC,EAAIhvB,EAAQlB,IAAIoU,EAAGid,GAAIjd,EAAGkd,GAAIY,EAAKhd,EAAMd,EAAGnV,IAAKmV,EAAGpV,KAAMkW,EAAMb,EAAGpV,IAAKoV,EAAGrV,MAAOsB,IAI1FY,EAAQlB,IAAIoU,EAAGid,GAAIjd,EAAGkd,GAAIY,EAAKhd,EAAMd,EAAGnV,IAAKmV,EAAGpV,KAAMkW,EAAMd,EAAGkc,IAAKlc,EAAGic,MAAO/vB,GAC9EY,EAAQlB,IAAI,EAAG,EAAGyX,EAAIvC,EAAMd,EAAGkd,GAAKld,EAAGkc,IAAKlc,EAAGid,GAAKjd,EAAGic,KAAMnb,EAAMb,EAAGid,GAAKjd,EAAGic,IAAKjc,EAAGgd,GAAKhd,EAAGgc,MAAO/vB,GACrGY,EAAQlB,IAAIqU,EAAGgd,GAAIhd,EAAGid,GAAIY,EAAKhd,EAAMb,EAAGic,IAAKjc,EAAGgc,KAAMnb,EAAMb,EAAGpV,IAAKoV,EAAGrV,MAAOsB,MAK7EY,EAAQ7C,OAAOW,EAAKC,GAAMiC,EAAQlB,IAAI,EAAG,EAAGyX,EAAIga,EAAKC,GAAMpxB,IArB1CY,EAAQ7C,OAAOW,EAAKC,GAyBpCuY,EAAK9Z,GAAcm0B,EAAMn0B,EAGtBu0B,EAAMv0B,GACb0W,EAAK6b,EAAeM,EAAKC,EAAKH,EAAKC,EAAK9Y,GAAKya,EAAK3xB,GAClD+T,EAAK4b,EAAejxB,EAAKC,EAAKwxB,EAAKC,EAAKlZ,GAAKya,EAAK3xB,GAElDY,EAAQ3C,OAAO6V,EAAGid,GAAKjd,EAAGpV,IAAKoV,EAAGkd,GAAKld,EAAGnV,KAGtCgzB,EAAM/B,EAAIhvB,EAAQlB,IAAIoU,EAAGid,GAAIjd,EAAGkd,GAAIW,EAAK/c,EAAMd,EAAGnV,IAAKmV,EAAGpV,KAAMkW,EAAMb,EAAGpV,IAAKoV,EAAGrV,MAAOsB,IAI1FY,EAAQlB,IAAIoU,EAAGid,GAAIjd,EAAGkd,GAAIW,EAAK/c,EAAMd,EAAGnV,IAAKmV,EAAGpV,KAAMkW,EAAMd,EAAGkc,IAAKlc,EAAGic,MAAO/vB,GAC9EY,EAAQlB,IAAI,EAAG,EAAGwX,EAAItC,EAAMd,EAAGkd,GAAKld,EAAGkc,IAAKlc,EAAGid,GAAKjd,EAAGic,KAAMnb,EAAMb,EAAGid,GAAKjd,EAAGic,IAAKjc,EAAGgd,GAAKhd,EAAGgc,KAAM/vB,GACpGY,EAAQlB,IAAIqU,EAAGgd,GAAIhd,EAAGid,GAAIW,EAAK/c,EAAMb,EAAGic,IAAKjc,EAAGgc,KAAMnb,EAAMb,EAAGpV,IAAKoV,EAAGrV,MAAOsB,KAK7EY,EAAQlB,IAAI,EAAG,EAAGwX,EAAIoa,EAAKD,EAAKrxB,GArBIY,EAAQ3C,OAAOgyB,EAAKC,EAsB/D,MAtHqBtvB,EAAQ7C,OAAO,EAAG,GA0HvC,GAFA6C,EAAQ5C,YAEJ6C,EAAQ,OAAOD,EAAU,KAAMC,EAAS,IAAM,IACpD,CAwCA,OAtCAnB,EAAIizB,SAAW,WACb,IAAIp0B,IAAM2wB,EAAY71B,MAAMkE,KAAMjE,aAAc81B,EAAY/1B,MAAMkE,KAAMjE,YAAc,EAClFlC,IAAMk4B,EAAWj2B,MAAMkE,KAAMjE,aAAck2B,EAASn2B,MAAMkE,KAAMjE,YAAc,EAAI2D,EAAK,EAC3F,MAAO,CAAC6C,EAAI1I,GAAKmH,EAAGwB,EAAI3I,GAAKmH,EAC/B,EAEAmB,EAAIwvB,YAAc,SAASvyB,GACzB,OAAOrD,UAAU1C,QAAUs4B,EAA2B,oBAANvyB,EAAmBA,EAAI1F,GAAU0F,GAAI+C,GAAOwvB,CAC9F,EAEAxvB,EAAI0vB,YAAc,SAASzyB,GACzB,OAAOrD,UAAU1C,QAAUw4B,EAA2B,oBAANzyB,EAAmBA,EAAI1F,GAAU0F,GAAI+C,GAAO0vB,CAC9F,EAEA1vB,EAAIuxB,aAAe,SAASt0B,GAC1B,OAAOrD,UAAU1C,QAAUq6B,EAA4B,oBAANt0B,EAAmBA,EAAI1F,GAAU0F,GAAI+C,GAAOuxB,CAC/F,EAEAvxB,EAAIwxB,UAAY,SAASv0B,GACvB,OAAOrD,UAAU1C,QAAUs6B,EAAiB,MAALv0B,EAAY,KAAoB,oBAANA,EAAmBA,EAAI1F,GAAU0F,GAAI+C,GAAOwxB,CAC/G,EAEAxxB,EAAI4vB,WAAa,SAAS3yB,GACxB,OAAOrD,UAAU1C,QAAU04B,EAA0B,oBAAN3yB,EAAmBA,EAAI1F,GAAU0F,GAAI+C,GAAO4vB,CAC7F,EAEA5vB,EAAI8vB,SAAW,SAAS7yB,GACtB,OAAOrD,UAAU1C,QAAU44B,EAAwB,oBAAN7yB,EAAmBA,EAAI1F,GAAU0F,GAAI+C,GAAO8vB,CAC3F,EAEA9vB,EAAIgwB,SAAW,SAAS/yB,GACtB,OAAOrD,UAAU1C,QAAU84B,EAAwB,oBAAN/yB,EAAmBA,EAAI1F,GAAU0F,GAAI+C,GAAOgwB,CAC3F,EAEAhwB,EAAIkB,QAAU,SAASjE,GACrB,OAAOrD,UAAU1C,QAAWgK,EAAe,MAALjE,EAAY,KAAOA,EAAI+C,GAAOkB,CACtE,EAEOlB,CACT,CFpHiBpC,EAAKO,UGvJH/C,MAAM+C,UAAUwC,MAEpB,WAASnJ,GACtB,MAAoB,kBAANA,GAAkB,WAAYA,EACxCA,EACA4D,MAAM8J,KAAK1N,EACjB,CCNA,SAAS07B,EAAOhyB,GACdrD,KAAKs1B,SAAWjyB,CAClB,CA0Be,WAASA,GACtB,OAAO,IAAIgyB,EAAOhyB,EACpB,CC9BO,SAAS1J,EAAEoJ,GAChB,OAAOA,EAAE,EACX,CAEO,SAAShF,EAAEgF,GAChB,OAAOA,EAAE,EACX,CCAe,WAASpJ,EAAGoE,GACzB,IAAIw3B,EAAU77B,GAAS,GACnB2J,EAAU,KACVH,EAAQsyB,EACR9X,EAAS,KACTrd,EAAOkxB,EAAS9qB,GAKpB,SAASA,EAAKT,GACZ,IAAI/J,EAEAtD,EAEA2K,EAHArK,GAAK+M,EAAOkf,EAAMlf,IAAO3M,OAEzBo8B,GAAW,EAKf,IAFe,MAAXpyB,IAAiBqa,EAASxa,EAAMI,EAASjD,MAExCpE,EAAI,EAAGA,GAAKhD,IAAKgD,IACdA,EAAIhD,GAAKs8B,EAAQ58B,EAAIqN,EAAK/J,GAAIA,EAAG+J,MAAWyvB,KAC5CA,GAAYA,GAAU/X,EAAOgY,YAC5BhY,EAAOiY,WAEVF,GAAU/X,EAAOkY,OAAOj8B,EAAEhB,EAAGsD,EAAG+J,IAAQjI,EAAEpF,EAAGsD,EAAG+J,IAGtD,GAAI1C,EAAQ,OAAOoa,EAAS,KAAMpa,EAAS,IAAM,IACnD,CAsBA,OA3CA3J,EAAiB,oBAANA,EAAmBA,OAAWpB,IAANoB,EAAmBwJ,EAASzJ,EAASC,GACxEoE,EAAiB,oBAANA,EAAmBA,OAAWxF,IAANwF,EAAmBqF,EAAS1J,EAASqE,GAsBxE0I,EAAK9M,EAAI,SAASyF,GAChB,OAAOrD,UAAU1C,QAAUM,EAAiB,oBAANyF,EAAmBA,EAAI1F,GAAU0F,GAAIqH,GAAQ9M,CACrF,EAEA8M,EAAK1I,EAAI,SAASqB,GAChB,OAAOrD,UAAU1C,QAAU0E,EAAiB,oBAANqB,EAAmBA,EAAI1F,GAAU0F,GAAIqH,GAAQ1I,CACrF,EAEA0I,EAAK8uB,QAAU,SAASn2B,GACtB,OAAOrD,UAAU1C,QAAUk8B,EAAuB,oBAANn2B,EAAmBA,EAAI1F,IAAW0F,GAAIqH,GAAQ8uB,CAC5F,EAEA9uB,EAAKvD,MAAQ,SAAS9D,GACpB,OAAOrD,UAAU1C,QAAU6J,EAAQ9D,EAAc,MAAXiE,IAAoBqa,EAASxa,EAAMG,IAAWoD,GAAQvD,CAC9F,EAEAuD,EAAKpD,QAAU,SAASjE,GACtB,OAAOrD,UAAU1C,QAAe,MAAL+F,EAAYiE,EAAUqa,EAAS,KAAOA,EAASxa,EAAMG,EAAUjE,GAAIqH,GAAQpD,CACxG,EAEOoD,CACT,CCzDe,WAAS5M,EAAGC,GACzB,OAAOA,EAAID,GAAK,EAAIC,EAAID,EAAI,EAAIC,GAAKD,EAAI,EAAImZ,GAC/C,CCFe,WAASra,GACtB,OAAOA,CACT,CCIe,aACb,IAAIH,EAAQ+M,EACRswB,EAAaxa,EACbhgB,EAAO,KACP02B,EAAar4B,EAAS,GACtBu4B,EAAWv4B,EAASkG,GACpBuyB,EAAWz4B,EAAS,GAExB,SAASo8B,EAAI9vB,GACX,IAAI/J,EAEAohB,EACAnY,EAMA7C,EAGA5D,EAXAxF,GAAK+M,EAAOkf,EAAMlf,IAAO3M,OAGzBG,EAAM,EACNf,EAAQ,IAAI8E,MAAMtE,GAClB88B,EAAO,IAAIx4B,MAAMtE,GACjBmJ,GAAM2vB,EAAWj2B,MAAMkE,KAAMjE,WAC7B2G,EAAKjG,KAAKrE,IAAIwH,EAAKnD,KAAKhD,KAAKmG,EAAKqyB,EAASn2B,MAAMkE,KAAMjE,WAAaqG,IAEpEW,EAAItG,KAAKrE,IAAIqE,KAAK6E,IAAIoB,GAAMzJ,EAAGk5B,EAASr2B,MAAMkE,KAAMjE,YACpDi6B,EAAKjzB,GAAKL,EAAK,GAAK,EAAI,GAG5B,IAAKzG,EAAI,EAAGA,EAAIhD,IAAKgD,GACdwC,EAAIs3B,EAAKt9B,EAAMwD,GAAKA,IAAMzD,EAAMwN,EAAK/J,GAAIA,EAAG+J,IAAS,IACxDxM,GAAOiF,GASX,IAJkB,MAAdo3B,EAAoBp9B,EAAM4C,MAAK,SAASY,EAAGohB,GAAK,OAAOwY,EAAWE,EAAK95B,GAAI85B,EAAK1Y,GAAK,IACxE,MAARhiB,GAAc5C,EAAM4C,MAAK,SAASY,EAAGohB,GAAK,OAAOhiB,EAAK2K,EAAK/J,GAAI+J,EAAKqX,GAAK,IAG7EphB,EAAI,EAAGiJ,EAAI1L,GAAOkJ,EAAKzJ,EAAI+8B,GAAMx8B,EAAM,EAAGyC,EAAIhD,IAAKgD,EAAGmG,EAAKC,EAC9Dgb,EAAI5kB,EAAMwD,GAAiBoG,EAAKD,IAAlB3D,EAAIs3B,EAAK1Y,IAAmB,EAAI5e,EAAIyG,EAAI,GAAK8wB,EAAID,EAAK1Y,GAAK,CACvErX,KAAMA,EAAKqX,GACX5kB,MAAOwD,EACPzD,MAAOiG,EACPszB,WAAY3vB,EACZ6vB,SAAU5vB,EACV8vB,SAAUpvB,GAId,OAAOgzB,CACT,CA0BA,OAxBAD,EAAIt9B,MAAQ,SAAS4G,GACnB,OAAOrD,UAAU1C,QAAUb,EAAqB,oBAAN4G,EAAmBA,EAAI1F,GAAU0F,GAAI02B,GAAOt9B,CACxF,EAEAs9B,EAAID,WAAa,SAASz2B,GACxB,OAAOrD,UAAU1C,QAAUw8B,EAAaz2B,EAAG/D,EAAO,KAAMy6B,GAAOD,CACjE,EAEAC,EAAIz6B,KAAO,SAAS+D,GAClB,OAAOrD,UAAU1C,QAAUgC,EAAO+D,EAAGy2B,EAAa,KAAMC,GAAOz6B,CACjE,EAEAy6B,EAAI/D,WAAa,SAAS3yB,GACxB,OAAOrD,UAAU1C,QAAU04B,EAA0B,oBAAN3yB,EAAmBA,EAAI1F,GAAU0F,GAAI02B,GAAO/D,CAC7F,EAEA+D,EAAI7D,SAAW,SAAS7yB,GACtB,OAAOrD,UAAU1C,QAAU44B,EAAwB,oBAAN7yB,EAAmBA,EAAI1F,GAAU0F,GAAI02B,GAAO7D,CAC3F,EAEA6D,EAAI3D,SAAW,SAAS/yB,GACtB,OAAOrD,UAAU1C,QAAU84B,EAAwB,oBAAN/yB,EAAmBA,EAAI1F,GAAU0F,GAAI02B,GAAO3D,CAC3F,EAEO2D,CACT,CC/Ee,cAAY,CCApB,SAASF,GAAMK,EAAMt8B,EAAGoE,GAC7Bk4B,EAAKX,SAAS10B,eACX,EAAIq1B,EAAKh2B,IAAMg2B,EAAK91B,KAAO,GAC3B,EAAI81B,EAAK/1B,IAAM+1B,EAAK71B,KAAO,GAC3B61B,EAAKh2B,IAAM,EAAIg2B,EAAK91B,KAAO,GAC3B81B,EAAK/1B,IAAM,EAAI+1B,EAAK71B,KAAO,GAC3B61B,EAAKh2B,IAAM,EAAIg2B,EAAK91B,IAAMxG,GAAK,GAC/Bs8B,EAAK/1B,IAAM,EAAI+1B,EAAK71B,IAAMrC,GAAK,EAEpC,CAEO,SAASm4B,GAAM7yB,GACpBrD,KAAKs1B,SAAWjyB,CAClB,CAmCe,YAASA,GACtB,OAAO,IAAI6yB,GAAM7yB,EACnB,CC/CA,SAAS8yB,GAAY9yB,GACnBrD,KAAKs1B,SAAWjyB,CAClB,CA4Ce,YAASA,GACtB,OAAO,IAAI8yB,GAAY9yB,EACzB,CCjDA,SAAS+yB,GAAU/yB,GACjBrD,KAAKs1B,SAAWjyB,CAClB,CAgCe,YAASA,GACtB,OAAO,IAAI+yB,GAAU/yB,EACvB,CTlCAgyB,EAAO/0B,UAAY,CACjB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKw2B,OAAS,CAChB,EACAb,QAAS,YACH31B,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,EACAV,MAAO,SAASj8B,EAAGoE,GAEjB,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,GAAKiC,KAAKs1B,SAAS90B,OAAO7G,EAAGoE,GAAI,MAC/F,KAAK,EAAGiC,KAAKw2B,OAAS,EACtB,QAASx2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,GAErC,GOVFm4B,GAAM51B,UAAY,CAChB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAChBH,KAAKE,IAAMF,KAAKI,IAAM4S,IACtBhT,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACP,OAAQ31B,KAAKw2B,QACX,KAAK,EAAGZ,GAAM51B,KAAMA,KAAKG,IAAKH,KAAKI,KACnC,KAAK,EAAGJ,KAAKs1B,SAAS50B,OAAOV,KAAKG,IAAKH,KAAKI,MAE1CJ,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,EACAV,MAAO,SAASj8B,EAAGoE,GAEjB,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,GAAKiC,KAAKs1B,SAAS90B,OAAO7G,EAAGoE,GAAI,MAC/F,KAAK,EAAGiC,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs1B,SAAS50B,QAAQ,EAAIV,KAAKC,IAAMD,KAAKG,KAAO,GAAI,EAAIH,KAAKE,IAAMF,KAAKI,KAAO,GACzG,QAASw1B,GAAM51B,KAAMrG,EAAGoE,GAE1BiC,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMxG,EAChCqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMrC,CAClC,GCtCFo4B,GAAY71B,UAAY,CACtB+1B,UAAWI,GACXF,QAASE,GACTf,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAAMH,KAAK02B,IAAM12B,KAAK22B,IAAM32B,KAAK42B,IACjD52B,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK62B,IAAM72B,KAAK82B,IAAM92B,KAAK+2B,IAAM/jB,IACvDhT,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACP,OAAQ31B,KAAKw2B,QACX,KAAK,EACHx2B,KAAKs1B,SAAS90B,OAAOR,KAAK02B,IAAK12B,KAAK62B,KACpC72B,KAAKs1B,SAAS70B,YACd,MAEF,KAAK,EACHT,KAAKs1B,SAAS90B,QAAQR,KAAK02B,IAAM,EAAI12B,KAAK22B,KAAO,GAAI32B,KAAK62B,IAAM,EAAI72B,KAAK82B,KAAO,GAChF92B,KAAKs1B,SAAS50B,QAAQV,KAAK22B,IAAM,EAAI32B,KAAK02B,KAAO,GAAI12B,KAAK82B,IAAM,EAAI92B,KAAK62B,KAAO,GAChF72B,KAAKs1B,SAAS70B,YACd,MAEF,KAAK,EACHT,KAAK41B,MAAM51B,KAAK02B,IAAK12B,KAAK62B,KAC1B72B,KAAK41B,MAAM51B,KAAK22B,IAAK32B,KAAK82B,KAC1B92B,KAAK41B,MAAM51B,KAAK42B,IAAK52B,KAAK+2B,KAIhC,EACAnB,MAAO,SAASj8B,EAAGoE,GAEjB,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAK02B,IAAM/8B,EAAGqG,KAAK62B,IAAM94B,EAAG,MACrD,KAAK,EAAGiC,KAAKw2B,OAAS,EAAGx2B,KAAK22B,IAAMh9B,EAAGqG,KAAK82B,IAAM/4B,EAAG,MACrD,KAAK,EAAGiC,KAAKw2B,OAAS,EAAGx2B,KAAK42B,IAAMj9B,EAAGqG,KAAK+2B,IAAMh5B,EAAGiC,KAAKs1B,SAAS90B,QAAQR,KAAKC,IAAM,EAAID,KAAKG,IAAMxG,GAAK,GAAIqG,KAAKE,IAAM,EAAIF,KAAKI,IAAMrC,GAAK,GAAI,MACjJ,QAAS63B,GAAM51B,KAAMrG,EAAGoE,GAE1BiC,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMxG,EAChCqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMrC,CAClC,GCxCFq4B,GAAU91B,UAAY,CACpB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAChBH,KAAKE,IAAMF,KAAKI,IAAM4S,IACtBhT,KAAKw2B,OAAS,CAChB,EACAb,QAAS,YACH31B,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,EACAV,MAAO,SAASj8B,EAAGoE,GAEjB,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAG,IAAIj7B,GAAMyE,KAAKC,IAAM,EAAID,KAAKG,IAAMxG,GAAK,EAAGO,GAAM8F,KAAKE,IAAM,EAAIF,KAAKI,IAAMrC,GAAK,EAAGiC,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAOnF,EAAIrB,GAAM8F,KAAKs1B,SAAS90B,OAAOjF,EAAIrB,GAAK,MACvL,KAAK,EAAG8F,KAAKw2B,OAAS,EACtB,QAASZ,GAAM51B,KAAMrG,EAAGoE,GAE1BiC,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMxG,EAChCqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMrC,CAClC,GC/BF,MAAMi5B,GACJz2B,WAAAA,CAAY8C,EAAS1J,GACnBqG,KAAKs1B,SAAWjyB,EAChBrD,KAAKi3B,GAAKt9B,CACZ,CACA08B,SAAAA,GACEr2B,KAAKs2B,MAAQ,CACf,CACAC,OAAAA,GACEv2B,KAAKs2B,MAAQtjB,GACf,CACA0iB,SAAAA,GACE11B,KAAKw2B,OAAS,CAChB,CACAb,OAAAA,IACM31B,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,CACAV,KAAAA,CAAMj8B,EAAGoE,GAEP,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EACHx2B,KAAKw2B,OAAS,EACVx2B,KAAKs2B,MAAOt2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,GACnCiC,KAAKs1B,SAAS90B,OAAO7G,EAAGoE,GAC7B,MAEF,KAAK,EAAGiC,KAAKw2B,OAAS,EACtB,QACMx2B,KAAKi3B,GAAIj3B,KAAKs1B,SAAS10B,cAAcZ,KAAKC,KAAOD,KAAKC,IAAMtG,GAAK,EAAGqG,KAAKE,IAAKF,KAAKC,IAAKlC,EAAGpE,EAAGoE,GAC7FiC,KAAKs1B,SAAS10B,cAAcZ,KAAKC,IAAKD,KAAKE,KAAOF,KAAKE,IAAMnC,GAAK,EAAGpE,EAAGqG,KAAKE,IAAKvG,EAAGoE,GAI9FiC,KAAKC,IAAMtG,EAAGqG,KAAKE,IAAMnC,CAC3B,EA2BK,SAASm5B,GAAM7zB,GACpB,OAAO,IAAI2zB,GAAK3zB,GAAS,EAC3B,CAEO,SAAS8zB,GAAM9zB,GACpB,OAAO,IAAI2zB,GAAK3zB,GAAS,EAC3B,CCpEA,SAAS+zB,GAAO/zB,EAASjF,GACvB4B,KAAKq3B,OAAS,IAAInB,GAAM7yB,GACxBrD,KAAKs3B,MAAQl5B,CACf,CAEAg5B,GAAO92B,UAAY,CACjBo1B,UAAW,WACT11B,KAAKi3B,GAAK,GACVj3B,KAAKu3B,GAAK,GACVv3B,KAAKq3B,OAAO3B,WACd,EACAC,QAAS,WACP,IAAIh8B,EAAIqG,KAAKi3B,GACTl5B,EAAIiC,KAAKu3B,GACTla,EAAI1jB,EAAEN,OAAS,EAEnB,GAAIgkB,EAAI,EAQN,IAPA,IAKI5Z,EALAlI,EAAK5B,EAAE,GACPO,EAAK6D,EAAE,GACPtC,EAAK9B,EAAE0jB,GAAK9hB,EACZG,EAAKqC,EAAEsf,GAAKnjB,EACZ+B,GAAK,IAGAA,GAAKohB,GACZ5Z,EAAIxH,EAAIohB,EACRrd,KAAKq3B,OAAOzB,MACV51B,KAAKs3B,MAAQ39B,EAAEsC,IAAM,EAAI+D,KAAKs3B,QAAU/7B,EAAKkI,EAAIhI,GACjDuE,KAAKs3B,MAAQv5B,EAAE9B,IAAM,EAAI+D,KAAKs3B,QAAUp9B,EAAKuJ,EAAI/H,IAKvDsE,KAAKi3B,GAAKj3B,KAAKu3B,GAAK,KACpBv3B,KAAKq3B,OAAO1B,SACd,EACAC,MAAO,SAASj8B,EAAGoE,GACjBiC,KAAKi3B,GAAG56B,MAAM1C,GACdqG,KAAKu3B,GAAGl7B,MAAM0B,EAChB,GAGF,SAAe,SAAUy5B,EAAOp5B,GAE9B,SAASq5B,EAAOp0B,GACd,OAAgB,IAATjF,EAAa,IAAI83B,GAAM7yB,GAAW,IAAI+zB,GAAO/zB,EAASjF,EAC/D,CAMA,OAJAq5B,EAAOr5B,KAAO,SAASA,GACrB,OAAOo5B,GAAQp5B,EACjB,EAEOq5B,CACR,CAXD,CAWG,KCvDI,SAAS7B,GAAMK,EAAMt8B,EAAGoE,GAC7Bk4B,EAAKX,SAAS10B,cACZq1B,EAAK91B,IAAM81B,EAAKyB,IAAMzB,EAAKS,IAAMT,EAAKh2B,KACtCg2B,EAAK71B,IAAM61B,EAAKyB,IAAMzB,EAAKY,IAAMZ,EAAK/1B,KACtC+1B,EAAKS,IAAMT,EAAKyB,IAAMzB,EAAK91B,IAAMxG,GACjCs8B,EAAKY,IAAMZ,EAAKyB,IAAMzB,EAAK71B,IAAMrC,GACjCk4B,EAAKS,IACLT,EAAKY,IAET,CAEO,SAASc,GAASt0B,EAASu0B,GAChC53B,KAAKs1B,SAAWjyB,EAChBrD,KAAK03B,IAAM,EAAIE,GAAW,CAC5B,CAEAD,GAASr3B,UAAY,CACnB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAAMH,KAAK02B,IAC3B12B,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK62B,IAAM7jB,IACjChT,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACP,OAAQ31B,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKs1B,SAAS50B,OAAOV,KAAK02B,IAAK12B,KAAK62B,KAAM,MAClD,KAAK,EAAGjB,GAAM51B,KAAMA,KAAKG,IAAKH,KAAKI,MAEjCJ,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,EACAV,MAAO,SAASj8B,EAAGoE,GAEjB,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,GAAKiC,KAAKs1B,SAAS90B,OAAO7G,EAAGoE,GAAI,MAC/F,KAAK,EAAGiC,KAAKw2B,OAAS,EAAGx2B,KAAKG,IAAMxG,EAAGqG,KAAKI,IAAMrC,EAAG,MACrD,KAAK,EAAGiC,KAAKw2B,OAAS,EACtB,QAASZ,GAAM51B,KAAMrG,EAAGoE,GAE1BiC,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK02B,IAAK12B,KAAK02B,IAAM/8B,EACrDqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK62B,IAAK72B,KAAK62B,IAAM94B,CACvD,GAGF,SAAe,SAAUy5B,EAAOI,GAE9B,SAASC,EAASx0B,GAChB,OAAO,IAAIs0B,GAASt0B,EAASu0B,EAC/B,CAMA,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAOJ,GAAQI,EACjB,EAEOC,CACR,CAXD,CAWG,GCzDI,SAASC,GAAez0B,EAASu0B,GACtC53B,KAAKs1B,SAAWjyB,EAChBrD,KAAK03B,IAAM,EAAIE,GAAW,CAC5B,CAEAE,GAAex3B,UAAY,CACzB+1B,UAAWI,GACXF,QAASE,GACTf,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAAMH,KAAK02B,IAAM12B,KAAK22B,IAAM32B,KAAK42B,IAAM52B,KAAK+3B,IAC5D/3B,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK62B,IAAM72B,KAAK82B,IAAM92B,KAAK+2B,IAAM/2B,KAAKg4B,IAAMhlB,IAClEhT,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACP,OAAQ31B,KAAKw2B,QACX,KAAK,EACHx2B,KAAKs1B,SAAS90B,OAAOR,KAAK22B,IAAK32B,KAAK82B,KACpC92B,KAAKs1B,SAAS70B,YACd,MAEF,KAAK,EACHT,KAAKs1B,SAAS50B,OAAOV,KAAK22B,IAAK32B,KAAK82B,KACpC92B,KAAKs1B,SAAS70B,YACd,MAEF,KAAK,EACHT,KAAK41B,MAAM51B,KAAK22B,IAAK32B,KAAK82B,KAC1B92B,KAAK41B,MAAM51B,KAAK42B,IAAK52B,KAAK+2B,KAC1B/2B,KAAK41B,MAAM51B,KAAK+3B,IAAK/3B,KAAKg4B,KAIhC,EACApC,MAAO,SAASj8B,EAAGoE,GAEjB,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAK22B,IAAMh9B,EAAGqG,KAAK82B,IAAM/4B,EAAG,MACrD,KAAK,EAAGiC,KAAKw2B,OAAS,EAAGx2B,KAAKs1B,SAAS90B,OAAOR,KAAK42B,IAAMj9B,EAAGqG,KAAK+2B,IAAMh5B,GAAI,MAC3E,KAAK,EAAGiC,KAAKw2B,OAAS,EAAGx2B,KAAK+3B,IAAMp+B,EAAGqG,KAAKg4B,IAAMj6B,EAAG,MACrD,QAAS63B,GAAM51B,KAAMrG,EAAGoE,GAE1BiC,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK02B,IAAK12B,KAAK02B,IAAM/8B,EACrDqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK62B,IAAK72B,KAAK62B,IAAM94B,CACvD,GAGF,SAAe,SAAUy5B,EAAOI,GAE9B,SAASC,EAASx0B,GAChB,OAAO,IAAIy0B,GAAez0B,EAASu0B,EACrC,CAMA,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAOJ,GAAQI,EACjB,EAEOC,CACR,CAXD,CAWG,GC1DI,SAASI,GAAa50B,EAASu0B,GACpC53B,KAAKs1B,SAAWjyB,EAChBrD,KAAK03B,IAAM,EAAIE,GAAW,CAC5B,CAEAK,GAAa33B,UAAY,CACvB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAAMH,KAAK02B,IAC3B12B,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK62B,IAAM7jB,IACjChT,KAAKw2B,OAAS,CAChB,EACAb,QAAS,YACH31B,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,EACAV,MAAO,SAASj8B,EAAGoE,GAEjB,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAOV,KAAK02B,IAAK12B,KAAK62B,KAAO72B,KAAKs1B,SAAS90B,OAAOR,KAAK02B,IAAK12B,KAAK62B,KAAM,MAC3H,KAAK,EAAG72B,KAAKw2B,OAAS,EACtB,QAASZ,GAAM51B,KAAMrG,EAAGoE,GAE1BiC,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK02B,IAAK12B,KAAK02B,IAAM/8B,EACrDqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK62B,IAAK72B,KAAK62B,IAAM94B,CACvD,GAGF,SAAe,SAAUy5B,EAAOI,GAE9B,SAASC,EAASx0B,GAChB,OAAO,IAAI40B,GAAa50B,EAASu0B,EACnC,CAMA,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAOJ,GAAQI,EACjB,EAEOC,CACR,CAXD,CAWG,GC7CI,SAASjC,GAAMK,EAAMt8B,EAAGoE,GAC7B,IAAIvC,EAAKy6B,EAAK91B,IACVnF,EAAKi7B,EAAK71B,IACVS,EAAKo1B,EAAKS,IACV51B,EAAKm1B,EAAKY,IAEd,GAAIZ,EAAKiC,OAASr4B,EAAS,CACzB,IAAIhG,EAAI,EAAIo8B,EAAKkC,QAAU,EAAIlC,EAAKiC,OAASjC,EAAKmC,OAASnC,EAAKoC,QAC5Dp/B,EAAI,EAAIg9B,EAAKiC,QAAUjC,EAAKiC,OAASjC,EAAKmC,QAC9C58B,GAAMA,EAAK3B,EAAIo8B,EAAKh2B,IAAMg2B,EAAKoC,QAAUpC,EAAKS,IAAMT,EAAKkC,SAAWl/B,EACpE+B,GAAMA,EAAKnB,EAAIo8B,EAAK/1B,IAAM+1B,EAAKoC,QAAUpC,EAAKY,IAAMZ,EAAKkC,SAAWl/B,CACtE,CAEA,GAAIg9B,EAAKqC,OAASz4B,EAAS,CACzB,IAAI/F,EAAI,EAAIm8B,EAAKsC,QAAU,EAAItC,EAAKqC,OAASrC,EAAKmC,OAASnC,EAAKoC,QAC5D/lB,EAAI,EAAI2jB,EAAKqC,QAAUrC,EAAKqC,OAASrC,EAAKmC,QAC9Cv3B,GAAMA,EAAK/G,EAAIm8B,EAAK91B,IAAM81B,EAAKsC,QAAU5+B,EAAIs8B,EAAKoC,SAAW/lB,EAC7DxR,GAAMA,EAAKhH,EAAIm8B,EAAK71B,IAAM61B,EAAKsC,QAAUx6B,EAAIk4B,EAAKoC,SAAW/lB,CAC/D,CAEA2jB,EAAKX,SAAS10B,cAAcpF,EAAIR,EAAI6F,EAAIC,EAAIm1B,EAAKS,IAAKT,EAAKY,IAC7D,CAEA,SAAS2B,GAAWn1B,EAASnF,GAC3B8B,KAAKs1B,SAAWjyB,EAChBrD,KAAKy4B,OAASv6B,CAChB,CAEAs6B,GAAWl4B,UAAY,CACrB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAAMH,KAAK02B,IAC3B12B,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK62B,IAAM7jB,IACjChT,KAAKk4B,OAASl4B,KAAKo4B,OAASp4B,KAAKs4B,OACjCt4B,KAAKm4B,QAAUn4B,KAAKq4B,QAAUr4B,KAAKu4B,QACnCv4B,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACP,OAAQ31B,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKs1B,SAAS50B,OAAOV,KAAK02B,IAAK12B,KAAK62B,KAAM,MAClD,KAAK,EAAG72B,KAAK41B,MAAM51B,KAAK02B,IAAK12B,KAAK62B,MAEhC72B,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,EACAV,MAAO,SAASj8B,EAAGoE,GAGjB,GAFApE,GAAKA,EAAGoE,GAAKA,EAETiC,KAAKw2B,OAAQ,CACf,IAAIkC,EAAM14B,KAAK02B,IAAM/8B,EACjBg/B,EAAM34B,KAAK62B,IAAM94B,EACrBiC,KAAKs4B,OAAS77B,KAAKmF,KAAK5B,KAAKu4B,QAAU97B,KAAK0B,IAAIu6B,EAAMA,EAAMC,EAAMA,EAAK34B,KAAKy4B,QAC9E,CAEA,OAAQz4B,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,GAAKiC,KAAKs1B,SAAS90B,OAAO7G,EAAGoE,GAAI,MAC/F,KAAK,EAAGiC,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EACtB,QAASZ,GAAM51B,KAAMrG,EAAGoE,GAG1BiC,KAAKk4B,OAASl4B,KAAKo4B,OAAQp4B,KAAKo4B,OAASp4B,KAAKs4B,OAC9Ct4B,KAAKm4B,QAAUn4B,KAAKq4B,QAASr4B,KAAKq4B,QAAUr4B,KAAKu4B,QACjDv4B,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK02B,IAAK12B,KAAK02B,IAAM/8B,EACrDqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK62B,IAAK72B,KAAK62B,IAAM94B,CACvD,GAGF,SAAe,SAAUy5B,EAAOt5B,GAE9B,SAAS06B,EAAWv1B,GAClB,OAAOnF,EAAQ,IAAIs6B,GAAWn1B,EAASnF,GAAS,IAAIy5B,GAASt0B,EAAS,EACxE,CAMA,OAJAu1B,EAAW16B,MAAQ,SAASA,GAC1B,OAAOs5B,GAAQt5B,EACjB,EAEO06B,CACR,CAXD,CAWG,ICnFH,SAASC,GAAiBx1B,EAASnF,GACjC8B,KAAKs1B,SAAWjyB,EAChBrD,KAAKy4B,OAASv6B,CAChB,CAEA26B,GAAiBv4B,UAAY,CAC3B+1B,UAAWI,GACXF,QAASE,GACTf,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAAMH,KAAK02B,IAAM12B,KAAK22B,IAAM32B,KAAK42B,IAAM52B,KAAK+3B,IAC5D/3B,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK62B,IAAM72B,KAAK82B,IAAM92B,KAAK+2B,IAAM/2B,KAAKg4B,IAAMhlB,IAClEhT,KAAKk4B,OAASl4B,KAAKo4B,OAASp4B,KAAKs4B,OACjCt4B,KAAKm4B,QAAUn4B,KAAKq4B,QAAUr4B,KAAKu4B,QACnCv4B,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACP,OAAQ31B,KAAKw2B,QACX,KAAK,EACHx2B,KAAKs1B,SAAS90B,OAAOR,KAAK22B,IAAK32B,KAAK82B,KACpC92B,KAAKs1B,SAAS70B,YACd,MAEF,KAAK,EACHT,KAAKs1B,SAAS50B,OAAOV,KAAK22B,IAAK32B,KAAK82B,KACpC92B,KAAKs1B,SAAS70B,YACd,MAEF,KAAK,EACHT,KAAK41B,MAAM51B,KAAK22B,IAAK32B,KAAK82B,KAC1B92B,KAAK41B,MAAM51B,KAAK42B,IAAK52B,KAAK+2B,KAC1B/2B,KAAK41B,MAAM51B,KAAK+3B,IAAK/3B,KAAKg4B,KAIhC,EACApC,MAAO,SAASj8B,EAAGoE,GAGjB,GAFApE,GAAKA,EAAGoE,GAAKA,EAETiC,KAAKw2B,OAAQ,CACf,IAAIkC,EAAM14B,KAAK02B,IAAM/8B,EACjBg/B,EAAM34B,KAAK62B,IAAM94B,EACrBiC,KAAKs4B,OAAS77B,KAAKmF,KAAK5B,KAAKu4B,QAAU97B,KAAK0B,IAAIu6B,EAAMA,EAAMC,EAAMA,EAAK34B,KAAKy4B,QAC9E,CAEA,OAAQz4B,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAK22B,IAAMh9B,EAAGqG,KAAK82B,IAAM/4B,EAAG,MACrD,KAAK,EAAGiC,KAAKw2B,OAAS,EAAGx2B,KAAKs1B,SAAS90B,OAAOR,KAAK42B,IAAMj9B,EAAGqG,KAAK+2B,IAAMh5B,GAAI,MAC3E,KAAK,EAAGiC,KAAKw2B,OAAS,EAAGx2B,KAAK+3B,IAAMp+B,EAAGqG,KAAKg4B,IAAMj6B,EAAG,MACrD,QAAS63B,GAAM51B,KAAMrG,EAAGoE,GAG1BiC,KAAKk4B,OAASl4B,KAAKo4B,OAAQp4B,KAAKo4B,OAASp4B,KAAKs4B,OAC9Ct4B,KAAKm4B,QAAUn4B,KAAKq4B,QAASr4B,KAAKq4B,QAAUr4B,KAAKu4B,QACjDv4B,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK02B,IAAK12B,KAAK02B,IAAM/8B,EACrDqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK62B,IAAK72B,KAAK62B,IAAM94B,CACvD,GAGF,SAAe,SAAUy5B,EAAOt5B,GAE9B,SAAS06B,EAAWv1B,GAClB,OAAOnF,EAAQ,IAAI26B,GAAiBx1B,EAASnF,GAAS,IAAI45B,GAAez0B,EAAS,EACpF,CAMA,OAJAu1B,EAAW16B,MAAQ,SAASA,GAC1B,OAAOs5B,GAAQt5B,EACjB,EAEO06B,CACR,CAXD,CAWG,ICtEH,SAASE,GAAez1B,EAASnF,GAC/B8B,KAAKs1B,SAAWjyB,EAChBrD,KAAKy4B,OAASv6B,CAChB,CAEA46B,GAAex4B,UAAY,CACzB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAAMH,KAAK02B,IAC3B12B,KAAKE,IAAMF,KAAKI,IAAMJ,KAAK62B,IAAM7jB,IACjChT,KAAKk4B,OAASl4B,KAAKo4B,OAASp4B,KAAKs4B,OACjCt4B,KAAKm4B,QAAUn4B,KAAKq4B,QAAUr4B,KAAKu4B,QACnCv4B,KAAKw2B,OAAS,CAChB,EACAb,QAAS,YACH31B,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,EACAV,MAAO,SAASj8B,EAAGoE,GAGjB,GAFApE,GAAKA,EAAGoE,GAAKA,EAETiC,KAAKw2B,OAAQ,CACf,IAAIkC,EAAM14B,KAAK02B,IAAM/8B,EACjBg/B,EAAM34B,KAAK62B,IAAM94B,EACrBiC,KAAKs4B,OAAS77B,KAAKmF,KAAK5B,KAAKu4B,QAAU97B,KAAK0B,IAAIu6B,EAAMA,EAAMC,EAAMA,EAAK34B,KAAKy4B,QAC9E,CAEA,OAAQz4B,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAOV,KAAK02B,IAAK12B,KAAK62B,KAAO72B,KAAKs1B,SAAS90B,OAAOR,KAAK02B,IAAK12B,KAAK62B,KAAM,MAC3H,KAAK,EAAG72B,KAAKw2B,OAAS,EACtB,QAASZ,GAAM51B,KAAMrG,EAAGoE,GAG1BiC,KAAKk4B,OAASl4B,KAAKo4B,OAAQp4B,KAAKo4B,OAASp4B,KAAKs4B,OAC9Ct4B,KAAKm4B,QAAUn4B,KAAKq4B,QAASr4B,KAAKq4B,QAAUr4B,KAAKu4B,QACjDv4B,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMH,KAAK02B,IAAK12B,KAAK02B,IAAM/8B,EACrDqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMJ,KAAK62B,IAAK72B,KAAK62B,IAAM94B,CACvD,GAGF,SAAe,SAAUy5B,EAAOt5B,GAE9B,SAAS06B,EAAWv1B,GAClB,OAAOnF,EAAQ,IAAI46B,GAAez1B,EAASnF,GAAS,IAAI+5B,GAAa50B,EAAS,EAChF,CAMA,OAJAu1B,EAAW16B,MAAQ,SAASA,GAC1B,OAAOs5B,GAAQt5B,EACjB,EAEO06B,CACR,CAXD,CAWG,IC3DH,SAASG,GAAa11B,GACpBrD,KAAKs1B,SAAWjyB,CAClB,CAkBe,YAASA,GACtB,OAAO,IAAI01B,GAAa11B,EAC1B,CCxBA,SAASmb,GAAK7kB,GACZ,OAAOA,EAAI,GAAK,EAAI,CACtB,CAMA,SAASq/B,GAAO/C,EAAMp1B,EAAIC,GACxB,IAAIm4B,EAAKhD,EAAK91B,IAAM81B,EAAKh2B,IACrBi5B,EAAKr4B,EAAKo1B,EAAK91B,IACfg5B,GAAMlD,EAAK71B,IAAM61B,EAAK/1B,MAAQ+4B,GAAMC,EAAK,IAAM,GAC/CE,GAAMt4B,EAAKm1B,EAAK71B,MAAQ84B,GAAMD,EAAK,IAAM,GACzCl2B,GAAKo2B,EAAKD,EAAKE,EAAKH,IAAOA,EAAKC,GACpC,OAAQ1a,GAAK2a,GAAM3a,GAAK4a,IAAO38B,KAAKrE,IAAIqE,KAAK6E,IAAI63B,GAAK18B,KAAK6E,IAAI83B,GAAK,GAAM38B,KAAK6E,IAAIyB,KAAO,CAC5F,CAGA,SAASs2B,GAAOpD,EAAMxyB,GACpB,IAAIb,EAAIqzB,EAAK91B,IAAM81B,EAAKh2B,IACxB,OAAO2C,GAAK,GAAKqzB,EAAK71B,IAAM61B,EAAK/1B,KAAO0C,EAAIa,GAAK,EAAIA,CACvD,CAKA,SAASmyB,GAAMK,EAAM1f,EAAIC,GACvB,IAAIjb,EAAK06B,EAAKh2B,IACV/F,EAAK+7B,EAAK/1B,IACV1E,EAAKy6B,EAAK91B,IACVnF,EAAKi7B,EAAK71B,IACV3E,GAAMD,EAAKD,GAAM,EACrB06B,EAAKX,SAAS10B,cAAcrF,EAAKE,EAAIvB,EAAKuB,EAAK8a,EAAI/a,EAAKC,EAAIT,EAAKS,EAAK+a,EAAIhb,EAAIR,EAChF,CAEA,SAASs+B,GAAUj2B,GACjBrD,KAAKs1B,SAAWjyB,CAClB,CAyCA,SAASk2B,GAAUl2B,GACjBrD,KAAKs1B,SAAW,IAAIkE,GAAen2B,EACrC,CAMA,SAASm2B,GAAen2B,GACtBrD,KAAKs1B,SAAWjyB,CAClB,CASO,SAASo2B,GAAUp2B,GACxB,OAAO,IAAIi2B,GAAUj2B,EACvB,CAEO,SAASq2B,GAAUr2B,GACxB,OAAO,IAAIk2B,GAAUl2B,EACvB,CCvGA,SAASs2B,GAAQt2B,GACfrD,KAAKs1B,SAAWjyB,CAClB,CA0CA,SAASu2B,GAAcjgC,GACrB,IAAIsC,EAEAqW,EADArZ,EAAIU,EAAEN,OAAS,EAEfQ,EAAI,IAAI0D,MAAMtE,GACda,EAAI,IAAIyD,MAAMtE,GACd+H,EAAI,IAAIzD,MAAMtE,GAElB,IADAY,EAAE,GAAK,EAAGC,EAAE,GAAK,EAAGkH,EAAE,GAAKrH,EAAE,GAAK,EAAIA,EAAE,GACnCsC,EAAI,EAAGA,EAAIhD,EAAI,IAAKgD,EAAGpC,EAAEoC,GAAK,EAAGnC,EAAEmC,GAAK,EAAG+E,EAAE/E,GAAK,EAAItC,EAAEsC,GAAK,EAAItC,EAAEsC,EAAI,GAE5E,IADApC,EAAEZ,EAAI,GAAK,EAAGa,EAAEb,EAAI,GAAK,EAAG+H,EAAE/H,EAAI,GAAK,EAAIU,EAAEV,EAAI,GAAKU,EAAEV,GACnDgD,EAAI,EAAGA,EAAIhD,IAAKgD,EAAGqW,EAAIzY,EAAEoC,GAAKnC,EAAEmC,EAAI,GAAInC,EAAEmC,IAAMqW,EAAGtR,EAAE/E,IAAMqW,EAAItR,EAAE/E,EAAI,GAE1E,IADApC,EAAEZ,EAAI,GAAK+H,EAAE/H,EAAI,GAAKa,EAAEb,EAAI,GACvBgD,EAAIhD,EAAI,EAAGgD,GAAK,IAAKA,EAAGpC,EAAEoC,IAAM+E,EAAE/E,GAAKpC,EAAEoC,EAAI,IAAMnC,EAAEmC,GAE1D,IADAnC,EAAEb,EAAI,IAAMU,EAAEV,GAAKY,EAAEZ,EAAI,IAAM,EAC1BgD,EAAI,EAAGA,EAAIhD,EAAI,IAAKgD,EAAGnC,EAAEmC,GAAK,EAAItC,EAAEsC,EAAI,GAAKpC,EAAEoC,EAAI,GACxD,MAAO,CAACpC,EAAGC,EACb,CAEe,YAASuJ,GACtB,OAAO,IAAIs2B,GAAQt2B,EACrB,CChEA,SAASw2B,GAAKx2B,EAASI,GACrBzD,KAAKs1B,SAAWjyB,EAChBrD,KAAK85B,GAAKr2B,CACZ,CAuCe,YAASJ,GACtB,OAAO,IAAIw2B,GAAKx2B,EAAS,GAC3B,CAEO,SAAS02B,GAAW12B,GACzB,OAAO,IAAIw2B,GAAKx2B,EAAS,EAC3B,CAEO,SAAS22B,GAAU32B,GACxB,OAAO,IAAIw2B,GAAKx2B,EAAS,EAC3B,CH9CA01B,GAAaz4B,UAAY,CACvB+1B,UAAWI,GACXF,QAASE,GACTf,UAAW,WACT11B,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACH31B,KAAKw2B,QAAQx2B,KAAKs1B,SAAS70B,WACjC,EACAm1B,MAAO,SAASj8B,EAAGoE,GACjBpE,GAAKA,EAAGoE,GAAKA,EACTiC,KAAKw2B,OAAQx2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,IACpCiC,KAAKw2B,OAAS,EAAGx2B,KAAKs1B,SAAS90B,OAAO7G,EAAGoE,GAChD,GCoBFu7B,GAAUh5B,UAAY,CACpB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKC,IAAMD,KAAKG,IAChBH,KAAKE,IAAMF,KAAKI,IAChBJ,KAAKi6B,IAAMjnB,IACXhT,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACP,OAAQ31B,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKs1B,SAAS50B,OAAOV,KAAKG,IAAKH,KAAKI,KAAM,MAClD,KAAK,EAAGw1B,GAAM51B,KAAMA,KAAKi6B,IAAKZ,GAAOr5B,KAAMA,KAAKi6B,OAE9Cj6B,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACzET,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,KACxB,EACAV,MAAO,SAASj8B,EAAGoE,GACjB,IAAIyY,EAAKxD,IAGT,GADQjV,GAAKA,GAAbpE,GAAKA,KACKqG,KAAKG,KAAOpC,IAAMiC,KAAKI,IAAjC,CACA,OAAQJ,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,GAAKiC,KAAKs1B,SAAS90B,OAAO7G,EAAGoE,GAAI,MAC/F,KAAK,EAAGiC,KAAKw2B,OAAS,EAAG,MACzB,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGZ,GAAM51B,KAAMq5B,GAAOr5B,KAAMwW,EAAKwiB,GAAOh5B,KAAMrG,EAAGoE,IAAKyY,GAAK,MACjF,QAASof,GAAM51B,KAAMA,KAAKi6B,IAAKzjB,EAAKwiB,GAAOh5B,KAAMrG,EAAGoE,IAGtDiC,KAAKC,IAAMD,KAAKG,IAAKH,KAAKG,IAAMxG,EAChCqG,KAAKE,IAAMF,KAAKI,IAAKJ,KAAKI,IAAMrC,EAChCiC,KAAKi6B,IAAMzjB,CAViC,CAW9C,IAOD+iB,GAAUj5B,UAAY8T,OAAOU,OAAOwkB,GAAUh5B,YAAYs1B,MAAQ,SAASj8B,EAAGoE,GAC7Eu7B,GAAUh5B,UAAUs1B,MAAMn4B,KAAKuC,KAAMjC,EAAGpE,EAC1C,EAMA6/B,GAAel5B,UAAY,CACzBE,OAAQ,SAAS7G,EAAGoE,GAAKiC,KAAKs1B,SAAS90B,OAAOzC,EAAGpE,EAAI,EACrD8G,UAAW,WAAaT,KAAKs1B,SAAS70B,WAAa,EACnDC,OAAQ,SAAS/G,EAAGoE,GAAKiC,KAAKs1B,SAAS50B,OAAO3C,EAAGpE,EAAI,EACrDiH,cAAe,SAASpF,EAAIR,EAAI6F,EAAIC,EAAInH,EAAGoE,GAAKiC,KAAKs1B,SAAS10B,cAAc5F,EAAIQ,EAAIsF,EAAID,EAAI9C,EAAGpE,EAAI,GC1FrGggC,GAAQr5B,UAAY,CAClB+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKi3B,GAAK,GACVj3B,KAAKu3B,GAAK,EACZ,EACA5B,QAAS,WACP,IAAIh8B,EAAIqG,KAAKi3B,GACTl5B,EAAIiC,KAAKu3B,GACTt+B,EAAIU,EAAEN,OAEV,GAAIJ,EAEF,GADA+G,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAO/G,EAAE,GAAIoE,EAAE,IAAMiC,KAAKs1B,SAAS90B,OAAO7G,EAAE,GAAIoE,EAAE,IACnE,IAAN9E,EACF+G,KAAKs1B,SAAS50B,OAAO/G,EAAE,GAAIoE,EAAE,SAI7B,IAFA,IAAIm8B,EAAKN,GAAcjgC,GACnByB,EAAKw+B,GAAc77B,GACdsjB,EAAK,EAAGtG,EAAK,EAAGA,EAAK9hB,IAAKooB,IAAMtG,EACvC/a,KAAKs1B,SAAS10B,cAAcs5B,EAAG,GAAG7Y,GAAKjmB,EAAG,GAAGimB,GAAK6Y,EAAG,GAAG7Y,GAAKjmB,EAAG,GAAGimB,GAAK1nB,EAAEohB,GAAKhd,EAAEgd,KAKnF/a,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAAqB,IAANr9B,IAAU+G,KAAKs1B,SAAS70B,YAC/DT,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,MACtBt2B,KAAKi3B,GAAKj3B,KAAKu3B,GAAK,IACtB,EACA3B,MAAO,SAASj8B,EAAGoE,GACjBiC,KAAKi3B,GAAG56B,MAAM1C,GACdqG,KAAKu3B,GAAGl7B,MAAM0B,EAChB,GCnCF87B,GAAKv5B,UAAY,CACf+1B,UAAW,WACTr2B,KAAKs2B,MAAQ,CACf,EACAC,QAAS,WACPv2B,KAAKs2B,MAAQtjB,GACf,EACA0iB,UAAW,WACT11B,KAAKi3B,GAAKj3B,KAAKu3B,GAAKvkB,IACpBhT,KAAKw2B,OAAS,CAChB,EACAb,QAAS,WACH,EAAI31B,KAAK85B,IAAM95B,KAAK85B,GAAK,GAAqB,IAAhB95B,KAAKw2B,QAAcx2B,KAAKs1B,SAAS50B,OAAOV,KAAKi3B,GAAIj3B,KAAKu3B,KACpFv3B,KAAKs2B,OAAyB,IAAft2B,KAAKs2B,OAA+B,IAAhBt2B,KAAKw2B,SAAex2B,KAAKs1B,SAAS70B,YACrET,KAAKs2B,OAAS,IAAGt2B,KAAK85B,GAAK,EAAI95B,KAAK85B,GAAI95B,KAAKs2B,MAAQ,EAAIt2B,KAAKs2B,MACpE,EACAV,MAAO,SAASj8B,EAAGoE,GAEjB,OADApE,GAAKA,EAAGoE,GAAKA,EACLiC,KAAKw2B,QACX,KAAK,EAAGx2B,KAAKw2B,OAAS,EAAGx2B,KAAKs2B,MAAQt2B,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,GAAKiC,KAAKs1B,SAAS90B,OAAO7G,EAAGoE,GAAI,MAC/F,KAAK,EAAGiC,KAAKw2B,OAAS,EACtB,QACE,GAAIx2B,KAAK85B,IAAM,EACb95B,KAAKs1B,SAAS50B,OAAOV,KAAKi3B,GAAIl5B,GAC9BiC,KAAKs1B,SAAS50B,OAAO/G,EAAGoE,OACnB,CACL,IAAIvC,EAAKwE,KAAKi3B,IAAM,EAAIj3B,KAAK85B,IAAMngC,EAAIqG,KAAK85B,GAC5C95B,KAAKs1B,SAAS50B,OAAOlF,EAAIwE,KAAKu3B,IAC9Bv3B,KAAKs1B,SAAS50B,OAAOlF,EAAIuC,EAC3B,EAIJiC,KAAKi3B,GAAKt9B,EAAGqG,KAAKu3B,GAAKx5B,CACzB,E,yEC1BF,SAASo8B,EAAUxhC,GACjB,GAAI,GAAKA,EAAEoF,GAAKpF,EAAEoF,EAAI,IAAK,CACzB,IAAIue,EAAO,IAAIH,MAAM,EAAGxjB,EAAE2Z,EAAG3Z,EAAEA,EAAGA,EAAEyhC,EAAGzhC,EAAE0hC,EAAG1hC,EAAE2hC,EAAG3hC,EAAE4hC,GAEnD,OADAje,EAAKke,YAAY7hC,EAAEoF,GACZue,CACT,CACA,OAAO,IAAIH,KAAKxjB,EAAEoF,EAAGpF,EAAE2Z,EAAG3Z,EAAEA,EAAGA,EAAEyhC,EAAGzhC,EAAE0hC,EAAG1hC,EAAE2hC,EAAG3hC,EAAE4hC,EAClD,CAEA,SAASE,EAAQ9hC,GACf,GAAI,GAAKA,EAAEoF,GAAKpF,EAAEoF,EAAI,IAAK,CACzB,IAAIue,EAAO,IAAIH,KAAKA,KAAKue,KAAK,EAAG/hC,EAAE2Z,EAAG3Z,EAAEA,EAAGA,EAAEyhC,EAAGzhC,EAAE0hC,EAAG1hC,EAAE2hC,EAAG3hC,EAAE4hC,IAE5D,OADAje,EAAKqe,eAAehiC,EAAEoF,GACfue,CACT,CACA,OAAO,IAAIH,KAAKA,KAAKue,IAAI/hC,EAAEoF,EAAGpF,EAAE2Z,EAAG3Z,EAAEA,EAAGA,EAAEyhC,EAAGzhC,EAAE0hC,EAAG1hC,EAAE2hC,EAAG3hC,EAAE4hC,GAC3D,CAEA,SAASK,EAAQ78B,EAAGuU,EAAG3Z,GACrB,MAAO,CAACoF,EAAGA,EAAGuU,EAAGA,EAAG3Z,EAAGA,EAAGyhC,EAAG,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,EACjD,CAkWA,ICjYI/a,EACOyF,EDgYP4V,EAAO,CAAC,IAAK,GAAI,EAAK,IAAK,EAAK,KAChCC,EAAW,UACXC,EAAY,KACZC,EAAY,sBAEhB,SAASC,EAAIziC,EAAO+lB,EAAMrjB,GACxB,IAAIsjB,EAAOhmB,EAAQ,EAAI,IAAM,GACzB6jB,GAAUmC,GAAQhmB,EAAQA,GAAS,GACnCa,EAASgjB,EAAOhjB,OACpB,OAAOmlB,GAAQnlB,EAAS6B,EAAQ,IAAIqC,MAAMrC,EAAQ7B,EAAS,GAAGyf,KAAKyF,GAAQlC,EAASA,EACtF,CAEA,SAAS6e,EAAQ13B,GACf,OAAOA,EAAE4b,QAAQ4b,EAAW,OAC9B,CAEA,SAASG,EAASpS,GAChB,OAAO,IAAI1gB,OAAO,OAAS0gB,EAAM3sB,IAAI8+B,GAASpiB,KAAK,KAAO,IAAK,IACjE,CAEA,SAASsiB,EAAarS,GACpB,OAAO,IAAI5sB,IAAI4sB,EAAM3sB,KAAI,CAACwpB,EAAM3pB,IAAM,CAAC2pB,EAAKpT,cAAevW,KAC7D,CAEA,SAASo/B,EAAyB1iC,EAAG0jB,EAAQpgB,GAC3C,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE6F,GAAKvF,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASiiC,EAAyB3iC,EAAG0jB,EAAQpgB,GAC3C,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAEqlB,GAAK/kB,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASkiC,EAAsB5iC,EAAG0jB,EAAQpgB,GACxC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE6iC,GAAKviC,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASoiC,EAAmB9iC,EAAG0jB,EAAQpgB,GACrC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE+iC,GAAKziC,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASsiC,EAAsBhjC,EAAG0jB,EAAQpgB,GACxC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAEijC,GAAK3iC,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASwiC,EAAcljC,EAAG0jB,EAAQpgB,GAChC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAEoF,GAAK9E,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASyiC,EAAUnjC,EAAG0jB,EAAQpgB,GAC5B,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAEoF,GAAK9E,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAOgD,EAAIhD,EAAE,GAAGI,SAAW,CAC5E,CAEA,SAAS0iC,EAAUpjC,EAAG0jB,EAAQpgB,GAC5B,IAAIhD,EAAI,+BAA+BwZ,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAChE,OAAOhD,GAAKN,EAAEqjC,EAAI/iC,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQgD,EAAIhD,EAAE,GAAGI,SAAW,CAC7E,CAEA,SAAS4iC,EAAatjC,EAAG0jB,EAAQpgB,GAC/B,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAEggB,EAAW,EAAP1f,EAAE,GAAS,EAAGgD,EAAIhD,EAAE,GAAGI,SAAW,CACtD,CAEA,SAAS6iC,EAAiBvjC,EAAG0jB,EAAQpgB,GACnC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE2Z,EAAIrZ,EAAE,GAAK,EAAGgD,EAAIhD,EAAE,GAAGI,SAAW,CAClD,CAEA,SAAS8iC,EAAgBxjC,EAAG0jB,EAAQpgB,GAClC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAEA,GAAKM,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAAS+iC,EAAezjC,EAAG0jB,EAAQpgB,GACjC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE2Z,EAAI,EAAG3Z,EAAEA,GAAKM,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CACxD,CAEA,SAASgjC,EAAY1jC,EAAG0jB,EAAQpgB,GAC9B,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAEyhC,GAAKnhC,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASijC,EAAa3jC,EAAG0jB,EAAQpgB,GAC/B,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE0hC,GAAKphC,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASkjC,EAAa5jC,EAAG0jB,EAAQpgB,GAC/B,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE2hC,GAAKrhC,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASmjC,EAAkB7jC,EAAG0jB,EAAQpgB,GACpC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE4hC,GAAKthC,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASojC,EAAkB9jC,EAAG0jB,EAAQpgB,GACpC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC1C,OAAOhD,GAAKN,EAAE4hC,EAAI99B,KAAKe,MAAMvE,EAAE,GAAK,KAAOgD,EAAIhD,EAAE,GAAGI,SAAW,CACjE,CAEA,SAASqjC,EAAoB/jC,EAAG0jB,EAAQpgB,GACtC,IAAIhD,EAAI8hC,EAAUtoB,KAAK4J,EAAOvZ,MAAM7G,EAAGA,EAAI,IAC3C,OAAOhD,EAAIgD,EAAIhD,EAAE,GAAGI,QAAU,CAChC,CAEA,SAASsjC,EAAmBhkC,EAAG0jB,EAAQpgB,GACrC,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,IACnC,OAAOhD,GAAKN,EAAEikC,GAAK3jC,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASwjC,EAA0BlkC,EAAG0jB,EAAQpgB,GAC5C,IAAIhD,EAAI6hC,EAASroB,KAAK4J,EAAOvZ,MAAM7G,IACnC,OAAOhD,GAAKN,EAAE6K,GAAKvK,EAAE,GAAIgD,EAAIhD,EAAE,GAAGI,SAAW,CAC/C,CAEA,SAASyjC,EAAiBnkC,EAAGoK,GAC3B,OAAOk4B,EAAItiC,EAAEokC,UAAWh6B,EAAG,EAC7B,CAEA,SAASi6B,EAAarkC,EAAGoK,GACvB,OAAOk4B,EAAItiC,EAAEskC,WAAYl6B,EAAG,EAC9B,CAEA,SAASm6B,EAAavkC,EAAGoK,GACvB,OAAOk4B,EAAItiC,EAAEskC,WAAa,IAAM,GAAIl6B,EAAG,EACzC,CAEA,SAASo6B,EAAgBxkC,EAAGoK,GAC1B,OAAOk4B,EAAI,EAAI/W,EAAAA,GAAQxJ,OAAMqJ,EAAAA,EAAAA,IAASprB,GAAIA,GAAIoK,EAAG,EACnD,CAEA,SAASq6B,EAAmBzkC,EAAGoK,GAC7B,OAAOk4B,EAAItiC,EAAE0kC,kBAAmBt6B,EAAG,EACrC,CAEA,SAASu6B,EAAmB3kC,EAAGoK,GAC7B,OAAOq6B,EAAmBzkC,EAAGoK,GAAK,KACpC,CAEA,SAASw6B,EAAkB5kC,EAAGoK,GAC5B,OAAOk4B,EAAItiC,EAAE6kC,WAAa,EAAGz6B,EAAG,EAClC,CAEA,SAAS06B,EAAc9kC,EAAGoK,GACxB,OAAOk4B,EAAItiC,EAAE+kC,aAAc36B,EAAG,EAChC,CAEA,SAAS46B,EAAchlC,EAAGoK,GACxB,OAAOk4B,EAAItiC,EAAEilC,aAAc76B,EAAG,EAChC,CAEA,SAAS86B,EAA0BllC,GACjC,IAAI0pB,EAAM1pB,EAAEmlC,SACZ,OAAe,IAARzb,EAAY,EAAIA,CACzB,CAEA,SAAS0b,EAAuBplC,EAAGoK,GACjC,OAAOk4B,EAAIhX,EAAAA,GAAWvJ,OAAMqJ,EAAAA,EAAAA,IAASprB,GAAK,EAAGA,GAAIoK,EAAG,EACtD,CAEA,SAASi7B,EAAKrlC,GACZ,IAAI0pB,EAAM1pB,EAAEmlC,SACZ,OAAQzb,GAAO,GAAa,IAARA,GAAa4b,EAAAA,EAAAA,IAAatlC,GAAKslC,EAAAA,GAAa/jB,KAAKvhB,EACvE,CAEA,SAASulC,EAAoBvlC,EAAGoK,GAE9B,OADApK,EAAIqlC,EAAKrlC,GACFsiC,EAAIgD,EAAAA,GAAavjB,OAAMqJ,EAAAA,EAAAA,IAASprB,GAAIA,IAA+B,KAAzBorB,EAAAA,EAAAA,IAASprB,GAAGmlC,UAAiB/6B,EAAG,EACnF,CAEA,SAASo7B,EAA0BxlC,GACjC,OAAOA,EAAEmlC,QACX,CAEA,SAASM,EAAuBzlC,EAAGoK,GACjC,OAAOk4B,EAAIoD,EAAAA,GAAW3jB,OAAMqJ,EAAAA,EAAAA,IAASprB,GAAK,EAAGA,GAAIoK,EAAG,EACtD,CAEA,SAAS8hB,GAAWlsB,EAAGoK,GACrB,OAAOk4B,EAAItiC,EAAE2lC,cAAgB,IAAKv7B,EAAG,EACvC,CAEA,SAASw7B,GAAc5lC,EAAGoK,GAExB,OAAOk4B,GADPtiC,EAAIqlC,EAAKrlC,IACI2lC,cAAgB,IAAKv7B,EAAG,EACvC,CAEA,SAASy7B,GAAe7lC,EAAGoK,GACzB,OAAOk4B,EAAItiC,EAAE2lC,cAAgB,IAAOv7B,EAAG,EACzC,CAEA,SAAS07B,GAAkB9lC,EAAGoK,GAC5B,IAAIsf,EAAM1pB,EAAEmlC,SAEZ,OAAO7C,GADPtiC,EAAK0pB,GAAO,GAAa,IAARA,GAAa4b,EAAAA,EAAAA,IAAatlC,GAAKslC,EAAAA,GAAa/jB,KAAKvhB,IACrD2lC,cAAgB,IAAOv7B,EAAG,EACzC,CAEA,SAAS27B,GAAW/lC,GAClB,IAAIoe,EAAIpe,EAAEgmC,oBACV,OAAQ5nB,EAAI,EAAI,KAAOA,IAAM,EAAG,MAC1BkkB,EAAIlkB,EAAI,GAAK,EAAG,IAAK,GACrBkkB,EAAIlkB,EAAI,GAAI,IAAK,EACzB,CAEA,SAAS6nB,GAAoBjmC,EAAGoK,GAC9B,OAAOk4B,EAAItiC,EAAEkmC,aAAc97B,EAAG,EAChC,CAEA,SAAS+7B,GAAgBnmC,EAAGoK,GAC1B,OAAOk4B,EAAItiC,EAAEomC,cAAeh8B,EAAG,EACjC,CAEA,SAASi8B,GAAgBrmC,EAAGoK,GAC1B,OAAOk4B,EAAItiC,EAAEomC,cAAgB,IAAM,GAAIh8B,EAAG,EAC5C,CAEA,SAASk8B,GAAmBtmC,EAAGoK,GAC7B,OAAOk4B,EAAI,EAAIiE,EAAAA,GAAOxkB,OAAM6I,EAAAA,EAAAA,IAAQ5qB,GAAIA,GAAIoK,EAAG,EACjD,CAEA,SAASo8B,GAAsBxmC,EAAGoK,GAChC,OAAOk4B,EAAItiC,EAAEymC,qBAAsBr8B,EAAG,EACxC,CAEA,SAASs8B,GAAsB1mC,EAAGoK,GAChC,OAAOo8B,GAAsBxmC,EAAGoK,GAAK,KACvC,CAEA,SAASu8B,GAAqB3mC,EAAGoK,GAC/B,OAAOk4B,EAAItiC,EAAE4mC,cAAgB,EAAGx8B,EAAG,EACrC,CAEA,SAASy8B,GAAiB7mC,EAAGoK,GAC3B,OAAOk4B,EAAItiC,EAAE8mC,gBAAiB18B,EAAG,EACnC,CAEA,SAAS28B,GAAiB/mC,EAAGoK,GAC3B,OAAOk4B,EAAItiC,EAAEgnC,gBAAiB58B,EAAG,EACnC,CAEA,SAAS68B,GAA6BjnC,GACpC,IAAIknC,EAAMlnC,EAAEmnC,YACZ,OAAe,IAARD,EAAY,EAAIA,CACzB,CAEA,SAASE,GAA0BpnC,EAAGoK,GACpC,OAAOk4B,EAAIxX,EAAAA,GAAU/I,OAAM6I,EAAAA,EAAAA,IAAQ5qB,GAAK,EAAGA,GAAIoK,EAAG,EACpD,CAEA,SAASi9B,GAAQrnC,GACf,IAAI0pB,EAAM1pB,EAAEmnC,YACZ,OAAQzd,GAAO,GAAa,IAARA,GAAa4d,EAAAA,EAAAA,IAAYtnC,GAAKsnC,EAAAA,GAAY/lB,KAAKvhB,EACrE,CAEA,SAASunC,GAAuBvnC,EAAGoK,GAEjC,OADApK,EAAIqnC,GAAQrnC,GACLsiC,EAAIgF,EAAAA,GAAYvlB,OAAM6I,EAAAA,EAAAA,IAAQ5qB,GAAIA,IAAiC,KAA3B4qB,EAAAA,EAAAA,IAAQ5qB,GAAGmnC,aAAoB/8B,EAAG,EACnF,CAEA,SAASo9B,GAA6BxnC,GACpC,OAAOA,EAAEmnC,WACX,CAEA,SAASM,GAA0BznC,EAAGoK,GACpC,OAAOk4B,EAAIoF,EAAAA,GAAU3lB,OAAM6I,EAAAA,EAAAA,IAAQ5qB,GAAK,EAAGA,GAAIoK,EAAG,EACpD,CAEA,SAASu9B,GAAc3nC,EAAGoK,GACxB,OAAOk4B,EAAItiC,EAAE4nC,iBAAmB,IAAKx9B,EAAG,EAC1C,CAEA,SAASy9B,GAAiB7nC,EAAGoK,GAE3B,OAAOk4B,GADPtiC,EAAIqnC,GAAQrnC,IACC4nC,iBAAmB,IAAKx9B,EAAG,EAC1C,CAEA,SAAS09B,GAAkB9nC,EAAGoK,GAC5B,OAAOk4B,EAAItiC,EAAE4nC,iBAAmB,IAAOx9B,EAAG,EAC5C,CAEA,SAAS29B,GAAqB/nC,EAAGoK,GAC/B,IAAIsf,EAAM1pB,EAAEmnC,YAEZ,OAAO7E,GADPtiC,EAAK0pB,GAAO,GAAa,IAARA,GAAa4d,EAAAA,EAAAA,IAAYtnC,GAAKsnC,EAAAA,GAAY/lB,KAAKvhB,IACnD4nC,iBAAmB,IAAOx9B,EAAG,EAC5C,CAEA,SAAS49B,KACP,MAAO,OACT,CAEA,SAASC,KACP,MAAO,GACT,CAEA,SAASC,GAAoBloC,GAC3B,OAAQA,CACV,CAEA,SAASmoC,GAA2BnoC,GAClC,OAAO8D,KAAKe,OAAO7E,EAAI,IACzB,CCpqBE6mB,EDea,SAAsBA,GACnC,IAAIuhB,EAAkBvhB,EAAOwhB,SACzBC,EAAczhB,EAAOlD,KACrB4kB,EAAc1hB,EAAOsF,KACrBqc,EAAiB3hB,EAAO4hB,QACxBC,EAAkB7hB,EAAO8hB,KACzBC,EAAuB/hB,EAAOgiB,UAC9BC,EAAgBjiB,EAAOkiB,OACvBC,EAAqBniB,EAAOoiB,YAE5BC,EAAW1G,EAASgG,GACpBW,EAAe1G,EAAa+F,GAC5BY,EAAY5G,EAASkG,GACrBW,GAAgB5G,EAAaiG,GAC7BY,GAAiB9G,EAASoG,GAC1BW,GAAqB9G,EAAamG,GAClCY,GAAUhH,EAASsG,GACnBW,GAAchH,EAAaqG,GAC3BY,GAAelH,EAASwG,GACxBW,GAAmBlH,EAAauG,GAEhCY,GAAU,CACZ,EAkQF,SAA4B5pC,GAC1B,OAAO4oC,EAAqB5oC,EAAEmlC,SAChC,EAnQE,EAqQF,SAAuBnlC,GACrB,OAAO0oC,EAAgB1oC,EAAEmlC,SAC3B,EAtQE,EAwQF,SAA0BnlC,GACxB,OAAOgpC,EAAmBhpC,EAAE6kC,WAC9B,EAzQE,EA2QF,SAAqB7kC,GACnB,OAAO8oC,EAAc9oC,EAAE6kC,WACzB,EA5QE,EAAK,KACL,EAAKV,EACL,EAAKA,EACL,EAAKQ,EACL,EAAKiB,GACL,EAAKE,GACL,EAAKzB,EACL,EAAKE,EACL,EAAKC,EACL,EAAKC,EACL,EAAKG,EACL,EAAKE,EACL,EAkQF,SAAsB9kC,GACpB,OAAOwoC,IAAiBxoC,EAAEskC,YAAc,IAC1C,EAnQE,EAqQF,SAAuBtkC,GACrB,OAAO,KAAOA,EAAE6kC,WAAa,EAC/B,EAtQE,EAAKqD,GACL,EAAKC,GACL,EAAKnD,EACL,EAAKE,EACL,EAAKE,EACL,EAAKG,EACL,EAAKC,EACL,EAAKC,EACL,EAAK,KACL,EAAK,KACL,EAAKvZ,GACL,EAAK2Z,GACL,EAAKE,GACL,IAAKkC,IAGH4B,GAAa,CACf,EAuPF,SAA+B7pC,GAC7B,OAAO4oC,EAAqB5oC,EAAEmnC,YAChC,EAxPE,EA0PF,SAA0BnnC,GACxB,OAAO0oC,EAAgB1oC,EAAEmnC,YAC3B,EA3PE,EA6PF,SAA6BnnC,GAC3B,OAAOgpC,EAAmBhpC,EAAE4mC,cAC9B,EA9PE,EAgQF,SAAwB5mC,GACtB,OAAO8oC,EAAc9oC,EAAE4mC,cACzB,EAjQE,EAAK,KACL,EAAKX,GACL,EAAKA,GACL,EAAKS,GACL,EAAKmB,GACL,EAAKE,GACL,EAAK5B,GACL,EAAKE,GACL,EAAKC,GACL,EAAKE,GACL,EAAKG,GACL,EAAKE,GACL,EAuPF,SAAyB7mC,GACvB,OAAOwoC,IAAiBxoC,EAAEomC,eAAiB,IAC7C,EAxPE,EA0PF,SAA0BpmC,GACxB,OAAO,KAAOA,EAAE4mC,cAAgB,EAClC,EA3PE,EAAKsB,GACL,EAAKC,GACL,EAAKpB,GACL,EAAKE,GACL,EAAKG,GACL,EAAKG,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAKE,GACL,EAAKG,GACL,EAAKE,GACL,IAAKC,IAGH6B,GAAS,CACX,EA4JF,SAA2B9pC,EAAG0jB,EAAQpgB,GACpC,IAAIhD,EAAIgpC,GAAexvB,KAAK4J,EAAOvZ,MAAM7G,IACzC,OAAOhD,GAAKN,EAAE6F,EAAI0jC,GAAmBtnC,IAAI3B,EAAE,GAAGuZ,eAAgBvW,EAAIhD,EAAE,GAAGI,SAAW,CACpF,EA9JE,EAgKF,SAAsBV,EAAG0jB,EAAQpgB,GAC/B,IAAIhD,EAAI8oC,EAAUtvB,KAAK4J,EAAOvZ,MAAM7G,IACpC,OAAOhD,GAAKN,EAAE6F,EAAIwjC,GAAcpnC,IAAI3B,EAAE,GAAGuZ,eAAgBvW,EAAIhD,EAAE,GAAGI,SAAW,CAC/E,EAlKE,EAoKF,SAAyBV,EAAG0jB,EAAQpgB,GAClC,IAAIhD,EAAIopC,GAAa5vB,KAAK4J,EAAOvZ,MAAM7G,IACvC,OAAOhD,GAAKN,EAAE2Z,EAAIgwB,GAAiB1nC,IAAI3B,EAAE,GAAGuZ,eAAgBvW,EAAIhD,EAAE,GAAGI,SAAW,CAClF,EAtKE,EAwKF,SAAoBV,EAAG0jB,EAAQpgB,GAC7B,IAAIhD,EAAIkpC,GAAQ1vB,KAAK4J,EAAOvZ,MAAM7G,IAClC,OAAOhD,GAAKN,EAAE2Z,EAAI8vB,GAAYxnC,IAAI3B,EAAE,GAAGuZ,eAAgBvW,EAAIhD,EAAE,GAAGI,SAAW,CAC7E,EA1KE,EA4KF,SAA6BV,EAAG0jB,EAAQpgB,GACtC,OAAOymC,GAAe/pC,EAAGooC,EAAiB1kB,EAAQpgB,EACpD,EA7KE,EAAKkgC,EACL,EAAKA,EACL,EAAKM,EACL,EAAKX,EACL,EAAKD,EACL,EAAKQ,EACL,EAAKA,EACL,EAAKD,EACL,EAAKI,EACL,EAAKN,EACL,EAAKI,EACL,EAuIF,SAAqB3jC,EAAG0jB,EAAQpgB,GAC9B,IAAIhD,EAAI4oC,EAASpvB,KAAK4J,EAAOvZ,MAAM7G,IACnC,OAAOhD,GAAKN,EAAEoK,EAAI++B,EAAalnC,IAAI3B,EAAE,GAAGuZ,eAAgBvW,EAAIhD,EAAE,GAAGI,SAAW,CAC9E,EAzIE,EAAK4iC,EACL,EAAKU,EACL,EAAKE,EACL,EAAKN,EACL,EAAKjB,EACL,EAAKC,EACL,EAAKE,EACL,EAAKJ,EACL,EAAKM,EACL,EA0JF,SAAyBhjC,EAAG0jB,EAAQpgB,GAClC,OAAOymC,GAAe/pC,EAAGsoC,EAAa5kB,EAAQpgB,EAChD,EA3JE,EA6JF,SAAyBtD,EAAG0jB,EAAQpgB,GAClC,OAAOymC,GAAe/pC,EAAGuoC,EAAa7kB,EAAQpgB,EAChD,EA9JE,EAAK6/B,EACL,EAAKD,EACL,EAAKE,EACL,IAAKW,GAWP,SAAShc,GAAU3H,EAAWwpB,GAC5B,OAAO,SAASjmB,GACd,IAIIze,EACAo9B,EACA31B,EANA+W,EAAS,GACTpgB,GAAK,EACLohB,EAAI,EACJpkB,EAAI8f,EAAU1f,OAOlB,IAFMijB,aAAgBH,OAAOG,EAAO,IAAIH,MAAMG,MAErCrgB,EAAIhD,GACqB,KAA5B8f,EAAUwI,WAAWtlB,KACvBogB,EAAOhgB,KAAK0c,EAAUjW,MAAMua,EAAGphB,IACgB,OAA1Cg/B,EAAMJ,EAAKh9B,EAAIkb,EAAU4pB,SAAS1mC,KAAc4B,EAAIkb,EAAU4pB,SAAS1mC,GACvEg/B,EAAY,MAANp9B,EAAY,IAAM,KACzByH,EAASi9B,EAAQ1kC,MAAIA,EAAIyH,EAAOgX,EAAM2e,IAC1C5e,EAAOhgB,KAAKwB,GACZwf,EAAIphB,EAAI,GAKZ,OADAogB,EAAOhgB,KAAK0c,EAAUjW,MAAMua,EAAGphB,IACxBogB,EAAOvD,KAAK,GACrB,CACF,CAEA,SAAS8pB,GAAS7pB,EAAWijB,GAC3B,OAAO,SAAS3f,GACd,IAEI+F,EAAMC,EAFN1pB,EAAIiiC,EAAQ,UAAMriC,EAAW,GAGjC,GAFQmqC,GAAe/pC,EAAGogB,EAAWsD,GAAU,GAAI,IAE1CA,EAAOhjB,OAAQ,OAAO,KAG/B,GAAI,MAAOV,EAAG,OAAO,IAAIwjB,KAAKxjB,EAAEikC,GAChC,GAAI,MAAOjkC,EAAG,OAAO,IAAIwjB,KAAW,IAANxjB,EAAE6K,GAAY,MAAO7K,EAAIA,EAAE4hC,EAAI,IAY7D,GATIyB,KAAO,MAAOrjC,KAAIA,EAAEqjC,EAAI,GAGxB,MAAOrjC,IAAGA,EAAEyhC,EAAIzhC,EAAEyhC,EAAI,GAAW,GAANzhC,EAAEoK,QAGrBxK,IAARI,EAAE2Z,IAAiB3Z,EAAE2Z,EAAI,MAAO3Z,EAAIA,EAAEggB,EAAI,GAG1C,MAAOhgB,EAAG,CACZ,GAAIA,EAAE+iC,EAAI,GAAK/iC,EAAE+iC,EAAI,GAAI,OAAO,KAC1B,MAAO/iC,IAAIA,EAAE6F,EAAI,GACnB,MAAO7F,GAC2B0pB,GAApCD,EAAOqY,EAAQG,EAAQjiC,EAAEoF,EAAG,EAAG,KAAgB+hC,YAC/C1d,EAAOC,EAAM,GAAa,IAARA,EAAYge,EAAAA,GAAUnmB,KAAKkI,IAAQie,EAAAA,EAAAA,IAAUje,GAC/DA,EAAO8c,EAAAA,GAAO/6B,OAAOie,EAAkB,GAAXzpB,EAAE+iC,EAAI,IAClC/iC,EAAEoF,EAAIqkB,EAAKme,iBACX5nC,EAAE2Z,EAAI8P,EAAKmd,cACX5mC,EAAEA,EAAIypB,EAAKyc,cAAgBlmC,EAAE6F,EAAI,GAAK,IAEA6jB,GAAtCD,EAAO+X,EAAUS,EAAQjiC,EAAEoF,EAAG,EAAG,KAAgB+/B,SACjD1b,EAAOC,EAAM,GAAa,IAARA,EAAYgc,EAAAA,GAAWnkB,KAAKkI,IAAQic,EAAAA,EAAAA,IAAWjc,GACjEA,EAAO8B,EAAAA,GAAQ/f,OAAOie,EAAkB,GAAXzpB,EAAE+iC,EAAI,IACnC/iC,EAAEoF,EAAIqkB,EAAKkc,cACX3lC,EAAE2Z,EAAI8P,EAAKob,WACX7kC,EAAEA,EAAIypB,EAAK2a,WAAapkC,EAAE6F,EAAI,GAAK,EAEvC,MAAW,MAAO7F,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAE6F,EAAI,MAAO7F,EAAIA,EAAEqlB,EAAI,EAAI,MAAOrlB,EAAI,EAAI,GAC3D0pB,EAAM,MAAO1pB,EAAI8hC,EAAQG,EAAQjiC,EAAEoF,EAAG,EAAG,IAAI+hC,YAAc3F,EAAUS,EAAQjiC,EAAEoF,EAAG,EAAG,IAAI+/B,SACzFnlC,EAAE2Z,EAAI,EACN3Z,EAAEA,EAAI,MAAOA,GAAKA,EAAE6F,EAAI,GAAK,EAAU,EAAN7F,EAAEijC,GAASvZ,EAAM,GAAK,EAAI1pB,EAAE6F,EAAU,EAAN7F,EAAE6iC,GAASnZ,EAAM,GAAK,GAKzF,MAAI,MAAO1pB,GACTA,EAAEyhC,GAAKzhC,EAAEqjC,EAAI,IAAM,EACnBrjC,EAAE0hC,GAAK1hC,EAAEqjC,EAAI,IACNvB,EAAQ9hC,IAIVwhC,EAAUxhC,EACnB,CACF,CAEA,SAAS+pC,GAAe/pC,EAAGogB,EAAWsD,EAAQgB,GAO5C,IANA,IAGIxf,EACAglC,EAJA5mC,EAAI,EACJhD,EAAI8f,EAAU1f,OACdiZ,EAAI+J,EAAOhjB,OAIR4C,EAAIhD,GAAG,CACZ,GAAIokB,GAAK/K,EAAG,OAAQ,EAEpB,GAAU,MADVzU,EAAIkb,EAAUwI,WAAWtlB,OAIvB,GAFA4B,EAAIkb,EAAU4pB,OAAO1mC,OACrB4mC,EAAQJ,GAAO5kC,KAAKg9B,EAAO9hB,EAAU4pB,OAAO1mC,KAAO4B,MACnCwf,EAAIwlB,EAAMlqC,EAAG0jB,EAAQgB,IAAM,EAAI,OAAQ,OAClD,GAAIxf,GAAKwe,EAAOkF,WAAWlE,KAChC,OAAQ,CAEZ,CAEA,OAAOA,CACT,CAuFA,OAzMAklB,GAAQ5oC,EAAI+mB,GAAUugB,EAAasB,IACnCA,GAAQO,EAAIpiB,GAAUwgB,EAAaqB,IACnCA,GAAQ1kC,EAAI6iB,GAAUqgB,EAAiBwB,IACvCC,GAAW7oC,EAAI+mB,GAAUugB,EAAauB,IACtCA,GAAWM,EAAIpiB,GAAUwgB,EAAasB,IACtCA,GAAW3kC,EAAI6iB,GAAUqgB,EAAiByB,IAoMnC,CACLl9B,OAAQ,SAASyT,GACf,IAAIwC,EAAImF,GAAU3H,GAAa,GAAIwpB,IAEnC,OADAhnB,EAAE1Y,SAAW,WAAa,OAAOkW,CAAW,EACrCwC,CACT,EACAsnB,MAAO,SAAS9pB,GACd,IAAIhW,EAAI6/B,GAAS7pB,GAAa,IAAI,GAElC,OADAhW,EAAEF,SAAW,WAAa,OAAOkW,CAAW,EACrChW,CACT,EACAggC,UAAW,SAAShqB,GAClB,IAAIwC,EAAImF,GAAU3H,GAAa,GAAIypB,IAEnC,OADAjnB,EAAE1Y,SAAW,WAAa,OAAOkW,CAAW,EACrCwC,CACT,EACAynB,SAAU,SAASjqB,GACjB,IAAIhW,EAAI6/B,GAAS7pB,GAAa,IAAI,GAElC,OADAhW,EAAEF,SAAW,WAAa,OAAOkW,CAAW,EACrChW,CACT,EAEJ,CC7WWif,CAZG,CACZgf,SAAU,SACV1kB,KAAM,aACNwI,KAAM,eACNsc,QAAS,CAAC,KAAM,MAChBE,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEE,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDE,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHE,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,SAK3F3c,EAAazF,EAAOla,OACRka,EAAOqjB,MACPrjB,EAAOujB,UACRvjB,EAAOwjB,Q,iICrBb,MAAM9e,GAAU+e,EAAAA,EAAAA,IACrB3mB,GAAQA,EAAK4mB,SAAS,EAAG,EAAG,EAAG,KAC/B,CAAC5mB,EAAM7C,IAAS6C,EAAK6mB,QAAQ7mB,EAAKygB,UAAYtjB,KAC9C,CAAClC,EAAOC,KAASA,EAAMD,GAASC,EAAImnB,oBAAsBpnB,EAAMonB,qBAAuBhc,EAAAA,IAAkBE,EAAAA,KACzGvG,GAAQA,EAAKygB,UAAY,IAKdmC,GAFWhb,EAAQze,OAEVw9B,EAAAA,EAAAA,IAAc3mB,IAClCA,EAAK8mB,YAAY,EAAG,EAAG,EAAG,EAAE,IAC3B,CAAC9mB,EAAM7C,KACR6C,EAAK+mB,WAAW/mB,EAAKuiB,aAAeplB,EAAK,IACxC,CAAClC,EAAOC,KACDA,EAAMD,GAASsL,EAAAA,KACrBvG,GACKA,EAAKuiB,aAAe,KAKhBnb,GAFUwb,EAAOz5B,OAEPw9B,EAAAA,EAAAA,IAAc3mB,IACnCA,EAAK8mB,YAAY,EAAG,EAAG,EAAG,EAAE,IAC3B,CAAC9mB,EAAM7C,KACR6C,EAAK+mB,WAAW/mB,EAAKuiB,aAAeplB,EAAK,IACxC,CAAClC,EAAOC,KACDA,EAAMD,GAASsL,EAAAA,KACrBvG,GACK7f,KAAKe,MAAM8e,EAAOuG,EAAAA,OAGHa,EAAQje,K,yFClCzB,MAAMid,EAAiB,IACjBC,EAAkC,GAAjBD,EACjBE,EAAgC,GAAjBD,EACfE,EAA6B,GAAfD,EACdE,EAA6B,EAAdD,EACfE,EAA8B,GAAdF,EAChBG,EAA6B,IAAdH,C,mECHrB,MAAMsB,GAAW8e,EAAAA,EAAAA,IAAc3mB,IACpCA,EAAKF,QAAQE,EAAOA,EAAK+gB,kBAAoB/gB,EAAKshB,aAAelb,EAAAA,GAAiBpG,EAAKohB,aAAe/a,EAAAA,GAAe,IACpH,CAACrG,EAAM7C,KACR6C,EAAKF,SAASE,EAAO7C,EAAOmJ,EAAAA,GAAa,IACxC,CAACrL,EAAOC,KACDA,EAAMD,GAASqL,EAAAA,KACrBtG,GACKA,EAAK2gB,aAKDtZ,GAFYQ,EAAS1e,OAEXw9B,EAAAA,EAAAA,IAAc3mB,IACnCA,EAAKgnB,cAAc,EAAG,EAAG,EAAE,IAC1B,CAAChnB,EAAM7C,KACR6C,EAAKF,SAASE,EAAO7C,EAAOmJ,EAAAA,GAAa,IACxC,CAACrL,EAAOC,KACDA,EAAMD,GAASqL,EAAAA,KACrBtG,GACKA,EAAKyiB,iBAGUpb,EAAQle,K,qSCzBhC,MAAM8Q,EAAK,IAAI4F,KAAM3F,EAAK,IAAI2F,KAEvB,SAAS8mB,EAAaM,EAAQC,EAAS9oB,EAAO+oB,GAEnD,SAASrgB,EAAS9G,GAChB,OAAOinB,EAAOjnB,EAA4B,IAArBvgB,UAAU1C,OAAe,IAAI8iB,KAAO,IAAIA,MAAMG,IAAQA,CAC7E,CA6DA,OA3DA8G,EAAS5lB,MAAS8e,IACTinB,EAAOjnB,EAAO,IAAIH,MAAMG,IAAQA,GAGzC8G,EAASlJ,KAAQoC,IACRinB,EAAOjnB,EAAO,IAAIH,KAAKG,EAAO,IAAKknB,EAAQlnB,EAAM,GAAIinB,EAAOjnB,GAAOA,GAG5E8G,EAAS/e,MAASiY,IAChB,MAAMY,EAAKkG,EAAS9G,GAAOa,EAAKiG,EAASlJ,KAAKoC,GAC9C,OAAOA,EAAOY,EAAKC,EAAKb,EAAOY,EAAKC,CAAE,EAGxCiG,EAASjf,OAAS,CAACmY,EAAM7C,KAChB+pB,EAAQlnB,EAAO,IAAIH,MAAMG,GAAe,MAAR7C,EAAe,EAAIhd,KAAKe,MAAMic,IAAQ6C,GAG/E8G,EAAS3d,MAAQ,CAAC8R,EAAO0C,EAAMR,KAC7B,MAAMhU,EAAQ,GAGd,GAFA8R,EAAQ6L,EAASlJ,KAAK3C,GACtBkC,EAAe,MAARA,EAAe,EAAIhd,KAAKe,MAAMic,KAC/BlC,EAAQ0C,MAAWR,EAAO,GAAI,OAAOhU,EAC3C,IAAI8nB,EACJ,GAAG9nB,EAAMpJ,KAAKkxB,EAAW,IAAIpR,MAAM5E,IAASisB,EAAQjsB,EAAOkC,GAAO8pB,EAAOhsB,SAClEgW,EAAWhW,GAASA,EAAQ0C,GACnC,OAAOxU,CAAK,EAGd2d,EAASjc,OAAU0Z,GACVoiB,GAAc3mB,IACnB,GAAIA,GAAQA,EAAM,KAAOinB,EAAOjnB,IAAQuE,EAAKvE,IAAOA,EAAKF,QAAQE,EAAO,EAAE,IACzE,CAACA,EAAM7C,KACR,GAAI6C,GAAQA,EACV,GAAI7C,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAO+pB,EAAQlnB,GAAO,IAAKuE,EAAKvE,UAC3B,OAAS7C,GAAQ,GACtB,KAAO+pB,EAAQlnB,EAAM,IAAMuE,EAAKvE,KAEpC,IAIA5B,IACF0I,EAAS1I,MAAQ,CAACnD,EAAOC,KACvBjB,EAAG6F,SAAS7E,GAAQf,EAAG4F,SAAS5E,GAChC+rB,EAAOhtB,GAAKgtB,EAAO/sB,GACZ/Z,KAAKe,MAAMkd,EAAMnE,EAAIC,KAG9B4M,EAASF,MAASzJ,IAChBA,EAAOhd,KAAKe,MAAMic,GACV1S,SAAS0S,IAAWA,EAAO,EAC3BA,EAAO,EACT2J,EAASjc,OAAOs8B,EACX9qC,GAAM8qC,EAAM9qC,GAAK8gB,IAAS,EAC1B9gB,GAAMyqB,EAAS1I,MAAM,EAAG/hB,GAAK8gB,IAAS,GAH7B2J,EADoB,OAQrCA,CACT,C,+CClEO,MAAMD,GAAc8f,EAAAA,EAAAA,IAAa,SAErC,CAAC3mB,EAAM7C,KACR6C,EAAKF,SAASE,EAAO7C,EAAK,IACzB,CAAClC,EAAOC,IACFA,EAAMD,IAIf4L,EAAYD,MAAShe,IACnBA,EAAIzI,KAAKe,MAAM0H,GACV6B,SAAS7B,IAAQA,EAAI,EACpBA,EAAI,GACH+9B,EAAAA,EAAAA,IAAc3mB,IACnBA,EAAKF,QAAQ3f,KAAKe,MAAM8e,EAAOpX,GAAKA,EAAE,IACrC,CAACoX,EAAM7C,KACR6C,EAAKF,SAASE,EAAO7C,EAAOvU,EAAE,IAC7B,CAACqS,EAAOC,KACDA,EAAMD,GAASrS,IANJie,EADgB,MAWXA,EAAY1d,K,mECrBjC,MAAM2e,GAAa6e,EAAAA,EAAAA,IAAc3mB,IACtCA,EAAKF,QAAQE,EAAOA,EAAK+gB,kBAAoB/gB,EAAKshB,aAAelb,EAAAA,GAAe,IAC/E,CAACpG,EAAM7C,KACR6C,EAAKF,SAASE,EAAO7C,EAAOkJ,EAAAA,GAAe,IAC1C,CAACpL,EAAOC,KACDA,EAAMD,GAASoL,EAAAA,KACrBrG,GACKA,EAAKohB,eAKD9Z,GAFcQ,EAAW3e,OAEbw9B,EAAAA,EAAAA,IAAc3mB,IACrCA,EAAKonB,cAAc,EAAG,EAAE,IACvB,CAACpnB,EAAM7C,KACR6C,EAAKF,SAASE,EAAO7C,EAAOkJ,EAAAA,GAAe,IAC1C,CAACpL,EAAOC,KACDA,EAAMD,GAASoL,EAAAA,KACrBrG,GACKA,EAAKmjB,mBAGY7b,EAAUne,K,yDCvB7B,MAAMue,GAAYif,EAAAA,EAAAA,IAAc3mB,IACrCA,EAAK6mB,QAAQ,GACb7mB,EAAK4mB,SAAS,EAAG,EAAG,EAAG,EAAE,IACxB,CAAC5mB,EAAM7C,KACR6C,EAAKqnB,SAASrnB,EAAKkhB,WAAa/jB,EAAK,IACpC,CAAClC,EAAOC,IACFA,EAAIgmB,WAAajmB,EAAMimB,WAAyD,IAA3ChmB,EAAI8mB,cAAgB/mB,EAAM+mB,iBACpEhiB,GACKA,EAAKkhB,aAKDha,GAFaQ,EAAUve,OAEZw9B,EAAAA,EAAAA,IAAc3mB,IACpCA,EAAK+mB,WAAW,GAChB/mB,EAAK8mB,YAAY,EAAG,EAAG,EAAG,EAAE,IAC3B,CAAC9mB,EAAM7C,KACR6C,EAAKsnB,YAAYtnB,EAAKijB,cAAgB9lB,EAAK,IAC1C,CAAClC,EAAOC,IACFA,EAAI+nB,cAAgBhoB,EAAMgoB,cAAkE,IAAjD/nB,EAAI+oB,iBAAmBhpB,EAAMgpB,oBAC7EjkB,GACKA,EAAKijB,iBAGW/b,EAAS/d,K,yDCvB3B,MAAMgd,GAASwgB,EAAAA,EAAAA,IAAc3mB,IAClCA,EAAKF,QAAQE,EAAOA,EAAK+gB,kBAAkB,IAC1C,CAAC/gB,EAAM7C,KACR6C,EAAKF,SAASE,EAAO7C,EAAOiJ,EAAAA,GAAe,IAC1C,CAACnL,EAAOC,KACDA,EAAMD,GAASmL,EAAAA,KACrBpG,GACKA,EAAKqjB,kBAGSld,EAAOhd,K,2ICV9B,SAASo+B,EAAY5nC,GACnB,OAAOgnC,EAAAA,EAAAA,IAAc3mB,IACnBA,EAAK6mB,QAAQ7mB,EAAKygB,WAAazgB,EAAKwhB,SAAW,EAAI7hC,GAAK,GACxDqgB,EAAK4mB,SAAS,EAAG,EAAG,EAAG,EAAE,IACxB,CAAC5mB,EAAM7C,KACR6C,EAAK6mB,QAAQ7mB,EAAKygB,UAAmB,EAAPtjB,EAAS,IACtC,CAAClC,EAAOC,KACDA,EAAMD,GAASC,EAAImnB,oBAAsBpnB,EAAMonB,qBAAuBhc,EAAAA,IAAkBG,EAAAA,IAEpG,CAEO,MAAMmB,EAAa4f,EAAY,GACzBxF,EAAawF,EAAY,GACzBC,EAAcD,EAAY,GAC1BE,EAAgBF,EAAY,GAC5B5F,EAAe4F,EAAY,GAC3BG,EAAaH,EAAY,GACzBI,EAAeJ,EAAY,GAEb5f,EAAWxe,MACX44B,EAAW54B,MACVq+B,EAAYr+B,MACVs+B,EAAct+B,MACfw4B,EAAax4B,MACfu+B,EAAWv+B,MACTw+B,EAAax+B,MAE1C,SAASy+B,EAAWjoC,GAClB,OAAOgnC,EAAAA,EAAAA,IAAc3mB,IACnBA,EAAK+mB,WAAW/mB,EAAKuiB,cAAgBviB,EAAKwjB,YAAc,EAAI7jC,GAAK,GACjEqgB,EAAK8mB,YAAY,EAAG,EAAG,EAAG,EAAE,IAC3B,CAAC9mB,EAAM7C,KACR6C,EAAK+mB,WAAW/mB,EAAKuiB,aAAsB,EAAPplB,EAAS,IAC5C,CAAClC,EAAOC,KACDA,EAAMD,GAASuL,EAAAA,IAE3B,CAEO,MAAMW,EAAYygB,EAAW,GACvB7D,EAAY6D,EAAW,GACvBC,EAAaD,EAAW,GACxBE,EAAeF,EAAW,GAC1BjE,EAAciE,EAAW,GACzBG,EAAYH,EAAW,GACvBI,EAAcJ,EAAW,GAEZzgB,EAAUhe,MACV46B,EAAU56B,MACT0+B,EAAW1+B,MACT2+B,EAAa3+B,MACdw6B,EAAYx6B,MACd4+B,EAAU5+B,MACR6+B,EAAY7+B,K,yDCrDjC,MAAMse,GAAWkf,EAAAA,EAAAA,IAAc3mB,IACpCA,EAAKqnB,SAAS,EAAG,GACjBrnB,EAAK4mB,SAAS,EAAG,EAAG,EAAG,EAAE,IACxB,CAAC5mB,EAAM7C,KACR6C,EAAKke,YAAYle,EAAKgiB,cAAgB7kB,EAAK,IAC1C,CAAClC,EAAOC,IACFA,EAAI8mB,cAAgB/mB,EAAM+mB,gBAC/BhiB,GACKA,EAAKgiB,gBAIdva,EAASb,MAAShe,GACR6B,SAAS7B,EAAIzI,KAAKe,MAAM0H,KAASA,EAAI,GAAY+9B,EAAAA,EAAAA,IAAc3mB,IACrEA,EAAKke,YAAY/9B,KAAKe,MAAM8e,EAAKgiB,cAAgBp5B,GAAKA,GACtDoX,EAAKqnB,SAAS,EAAG,GACjBrnB,EAAK4mB,SAAS,EAAG,EAAG,EAAG,EAAE,IACxB,CAAC5mB,EAAM7C,KACR6C,EAAKke,YAAYle,EAAKgiB,cAAgB7kB,EAAOvU,EAAE,IALC,KAS3B6e,EAASte,MAA3B,MAEM8d,GAAU0f,EAAAA,EAAAA,IAAc3mB,IACnCA,EAAKsnB,YAAY,EAAG,GACpBtnB,EAAK8mB,YAAY,EAAG,EAAG,EAAG,EAAE,IAC3B,CAAC9mB,EAAM7C,KACR6C,EAAKqe,eAAere,EAAKikB,iBAAmB9mB,EAAK,IAChD,CAAClC,EAAOC,IACFA,EAAI+oB,iBAAmBhpB,EAAMgpB,mBAClCjkB,GACKA,EAAKikB,mBAIdhd,EAAQL,MAAShe,GACP6B,SAAS7B,EAAIzI,KAAKe,MAAM0H,KAASA,EAAI,GAAY+9B,EAAAA,EAAAA,IAAc3mB,IACrEA,EAAKqe,eAAel+B,KAAKe,MAAM8e,EAAKikB,iBAAmBr7B,GAAKA,GAC5DoX,EAAKsnB,YAAY,EAAG,GACpBtnB,EAAK8mB,YAAY,EAAG,EAAG,EAAG,EAAE,IAC3B,CAAC9mB,EAAM7C,KACR6C,EAAKqe,eAAere,EAAKikB,iBAAmB9mB,EAAOvU,EAAE,IALL,KAS5Bqe,EAAQ9d,K,iCChD5BgxB,EAAO,CAACj+B,MAAOA,QAEnB,SAAS82B,IACP,IAAK,IAAyC7rB,EAArCxH,EAAI,EAAGhD,EAAI8C,UAAU1C,OAAQ+F,EAAI,CAAC,EAAMnD,EAAIhD,IAAKgD,EAAG,CAC3D,KAAMwH,EAAI1H,UAAUE,GAAK,KAAQwH,KAAKrE,GAAM,QAAQyhB,KAAKpd,GAAI,MAAM,IAAI5I,MAAM,iBAAmB4I,GAChGrE,EAAEqE,GAAK,EACT,CACA,OAAO,IAAI8gC,EAASnlC,EACtB,CAEA,SAASmlC,EAASnlC,GAChBY,KAAKZ,EAAIA,CACX,CAoDA,SAASxE,EAAIgN,EAAMge,GACjB,IAAK,IAA4B/nB,EAAxB5B,EAAI,EAAGhD,EAAI2O,EAAKvO,OAAW4C,EAAIhD,IAAKgD,EAC3C,IAAK4B,EAAI+J,EAAK3L,IAAI2pB,OAASA,EACzB,OAAO/nB,EAAErF,KAGf,CAEA,SAAS8gB,EAAI1R,EAAMge,EAAM6I,GACvB,IAAK,IAAIxyB,EAAI,EAAGhD,EAAI2O,EAAKvO,OAAQ4C,EAAIhD,IAAKgD,EACxC,GAAI2L,EAAK3L,GAAG2pB,OAASA,EAAM,CACzBhe,EAAK3L,GAAKw6B,EAAM7uB,EAAOA,EAAK9E,MAAM,EAAG7G,GAAGqM,OAAOV,EAAK9E,MAAM7G,EAAI,IAC9D,KACF,CAGF,OADgB,MAAZwyB,GAAkB7mB,EAAKvL,KAAK,CAACupB,KAAMA,EAAMptB,MAAOi2B,IAC7C7mB,CACT,CA1DA28B,EAASjkC,UAAYgvB,EAAShvB,UAAY,CACxCC,YAAagkC,EACbrZ,GAAI,SAASD,EAAUwD,GACrB,IAEIhrB,EAd2B+gC,EAY3BplC,EAAIY,KAAKZ,EACTqlC,GAb2BD,EAaOplC,GAAf6rB,EAAW,IAZnB1Y,OAAOkW,MAAM,SAASrsB,KAAI,SAASqH,GAClD,IAAImiB,EAAO,GAAI3pB,EAAIwH,EAAEqb,QAAQ,KAE7B,GADI7iB,GAAK,IAAG2pB,EAAOniB,EAAEX,MAAM7G,EAAI,GAAIwH,EAAIA,EAAEX,MAAM,EAAG7G,IAC9CwH,IAAM+gC,EAAMzxB,eAAetP,GAAI,MAAM,IAAI5I,MAAM,iBAAmB4I,GACtE,MAAO,CAACmE,KAAMnE,EAAGmiB,KAAMA,EACzB,KASM3pB,GAAK,EACLhD,EAAIwrC,EAAEprC,OAGV,KAAI0C,UAAU1C,OAAS,GAAvB,CAOA,GAAgB,MAAZo1B,GAAwC,oBAAbA,EAAyB,MAAM,IAAI5zB,MAAM,qBAAuB4zB,GAC/F,OAASxyB,EAAIhD,GACX,GAAIwK,GAAKwnB,EAAWwZ,EAAExoC,IAAI2L,KAAMxI,EAAEqE,GAAK6V,EAAIla,EAAEqE,GAAIwnB,EAASrF,KAAM6I,QAC3D,GAAgB,MAAZA,EAAkB,IAAKhrB,KAAKrE,EAAGA,EAAEqE,GAAK6V,EAAIla,EAAEqE,GAAIwnB,EAASrF,KAAM,MAG1E,OAAO5lB,IAVP,CAFE,OAAS/D,EAAIhD,OAAQwK,GAAKwnB,EAAWwZ,EAAExoC,IAAI2L,QAAUnE,EAAI7I,EAAIwE,EAAEqE,GAAIwnB,EAASrF,OAAQ,OAAOniB,CAa/F,EACAoC,KAAM,WACJ,IAAIA,EAAO,CAAC,EAAGzG,EAAIY,KAAKZ,EACxB,IAAK,IAAIqE,KAAKrE,EAAGyG,EAAKpC,GAAKrE,EAAEqE,GAAGX,QAChC,OAAO,IAAIyhC,EAAS1+B,EACtB,EACApI,KAAM,SAASmK,EAAMquB,GACnB,IAAKh9B,EAAI8C,UAAU1C,OAAS,GAAK,EAAG,IAAK,IAAgCJ,EAAGwK,EAA/BihC,EAAO,IAAInnC,MAAMtE,GAAIgD,EAAI,EAASA,EAAIhD,IAAKgD,EAAGyoC,EAAKzoC,GAAKF,UAAUE,EAAI,GACnH,IAAK+D,KAAKZ,EAAE2T,eAAenL,GAAO,MAAM,IAAI/M,MAAM,iBAAmB+M,GACrE,IAAuB3L,EAAI,EAAGhD,GAAzBwK,EAAIzD,KAAKZ,EAAEwI,IAAoBvO,OAAQ4C,EAAIhD,IAAKgD,EAAGwH,EAAExH,GAAGzD,MAAMsD,MAAMm6B,EAAMyO,EACjF,EACA5oC,MAAO,SAAS8L,EAAMquB,EAAMyO,GAC1B,IAAK1kC,KAAKZ,EAAE2T,eAAenL,GAAO,MAAM,IAAI/M,MAAM,iBAAmB+M,GACrE,IAAK,IAAInE,EAAIzD,KAAKZ,EAAEwI,GAAO3L,EAAI,EAAGhD,EAAIwK,EAAEpK,OAAQ4C,EAAIhD,IAAKgD,EAAGwH,EAAExH,GAAGzD,MAAMsD,MAAMm6B,EAAMyO,EACrF,GAsBF,UCnFA,IAIIC,EACAC,EALAC,EAAQ,EACRC,EAAU,EACV1hB,EAAW,EACX2hB,EAAY,IAGZC,EAAY,EACZC,EAAW,EACXC,EAAY,EACZC,EAA+B,kBAAhBC,aAA4BA,YAAYC,IAAMD,YAAcjpB,KAC3EmpB,EAA6B,kBAAXtgC,QAAuBA,OAAOugC,sBAAwBvgC,OAAOugC,sBAAsBnY,KAAKpoB,QAAU,SAASuW,GAAKiqB,WAAWjqB,EAAG,GAAK,EAElJ,SAAS8pB,IACd,OAAOJ,IAAaK,EAASG,GAAWR,EAAWE,EAAME,MAAQH,EACnE,CAEA,SAASO,IACPR,EAAW,CACb,CAEO,SAASS,IACd1lC,KAAK2lC,MACL3lC,KAAK4lC,MACL5lC,KAAK2mB,MAAQ,IACf,CAyBO,SAASkf,EAAMpX,EAAUqX,EAAOhhB,GACrC,IAAIrhB,EAAI,IAAIiiC,EAEZ,OADAjiC,EAAEsiC,QAAQtX,EAAUqX,EAAOhhB,GACpBrhB,CACT,CAaA,SAASuiC,IACPf,GAAYD,EAAYG,EAAME,OAASH,EACvCL,EAAQC,EAAU,EAClB,KAdK,WACLO,MACER,EAEF,IADA,IAAkBn9B,EAAdjE,EAAIkhC,EACDlhC,IACAiE,EAAIu9B,EAAWxhC,EAAEmiC,QAAU,GAAGniC,EAAEkiC,MAAMloC,UAAKlF,EAAWmP,GAC3DjE,EAAIA,EAAEkjB,QAENke,CACJ,CAMIoB,EACF,CAAE,QACApB,EAAQ,EAWZ,WACE,IAAItuB,EAAmBE,EAAfD,EAAKmuB,EAAc7f,EAAOtD,IAClC,KAAOhL,GACDA,EAAGmvB,OACD7gB,EAAOtO,EAAGovB,QAAO9gB,EAAOtO,EAAGovB,OAC/BrvB,EAAKC,EAAIA,EAAKA,EAAGmQ,QAEjBlQ,EAAKD,EAAGmQ,MAAOnQ,EAAGmQ,MAAQ,KAC1BnQ,EAAKD,EAAKA,EAAGoQ,MAAQlQ,EAAKkuB,EAAWluB,GAGzCmuB,EAAWruB,EACX2vB,EAAMphB,EACR,CAvBIqhB,GACAlB,EAAW,CACb,CACF,CAEA,SAASmB,IACP,IAAIf,EAAMF,EAAME,MAAOS,EAAQT,EAAML,EACjCc,EAAQf,IAAWG,GAAaY,EAAOd,EAAYK,EACzD,CAiBA,SAASa,EAAMphB,GACT+f,IACAC,IAASA,EAAUuB,aAAavB,IACxBhgB,EAAOmgB,EACP,IACNngB,EAAOtD,MAAUsjB,EAAUU,WAAWQ,EAAMlhB,EAAOqgB,EAAME,MAAQH,IACjE9hB,IAAUA,EAAWkjB,cAAcljB,MAElCA,IAAU4hB,EAAYG,EAAME,MAAOjiB,EAAWmjB,YAAYH,EAAMrB,IACrEF,EAAQ,EAAGS,EAASU,IAExB,CC3Ge,WAASvX,EAAUqX,EAAOhhB,GACvC,IAAIrhB,EAAI,IAAIiiC,EAMZ,OALAI,EAAiB,MAATA,EAAgB,GAAKA,EAC7BriC,EAAEsiC,SAAQS,IACR/iC,EAAEwW,OACFwU,EAAS+X,EAAUV,EAAM,GACxBA,EAAOhhB,GACHrhB,CACT,CDgBAiiC,EAAMplC,UAAYulC,EAAMvlC,UAAY,CAClCC,YAAamlC,EACbK,QAAS,SAAStX,EAAUqX,EAAOhhB,GACjC,GAAwB,oBAAb2J,EAAyB,MAAM,IAAIgY,UAAU,8BACxD3hB,GAAgB,MAARA,EAAeugB,KAASvgB,IAAkB,MAATghB,EAAgB,GAAKA,GACzD9lC,KAAK2mB,OAASie,IAAa5kC,OAC1B4kC,EAAUA,EAASje,MAAQ3mB,KAC1B2kC,EAAW3kC,KAChB4kC,EAAW5kC,MAEbA,KAAK2lC,MAAQlX,EACbzuB,KAAK4lC,MAAQ9gB,EACbohB,GACF,EACAjsB,KAAM,WACAja,KAAK2lC,QACP3lC,KAAK2lC,MAAQ,KACb3lC,KAAK4lC,MAAQpkB,IACb0kB,IAEJ,GE3CF,IAAIQ,EAAUpX,EAAS,QAAS,MAAO,SAAU,aAC7CqX,EAAa,GAENC,EAAU,EACVC,EAAY,EACZC,EAAW,EACXC,EAAU,EACVC,EAAU,EACVC,EAAS,EACTC,EAAQ,EAEJ,WAASnuC,EAAM6sB,EAAMjrB,EAAIlC,EAAOonB,EAAOsnB,GACpD,IAAIC,EAAYruC,EAAKsuC,aACrB,GAAKD,GACA,GAAIzsC,KAAMysC,EAAW,YADVruC,EAAKsuC,aAAe,CAAC,GAmCvC,SAAgBtuC,EAAM4B,EAAI2sC,GACxB,IACIC,EADAH,EAAYruC,EAAKsuC,aAQrB,SAASG,EAAShB,GAChBc,EAAKG,MAAQZ,EACbS,EAAKzB,MAAME,QAAQxuB,EAAO+vB,EAAKxB,MAAOwB,EAAKxiB,MAGvCwiB,EAAKxB,OAASU,GAASjvB,EAAMivB,EAAUc,EAAKxB,MAClD,CAEA,SAASvuB,EAAMivB,GACb,IAAIvqC,EAAGohB,EAAGpkB,EAAGka,EAGb,GAAIm0B,EAAKG,QAAUZ,EAAW,OAAO5sB,IAErC,IAAKhe,KAAKmrC,EAER,IADAj0B,EAAIi0B,EAAUnrC,IACR2pB,OAAS0hB,EAAK1hB,KAApB,CAKA,GAAIzS,EAAEs0B,QAAUV,EAAS,OAAOjC,EAAQvtB,GAGpCpE,EAAEs0B,QAAUT,GACd7zB,EAAEs0B,MAAQP,EACV/zB,EAAE0yB,MAAM5rB,OACR9G,EAAE+X,GAAGztB,KAAK,YAAa1E,EAAMA,EAAK8tB,SAAU1T,EAAE1a,MAAO0a,EAAE0M,cAChDunB,EAAUnrC,KAITA,EAAItB,IACZwY,EAAEs0B,MAAQP,EACV/zB,EAAE0yB,MAAM5rB,OACR9G,EAAE+X,GAAGztB,KAAK,SAAU1E,EAAMA,EAAK8tB,SAAU1T,EAAE1a,MAAO0a,EAAE0M,cAC7CunB,EAAUnrC,GApBe,CAwCpC,GAZA6oC,GAAQ,WACFwC,EAAKG,QAAUV,IACjBO,EAAKG,MAAQT,EACbM,EAAKzB,MAAME,QAAQ9/B,EAAMqhC,EAAKxB,MAAOwB,EAAKxiB,MAC1C7e,EAAKugC,GAET,IAIAc,EAAKG,MAAQX,EACbQ,EAAKpc,GAAGztB,KAAK,QAAS1E,EAAMA,EAAK8tB,SAAUygB,EAAK7uC,MAAO6uC,EAAKznB,OACxDynB,EAAKG,QAAUX,EAAnB,CAKA,IAJAQ,EAAKG,MAAQV,EAGbQ,EAAQ,IAAIhqC,MAAMtE,EAAIquC,EAAKC,MAAMluC,QAC5B4C,EAAI,EAAGohB,GAAK,EAAGphB,EAAIhD,IAAKgD,GACvBkX,EAAIm0B,EAAKC,MAAMtrC,GAAGzD,MAAMiF,KAAK1E,EAAMA,EAAK8tB,SAAUygB,EAAK7uC,MAAO6uC,EAAKznB,UACrE0nB,IAAQlqB,GAAKlK,GAGjBo0B,EAAMluC,OAASgkB,EAAI,CAVgB,CAWrC,CAEA,SAASpX,EAAKugC,GAKZ,IAJA,IAAI/iC,EAAI+iC,EAAUc,EAAKI,SAAWJ,EAAKK,KAAKlqC,KAAK,KAAM+oC,EAAUc,EAAKI,WAAaJ,EAAKzB,MAAME,QAAQ9rB,GAAOqtB,EAAKG,MAAQR,EAAQ,GAC9HhrC,GAAK,EACLhD,EAAIsuC,EAAMluC,SAEL4C,EAAIhD,GACXsuC,EAAMtrC,GAAGwB,KAAK1E,EAAM0K,GAIlB6jC,EAAKG,QAAUR,IACjBK,EAAKpc,GAAGztB,KAAK,MAAO1E,EAAMA,EAAK8tB,SAAUygB,EAAK7uC,MAAO6uC,EAAKznB,OAC1D5F,IAEJ,CAEA,SAASA,IAIP,IAAK,IAAIhe,KAHTqrC,EAAKG,MAAQP,EACbI,EAAKzB,MAAM5rB,cACJmtB,EAAUzsC,GACHysC,EAAW,cAClBruC,EAAKsuC,YACd,CA9FAD,EAAUzsC,GAAM2sC,EAChBA,EAAKzB,MAAQA,EAAM2B,EAAU,EAAGF,EAAKxiB,KA8FvC,CAtIEhQ,CAAO/b,EAAM4B,EAAI,CACfirB,KAAMA,EACNntB,MAAOA,EACPonB,MAAOA,EACPqL,GAAIwb,EACJa,MAAOZ,EACP7hB,KAAMqiB,EAAOriB,KACbghB,MAAOqB,EAAOrB,MACd4B,SAAUP,EAAOO,SACjBC,KAAMR,EAAOQ,KACb9B,MAAO,KACP4B,MAAOb,GAEX,CAEO,SAASrxB,EAAKxc,EAAM4B,GACzB,IAAI6sC,EAAW5sC,EAAI7B,EAAM4B,GACzB,GAAI6sC,EAASC,MAAQb,EAAS,MAAM,IAAI/rC,MAAM,+BAC9C,OAAO2sC,CACT,CAEO,SAASluB,EAAIvgB,EAAM4B,GACxB,IAAI6sC,EAAW5sC,EAAI7B,EAAM4B,GACzB,GAAI6sC,EAASC,MAAQV,EAAS,MAAM,IAAIlsC,MAAM,6BAC9C,OAAO2sC,CACT,CAEO,SAAS5sC,EAAI7B,EAAM4B,GACxB,IAAI6sC,EAAWzuC,EAAKsuC,aACpB,IAAKG,KAAcA,EAAWA,EAAS7sC,IAAM,MAAM,IAAIE,MAAM,wBAC7D,OAAO2sC,CACT,C,IC/CII,E,WCFAzxB,EAAU,IAAM1Z,KAAKkD,GAEd4F,EAAW,CACpBxB,WAAY,EACZC,WAAY,EACZ6jC,OAAQ,EACRC,MAAO,EACPC,OAAQ,EACRC,OAAQ,GAGK,WAASnuC,EAAGC,EAAG+D,EAAGlF,EAAG+O,EAAG6T,GACrC,IAAIwsB,EAAQC,EAAQF,EAKpB,OAJIC,EAAStrC,KAAKmF,KAAK/H,EAAIA,EAAIC,EAAIA,MAAID,GAAKkuC,EAAQjuC,GAAKiuC,IACrDD,EAAQjuC,EAAIgE,EAAI/D,EAAInB,KAAGkF,GAAKhE,EAAIiuC,EAAOnvC,GAAKmB,EAAIguC,IAChDE,EAASvrC,KAAKmF,KAAK/D,EAAIA,EAAIlF,EAAIA,MAAIkF,GAAKmqC,EAAQrvC,GAAKqvC,EAAQF,GAASE,GACtEnuC,EAAIlB,EAAImB,EAAI+D,IAAGhE,GAAKA,EAAGC,GAAKA,EAAGguC,GAASA,EAAOC,GAAUA,GACtD,CACLhkC,WAAY2D,EACZ1D,WAAYuX,EACZssB,OAAQprC,KAAK4a,MAAMvd,EAAGD,GAAKsc,EAC3B2xB,MAAOrrC,KAAKwrC,KAAKH,GAAS3xB,EAC1B4xB,OAAQA,EACRC,OAAQA,EAEZ,CCtBA,SAASE,EAAqBrF,EAAOsF,EAASC,EAASC,GAErD,SAASC,EAAI9kC,GACX,OAAOA,EAAEnK,OAASmK,EAAE8kC,MAAQ,IAAM,EACpC,CAqCA,OAAO,SAASzuC,EAAGC,GACjB,IAAI0J,EAAI,GACJmV,EAAI,GAOR,OANA9e,EAAIgpC,EAAMhpC,GAAIC,EAAI+oC,EAAM/oC,GAtC1B,SAAmByuC,EAAIC,EAAIC,EAAIC,EAAIllC,EAAGmV,GACpC,GAAI4vB,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIzsC,EAAIuH,EAAEnH,KAAK,aAAc,KAAM8rC,EAAS,KAAMC,GAClDzvB,EAAEtc,KAAK,CAACJ,EAAGA,EAAI,EAAGtC,GAAGsK,EAAAA,EAAAA,GAAOskC,EAAIE,IAAM,CAACxsC,EAAGA,EAAI,EAAGtC,GAAGsK,EAAAA,EAAAA,GAAOukC,EAAIE,IACjE,MAAWD,GAAMC,IACfllC,EAAEnH,KAAK,aAAeosC,EAAKN,EAAUO,EAAKN,EAE9C,CAgCEO,CAAU9uC,EAAEkK,WAAYlK,EAAEmK,WAAYlK,EAAEiK,WAAYjK,EAAEkK,WAAYR,EAAGmV,GA9BvE,SAAgB9e,EAAGC,EAAG0J,EAAGmV,GACnB9e,IAAMC,GACJD,EAAIC,EAAI,IAAKA,GAAK,IAAcA,EAAID,EAAI,MAAKA,GAAK,KACtD8e,EAAEtc,KAAK,CAACJ,EAAGuH,EAAEnH,KAAKisC,EAAI9kC,GAAK,UAAW,KAAM6kC,GAAY,EAAG1uC,GAAGsK,EAAAA,EAAAA,GAAOpK,EAAGC,MAC/DA,GACT0J,EAAEnH,KAAKisC,EAAI9kC,GAAK,UAAY1J,EAAIuuC,EAEpC,CAwBER,CAAOhuC,EAAEguC,OAAQ/tC,EAAE+tC,OAAQrkC,EAAGmV,GAtBhC,SAAe9e,EAAGC,EAAG0J,EAAGmV,GAClB9e,IAAMC,EACR6e,EAAEtc,KAAK,CAACJ,EAAGuH,EAAEnH,KAAKisC,EAAI9kC,GAAK,SAAU,KAAM6kC,GAAY,EAAG1uC,GAAGsK,EAAAA,EAAAA,GAAOpK,EAAGC,KAC9DA,GACT0J,EAAEnH,KAAKisC,EAAI9kC,GAAK,SAAW1J,EAAIuuC,EAEnC,CAiBEP,CAAMjuC,EAAEiuC,MAAOhuC,EAAEguC,MAAOtkC,EAAGmV,GAf7B,SAAe4vB,EAAIC,EAAIC,EAAIC,EAAIllC,EAAGmV,GAChC,GAAI4vB,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIzsC,EAAIuH,EAAEnH,KAAKisC,EAAI9kC,GAAK,SAAU,KAAM,IAAK,KAAM,KACnDmV,EAAEtc,KAAK,CAACJ,EAAGA,EAAI,EAAGtC,GAAGsK,EAAAA,EAAAA,GAAOskC,EAAIE,IAAM,CAACxsC,EAAGA,EAAI,EAAGtC,GAAGsK,EAAAA,EAAAA,GAAOukC,EAAIE,IACjE,MAAkB,IAAPD,GAAmB,IAAPC,GACrBllC,EAAEnH,KAAKisC,EAAI9kC,GAAK,SAAWilC,EAAK,IAAMC,EAAK,IAE/C,CASExkC,CAAMrK,EAAEkuC,OAAQluC,EAAEmuC,OAAQluC,EAAEiuC,OAAQjuC,EAAEkuC,OAAQxkC,EAAGmV,GACjD9e,EAAIC,EAAI,KACD,SAAS2J,GAEd,IADA,IAA0B0P,EAAtBlX,GAAK,EAAGhD,EAAI0f,EAAEtf,SACT4C,EAAIhD,GAAGuK,GAAG2P,EAAIwF,EAAE1c,IAAIA,GAAKkX,EAAExZ,EAAE8J,GACtC,OAAOD,EAAEsV,KAAK,GAChB,CACF,CACF,CAEO,IAAI8vB,EAA0BV,GFxD9B,SAAkB1vC,GACvB,MAAM8Z,EAAI,IAA0B,oBAAdu2B,UAA2BA,UAAYC,iBAAiBtwC,EAAQ,IACtF,OAAO8Z,EAAEy2B,WAAaxjC,EAAWyjC,EAAU12B,EAAEzY,EAAGyY,EAAExY,EAAGwY,EAAEzU,EAAGyU,EAAE3Z,EAAG2Z,EAAE5K,EAAG4K,EAAEiJ,EACxE,GEqDoE,OAAQ,MAAO,QACxE0tB,EAA0Bf,GFpD9B,SAAkB1vC,GACvB,OAAa,MAATA,EAAsB+M,GACrBqiC,IAASA,EAAUviB,SAASkF,gBAAgB,6BAA8B,MAC/Eqd,EAAQ5f,aAAa,YAAaxvB,IAC5BA,EAAQovC,EAAQziC,UAAU+jC,QAAQC,eAEjCH,GADPxwC,EAAQA,EAAM4wC,QACSvvC,EAAGrB,EAAMsB,EAAGtB,EAAMqF,EAAGrF,EAAMG,EAAGH,EAAMkP,EAAGlP,EAAM+iB,GAFLhW,EAGjE,GE6CoE,KAAM,IAAK,K,WC5D/E,SAAS8jC,EAAY1uC,EAAIirB,GACvB,IAAI0jB,EAAQC,EACZ,OAAO,WACL,IAAI/B,EAAWluB,EAAItZ,KAAMrF,GACrB4sC,EAAQC,EAASD,MAKrB,GAAIA,IAAU+B,EAEZ,IAAK,IAAIrtC,EAAI,EAAGhD,GADhBswC,EAASD,EAAS/B,GACSluC,OAAQ4C,EAAIhD,IAAKgD,EAC1C,GAAIstC,EAAOttC,GAAG2pB,OAASA,EAAM,EAC3B2jB,EAASA,EAAOzmC,SACTonB,OAAOjuB,EAAG,GACjB,KACF,CAIJurC,EAASD,MAAQgC,CACnB,CACF,CAEA,SAASC,EAAc7uC,EAAIirB,EAAMptB,GAC/B,IAAI8wC,EAAQC,EACZ,GAAqB,oBAAV/wC,EAAsB,MAAM,IAAIqC,MAC3C,OAAO,WACL,IAAI2sC,EAAWluB,EAAItZ,KAAMrF,GACrB4sC,EAAQC,EAASD,MAKrB,GAAIA,IAAU+B,EAAQ,CACpBC,GAAUD,EAAS/B,GAAOzkC,QAC1B,IAAK,IAAIW,EAAI,CAACmiB,KAAMA,EAAMptB,MAAOA,GAAQyD,EAAI,EAAGhD,EAAIswC,EAAOlwC,OAAQ4C,EAAIhD,IAAKgD,EAC1E,GAAIstC,EAAOttC,GAAG2pB,OAASA,EAAM,CAC3B2jB,EAAOttC,GAAKwH,EACZ,KACF,CAEExH,IAAMhD,GAAGswC,EAAOltC,KAAKoH,EAC3B,CAEA+jC,EAASD,MAAQgC,CACnB,CACF,CAoBO,SAASE,EAAW3iC,EAAY8e,EAAMptB,GAC3C,IAAImC,EAAKmM,EAAW4iC,IAOpB,OALA5iC,EAAWM,MAAK,WACd,IAAIogC,EAAWluB,EAAItZ,KAAMrF,IACxB6sC,EAAShvC,QAAUgvC,EAAShvC,MAAQ,CAAC,IAAIotB,GAAQptB,EAAMsD,MAAMkE,KAAMjE,UACtE,IAEO,SAAShD,GACd,OAAO6B,EAAI7B,EAAM4B,GAAInC,MAAMotB,EAC7B,CACF,C,uCC7Ee,YAAS/rB,EAAGC,GACzB,IAAI+D,EACJ,OAAqB,kBAAN/D,EAAiBgkB,EAAAA,EAC1BhkB,aAAauY,GAAAA,GAAQs3B,GAAAA,IACpB9rC,GAAIwU,EAAAA,GAAAA,IAAMvY,KAAOA,EAAI+D,EAAG8rC,GAAAA,IACzBC,GAAAA,GAAmB/vC,EAAGC,EAC9B,CCJA,SAAS4tB,GAAW9B,GAClB,OAAO,WACL5lB,KAAK2nB,gBAAgB/B,EACvB,CACF,CAEA,SAASgC,GAAaC,GACpB,OAAO,WACL7nB,KAAK8nB,kBAAkBD,EAAS/B,MAAO+B,EAAS9B,MAClD,CACF,CAEA,SAASgC,GAAanC,EAAM3I,EAAa4sB,GACvC,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAUjqC,KAAKgH,aAAa4e,GAChC,OAAOqkB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAe9sB,EAAY6sB,EAAWG,EAASJ,EACvD,CACF,CAEA,SAAS5hB,GAAeJ,EAAU5K,EAAa4sB,GAC7C,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,EAAUjqC,KAAK2uB,eAAe9G,EAAS/B,MAAO+B,EAAS9B,OAC3D,OAAOkkB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAe9sB,EAAY6sB,EAAWG,EAASJ,EACvD,CACF,CAEA,SAAS1hB,GAAavC,EAAM3I,EAAazkB,GACvC,IAAIsxC,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBH,EAASrxC,EAAMwH,MAC5B,GAAc,MAAV6pC,EAGJ,OAFAI,EAAUjqC,KAAKgH,aAAa4e,OAC5BokB,EAAUH,EAAS,IACU,KACvBI,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAe9sB,EAAY6sB,EAAWG,EAASJ,IAL1C7pC,KAAK2nB,gBAAgB/B,EAMvD,CACF,CAEA,SAASwC,GAAeP,EAAU5K,EAAazkB,GAC7C,IAAIsxC,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBH,EAASrxC,EAAMwH,MAC5B,GAAc,MAAV6pC,EAGJ,OAFAI,EAAUjqC,KAAK2uB,eAAe9G,EAAS/B,MAAO+B,EAAS9B,WACvDikB,EAAUH,EAAS,IACU,KACvBI,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAe9sB,EAAY6sB,EAAWG,EAASJ,IAL1C7pC,KAAK8nB,kBAAkBD,EAAS/B,MAAO+B,EAAS9B,MAMlF,CACF,CCvDA,SAASokB,GAAYtiB,EAAUrvB,GAC7B,IAAI+d,EAAI8K,EACR,SAASkmB,IACP,IAAItrC,EAAIzD,EAAMsD,MAAMkE,KAAMjE,WAE1B,OADIE,IAAMolB,IAAI9K,GAAM8K,EAAKplB,IAV7B,SAA2B4rB,EAAU5rB,GACnC,OAAO,SAASwH,GACdzD,KAAKkoB,eAAeL,EAAS/B,MAAO+B,EAAS9B,MAAO9pB,EAAEwB,KAAKuC,KAAMyD,GACnE,CACF,CAMmC2mC,CAAkBviB,EAAU5rB,IACpDsa,CACT,CAEA,OADAgxB,EAAM8C,OAAS7xC,EACR+uC,CACT,CAEA,SAAS+C,GAAU1kB,EAAMptB,GACvB,IAAI+d,EAAI8K,EACR,SAASkmB,IACP,IAAItrC,EAAIzD,EAAMsD,MAAMkE,KAAMjE,WAE1B,OADIE,IAAMolB,IAAI9K,GAAM8K,EAAKplB,IA3B7B,SAAyB2pB,EAAM3pB,GAC7B,OAAO,SAASwH,GACdzD,KAAKgoB,aAAapC,EAAM3pB,EAAEwB,KAAKuC,KAAMyD,GACvC,CACF,CAuBmC8mC,CAAgB3kB,EAAM3pB,IAC9Csa,CACT,CAEA,OADAgxB,EAAM8C,OAAS7xC,EACR+uC,CACT,CChCA,SAASiD,GAAc7vC,EAAInC,GACzB,OAAO,WACL+c,EAAKvV,KAAMrF,GAAImrC,OAASttC,EAAMsD,MAAMkE,KAAMjE,UAC5C,CACF,CAEA,SAAS0uC,GAAc9vC,EAAInC,GACzB,OAAOA,GAASA,EAAO,WACrB+c,EAAKvV,KAAMrF,GAAImrC,MAAQttC,CACzB,CACF,CCVA,SAASkyC,GAAiB/vC,EAAInC,GAC5B,OAAO,WACL8gB,EAAItZ,KAAMrF,GAAI+sC,UAAYlvC,EAAMsD,MAAMkE,KAAMjE,UAC9C,CACF,CAEA,SAAS4uC,GAAiBhwC,EAAInC,GAC5B,OAAOA,GAASA,EAAO,WACrB8gB,EAAItZ,KAAMrF,GAAI+sC,SAAWlvC,CAC3B,CACF,C,gDCVA,IAAI4sB,GAAYtf,EAAAA,GAAUxF,UAAUC,Y,gBCiBpC,SAASivB,GAAY5J,GACnB,OAAO,WACL5lB,KAAK4uB,MAAMa,eAAe7J,EAC5B,CACF,CCDA,IAAIjrB,GAAK,EAEF,SAASiwC,GAAWte,EAAQC,EAAS3G,EAAMjrB,GAChDqF,KAAKwsB,QAAUF,EACftsB,KAAKysB,SAAWF,EAChBvsB,KAAK6qC,MAAQjlB,EACb5lB,KAAK0pC,IAAM/uC,CACb,CAMO,SAASmwC,KACd,QAASnwC,EACX,CAEA,IAAIowC,GAAsBjlC,EAAAA,GAAUxF,UAEpCsqC,GAAWtqC,UAVI,SAAoBslB,GACjC,OAAO9f,EAAAA,EAAAA,MAAYgB,WAAW8e,EAChC,EAQkCtlB,UAAY,CAC5CC,YAAaqqC,GACblkC,OCvCa,SAASA,GACtB,IAAIkf,EAAO5lB,KAAK6qC,MACZlwC,EAAKqF,KAAK0pC,IAEQ,oBAAXhjC,IAAuBA,GAASye,EAAAA,GAAAA,GAASze,IAEpD,IAAK,IAAI4lB,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQqzB,EAAY,IAAInvB,MAAM+U,GAAI+K,EAAI,EAAGA,EAAI/K,IAAK+K,EAC3F,IAAK,IAAiFtkB,EAAM4zB,EAAnF9M,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAQuzB,EAAWF,EAAUrP,GAAK,IAAI9f,MAAMtE,GAAmBgD,EAAI,EAAGA,EAAIhD,IAAKgD,GAC9GlD,EAAO8mB,EAAM5jB,MAAQ0wB,EAAUjmB,EAAOjJ,KAAK1E,EAAMA,EAAK8tB,SAAU5qB,EAAG4jB,MAClE,aAAc9mB,IAAM4zB,EAAQ9F,SAAW9tB,EAAK8tB,UAChD+F,EAAS3wB,GAAK0wB,EACd6a,EAAS5a,EAAS3wB,GAAI2pB,EAAMjrB,EAAIsB,EAAG2wB,EAAUhyB,EAAI7B,EAAM4B,KAK7D,OAAO,IAAIiwC,GAAWle,EAAW1sB,KAAKysB,SAAU7G,EAAMjrB,EACxD,EDuBEoL,UExCa,SAASW,GACtB,IAAIkf,EAAO5lB,KAAK6qC,MACZlwC,EAAKqF,KAAK0pC,IAEQ,oBAAXhjC,IAAuBA,GAASomB,EAAAA,GAAAA,GAAYpmB,IAEvD,IAAK,IAAI4lB,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQqzB,EAAY,GAAIH,EAAU,GAAIlP,EAAI,EAAGA,EAAI/K,IAAK+K,EAC/F,IAAK,IAAyCtkB,EAArC8mB,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAc4C,EAAI,EAAGA,EAAIhD,IAAKgD,EAClE,GAAIlD,EAAO8mB,EAAM5jB,GAAI,CACnB,IAAK,IAA2DurB,EAAvDlB,EAAW5f,EAAOjJ,KAAK1E,EAAMA,EAAK8tB,SAAU5qB,EAAG4jB,GAAemrB,EAAUpwC,EAAI7B,EAAM4B,GAAKuK,EAAI,EAAGpD,EAAIwkB,EAASjtB,OAAQ6L,EAAIpD,IAAKoD,GAC/HsiB,EAAQlB,EAASphB,KACnBsiC,EAAShgB,EAAO5B,EAAMjrB,EAAIuK,EAAGohB,EAAU0kB,GAG3Cte,EAAUrwB,KAAKiqB,GACfiG,EAAQlwB,KAAKtD,EACf,CAIJ,OAAO,IAAI6xC,GAAWle,EAAWH,EAAS3G,EAAMjrB,EAClD,EFoBEoyB,YAAage,GAAoBhe,YACjCE,eAAgB8d,GAAoB9d,eACpC9lB,OG5Ca,SAASkX,GACD,oBAAVA,IAAsBA,GAAQ8O,EAAAA,GAAAA,GAAQ9O,IAEjD,IAAK,IAAIiO,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQqzB,EAAY,IAAInvB,MAAM+U,GAAI+K,EAAI,EAAGA,EAAI/K,IAAK+K,EAC3F,IAAK,IAAuEtkB,EAAnE8mB,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAQuzB,EAAWF,EAAUrP,GAAK,GAAUphB,EAAI,EAAGA,EAAIhD,IAAKgD,GAC3FlD,EAAO8mB,EAAM5jB,KAAOoiB,EAAM5gB,KAAK1E,EAAMA,EAAK8tB,SAAU5qB,EAAG4jB,IAC1D+M,EAASvwB,KAAKtD,GAKpB,OAAO,IAAI6xC,GAAWle,EAAW1sB,KAAKysB,SAAUzsB,KAAK6qC,MAAO7qC,KAAK0pC,IACnE,EHiCE9iC,MI9Ca,SAASE,GACtB,GAAIA,EAAW4iC,MAAQ1pC,KAAK0pC,IAAK,MAAM,IAAI7uC,MAE3C,IAAK,IAAIizB,EAAU9tB,KAAKwsB,QAASuB,EAAUjnB,EAAW0lB,QAASwB,EAAKF,EAAQz0B,OAAQ2a,EAAK+Z,EAAQ10B,OAAQiZ,EAAI7V,KAAKrE,IAAI41B,EAAIha,GAAKia,EAAS,IAAI1wB,MAAMywB,GAAK3Q,EAAI,EAAGA,EAAI/K,IAAK+K,EACrK,IAAK,IAAmGtkB,EAA/Fm1B,EAASJ,EAAQzQ,GAAI8Q,EAASJ,EAAQ1Q,GAAIpkB,EAAIi1B,EAAO70B,OAAQuN,EAAQqnB,EAAO5Q,GAAK,IAAI9f,MAAMtE,GAAUgD,EAAI,EAAGA,EAAIhD,IAAKgD,GACxHlD,EAAOm1B,EAAOjyB,IAAMkyB,EAAOlyB,MAC7B2K,EAAM3K,GAAKlD,GAKjB,KAAOskB,EAAI2Q,IAAM3Q,EACf4Q,EAAO5Q,GAAKyQ,EAAQzQ,GAGtB,OAAO,IAAIutB,GAAW3c,EAAQjuB,KAAKysB,SAAUzsB,KAAK6qC,MAAO7qC,KAAK0pC,IAChE,EJ+BE5jC,UF7Ca,WACb,OAAO,IAAIsf,GAAUplB,KAAKwsB,QAASxsB,KAAKysB,SAC1C,EE4CE3lB,WK/Ca,WAKb,IAJA,IAAI8e,EAAO5lB,KAAK6qC,MACZI,EAAMjrC,KAAK0pC,IACXwB,EAAMJ,KAEDxe,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQgkB,EAAI,EAAGA,EAAI/K,IAAK+K,EACjE,IAAK,IAAyCtkB,EAArC8mB,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAc4C,EAAI,EAAGA,EAAIhD,IAAKgD,EAClE,GAAIlD,EAAO8mB,EAAM5jB,GAAI,CACnB,IAAI+uC,EAAUpwC,EAAI7B,EAAMkyC,GACxBzD,EAASzuC,EAAM6sB,EAAMslB,EAAKjvC,EAAG4jB,EAAO,CAClCiF,KAAMkmB,EAAQlmB,KAAOkmB,EAAQlF,MAAQkF,EAAQtD,SAC7C5B,MAAO,EACP4B,SAAUsD,EAAQtD,SAClBC,KAAMqD,EAAQrD,MAElB,CAIJ,OAAO,IAAIiD,GAAWte,EAAQtsB,KAAKysB,SAAU7G,EAAMslB,EACrD,EL4BEztC,KAAMstC,GAAoBttC,KAC1BnD,MAAOywC,GAAoBzwC,MAC3BvB,KAAMgyC,GAAoBhyC,KAC1BgE,KAAMguC,GAAoBhuC,KAC1B2xB,MAAOqc,GAAoBrc,MAC3BtnB,KAAM2jC,GAAoB3jC,KAC1B8jB,GMhCa,SAAStF,EAAMyF,GAC5B,IAAI1wB,EAAKqF,KAAK0pC,IAEd,OAAO3tC,UAAU1C,OAAS,EACpBuB,EAAIoF,KAAKjH,OAAQ4B,GAAIuwB,GAAGA,GAAGtF,GAC3B5lB,KAAKoH,KApBb,SAAoBzM,EAAIirB,EAAMyF,GAC5B,IAAI8f,EAAKC,EAAKC,EAThB,SAAezlB,GACb,OAAQA,EAAO,IAAIrT,OAAOkW,MAAM,SAASvF,OAAM,SAASzf,GACtD,IAAIxH,EAAIwH,EAAEqb,QAAQ,KAElB,OADI7iB,GAAK,IAAGwH,EAAIA,EAAEX,MAAM,EAAG7G,KACnBwH,GAAW,UAANA,CACf,GACF,CAGsB8T,CAAMqO,GAAQrQ,EAAO+D,EACzC,OAAO,WACL,IAAIkuB,EAAW6D,EAAIrrC,KAAMrF,GACrBuwB,EAAKsc,EAAStc,GAKdA,IAAOigB,IAAMC,GAAOD,EAAMjgB,GAAIrlB,QAAQqlB,GAAGtF,EAAMyF,GAEnDmc,EAAStc,GAAKkgB,CAChB,CACF,CAOkBE,CAAW3wC,EAAIirB,EAAMyF,GACvC,EN2BE7kB,KNaa,SAASof,EAAMptB,GAC5B,IAAIqvB,GAAW4C,EAAAA,EAAAA,GAAU7E,GAAO3pB,EAAiB,cAAb4rB,EAA2BqgB,EAAuBjrB,GACtF,OAAOjd,KAAKsqC,UAAU1kB,EAAuB,oBAAVptB,GAC5BqvB,EAAS9B,MAAQqC,GAAiBD,IAAcN,EAAU5rB,EAAGwtC,EAAWzpC,KAAM,QAAU4lB,EAAMptB,IACtF,MAATA,GAAiBqvB,EAAS9B,MAAQ6B,GAAeF,IAAYG,IAC5DA,EAAS9B,MAAQkC,GAAiBF,IAAcF,EAAU5rB,EAAGzD,GACtE,EMlBE8xC,ULvBa,SAAS1kB,EAAMptB,GAC5B,IAAIuc,EAAM,QAAU6Q,EACpB,GAAI7pB,UAAU1C,OAAS,EAAG,OAAQ0b,EAAM/U,KAAKunC,MAAMxyB,KAASA,EAAIs1B,OAChE,GAAa,MAAT7xC,EAAe,OAAOwH,KAAKunC,MAAMxyB,EAAK,MAC1C,GAAqB,oBAAVvc,EAAsB,MAAM,IAAIqC,MAC3C,IAAIgtB,GAAW4C,EAAAA,EAAAA,GAAU7E,GACzB,OAAO5lB,KAAKunC,MAAMxyB,GAAM8S,EAAS9B,MAAQokB,GAAcG,IAAWziB,EAAUrvB,GAC9E,EKiBEo2B,MDQa,SAAShJ,EAAMptB,EAAOm3B,GACnC,IAAI1zB,EAAqB,eAAhB2pB,GAAQ,IAAsBsiB,EAAuBjrB,GAC9D,OAAgB,MAATzkB,EAAgBwH,KAClBurC,WAAW3lB,EAjElB,SAAmBA,EAAM3I,GACvB,IAAI6sB,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,GAAUrb,EAAAA,GAAAA,GAAM5uB,KAAM4lB,GACtBokB,GAAWhqC,KAAK4uB,MAAMa,eAAe7J,IAAOgJ,EAAAA,GAAAA,GAAM5uB,KAAM4lB,IAC5D,OAAOqkB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,EAC/CA,EAAe9sB,EAAY6sB,EAAWG,EAASC,EAAWF,EAClE,CACF,CAsDwBwB,CAAU5lB,EAAM3pB,IACjCivB,GAAG,aAAetF,EAAM4J,GAAY5J,IACpB,oBAAVptB,EAAuBwH,KAC7BurC,WAAW3lB,EArClB,SAAuBA,EAAM3I,EAAazkB,GACxC,IAAIsxC,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,GAAUrb,EAAAA,GAAAA,GAAM5uB,KAAM4lB,GACtBikB,EAASrxC,EAAMwH,MACfgqC,EAAUH,EAAS,GAEvB,OADc,MAAVA,IAAoC7pC,KAAK4uB,MAAMa,eAAe7J,GAA9CokB,EAAUH,GAA2Cjb,EAAAA,GAAAA,GAAM5uB,KAAM4lB,IAC9EqkB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAe9sB,EAAY6sB,EAAWG,EAASJ,GAC5E,CACF,CAwBwBha,CAAcjK,EAAM3pB,EAAGwtC,EAAWzpC,KAAM,SAAW4lB,EAAMptB,KAC1E4O,KAvBP,SAA0BzM,EAAIirB,GAC5B,IAAIulB,EAAKC,EAAKK,EAAwDvkC,EAA7C6N,EAAM,SAAW6Q,EAAM4F,EAAQ,OAASzW,EACjE,OAAO,WACL,IAAIyyB,EAAWluB,EAAItZ,KAAMrF,GACrBuwB,EAAKsc,EAAStc,GACdG,EAAkC,MAAvBmc,EAAShvC,MAAMuc,GAAe7N,IAAWA,EAASsoB,GAAY5J,SAASrtB,EAKlF2yB,IAAOigB,GAAOM,IAAcpgB,IAAW+f,GAAOD,EAAMjgB,GAAIrlB,QAAQqlB,GAAGM,EAAOigB,EAAYpgB,GAE1Fmc,EAAStc,GAAKkgB,CAChB,CACF,CASYM,CAAiB1rC,KAAK0pC,IAAK9jB,IACjC5lB,KACCurC,WAAW3lB,EApDlB,SAAuBA,EAAM3I,EAAa4sB,GACxC,IAAIC,EAEAC,EADAC,EAAUH,EAAS,GAEvB,OAAO,WACL,IAAII,GAAUrb,EAAAA,GAAAA,GAAM5uB,KAAM4lB,GAC1B,OAAOqkB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAe9sB,EAAY6sB,EAAWG,EAASJ,EACvD,CACF,CA0CwBna,CAAc9J,EAAM3pB,EAAGzD,GAAQm3B,GAChDzE,GAAG,aAAetF,EAAM,KAC/B,EClBE2lB,WO5Ca,SAAS3lB,EAAMptB,EAAOm3B,GACnC,IAAI5a,EAAM,UAAY6Q,GAAQ,IAC9B,GAAI7pB,UAAU1C,OAAS,EAAG,OAAQ0b,EAAM/U,KAAKunC,MAAMxyB,KAASA,EAAIs1B,OAChE,GAAa,MAAT7xC,EAAe,OAAOwH,KAAKunC,MAAMxyB,EAAK,MAC1C,GAAqB,oBAAVvc,EAAsB,MAAM,IAAIqC,MAC3C,OAAOmF,KAAKunC,MAAMxyB,EAhBpB,SAAoB6Q,EAAMptB,EAAOm3B,GAC/B,IAAIlsB,EAAG4d,EACP,SAASkmB,IACP,IAAItrC,EAAIzD,EAAMsD,MAAMkE,KAAMjE,WAE1B,OADIE,IAAMolB,IAAI5d,GAAK4d,EAAKplB,IAV5B,SAA0B2pB,EAAM3pB,EAAG0zB,GACjC,OAAO,SAASlsB,GACdzD,KAAK4uB,MAAMgB,YAAYhK,EAAM3pB,EAAEwB,KAAKuC,KAAMyD,GAAIksB,EAChD,CACF,CAMkCgc,CAAiB/lB,EAAM3pB,EAAG0zB,IACjDlsB,CACT,CAEA,OADA8jC,EAAM8C,OAAS7xC,EACR+uC,CACT,CAOyBgE,CAAW3lB,EAAMptB,EAAmB,MAAZm3B,EAAmB,GAAKA,GACzE,EPuCEhpB,KQ/Ca,SAASnO,GACtB,OAAOwH,KAAKunC,MAAM,OAAyB,oBAAV/uC,EARnC,SAAsBA,GACpB,OAAO,WACL,IAAIqxC,EAASrxC,EAAMwH,MACnBA,KAAKspB,YAAwB,MAAVugB,EAAiB,GAAKA,CAC3C,CACF,CAIQrgB,CAAaigB,EAAWzpC,KAAM,OAAQxH,IAf9C,SAAsBA,GACpB,OAAO,WACLwH,KAAKspB,YAAc9wB,CACrB,CACF,CAYQ+wB,CAAsB,MAAT/wB,EAAgB,GAAKA,EAAQ,IAClD,ER4CEozC,US9Ca,SAASpzC,GACtB,IAAIuc,EAAM,OACV,GAAIhZ,UAAU1C,OAAS,EAAG,OAAQ0b,EAAM/U,KAAKunC,MAAMxyB,KAASA,EAAIs1B,OAChE,GAAa,MAAT7xC,EAAe,OAAOwH,KAAKunC,MAAMxyB,EAAK,MAC1C,GAAqB,oBAAVvc,EAAsB,MAAM,IAAIqC,MAC3C,OAAOmF,KAAKunC,MAAMxyB,EAhBpB,SAAmBvc,GACjB,IAAI+d,EAAI8K,EACR,SAASkmB,IACP,IAAItrC,EAAIzD,EAAMsD,MAAMkE,KAAMjE,WAE1B,OADIE,IAAMolB,IAAI9K,GAAM8K,EAAKplB,IAV7B,SAAyBA,GACvB,OAAO,SAASwH,GACdzD,KAAKspB,YAAcrtB,EAAEwB,KAAKuC,KAAMyD,EAClC,CACF,CAMmCooC,CAAgB5vC,IACxCsa,CACT,CAEA,OADAgxB,EAAM8C,OAAS7xC,EACR+uC,CACT,CAOyBqE,CAAUpzC,GACnC,ETyCE0O,OUxDa,WACb,OAAOlH,KAAKkrB,GAAG,aATjB,SAAwBvwB,GACtB,OAAO,WACL,IAAIia,EAAS5U,KAAKiH,WAClB,IAAK,IAAIhL,KAAK+D,KAAKqnC,aAAc,IAAKprC,IAAMtB,EAAI,OAC5Cia,GAAQA,EAAO+V,YAAY3qB,KACjC,CACF,CAG+B8rC,CAAe9rC,KAAK0pC,KACnD,EVuDEnC,MRda,SAAS3hB,EAAMptB,GAC5B,IAAImC,EAAKqF,KAAK0pC,IAId,GAFA9jB,GAAQ,GAEJ7pB,UAAU1C,OAAS,EAAG,CAExB,IADA,IACkCoK,EAD9B8jC,EAAQ3sC,EAAIoF,KAAKjH,OAAQ4B,GAAI4sC,MACxBtrC,EAAI,EAAGhD,EAAIsuC,EAAMluC,OAAW4C,EAAIhD,IAAKgD,EAC5C,IAAKwH,EAAI8jC,EAAMtrC,IAAI2pB,OAASA,EAC1B,OAAOniB,EAAEjL,MAGb,OAAO,IACT,CAEA,OAAOwH,KAAKoH,MAAe,MAAT5O,EAAgB6wC,EAAcG,GAAe7uC,EAAIirB,EAAMptB,GAC3E,EQDEstC,MJpDa,SAASttC,GACtB,IAAImC,EAAKqF,KAAK0pC,IAEd,OAAO3tC,UAAU1C,OACX2G,KAAKoH,MAAuB,oBAAV5O,EACdgyC,GACAC,IAAe9vC,EAAInC,IACvBoC,EAAIoF,KAAKjH,OAAQ4B,GAAImrC,KAC7B,EI6CE4B,SHrDa,SAASlvC,GACtB,IAAImC,EAAKqF,KAAK0pC,IAEd,OAAO3tC,UAAU1C,OACX2G,KAAKoH,MAAuB,oBAAV5O,EACdkyC,GACAC,IAAkBhwC,EAAInC,IAC1BoC,EAAIoF,KAAKjH,OAAQ4B,GAAI+sC,QAC7B,EG8CEC,KW3Da,SAASnvC,GACtB,IAAImC,EAAKqF,KAAK0pC,IAEd,OAAO3tC,UAAU1C,OACX2G,KAAKoH,KAXb,SAAsBzM,EAAInC,GACxB,GAAqB,oBAAVA,EAAsB,MAAM,IAAIqC,MAC3C,OAAO,WACLye,EAAItZ,KAAMrF,GAAIgtC,KAAOnvC,CACvB,CACF,CAMkBuzC,CAAapxC,EAAInC,IAC3BoC,EAAIoF,KAAKjH,OAAQ4B,GAAIgtC,IAC7B,EXsDEqE,YY3Da,SAASxzC,GACtB,GAAqB,oBAAVA,EAAsB,MAAM,IAAIqC,MAC3C,OAAOmF,KAAKoH,KAVd,SAAqBzM,EAAInC,GACvB,OAAO,WACL,IAAIiG,EAAIjG,EAAMsD,MAAMkE,KAAMjE,WAC1B,GAAiB,oBAAN0C,EAAkB,MAAM,IAAI5D,MACvCye,EAAItZ,KAAMrF,GAAIgtC,KAAOlpC,CACvB,CACF,CAImButC,CAAYhsC,KAAK0pC,IAAKlxC,GACzC,EZyDEgf,IapEa,WACb,IAAI2zB,EAAKC,EAAKnV,EAAOj2B,KAAMrF,EAAKs7B,EAAKyT,IAAK3sC,EAAOk5B,EAAKl5B,OACtD,OAAO,IAAIkvC,SAAQ,SAASC,EAASC,GACnC,IAAIC,EAAS,CAAC5zC,MAAO2zC,GACjB30B,EAAM,CAAChf,MAAO,WAA4B,MAATuE,GAAYmvC,GAAW,GAE5DjW,EAAK7uB,MAAK,WACR,IAAIogC,EAAWluB,EAAItZ,KAAMrF,GACrBuwB,EAAKsc,EAAStc,GAKdA,IAAOigB,KACTC,GAAOD,EAAMjgB,GAAIrlB,QACbzG,EAAEgtC,OAAO/vC,KAAK+vC,GAClBhB,EAAIhsC,EAAEitC,UAAUhwC,KAAK+vC,GACrBhB,EAAIhsC,EAAEoY,IAAInb,KAAKmb,IAGjBgwB,EAAStc,GAAKkgB,CAChB,IAGa,IAATruC,GAAYmvC,GAClB,GACF,Eb2CE,CAAChzB,OAAOqW,UAAWwb,GAAoB7xB,OAAOqW,WclEhD,IAAI+c,GAAgB,CAClBxnB,KAAM,KACNghB,MAAO,EACP4B,SAAU,IACVC,KCDK,SAAoBlkC,GACzB,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,CAC9D,GDEA,SAASunC,GAAQjyC,EAAM4B,GAErB,IADA,IAAIwsC,IACKA,EAASpuC,EAAKsuC,iBAAmBF,EAASA,EAAOxsC,KACxD,KAAM5B,EAAOA,EAAKkO,YAChB,MAAM,IAAIpM,MAAM,cAADyN,OAAe3N,EAAE,eAGpC,OAAOwsC,CACT,CEhBArhC,EAAAA,GAAUxF,UAAU+rC,UCFL,SAASzmB,GACtB,OAAO5lB,KAAKoH,MAAK,YCDJ,SAASrO,EAAM6sB,GAC5B,IACI4hB,EACA+E,EAEAtwC,EAJAmrC,EAAYruC,EAAKsuC,aAGjB3Y,GAAQ,EAGZ,GAAK0Y,EAAL,CAIA,IAAKnrC,KAFL2pB,EAAe,MAARA,EAAe,KAAOA,EAAO,GAE1BwhB,GACHI,EAAWJ,EAAUnrC,IAAI2pB,OAASA,GACvC2mB,EAAS/E,EAASC,MAAQX,GAAYU,EAASC,MAAQR,EACvDO,EAASC,MAAQP,EACjBM,EAAS3B,MAAM5rB,OACfutB,EAAStc,GAAGztB,KAAK8uC,EAAS,YAAc,SAAUxzC,EAAMA,EAAK8tB,SAAU2gB,EAAS/uC,MAAO+uC,EAAS3nB,cACzFunB,EAAUnrC,IAL8ByyB,GAAQ,EAQrDA,UAAc31B,EAAKsuC,YAbD,CAcxB,CDnBIgF,CAAUrsC,KAAM4lB,EAClB,GACF,EDDA9f,EAAAA,GAAUxF,UAAUwG,WFiBL,SAAS8e,GACtB,IAAIjrB,EACAwsC,EAEAvhB,aAAgBglB,IAClBjwC,EAAKirB,EAAK8jB,IAAK9jB,EAAOA,EAAKilB,QAE3BlwC,EAAKmwC,MAAU3D,EAASmF,IAAexnB,KAAOugB,IAAOzf,EAAe,MAARA,EAAe,KAAOA,EAAO,IAG3F,IAAK,IAAI0G,EAAStsB,KAAKwsB,QAASla,EAAIga,EAAOjzB,OAAQgkB,EAAI,EAAGA,EAAI/K,IAAK+K,EACjE,IAAK,IAAyCtkB,EAArC8mB,EAAQyM,EAAOjP,GAAIpkB,EAAI4mB,EAAMxmB,OAAc4C,EAAI,EAAGA,EAAIhD,IAAKgD,GAC9DlD,EAAO8mB,EAAM5jB,KACfurC,EAASzuC,EAAM6sB,EAAMjrB,EAAIsB,EAAG4jB,EAAOsnB,GAAU6D,GAAQjyC,EAAM4B,IAKjE,OAAO,IAAIiwC,GAAWte,EAAQtsB,KAAKysB,SAAU7G,EAAMjrB,EACrD,C,2BKzCO,SAAS6xC,EAAUtnC,EAAGvL,EAAGoE,GAC9BiC,KAAKkF,EAAIA,EACTlF,KAAKrG,EAAIA,EACTqG,KAAKjC,EAAIA,CACX,CAEAyuC,EAAUlsC,UAAY,CACpBC,YAAaisC,EACbtoC,MAAO,SAASgB,GACd,OAAa,IAANA,EAAUlF,KAAO,IAAIwsC,EAAUxsC,KAAKkF,EAAIA,EAAGlF,KAAKrG,EAAGqG,KAAKjC,EACjE,EACA4qC,UAAW,SAAShvC,EAAGoE,GACrB,OAAa,IAANpE,EAAgB,IAANoE,EAAUiC,KAAO,IAAIwsC,EAAUxsC,KAAKkF,EAAGlF,KAAKrG,EAAIqG,KAAKkF,EAAIvL,EAAGqG,KAAKjC,EAAIiC,KAAKkF,EAAInH,EACjG,EACAjC,MAAO,SAAS85B,GACd,MAAO,CAACA,EAAM,GAAK51B,KAAKkF,EAAIlF,KAAKrG,EAAGi8B,EAAM,GAAK51B,KAAKkF,EAAIlF,KAAKjC,EAC/D,EACA0uC,OAAQ,SAAS9yC,GACf,OAAOA,EAAIqG,KAAKkF,EAAIlF,KAAKrG,CAC3B,EACA+yC,OAAQ,SAAS3uC,GACf,OAAOA,EAAIiC,KAAKkF,EAAIlF,KAAKjC,CAC3B,EACA8f,OAAQ,SAAS8uB,GACf,MAAO,EAAEA,EAAS,GAAK3sC,KAAKrG,GAAKqG,KAAKkF,GAAIynC,EAAS,GAAK3sC,KAAKjC,GAAKiC,KAAKkF,EACzE,EACA0nC,QAAS,SAASjzC,GAChB,OAAQA,EAAIqG,KAAKrG,GAAKqG,KAAKkF,CAC7B,EACA2nC,QAAS,SAAS9uC,GAChB,OAAQA,EAAIiC,KAAKjC,GAAKiC,KAAKkF,CAC7B,EACA4nC,SAAU,SAASnzC,GACjB,OAAOA,EAAEkM,OAAOR,OAAO1L,EAAE8L,QAAQrJ,IAAI4D,KAAK4sC,QAAS5sC,MAAM5D,IAAIzC,EAAEkkB,OAAQlkB,GACzE,EACAozC,SAAU,SAAShvC,GACjB,OAAOA,EAAE8H,OAAOR,OAAOtH,EAAE0H,QAAQrJ,IAAI4D,KAAK6sC,QAAS7sC,MAAM5D,IAAI2B,EAAE8f,OAAQ9f,GACzE,EACA8E,SAAU,WACR,MAAO,aAAe7C,KAAKrG,EAAI,IAAMqG,KAAKjC,EAAI,WAAaiC,KAAKkF,EAAI,GACtE,GAGoB,IAAIsnC,EAAU,EAAG,EAAG,GAEpBA,EAAUlsC,S","sources":["../../node_modules/d3-sankey/node_modules/d3-array/src/min.js","../../node_modules/d3-sankey/src/align.js","../../node_modules/d3-sankey/node_modules/d3-array/src/sum.js","../../node_modules/d3-sankey/node_modules/d3-array/src/max.js","../../node_modules/d3-sankey/src/constant.js","../../node_modules/d3-sankey/src/sankey.js","../../node_modules/d3-sankey/node_modules/d3-path/src/path.js","../../node_modules/d3-sankey/node_modules/d3-shape/src/array.js","../../node_modules/d3-sankey/node_modules/d3-shape/src/constant.js","../../node_modules/d3-sankey/node_modules/d3-shape/src/point.js","../../node_modules/d3-sankey/node_modules/d3-shape/src/link/index.js","../../node_modules/d3-sankey/src/sankeyLinkHorizontal.js","../../node_modules/d3-array/src/max.js","../../node_modules/d3-array/src/min.js","../../node_modules/d3-axis/src/identity.js","../../node_modules/d3-axis/src/axis.js","../../node_modules/d3-brush/src/brush.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-fetch/src/text.js","../../node_modules/d3-fetch/src/xml.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-interpolate/src/hcl.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/basis.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/basisClosed.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","../../node_modules/d3-scale-chromatic/src/colors.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-scale/src/ordinal.js","../../node_modules/d3-scale/src/band.js","../../node_modules/d3-array/src/range.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/descending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/number.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/numberArray.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-time/src/ticks.js","../../node_modules/d3-scale/src/time.js","../../node_modules/d3-scale/src/nice.js","../../node_modules/d3-selection/src/array.js","../../node_modules/d3-selection/src/select.js","../../node_modules/d3-selection/src/selectAll.js","../../node_modules/d3-selection/src/matcher.js","../../node_modules/d3-selection/src/namespace.js","../../node_modules/d3-selection/src/namespaces.js","../../node_modules/d3-selection/src/selection/selectChild.js","../../node_modules/d3-selection/src/selection/selectChildren.js","../../node_modules/d3-selection/src/selection/sparse.js","../../node_modules/d3-selection/src/selection/enter.js","../../node_modules/d3-selection/src/selection/data.js","../../node_modules/d3-selection/src/selection/sort.js","../../node_modules/d3-selection/src/selection/attr.js","../../node_modules/d3-selection/src/selection/property.js","../../node_modules/d3-selection/src/selection/classed.js","../../node_modules/d3-selection/src/selection/text.js","../../node_modules/d3-selection/src/selection/html.js","../../node_modules/d3-selection/src/selection/raise.js","../../node_modules/d3-selection/src/selection/lower.js","../../node_modules/d3-selection/src/creator.js","../../node_modules/d3-selection/src/selection/insert.js","../../node_modules/d3-selection/src/selection/remove.js","../../node_modules/d3-selection/src/selection/clone.js","../../node_modules/d3-selection/src/selection/on.js","../../node_modules/d3-selection/src/selection/dispatch.js","../../node_modules/d3-selection/src/selection/index.js","../../node_modules/d3-selection/src/selection/select.js","../../node_modules/d3-selection/src/selection/selectAll.js","../../node_modules/d3-selection/src/selection/filter.js","../../node_modules/d3-selection/src/constant.js","../../node_modules/d3-selection/src/selection/exit.js","../../node_modules/d3-selection/src/selection/join.js","../../node_modules/d3-selection/src/selection/merge.js","../../node_modules/d3-selection/src/selection/order.js","../../node_modules/d3-selection/src/selection/call.js","../../node_modules/d3-selection/src/selection/nodes.js","../../node_modules/d3-selection/src/selection/node.js","../../node_modules/d3-selection/src/selection/size.js","../../node_modules/d3-selection/src/selection/empty.js","../../node_modules/d3-selection/src/selection/each.js","../../node_modules/d3-selection/src/selection/append.js","../../node_modules/d3-selection/src/selection/datum.js","../../node_modules/d3-selection/src/selection/iterator.js","../../node_modules/d3-selection/src/selection/style.js","../../node_modules/d3-selection/src/selector.js","../../node_modules/d3-selection/src/selectorAll.js","../../node_modules/d3-selection/src/window.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/path.js","../../node_modules/d3-shape/src/arc.js","../../node_modules/d3-shape/src/array.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/descending.js","../../node_modules/d3-shape/src/identity.js","../../node_modules/d3-shape/src/pie.js","../../node_modules/d3-shape/src/noop.js","../../node_modules/d3-shape/src/curve/basis.js","../../node_modules/d3-shape/src/curve/basisClosed.js","../../node_modules/d3-shape/src/curve/basisOpen.js","../../node_modules/d3-shape/src/curve/bump.js","../../node_modules/d3-shape/src/curve/bundle.js","../../node_modules/d3-shape/src/curve/cardinal.js","../../node_modules/d3-shape/src/curve/cardinalClosed.js","../../node_modules/d3-shape/src/curve/cardinalOpen.js","../../node_modules/d3-shape/src/curve/catmullRom.js","../../node_modules/d3-shape/src/curve/catmullRomClosed.js","../../node_modules/d3-shape/src/curve/catmullRomOpen.js","../../node_modules/d3-shape/src/curve/linearClosed.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/natural.js","../../node_modules/d3-shape/src/curve/step.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-dispatch/src/dispatch.js","../../node_modules/d3-timer/src/timer.js","../../node_modules/d3-timer/src/timeout.js","../../node_modules/d3-transition/src/transition/schedule.js","../../node_modules/d3-interpolate/src/transform/parse.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/transform/index.js","../../node_modules/d3-transition/src/transition/tween.js","../../node_modules/d3-transition/src/transition/interpolate.js","../../node_modules/d3-transition/src/transition/attr.js","../../node_modules/d3-transition/src/transition/attrTween.js","../../node_modules/d3-transition/src/transition/delay.js","../../node_modules/d3-transition/src/transition/duration.js","../../node_modules/d3-transition/src/transition/selection.js","../../node_modules/d3-transition/src/transition/style.js","../../node_modules/d3-transition/src/transition/index.js","../../node_modules/d3-transition/src/transition/select.js","../../node_modules/d3-transition/src/transition/selectAll.js","../../node_modules/d3-transition/src/transition/filter.js","../../node_modules/d3-transition/src/transition/merge.js","../../node_modules/d3-transition/src/transition/transition.js","../../node_modules/d3-transition/src/transition/on.js","../../node_modules/d3-transition/src/transition/styleTween.js","../../node_modules/d3-transition/src/transition/text.js","../../node_modules/d3-transition/src/transition/textTween.js","../../node_modules/d3-transition/src/transition/remove.js","../../node_modules/d3-transition/src/transition/ease.js","../../node_modules/d3-transition/src/transition/easeVarying.js","../../node_modules/d3-transition/src/transition/end.js","../../node_modules/d3-transition/src/selection/transition.js","../../node_modules/d3-ease/src/cubic.js","../../node_modules/d3-transition/src/selection/index.js","../../node_modules/d3-transition/src/selection/interrupt.js","../../node_modules/d3-transition/src/interrupt.js","../../node_modules/d3-zoom/src/transform.js"],"sourcesContent":["export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return (input, init) => text(input, init)\n .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","export default x => () => x;\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n"],"names":["min","values","valueof","undefined","value","index","targetDepth","d","target","depth","left","node","right","n","height","justify","sourceLinks","length","center","targetLinks","sum","max","constant","x","ascendingSourceBreadth","a","b","ascendingBreadth","source","ascendingTargetBreadth","y0","defaultId","defaultNodes","graph","nodes","defaultLinks","links","find","nodeById","id","get","Error","computeLinkBreadths","_ref","y1","link","width","Sankey","py","sort","linkSort","x0","x1","dx","dy","align","iterations","sankey","apply","arguments","_ref2","i","entries","Map","map","push","computeNodeLinks","_ref3","fixedValue","Math","computeNodeValues","_ref4","current","Set","next","size","add","computeNodeDepths","_ref5","computeNodeHeights","columns","_ref6","kx","Array","floor","call","layer","column","computeNodeLayers","c","ky","y","reorderLinks","initializeNodeBreadths","alpha","pow","beta","relaxRightToLeft","relaxLeftToRight","computeNodeBreadths","w","v","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","subject","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","_ref7","update","nodeId","_","nodeAlign","nodeSort","nodeWidth","nodePadding","extent","pi","PI","tau","epsilon","tauEpsilon","Path","this","_x0","_y0","_x1","_y1","path","prototype","constructor","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","x2","y2","arcTo","r","x21","y21","x01","y01","l01_2","abs","x20","y20","l21_2","l20_2","l21","sqrt","l01","l","tan","acos","t01","t21","arc","a0","a1","ccw","cos","sin","cw","da","rect","h","toString","slice","p","linkSource","linkTarget","curve","pointX","pointY","context","buffer","argv","s","t","curveHorizontal","horizontalSource","horizontalTarget","top","bottom","translateX","translateY","number","scale","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","k","transform","ticks","domain","format","identity","spacing","range","range0","range1","position","copy","selection","selectAll","data","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","merge","insert","transition","isFinite","getAttribute","parentNode","remove","filter","each","from","tickSize","axisTop","axisBottom","number1","e","number2","type","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","concat","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","m","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","hasOwnProperty","NaN","g","rgbConvert","o","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","define","channels","Object","assign","displayable","formatHex8","formatHsl","extend","clamp","factory","parent","definition","create","key","responseText","response","ok","status","statusText","parser","input","init","fetch","then","DOMParser","parseFromString","svg","linear","hue","gamma","nogamma","exponential","radians","degrees","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","Lab","Hcl","hcl2lab","z","rgb2lrgb","xyz2lab","lab2xyz","lrgb2rgb","hclConvert","atan2","hcl","start","end","colorHcl","basis","v0","v1","v2","v3","rgbGamma","colorRgb","rgbSpline","spline","colors","reA","reB","am","bm","bs","bi","lastIndex","q","one","zero","join","specifier","initRange","implicit","Symbol","ordinal","InternMap","unknown","set","has","band","step","ordinalRange","r0","r1","paddingInner","paddingOuter","rescale","reverse","stop","ceil","sequence","rangeRound","padding","e10","e5","e2","tickSpec","count","power","log10","error","factor","i1","i2","inc","tickIncrement","tickStep","ascending","descending","bisector","f","compare1","compare2","delta","lo","hi","mid","ascendingBisect","bisectRight","genericArray","nb","na","Date","setTime","string","date","ArrayBuffer","isView","DataView","isArray","valueOf","object","numberArray","unit","normalize","bimap","interpolate","d0","d1","polymap","j","bisect","transformer","untransform","piecewise","output","interpolateValue","clamper","invert","interpolateNumber","interpolateRound","u","continuous","prefixExponent","re","formatSpecifier","match","FormatSpecifier","fill","sign","symbol","comma","precision","formatDecimalParts","toExponential","indexOf","coefficient","exponent","%","toFixed","toLocaleString","replace","toPrecision","formatRounded","toUpperCase","locale","formatPrefix","prefixes","grouping","thousands","group","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","prefix","test","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","i0","formatTrim","charCodeAt","Infinity","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","formatLocale","ticker","year","month","week","day","hour","minute","tickIntervals","second","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","tickInterval","every","millisecond","interval","utcTicks","utcTickInterval","utcYear","utcMonth","utcSunday","unixDay","utcHour","utcMinute","timeTicks","timeTickInterval","timeYear","timeMonth","timeSunday","timeDay","timeHour","timeMinute","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","time","timeWeek","timeSecond","timeFormat","array","selector","Selection","document","querySelector","documentElement","root","querySelectorAll","matches","childMatcher","name","namespaces","space","local","xhtml","xlink","xml","xmlns","childFirst","firstElementChild","children","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","__data__","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","delete","arraylike","appendChild","child","insertBefore","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","propertyRemove","propertyConstant","propertyFunction","classArray","split","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","splice","contains","creatorInherit","uri","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","typename","on","__on","removeEventListener","listener","options","onAdd","event","contextListener","addEventListener","dispatchEvent","params","defaultView","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","groups","parents","_groups","_parents","subgroups","subnode","subgroup","arrayAll","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","bind","enterGroup","updateGroup","previous","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","merges","group0","group1","compareDocumentPosition","compare","compareNode","sortgroups","sortgroup","callback","empty","getAttributeNS","style","selection_style","property","classed","html","creator","before","deep","typenames","parseTypenames","dispatch","iterator","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","none","halfPi","asin","strings","digits","_append","appendRound","_templateObject","_taggedTemplateLiteral","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject8","_templateObject9","_templateObject7","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","withPath","shape","RangeError","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","x3","y3","x32","y32","intersect","ax","ay","bx","by","kc","lc","centroid","Linear","_context","defined","curveLinear","defined0","lineStart","lineEnd","point","sortValues","pie","arcs","pa","that","Basis","BasisClosed","BasisOpen","areaStart","_line","areaEnd","_point","noop","_x2","_x3","_x4","_y2","_y3","_y4","Bump","_x","bumpX","bumpY","Bundle","_basis","_beta","_y","custom","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","h0","h1","s0","s1","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","Step","_t","stepBefore","stepAfter","_t0","px","localDate","H","M","S","L","setFullYear","utcDate","UTC","setUTCFullYear","newDate","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","getDate","formatHour24","getHours","formatHour12","formatDayOfYear","formatMilliseconds","getMilliseconds","formatMicroseconds","formatMonthNumber","getMonth","formatMinutes","getMinutes","formatSeconds","getSeconds","formatWeekdayNumberMonday","getDay","formatWeekNumberSunday","dISO","timeThursday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","getFullYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","getTimezoneOffset","formatUTCDayOfMonth","getUTCDate","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","utcDay","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","getUTCSeconds","formatUTCWeekdayNumberMonday","dow","getUTCDay","formatUTCWeekNumberSunday","UTCdISO","utcThursday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","utcMonday","formatUTCYear","getUTCFullYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","charAt","newParse","parse","X","utcFormat","utcParse","timeInterval","setHours","setDate","setUTCHours","setUTCDate","setUTCMinutes","floori","offseti","field","setUTCSeconds","setMonth","setUTCMonth","timeWeekday","timeTuesday","timeWednesday","timeFriday","timeSaturday","utcWeekday","utcTuesday","utcWednesday","utcFriday","utcSaturday","Dispatch","types","T","args","taskHead","taskTail","frame","timeout","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","restart","wake","timerFlush","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","TypeError","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","__transition","self","tween","schedule","state","duration","ease","svgNode","rotate","skewX","scaleX","scaleY","atan","interpolateTransform","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolateRgb","interpolateString","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","Promise","resolve","reject","cancel","interrupt","defaultTiming","active","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY"],"sourceRoot":""}