{"version":3,"file":"main.js","mappings":";kMACA,MAAMA,IAAMC,SAAUC,IAAMC,OAAQC,IAAMJ,IAAIK,cAAc,QAAQ,OAAQ,QAAS,IAAK,KAAM,QAAS,MAAO,KAAM,QAAaC,MAAMC,UACnIC,KAAO,YAAaC,QAAU,aAAcC,OAAS,OAAQC,MAAQ,QAE3E,SAASC,KAAKC,EAAUC,EAAUd,KAC9B,OAAOc,IAAYd,KAA4B,IAArBc,EAAQC,UAAuC,IAArBD,EAAQC,SACtD,GACAN,QAAQO,KAAKH,GACTC,EAAQG,uBAAuBJ,EAASK,MAAM,IAC9CP,MAAMK,KAAKH,GACPC,EAAQK,qBAAqBN,GAC7BC,EAAQM,iBAAiBP,EAC3C,CAGA,MAAMQ,KACFC,YAAYT,EAAUC,EAAUd,KAC5B,IAAKa,EACD,OACJ,GAAIU,OAAOV,GACP,OAAOA,EACX,IAAIW,EAAOX,EACX,GAAIY,SAASZ,GAAW,CACpB,MAAMa,EAAMH,OAAOT,GAAWA,EAAQ,GAAKA,EAM3C,GALAU,EAAOhB,KAAKQ,KAAKH,GACXa,EAAIC,eAAed,EAASK,MAAM,IAClCR,OAAOM,KAAKH,GACRe,UAAUf,GACVD,KAAKC,EAAUa,IACpBF,EACD,MACR,MACK,GAAIK,WAAWhB,GAChB,OAAOiB,KAAKC,MAAMlB,IAElBW,EAAKT,UAAYS,IAAStB,OAC1BsB,EAAO,CAACA,IACZM,KAAKE,OAASR,EAAKQ,OACnB,IAAK,IAAIC,EAAI,EAAGC,EAAIJ,KAAKE,OAAQC,EAAIC,EAAGD,IACpCH,KAAKG,GAAKT,EAAKS,EAEvB,CACAE,KAAKtB,EAAUC,GACX,OAAO,IAAIO,KAAKR,EAAUC,EAC9B,EAEJ,MAAMsB,KAAOf,KAAKd,UAAU4B,KAC5BC,KAAKC,GAAKD,KAAK7B,UAAYc,KAAKd,UAChCc,KAAKd,UAAUyB,OAAS,EACxBX,KAAKd,UAAU+B,OAASA,OACF,mBAAXC,SACPlB,KAAKd,UAAUgC,OAAiB,UAAKjC,MAAMC,UAAUgC,OAAiB,WAE1ElB,KAAKd,UAAUiC,IAAM,SAAUC,GAC3B,YAAcC,IAAVD,EACOvB,MAAMyB,KAAKb,MACfA,KAAKW,EAAQ,EAAIA,EAAQX,KAAKE,OAASS,EAClD,EACApB,KAAKd,UAAUqC,GAAK,SAAUH,GAC1B,OAAOL,KAAKN,KAAKU,IAAIC,GACzB,EACApB,KAAKd,UAAUsC,MAAQ,WACnB,OAAOf,KAAKc,GAAG,EACnB,EACAvB,KAAKd,UAAUuC,KAAO,WAClB,OAAOhB,KAAKc,IAAI,EACpB,EACAvB,KAAKd,UAAUwC,IAAM,SAAUC,GAC3B,OAAOZ,KAAKW,IAAIJ,KAAKb,MAAM,CAACmB,EAAKhB,IAAMe,EAASL,KAAKM,EAAKhB,EAAGgB,KACjE,EACA5B,KAAKd,UAAUW,MAAQ,WACnB,OAAOkB,KAAKlB,MAAMgC,MAAMpB,KAAMqB,WAClC,EAEA,MAAMC,YAAc,YACpB,SAASC,iBAAiBC,EAAKC,GAC3B,OAAOA,EAAOC,aAClB,CACA,SAASC,UAAUC,GACf,OAAOA,EAAIC,QAAQP,YAAaC,iBACpC,CAGA,SAASO,KAAKC,EAAKb,GACf,IAAK,IAAIf,EAAI,EAAGC,EAAI2B,EAAI7B,OAAQC,EAAIC,IACS,IAArCc,EAASL,KAAKkB,EAAI5B,GAAIA,EAAG4B,EAAI5B,IADEA,KAI3C,CAUA,SAAS6B,OAAOC,KAAWC,GACvB,IAAIC,EAAOd,UAAWnB,EAASiC,EAAKjC,OACpC,IAAK,IAAIC,EAAKD,EAAS,EAAI,EAAI,EAAIC,EAAID,EAAQC,IAC3C,IAAK,IAAIiC,KAAOD,EAAKhC,GACjB8B,EAAOG,GAAOD,EAAKhC,GAAGiC,GAG9B,OAAOH,CACX,CAzBA3B,KAAKqB,UAAYA,UAQjBrB,KAAKwB,KAAOA,KACZvC,KAAKd,UAAUqD,KAAO,SAAUZ,GAE5B,OADAY,KAAK9B,KAAMkB,GACJlB,IACX,EACAT,KAAKd,UAAU4D,WAAa,SAAUC,GAClC,OAAOtC,KAAK8B,MAAK,CAAC3B,EAAGgB,YAAiBA,EAAImB,EAAK,GACnD,EAWA/C,KAAKd,UAAUuD,OAAS,SAAUO,GAC9B,OAAOP,OAAO1B,KAAKC,GAAIgC,EAC3B,EACAjC,KAAK0B,OAASA,OAEd,IAAIQ,KAAO,EAGX,SAASC,QAAQtB,EAAKpC,GAClB,MAAM0D,EAAUtB,IAAQA,EAAIsB,SAAWtB,EAA2B,uBAAKA,EAAwB,oBAAKA,EAAuB,mBAAKA,EAAsB,kBACtJ,QAASsB,GAAWA,EAAQ5B,KAAKM,EAAKpC,EAC1C,CAGA,SAAS2D,MAAMX,EAAKO,EAAMK,GACtB,MAAMC,EAAU,GAChB,IAAK,IAAIzC,EAAI,EAAGC,EAAI2B,EAAI7B,OAAQC,EAAIC,EAAGD,IAAK,CACxC,IAAI0C,EAAMd,EAAI5B,GAAGmC,GACjB,KAAc,MAAPO,IACHD,EAAQE,KAAKD,GACRF,IAELE,EAAMA,EAAIP,EAElB,CACA,OAAOM,CACX,CAEA,SAASnD,OAAOsD,GACZ,OAAOA,aAAaxD,IACxB,CACA,SAASQ,WAAWgD,GAChB,MAAoB,mBAANA,CAClB,CACA,SAASpD,SAASoD,GACd,MAAoB,iBAANA,CAClB,CACA,SAASC,UAAUD,GACf,OAAQE,MAAMC,WAAWH,KAAOI,SAASJ,EAC7C,CAjCAzC,KAAKkC,KAAOA,KAMZlC,KAAKmC,QAAUA,QA4Bf,MAAM,SAAcjE,MAoBpB,SAAS4E,mBAAmBC,GACxB,OAAO1D,SAAS0D,GACV,CAAClD,EAAGgB,IAAQsB,QAAQtB,EAAKkC,GACzBtD,WAAWsD,GACPA,EACA5D,OAAO4D,GACH,CAAClD,EAAGgB,IAAQkC,EAAWC,GAAGnC,GAC1B,CAAChB,EAAGgB,IAAQA,IAAQkC,CACtC,CAQA,SAASE,SAASC,EAAYH,GAC1B,OAAQA,GAAeG,EAAWtD,OAAsBsD,EAAWC,OAAOJ,GAA/BG,CAC/C,CArCAlD,KAAKP,WAAaA,WAClBO,KAAKX,SAAWA,SAChBW,KAAK0C,UAAYA,UACjB1C,KAAKoD,QAAUA,QACfnE,KAAKd,UAAU6D,KAAO,SAAUA,EAAMqB,GAClC,GAAKrB,EAAL,CAEA,GAAI3C,SAAS2C,GACT,OAAIjB,UAAUnB,OAAS,EACZF,KAAK,IAAMA,KAAK,GAAGsC,GACvBtC,KAAK8B,MAAK,CAAC3B,EAAGgB,KAAUA,EAAImB,GAAQqB,CAAK,IAEpD,IAAK,IAAIvB,KAAOE,EACZtC,KAAKsC,KAAKF,EAAKE,EAAKF,IAExB,OAAOpC,IATG,CAUd,EAYAT,KAAKd,UAAUgF,OAAS,SAAUJ,GAC9B,IAAKA,EACD,OAAO/C,OACX,MAAMsD,EAAUR,mBAAmBC,GACnC,OAAO/C,KAAKmD,OAAO5C,KAAKb,MAAM,CAACmB,EAAKhB,IAAMyD,EAAQ/C,KAAKM,EAAKhB,EAAGgB,KACnE,EAMA,MAAM0C,cAAgB,OACtB,SAASC,eAAelC,GACpB,OAAOjC,SAASiC,IAAOA,EAAImC,MAAMF,gBAAuB,EAC5D,CAcA,SAASG,KAAKA,EAAML,GAChB,GAAKK,EAAL,CAEA,GAAIrE,SAASqE,GAAO,CAChB,GAAI3C,UAAUnB,OAAS,EAAG,CACtB,IAAKF,KAAK,GACN,OACJ,MAAM2D,EAAQ3D,KAAK,GAAGiE,aAAaD,GACnC,OAAiB,OAAVL,OAAiB/C,EAAY+C,CACxC,CACA,OAAc,OAAVA,EACO3D,KAAKkE,WAAWF,GACpBhE,KAAK8B,MAAK,CAAC3B,EAAGgB,KAAUA,EAAIgD,aAAaH,EAAML,EAAM,GAChE,CACA,IAAK,IAAIvB,KAAO4B,EACZhE,KAAKgE,KAAK5B,EAAK4B,EAAK5B,IAExB,OAAOpC,IAfG,CAgBd,CAiCA,SAASoE,OAAOrC,GACZ,OAAOA,EAAI7B,OAAS,EAAIuD,OAAO5C,KAAKkB,GAAK,CAACsC,EAAM1D,EAAO2D,IAASC,QAAQ1D,KAAKyD,EAAMD,KAAU1D,IAASoB,CAC1G,CAMA,SAASyC,aAAarD,EAAKmB,EAAMmC,GAC7B,GAAqB,IAAjBtD,EAAIlC,WAAmBqD,EACvB,OACJ,MAAMoC,EAAQtG,IAAIuG,iBAAiBxD,EAAK,MACxC,OAAOmB,EAAQmC,EAAaC,EAAME,iBAAiBtC,SAAS1B,EAAY8D,EAAMpC,GAASoC,CAC3F,CAEA,SAASG,gBAAgB1D,EAAKmB,GAC1B,OAAOwC,SAASN,aAAarD,EAAKmB,GAAO,KAAO,CACpD,CAjFA/C,KAAKd,UAAUsG,SAAW,SAAUC,GAChC,OAAOA,GAAOC,KAAKpE,KAAKb,MAAMmB,GAAOA,EAAI+D,UAAUC,SAASH,IAChE,EACAzF,KAAKd,UAAUyF,WAAa,SAAUF,GAClC,MAAMoB,EAAQtB,eAAeE,GAC7B,OAAKoB,EAAMlF,OAEJF,KAAK8B,MAAK,CAAC3B,EAAGgB,KACjBW,KAAKsD,GAAO,CAACjF,EAAGkF,KACZlE,EAAImE,gBAAgBD,EAAE,GACxB,IAJKrF,IAMf,EAoBAT,KAAKd,UAAUuF,KAAOA,KACtBzE,KAAKd,UAAU8G,YAAc,SAAUP,EAAKQ,GACxC,MAAMC,EAAU3B,eAAekB,GAAMU,OAAqB9E,IAAV4E,EAChD,OAAKC,EAAQvF,OAENF,KAAK8B,MAAK,CAAC3B,EAAGgB,KACjBW,KAAK2D,GAAS,CAACtF,EAAGwF,KACVD,EACAF,EAAQrE,EAAI+D,UAAUU,IAAID,GAAKxE,EAAI+D,UAAUW,OAAOF,GAGpDxE,EAAI+D,UAAUY,OAAOH,EACzB,GACF,IATK3F,IAWf,EACAT,KAAKd,UAAUsH,SAAW,SAAUf,GAChC,OAAOhF,KAAKuF,YAAYP,GAAK,EACjC,EACAzF,KAAKd,UAAUuH,YAAc,SAAUhB,GACnC,OAAQ3D,UAAUnB,OAAkCF,KAAKuF,YAAYP,GAAK,GAA/ChF,KAAKgE,KAAK,QAAS,GAClD,EAcA1D,KAAK8D,OAASA,OACd7E,KAAKd,UAAUmH,IAAM,SAAU7G,EAAUC,GACrC,OAAOsB,KAAK8D,OAAOpE,KAAKU,MAAMuF,OAAO3F,KAAKvB,EAAUC,GAAS0B,QACjE,EAYA,MAAMwF,cAAgB,MAEtB,SAASC,cAAc7D,GACnB,OAAO4D,cAAchH,KAAKoD,EAC9B,CAMA,MAAM8D,cAAgB,CAAC,GAAG,OAAY9H,IAAK+H,gBAAkB,CAAC,SAAU,MAAO,KAAM,KACrF,SAASC,gBAAgBhE,EAAMmC,EAAa0B,cAAc7D,IACtD,GAAImC,EACA,OAAOnC,EACX,IAAK8D,cAAc9D,GAAO,CACtB,MAAMiE,EAAS5E,UAAUW,GAAOkE,EAAU,GAAED,EAAOE,OAAO,GAAG/E,gBAAgB6E,EAAOnH,MAAM,KAC1F0C,KAD0G,GAAEyE,KAAUF,gBAAgBK,KAAM,GAAEF,QAAaA,IAAUG,MAAM,MAC/J,CAACxG,EAAGyG,KACZ,GAAIA,KAAKlC,MAEL,OADA0B,cAAc9D,GAAQsE,GACf,CACX,GAER,CACA,OAAOR,cAAc9D,EACzB,CAEAhC,KAAKuG,aAAeP,gBAGpB,MAAMQ,aAAe,CACjBC,yBAAyB,EACzBC,aAAa,EACbC,UAAU,EACVC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,OAAO,EACPC,SAAS,EACTC,QAAQ,EACRC,QAAQ,GAEZ,SAASC,iBAAiBpF,EAAMqB,EAAOc,EAAa0B,cAAc7D,IAC9D,OAAQmC,GAAeqC,aAAaxE,KAASU,UAAUW,GAAwBA,EAAd,GAAEA,KACvE,CACA,SAASgE,IAAIrF,EAAMqB,GACf,GAAIhE,SAAS2C,GAAO,CAChB,MAAMmC,EAAa0B,cAAc7D,GAEjC,OADAA,EAAOgE,gBAAgBhE,EAAMmC,GACzBpD,UAAUnB,OAAS,EACZF,KAAK,IAAMwE,aAAaxE,KAAK,GAAIsC,EAAMmC,GAC7CnC,GAELqB,EAAQ+D,iBAAiBpF,EAAMqB,EAAOc,GAC/BzE,KAAK8B,MAAK,CAAC3B,EAAGgB,KACI,IAAjBA,EAAIlC,WAEJwF,EACAtD,EAAIuD,MAAMkD,YAAYtF,EAAMqB,GAG5BxC,EAAIuD,MAAMpC,GAAQqB,EACtB,KAVO3D,IAYf,CACA,IAAK,IAAIoC,KAAOE,EACZtC,KAAK2H,IAAIvF,EAAKE,EAAKF,IAEvB,OAAOpC,IACX,CAEAT,KAAKd,UAAUkJ,IAAMA,IAErB,MAAME,cAAgB,aAAcC,gBAAkB,aAGtD,SAASC,QAAQ5G,GACb,OAAO0G,iBAAiB1G,CAC5B,CAGA,SAAS6G,aAAa7G,GAClB,OAAOA,EAAI0G,eAAkB1G,EAAI0G,gBAAkB,CAAC,CACxD,CAGA,SAASI,QAAQ9G,EAAKiB,GAClB,MAAM8F,EAAQF,aAAa7G,GAC3B,GAAIiB,EAAK,CACL,KAAMA,KAAO8F,GAAQ,CACjB,IAAIvE,EAAQxC,EAAIgH,QAAUhH,EAAIgH,QAAQ/F,IAAQjB,EAAIgH,QAAQxG,UAAUS,IAAQ9B,KAAKa,GAAK6C,KAAM,QAAO5B,KACnG,QAAcxB,IAAV+C,EAAqB,CACrB,IACIA,EAAQyE,KAAKC,MAAM1E,EAEX,CAAZ,MAAO2E,GAAK,CACZJ,EAAM9F,GAAOuB,CACjB,CACJ,CACA,OAAOuE,EAAM9F,EACjB,CACA,OAAO8F,CACX,CAGA,SAASK,WAAWpH,EAAKiB,QACTxB,IAARwB,SACOjB,EAAI0G,sBAGJG,aAAa7G,GAAKiB,EAEjC,CAEA,SAASoG,QAAQrH,EAAKiB,EAAKuB,GACvBqE,aAAa7G,GAAKiB,GAAOuB,CAC7B,CACA,SAAS8E,KAAKC,EAAM/E,GAChB,IAAK+E,EAAM,CACP,IAAK1I,KAAK,GACN,OAOJ,OANA8B,KAAK9B,KAAK,GAAG2I,YAAY,CAACxI,EAAG6D,KACzB,MAAMD,EAAQC,EAAK0E,KAAK3E,MAAM+D,iBACzB/D,GAEL/D,KAAKyI,KAAK1E,EAAM,GAAG,IAEhBkE,QAAQjI,KAAK,GACxB,CACA,GAAIL,SAAS+I,GACT,YAAc9H,IAAV+C,EACO3D,KAAK,IAAMiI,QAAQjI,KAAK,GAAI0I,GAChC1I,KAAK8B,MAAK,CAAC3B,EAAGgB,IAAQqH,QAAQrH,EAAKuH,EAAM/E,KAEpD,IAAK,IAAIvB,KAAOsG,EACZ1I,KAAKyI,KAAKrG,EAAKsG,EAAKtG,IAExB,OAAOpC,IACX,CAQA,SAAS4I,cAAczH,EAAK0H,GACxB,OAAOhE,gBAAgB1D,EAAM,SAAQ0H,EAAQ,OAAS,cAAgBhE,gBAAgB1D,EAAM,WAAS0H,EAAQ,OAAS,QAAWhE,gBAAgB1D,EAAM,WAAS0H,EAAQ,QAAU,WAAchE,gBAAgB1D,EAAM,SAAQ0H,EAAQ,QAAU,gBACpP,CArEAvI,KAAKyH,QAAUA,QA4DfxI,KAAKd,UAAUgK,KAAOA,KACtBlJ,KAAKd,UAAU8J,WAAa,SAAUnG,GAClC,OAAOpC,KAAK8B,MAAK,CAAC3B,EAAGgB,IAAQoH,WAAWpH,EAAKiB,IACjD,EAOAN,KAAK,CAAC,QAAS,WAAW,CAAC3B,EAAGmC,KAC1B/C,KAAKd,UAAW,QAAO6D,KAAU,WAC7B,GAAKtC,KAAK,GAEV,OAAIA,KAAK,KAAO5B,IACLA,IAAK,QAAOkE,KAChBtC,KAAK,GAAI,SAAQsC,IAC5B,CAAC,IAELR,KAAK,CAAC,QAAS,WAAW,CAACnB,EAAO2B,KAC9B/C,KAAKd,UAAU6D,GAAQ,SAAUqB,GAC7B,IAAK3D,KAAK,GACN,YAAiBY,IAAV+C,OAAsB/C,EAAYZ,KAC7C,IAAKqB,UAAUnB,OACX,OAAIF,KAAK,KAAO5B,IACL4B,KAAK,GAAG2B,UAAW,SAAQW,MAC/BtC,KAAK,GAAG8I,wBAAwBxG,GAAQsG,cAAc5I,KAAK,IAAKW,GAE3E,MAAMoI,EAAcjE,SAASnB,EAAO,IACpC,OAAO3D,KAAK8B,MAAK,CAAC3B,EAAGgB,KACjB,GAAqB,IAAjBA,EAAIlC,SACJ,OACJ,MAAM+J,EAAYxE,aAAarD,EAAK,aACpCA,EAAIuD,MAAMpC,GAAQoF,iBAAiBpF,EAAMyG,GAA6B,eAAdC,EAA6BJ,cAAczH,GAAMR,GAAS,GAAG,GAE7H,CAAC,IAELmB,KAAK,CAAC,QAAS,WAAW,CAACnB,EAAO2B,KAC9B/C,KAAKd,UAAW,QAAO6D,KAAU,SAAU2G,GACvC,GAAKjJ,KAAK,GAEV,OAAIA,KAAK,KAAO5B,IACLA,IAAK,QAAOkE,KAChBtC,KAAK,GAAI,SAAQsC,MAAW2G,EAAiBpE,gBAAgB7E,KAAK,GAAK,UAASW,EAAiB,MAAT,SAAoBkE,gBAAgB7E,KAAK,GAAK,UAASW,EAAkB,SAAV,UAAwB,EAC1L,CAAC,IAML,MAAMuI,eAAiB,CAAC,EACxB,SAASC,kBAAkBC,GACvB,GAAIF,eAAeE,GACf,OAAOF,eAAeE,GAC1B,MAAMjI,EAAMjD,IAAIK,cAAc6K,GAC9BlL,IAAImL,KAAKC,YAAYnI,GACrB,MAAMoI,EAAU/E,aAAarD,EAAK,WAElC,OADAjD,IAAImL,KAAKG,YAAYrI,GACd+H,eAAeE,GAAuB,SAAZG,EAAqBA,EAAU,OACpE,CAEA,SAASE,SAAStI,GACd,MAAwC,SAAjCqD,aAAarD,EAAK,UAC7B,CAwBA,SAASuI,cAAcC,EAAKC,GACxB,OAAQA,IAAQ3E,KAAKpE,KAAK+I,GAAKC,GAAMF,EAAIpF,QAAQsF,GAAM,GAC3D,CAzBAtK,KAAKd,UAAUqH,OAAS,SAAUN,GAC9B,OAAOxF,KAAK8B,MAAK,CAAC3B,EAAGgB,MACjBqE,OAAkB5E,IAAV4E,EAAsBA,EAAQiE,SAAStI,KAE3CA,EAAIuD,MAAM6E,QAAU,GAChBE,SAAStI,KACTA,EAAIuD,MAAM6E,QAAUJ,kBAAkBhI,EAAIiI,WAI9CjI,EAAIuD,MAAM6E,QAAU,MACxB,GAER,EACAhK,KAAKd,UAAUqL,KAAO,WAClB,OAAO9J,KAAK8F,QAAO,EACvB,EACAvG,KAAKd,UAAUsL,KAAO,WAClB,OAAO/J,KAAK8F,QAAO,EACvB,EAOA,MAAMkE,gBAAkB,eAAgBC,0BAA4B,IAAKC,YAAc,CAAEC,MAAO,UAAWC,KAAM,YAAcC,YAAc,CAAEC,WAAY,YAAaC,WAAY,YAAcC,cAAgB,2DAElN,SAASC,qBAAqB/B,GAC1B,OAAO2B,YAAY3B,IAASwB,YAAYxB,IAASA,CACrD,CAEA,SAASgC,eAAevJ,GACpB,OAAOA,EAAI6I,iBAAoB7I,EAAI6I,kBAAoB,CAAC,CAC5D,CAGA,SAASW,SAASxJ,EAAKuH,EAAMkC,EAAY7L,EAAUmC,GAC/CA,EAAe,KAAKA,EAAe,MAAKsB,OACxC,MAAMqI,EAAaH,eAAevJ,GAClC0J,EAAWnC,GAASmC,EAAWnC,IAAS,GACxCmC,EAAWnC,GAAM5F,KAAK,CAAC8H,EAAY7L,EAAUmC,IAC7CC,EAAI2J,iBAAiBpC,EAAMxH,EAC/B,CAEA,SAAS6J,eAAeC,GACpB,MAAMC,EAAQD,EAAUrE,MAAMsD,2BAC9B,MAAO,CAACgB,EAAM,GAAIA,EAAM7L,MAAM,GAAG8L,OACrC,CAIA,SAASC,YAAYhK,EAAKuH,EAAMkC,EAAY7L,EAAUmC,GAClD,MAAMgH,EAAQwC,eAAevJ,GAC7B,GAAKuH,EAMIR,EAAMQ,KACXR,EAAMQ,GAAQR,EAAMQ,GAAMjF,QAAO,EAAEoG,EAAIuB,EAAKC,MACxC,GAAKnK,GAAYmK,EAAS,OAAMnK,EAAe,OAAOwI,cAAcG,EAAIe,IAAgB7L,GAAYA,IAAaqM,EAC7G,OAAO,EACXjK,EAAImK,oBAAoB5C,EAAM2C,EAAG,SAV9B,CACP,IAAK3C,KAAQR,EACTiD,YAAYhK,EAAKuH,EAAMkC,EAAY7L,EAAUmC,UAE1CC,EAAI6I,gBACf,CAQJ,CAiBA,SAASuB,GAAGC,EAAezM,EAAUmC,EAAUuK,GAC3C,IAAK9L,SAAS6L,GAAgB,CAC1B,IAAK,IAAIpJ,KAAOoJ,EACZxL,KAAKuL,GAAGnJ,EAAKrD,EAAUyM,EAAcpJ,IAEzC,OAAOpC,IACX,CA6CA,OA5CID,WAAWhB,KACXmC,EAAWnC,EACXA,EAAW,IAEf+C,KAAKgC,eAAe0H,IAAgB,CAACrL,EAAGqL,KACpC,MAAO9C,EAAMkC,GAAcG,eAAeN,qBAAqBe,IAC/DxL,KAAK8B,MAAK,CAAC3B,EAAGgB,KACV,MAAMuK,EAAgB,SAAUC,GAC5B,GAAIA,EAAMC,YAAclC,cAAckB,EAAYe,EAAMC,UAAUjF,MAAMsD,4BACpE,OACJ,IAAI4B,EAAU1K,EACd,GAAIpC,EAAU,CACV,IAAIkD,EAAS0J,EAAM1J,OACnB,MAAQQ,QAAQR,EAAQlD,IAAW,CAC/B,GAAIkD,IAAWd,EACX,OAEJ,GADAc,EAASA,EAAO6J,YACX7J,EACD,MACR,CACA4J,EAAU5J,EACV0J,EAAMI,YAAa,CACvB,CACIJ,EAAMI,YACNC,OAAOC,eAAeN,EAAO,gBAAiB,CAC1CO,cAAc,EACdxL,IAAG,IACQmL,IAInB,MAAMM,EAAcjL,EAASL,KAAKgL,EAASF,EAAOA,EAAMlD,MACpDgD,GACAN,YAAYhK,EAAKuH,EAAMkC,EAAY7L,EAAU2M,IAE7B,IAAhBS,IACAR,EAAMS,iBACNT,EAAMU,kBAEd,EACAX,EAAoB,KAAIxK,EAAe,KAAKA,EAAe,MAAKsB,OAChEmI,SAASxJ,EAAKuH,EAAMkC,EAAY7L,EAAU2M,EAAc,GAC1D,IAEC1L,IACX,CAEA,SAASsM,IAAId,EAAezM,EAAUmC,GAClC,OAAOlB,KAAKuL,GAAGC,EAAezM,EAAUmC,GAAU,EACtD,CAuCA,SAASqL,SAASpL,GACd,OAAIA,EAAIqL,SACG9J,MAAMe,OAAO5C,KAAKM,EAAIsL,SAASC,GAAUA,EAAOC,WAAaD,EAAOE,WAAaF,EAAOZ,WAAWc,WAAW,SAClHzL,EAAIwC,OAAS,EACxB,CAnHApE,KAAKd,UAAUoO,IAAM,SAAUrB,EAAezM,EAAUmC,GAcpD,YAbsBN,IAAlB4K,EACAxL,KAAK8B,MAAK,CAAC3B,EAAGgB,IAAQgK,YAAYhK,MAG9BpB,WAAWhB,KACXmC,EAAWnC,EACXA,EAAW,IAEf+C,KAAKgC,eAAe0H,IAAgB,CAACrL,EAAGqL,KACpC,MAAO9C,EAAMkC,GAAcG,eAAeN,qBAAqBe,IAC/DxL,KAAK8B,MAAK,CAAC3B,EAAGgB,IAAQgK,YAAYhK,EAAKuH,EAAMkC,EAAY7L,EAAUmC,IAAU,KAG9ElB,IACX,EAsDAT,KAAKd,UAAU8M,GAAKA,GAKpBhM,KAAKd,UAAU6N,IAAMA,IACrB/M,KAAKd,UAAUwB,MAAQ,SAAUiB,GAC7B,MAAMwK,EAAgB,IAAMxK,EAASZ,MAOrC,MANuB,YAAnBpC,IAAI4O,WACJC,WAAWrB,GAGXxN,IAAI4M,iBAAiB,mBAAoBY,GAEtC1L,IACX,EACAT,KAAKd,UAAUuO,QAAU,SAAUxB,EAAe/C,GAC9C,IAAIwE,EAAMzB,EACV,GAAI7L,SAAS6L,GAAgB,CACzB,MAAO9C,EAAMkC,GAAcG,eAAeS,GAAgB0B,EAAO1C,cAActL,KAAKwJ,GAAQ,cAAgB,aAC5GuE,EAAM/O,IAAIiP,YAAYD,GACtBD,EAAIG,UAAU1E,GAAM,GAAM,GAC1BuE,EAAe,UAAIrC,EAAWlE,KAAKuD,0BACvC,CACAgD,EAAU,KAAIxE,EACd,MAAM4E,EAAgBJ,EAAU,QAAK/C,YACrC,OAAOlK,KAAK8B,MAAK,CAAC3B,EAAGgB,KACbkM,GAAgBtN,WAAWoB,EAAI8L,EAAU,OACzC9L,EAAI8L,EAAU,QAGd9L,EAAImM,cAAcL,EACtB,GAER,EAaA,MAAMM,mBAAqB,OAC3B,SAASC,YAAYlL,EAAMqB,GACvB,MAAQ,IAAG8J,mBAAmBnL,MAASmL,mBAAmB9J,GAAO9B,QAAQ0L,mBAAoB,MACjG,CAMA,MAAMG,YAAc,kCAAmCC,YAAc,kBAkBrE,SAAS9K,IAAIc,GACT,YAAc/C,IAAV+C,EACO3D,KAAK,IAAMuM,SAASvM,KAAK,IAC7BA,KAAK8B,MAAK,CAAC3B,EAAGgB,KACjB,GAAoB,WAAhBA,EAAIiI,QAAsB,CAC1B,MAAMwE,EAAWlK,QAAQC,GAASA,EAAmB,OAAVA,EAAiB,GAAK,CAACA,GAClE7B,KAAKX,EAAIsL,SAAS,CAACtM,EAAGuM,KAClBA,EAAOC,SAAWiB,EAASrJ,QAAQmI,EAAO/I,QAAU,CAAC,GAE7D,MAEIxC,EAAIwC,MAAkB,OAAVA,EAAiB,GAAKA,CACtC,GAER,CA/BApE,KAAKd,UAAUoP,UAAY,WACvB,IAAIC,EAAQ,GAcZ,OAbA9N,KAAK8B,MAAK,CAAC3B,EAAGgB,KACVW,KAAKX,EAAI4M,UAAY,CAAC5M,IAAM,CAAChB,EAAGgB,KAC5B,GAAIA,EAAIyL,WAAazL,EAAIuH,MAAwB,aAAhBvH,EAAIiI,SAA0BsE,YAAYxO,KAAKiC,EAAI+L,OAAUS,YAAYzO,KAAKiC,EAAI+L,QAAU/L,EAAI6M,QAC7H,OACJ,MAAMrK,EAAQ4I,SAASpL,GACvB,QAAcP,IAAV+C,EACA,OAEJ7B,KADe4B,QAAQC,GAASA,EAAQ,CAACA,IAC5B,CAACxD,EAAGwD,KACbmK,GAASN,YAAYrM,EAAIuH,KAAM/E,EAAM,GACvC,GACJ,IAECmK,EAAMG,OAAO,EACxB,EAgBA1O,KAAKd,UAAUoE,IAAMA,IACrBtD,KAAKd,UAAUyP,MAAQ,WACnB,OAAOlO,KAAKiB,KAAI,CAACd,EAAGgB,IAAQA,EAAIgN,WAAU,IAC9C,EACA5O,KAAKd,UAAU2P,OAAS,WACpB,OAAOpO,KAAK8B,MAAK,CAAC3B,EAAGgB,KACbA,EAAI2K,YACJ3K,EAAI2K,WAAWtC,YAAYrI,EAC/B,GAER,EAMA,MAAMkN,WAAa,mBAAoBC,YAAc,mCACrD,IAAIC,WACJ,SAASC,iBACL,GAAID,WACA,OACJ,MAAME,EAAQvQ,IAAIK,cAAc,SAAUmQ,EAAKxQ,IAAIK,cAAc,MACjEgQ,WAAa,CACT,IAAKjQ,IACLoQ,GAAIxQ,IAAIK,cAAc,SACtBoQ,GAAID,EACJE,GAAIF,EACJG,MAAOJ,EACPK,MAAOL,EACPM,MAAON,EAEf,CACA,SAAS3O,UAAUkP,GAEf,GADAR,kBACK7O,SAASqP,GACV,MAAO,GACX,GAAIV,YAAYpP,KAAK8P,GACjB,MAAO,CAAC9Q,IAAIK,cAAc0Q,OAAOC,KACrC,MAAMC,EAAWd,WAAWnP,KAAK8P,IAASC,OAAOC,GAAIE,EAAYb,WAAWY,IAAaZ,WAAW,KAEpG,OADAa,EAAUC,UAAYL,EACf1O,KAAK8O,EAAUE,YAAYlB,SAAS1N,KAC/C,CAWA,SAASsO,KAAKA,GACV,YAAapO,IAAToO,EACOhP,KAAK,IAAMA,KAAK,GAAGqP,UACvBrP,KAAK8B,MAAK,CAAC3B,EAAGgB,KAAUA,EAAIkO,UAAYL,CAAI,GACvD,CAKA,SAASO,KAAKA,GACV,YAAa3O,IAAT2O,EACOvP,KAAK,GAAKA,KAAK,GAAGwP,YAAc,GACpCxP,KAAK8B,MAAK,CAAC3B,EAAGgB,KAAUA,EAAIqO,YAAcD,CAAI,GACzD,CAvBAjP,KAAKR,UAAYA,UACjBP,KAAKd,UAAUgR,MAAQ,WACnB,MAAMtO,EAAMnB,KAAK,GACjB,GAAImB,EACA,KAAOA,EAAIuO,YACPvO,EAAIqI,YAAYrI,EAAIuO,YAG5B,OAAO1P,IACX,EAMAT,KAAKd,UAAUuQ,KAAOA,KACtBzP,KAAKd,UAAUoH,OAAS,WACpB,OAAO7F,KAAKoO,SAASvB,KACzB,EAOAtN,KAAKd,UAAU8Q,KAAOA,KACtBhQ,KAAKd,UAAUkR,OAAS,WAKpB,OAJA3P,KAAK4P,SAAS9N,MAAK,CAAC3B,EAAGgB,KACnB,MAAM0O,EAAOvP,KAAKa,GAClB0O,EAAKC,YAAYD,EAAKE,WAAW,IAE9B/P,IACX,EAGA,MAAMgQ,OAAS9R,IAAI+R,gBACnB1Q,KAAKd,UAAUyR,OAAS,WACpB,MAAM/O,EAAMnB,KAAK,GACjB,IAAKmB,EACD,OACJ,MAAMgP,EAAOhP,EAAI2H,wBACjB,MAAO,CACHsH,IAAKD,EAAKC,IAAMhS,IAAIiS,YAAcL,OAAOM,UACzCC,KAAMJ,EAAKI,KAAOnS,IAAIoS,YAAcR,OAAOS,WAEnD,EACAlR,KAAKd,UAAUiS,aAAe,WAC1B,OAAOpQ,KAAKN,KAAK,IAAMA,KAAK,GAAG0Q,aACnC,EACAnR,KAAKd,UAAUkS,SAAW,WACtB,MAAMxP,EAAMnB,KAAK,GACjB,GAAKmB,EAEL,MAAO,CACHoP,KAAMpP,EAAIyP,WACVR,IAAKjP,EAAI0P,UAEjB,EACAtR,KAAKd,UAAUsR,SAAW,SAAU1M,GAChC,IAAIyN,EAAS,GAEb,OADA9Q,KAAK8B,MAAK,CAAC3B,EAAGgB,KAAU2B,KAAK1B,MAAM0P,EAAQ3P,EAAI4O,SAAS,IACjDxM,SAASjD,KAAK8D,OAAO0M,IAAUzN,EAC1C,EACA9D,KAAKd,UAAUsS,SAAW,WACtB,IAAID,EAAS,GAIb,OAHA9Q,KAAK8B,MAAK,CAAC3B,EAAGgB,KACV2B,KAAK1B,MAAM0P,EAAwB,WAAhB3P,EAAIiI,QAAuB,CAACjI,EAAI6P,iBAAmB7P,EAAImO,WAAW,IAElFhP,KAAK8D,OAAO0M,GACvB,EACAvR,KAAKd,UAAUK,KAAO,SAAUC,GAC5B,MAAM+R,EAAS,GACf,IAAK,IAAI3Q,EAAI,EAAGC,EAAIJ,KAAKE,OAAQC,EAAIC,EAAGD,IAAK,CACzC,MAAM8Q,EAAQnS,KAAKC,EAAUiB,KAAKG,IAC9B8Q,EAAM/Q,QACN4C,KAAK1B,MAAM0P,EAAQG,EAE3B,CACA,OAAO3Q,KAAK8D,OAAO0M,GACvB,EAIA,MAAMI,aAAe,qCAAsCC,YAAc,2CACzE,SAASC,YAAYC,MACjB,MAAM7N,WAAalD,KAAK+Q,MACxB7N,WAAWC,OAAO,UAAUmC,IAAIpC,WAAW1E,KAAK,WAAWgD,MAAK,CAAC3B,EAAGgB,QAC3DA,IAAImQ,KAAOJ,aAAahS,KAAKiC,IAAI+L,OAC9B/L,IAAIoQ,cAActB,gBAAgB9K,SAAShE,MAC3CqQ,KAAKrQ,IAAIqO,YAAY3N,QAAQsP,YAAa,IAElD,GAER,CAEA,SAASM,cAAcC,EAAQC,EAAOC,EAASC,GACvCD,EACAF,EAAOI,aAAaH,EAAOE,GAG3BH,EAAOpI,YAAYqI,GAEvBP,YAAYO,EAChB,CAIA,SAASI,cAAcnC,EAAQ+B,EAAOC,GAClC9P,KAAK8N,GAAQ,CAACjP,EAAOqR,KACjBlQ,KAAK6P,GAAO,CAACxR,EAAG8R,KACZR,cAAcO,EAAYrR,EAAmBsR,EAAS9D,WAAU,GAA9B8D,EAAqCL,EAASA,GAAWI,EAAUtC,WAAW,GAClH,GAEV,CACAnQ,KAAKd,UAAUyT,OAAS,WAIpB,OAHApQ,KAAKT,WAAW,CAAClB,EAAGpB,KAChBgT,cAAc/R,KAAMM,KAAKvB,GAAU,IAEhCiB,IACX,EACAT,KAAKd,UAAU0T,SAAW,SAAUpT,GAEhC,OADAgT,cAAczR,KAAKvB,GAAWiB,MACvBA,IACX,EACAT,KAAKd,UAAU2T,YAAc,SAAUrT,GASnC,OARAuB,KAAKvB,GAAU+C,MAAK,CAACnB,EAAOQ,KACxB,MAAMyO,EAASzO,EAAI2K,WACf8D,GACA5P,KAAK8B,MAAK,CAAC3B,EAAGmI,KACVmJ,cAAc7B,EAASjP,EAAY2H,EAAE6F,WAAU,GAAhB7F,GAAuB,EAAMnH,EAAIkR,YAAY,GAEpF,IAEGrS,IACX,EACAT,KAAKd,UAAU6T,MAAQ,WAInB,OAHAxQ,KAAKyQ,QAAQnR,MAAMC,YAAY,CAAClB,EAAGpB,KAC/BwT,QAAQnR,MAAMd,KAAKvB,GAAUK,SAASgT,YAAYpS,KAAK,IAEpDA,IACX,EACAT,KAAKd,UAAUqT,aAAe,SAAU/S,GASpC,OARAuB,KAAKvB,GAAU+C,MAAK,CAACnB,EAAOQ,KACxB,MAAMyO,EAASzO,EAAI2K,WACf8D,GACA5P,KAAK8B,MAAK,CAAC3B,EAAGmI,KACVmJ,cAAc7B,EAASjP,EAAY2H,EAAE6F,WAAU,GAAhB7F,GAAuB,EAAMnH,EAAI,GAExE,IAEGnB,IACX,EACAT,KAAKd,UAAU+T,OAAS,WAIpB,OAHA1Q,KAAKT,WAAW,CAAClB,EAAGpB,KAChBuB,KAAKvB,GAAU+S,aAAa9R,KAAK,IAE9BA,IACX,EACAT,KAAKd,UAAUmT,QAAU,WAIrB,OAHA9P,KAAKT,WAAW,CAAClB,EAAGpB,KAChBgT,cAAc/R,KAAMM,KAAKvB,IAAW,EAAK,IAEtCiB,IACX,EACAT,KAAKd,UAAUgU,UAAY,SAAU1T,GAEjC,OADAgT,cAAczR,KAAKvB,GAAWwT,QAAQnR,MAAMpB,KAAKZ,UAAU,GACpDY,IACX,EACAT,KAAKd,UAAUqR,YAAc,SAAU/Q,GACnC,OAAOiB,KAAKwS,OAAOzT,GAAU8G,QACjC,EACAtG,KAAKd,UAAUiU,WAAa,SAAU3T,GAElC,OADAuB,KAAKvB,GAAU+Q,YAAY9P,MACpBA,IACX,EACAT,KAAKd,UAAUkU,QAAU,SAAU5T,GAC/B,GAAIiB,KAAK,GAAI,CACT,MAAM4S,EAAYtS,KAAKvB,GACvBiB,KAAKe,QAAQyR,OAAOI,GACpB,IAAIC,EAAUD,EAAU,GACxB,KAAOC,EAAQ9C,SAAS7P,QACpB2S,EAAUA,EAAQC,kBACtB9S,KAAKmS,SAASU,EAClB,CACA,OAAO7S,IACX,EACAT,KAAKd,UAAUsU,KAAO,SAAUhU,GAC5B,OAAOiB,KAAK8B,MAAK,CAACnB,EAAOQ,KACrB,MAAM0R,EAAUvS,KAAKvB,GAAU,GAC/BuB,KAAKa,GAAKwR,QAAShS,EAAkBkS,EAAQ1E,WAAU,GAA5B0E,EAAkC,GAErE,EACAtT,KAAKd,UAAUuU,UAAY,SAAUjU,GACjC,OAAOiB,KAAK8B,MAAK,CAAC3B,EAAGgB,KACjB,MAAM0O,EAAOvP,KAAKa,GAAM4P,EAAWlB,EAAKkB,WACxCA,EAAS7Q,OAAS6Q,EAAS4B,QAAQ5T,GAAY8Q,EAAKqC,OAAOnT,EAAS,GAE5E,EACAQ,KAAKd,UAAUwU,IAAM,SAAUlU,GAC3B,MAAMsE,EAAa1D,SAASZ,GACtB,CAACoB,EAAGgB,MAAUrC,KAAKC,EAAUoC,GAAKjB,OAClC,CAACC,EAAGgB,IAAQA,EAAIgE,SAASpG,GAC/B,OAAOiB,KAAKyD,OAAOJ,EACvB,EACA9D,KAAKd,UAAU6E,GAAK,SAAUD,GAC1B,IAAKA,IAAerD,KAAK,GACrB,OAAO,EACX,MAAM4D,EAAUR,mBAAmBC,GACnC,IAAI6P,GAAQ,EAKZ,OAJAlT,KAAK8B,MAAK,CAAC3B,EAAGgB,KACV+R,EAAQtP,EAAQ/C,KAAKM,EAAKhB,EAAGgB,IACrB+R,KAELA,CACX,EACA3T,KAAKd,UAAU0U,KAAO,SAAU9P,EAAY+P,GACxC,OAAO7P,SAASjD,KAAK8D,OAAO1B,MAAM1C,KAAM,qBAAsBoT,KAAS/P,EAC3E,EACA9D,KAAKd,UAAU4U,QAAU,SAAUhQ,GAC/B,OAAOrD,KAAKmT,KAAK9P,GAAY,EACjC,EACA9D,KAAKd,UAAU6U,IAAM,SAAUjQ,GAC3B,IAAKA,IAAerD,KAAK,GACrB,OAAOA,KACX,MAAM4D,EAAUR,mBAAmBC,GACnC,OAAOrD,KAAKyD,QAAO,CAACtD,EAAGgB,KAASyC,EAAQ/C,KAAKM,EAAKhB,EAAGgB,IACzD,EACA5B,KAAKd,UAAUmR,OAAS,SAAUvM,GAC9B,OAAOE,SAASjD,KAAK8D,OAAO1B,MAAM1C,KAAM,gBAAiBqD,EAC7D,EACA9D,KAAKd,UAAUkC,MAAQ,SAAU5B,GAC7B,MAAM4S,EAAQ5S,EAAWuB,KAAKvB,GAAU,GAAKiB,KAAK,GAAIwD,EAAazE,EAAWiB,KAAOM,KAAKqR,GAAO/B,SAASG,WAC1G,OAAOxL,QAAQ1D,KAAK2C,EAAYmO,EACpC,EACApS,KAAKd,UAAU8U,QAAU,SAAUlQ,GAC/B,IAAKA,IAAerD,KAAK,GACrB,OAAOM,OACX,MAAMiD,EAAWvD,KAAKyD,OAAOJ,GAC7B,OAAIE,EAASrD,OACFqD,EACJvD,KAAK4P,SAAS2D,QAAQlQ,EACjC,EACA9D,KAAKd,UAAU+U,QAAU,SAAUnQ,GAC/B,OAAOE,SAASjD,KAAK8D,OAAO1B,MAAM1C,KAAM,iBAAiB,KAASqD,EACtE,EACA9D,KAAKd,UAAUgV,KAAO,SAAUpQ,EAAY+P,GACxC,OAAO7P,SAASjD,KAAK8D,OAAO1B,MAAM1C,KAAM,yBAA0BoT,KAAS/P,EAC/E,EACA9D,KAAKd,UAAUiV,QAAU,SAAUrQ,GAC/B,OAAOrD,KAAKyT,KAAKpQ,GAAY,EACjC,EACA9D,KAAKd,UAAUkV,SAAW,SAAUtQ,GAChC,MAAMlC,EAAMnB,KAAK,GACjB,OAAOuD,SAASvD,KAAK4P,SAASG,WAAWtM,QAAO,CAACtD,EAAGwR,IAAUA,IAAUxQ,IAAMkC,EAClF,EA2BA,qDChgCA,WACA,aAEA,IAAInF,IAAMC,SACNC,IAAMC,OACNC,IAAMJ,IAAIK,cAAc,OACxBqV,GAAKpV,MAAMC,UACXgF,OAASmQ,GAAGnQ,OACZc,QAAUqP,GAAGrP,QACbtD,IAAM2S,GAAG3S,IACT6B,KAAO8Q,GAAG9Q,KACVyP,QAAUqB,GAAGrB,QACbnT,MAAQwU,GAAGxU,MACX6F,KAAO2O,GAAG3O,KACVzE,OAASoT,GAAGpT,OACZ9B,KAAO,YACPC,QAAU,aACVC,OAAS,OACTC,MAAQ,QAEZ,SAASC,KAAKC,EAAUC,GAKtB,YAJgB,IAAZA,IACFA,EAAUd,KAGLc,IAAYd,KAA4B,IAArBc,EAAQC,UAAuC,IAArBD,EAAQC,SAAiB,GAAKN,QAAQO,KAAKH,GAAYC,EAAQG,uBAAuBJ,EAASK,MAAM,IAAMP,MAAMK,KAAKH,GAAYC,EAAQK,qBAAqBN,GAAYC,EAAQM,iBAAiBP,EAC1P,CAIA,IAAIQ,KAEJ,WACE,SAASA,EAAKR,EAAUC,GAKtB,QAJgB,IAAZA,IACFA,EAAUd,KAGPa,EAAL,CACA,GAAIU,OAAOV,GAAW,OAAOA,EAC7B,IAAIW,EAAOX,EAEX,GAAIY,SAASZ,GAAW,CACtB,IAAIa,EAAMH,OAAOT,GAAWA,EAAQ,GAAKA,EAEzC,KADAU,EAAOhB,KAAKQ,KAAKH,GAAYa,EAAIC,eAAed,EAASK,MAAM,IAAMR,OAAOM,KAAKH,GAAYe,UAAUf,GAAYD,KAAKC,EAAUa,IACvH,MACb,MAAO,GAAIG,WAAWhB,GACpB,OAAOiB,KAAKC,MAAMlB,IAGhBW,EAAKT,UAAYS,IAAStB,OAAKsB,EAAO,CAACA,IAC3CM,KAAKE,OAASR,EAAKQ,OAEnB,IAAK,IAAIC,EAAI,EAAGC,EAAIJ,KAAKE,OAAQC,EAAIC,EAAGD,IACtCH,KAAKG,GAAKT,EAAKS,EAhBI,CAkBvB,CAMA,OAJAZ,EAAKd,UAAU4B,KAAO,SAAUtB,EAAUC,GACxC,OAAO,IAAIO,EAAKR,EAAUC,EAC5B,EAEOO,CACT,CA/BA,GAiCIe,KAAOf,KAAKd,UAAU4B,KAC1BC,KAAKC,GAAKD,KAAK7B,UAAYc,KAAKd,UAEhCc,KAAKd,UAAUyB,OAAS,EACxBX,KAAKd,UAAU+B,OAASA,OAEF,mBAAXC,SACTlB,KAAKd,UAAUgC,OAAiB,UAAKjC,MAAMC,UAAUgC,OAAiB,WAGxElB,KAAKd,UAAUiC,IAAM,SAAUC,GAC7B,YAAcC,IAAVD,EAA4BvB,MAAMyB,KAAKb,MACpCA,KAAKW,EAAQ,EAAIA,EAAQX,KAAKE,OAASS,EAChD,EAEApB,KAAKd,UAAUqC,GAAK,SAAUH,GAC5B,OAAOL,KAAKN,KAAKU,IAAIC,GACvB,EAEApB,KAAKd,UAAUsC,MAAQ,WACrB,OAAOf,KAAKc,GAAG,EACjB,EAEAvB,KAAKd,UAAUuC,KAAO,WACpB,OAAOhB,KAAKc,IAAI,EAClB,EAEAvB,KAAKd,UAAUwC,IAAM,SAAUC,GAC7B,OAAOZ,KAAKW,IAAIJ,KAAKb,MAAM,SAAUmB,EAAKhB,GACxC,OAAOe,EAASL,KAAKM,EAAKhB,EAAGgB,EAC/B,IACF,EAEA5B,KAAKd,UAAUW,MAAQ,WACrB,OAAOkB,KAAKlB,MAAMgC,MAAMpB,KAAMqB,WAChC,EAGA,IAAIC,YAAc,YAElB,SAASC,iBAAiBC,EAAKC,GAC7B,OAAOA,EAAOC,aAChB,CAEA,SAASC,UAAUC,GACjB,OAAOA,EAAIC,QAAQP,YAAaC,iBAClC,CAIA,SAASO,KAAKC,EAAKb,GACjB,IAAK,IAAIf,EAAI,EAAGC,EAAI2B,EAAI7B,OAAQC,EAAIC,IACO,IAArCc,EAASL,KAAKkB,EAAI5B,GAAIA,EAAG4B,EAAI5B,IADIA,KAGzC,CAgBA,SAAS6B,OAAOC,GAGd,IAFA,IAAIC,EAAO,GAEF2R,EAAK,EAAGA,EAAKxS,UAAUnB,OAAQ2T,IACtC3R,EAAK2R,EAAK,GAAKxS,UAAUwS,GAM3B,IAHA,IAAI1R,EAAOd,UACPnB,EAASiC,EAAKjC,OAETC,EAAID,EAAS,EAAI,EAAI,EAAGC,EAAID,EAAQC,IAC3C,IAAK,IAAIiC,KAAOD,EAAKhC,GACnB8B,EAAOG,GAAOD,EAAKhC,GAAGiC,GAI1B,OAAOH,CACT,CAvCA3B,KAAKqB,UAAYA,UAQjBrB,KAAKwB,KAAOA,KAEZvC,KAAKd,UAAUqD,KAAO,SAAUZ,GAE9B,OADAY,KAAK9B,KAAMkB,GACJlB,IACT,EAEAT,KAAKd,UAAU4D,WAAa,SAAUC,GACpC,OAAOtC,KAAK8B,MAAK,SAAU3B,EAAGgB,UACrBA,EAAImB,EACb,GACF,EAsBA/C,KAAKd,UAAUuD,OAAS,SAAUO,GAChC,OAAOP,OAAO1B,KAAKC,GAAIgC,EACzB,EAEAjC,KAAK0B,OAASA,OAEd,IAAIQ,KAAO,EAGX,SAASC,QAAQtB,EAAKpC,GACpB,IAAI0D,EAAUtB,IAAQA,EAAIsB,SAAWtB,EAA2B,uBAAKA,EAAwB,oBAAKA,EAAuB,mBAAKA,EAAsB,kBACpJ,QAASsB,GAAWA,EAAQ5B,KAAKM,EAAKpC,EACxC,CAIA,SAAS2D,MAAMX,EAAKO,EAAMK,GAGxB,IAFA,IAAIC,EAAU,GAELzC,EAAI,EAAGC,EAAI2B,EAAI7B,OAAQC,EAAIC,EAAGD,IAGrC,IAFA,IAAI2T,EAAQ/R,EAAI5B,GAAGmC,GAEH,MAATwR,IACLlR,EAAQE,KAAKgR,GACRnR,IACLmR,EAAQA,EAAMxR,GAIlB,OAAOM,CACT,CAGA,SAASnD,OAAOsD,GACd,OAAOA,aAAaxD,IACtB,CAEA,SAASQ,WAAWgD,GAClB,MAAoB,mBAANA,CAChB,CAEA,SAASpD,SAASoD,GAChB,MAAoB,iBAANA,CAChB,CAEA,SAASC,UAAUD,GACjB,OAAQE,MAAMC,WAAWH,KAAOI,SAASJ,EAC3C,CAxCAzC,KAAKkC,KAAOA,KAOZlC,KAAKmC,QAAUA,QAmCf,IAAIiB,QAAUlF,MAAMkF,QAyBpB,SAASN,mBAAmBC,GAC1B,OAAO1D,SAAS0D,GAAc,SAAUlD,EAAGgB,GACzC,OAAOsB,QAAQtB,EAAKkC,EACtB,EAAItD,WAAWsD,GAAcA,EAAa5D,OAAO4D,GAAc,SAAUlD,EAAGgB,GAC1E,OAAOkC,EAAWC,GAAGnC,EACvB,EAAI,SAAUhB,EAAGgB,GACf,OAAOA,IAAQkC,CACjB,CACF,CAWA,SAASE,SAASC,EAAYH,GAC5B,OAAQA,GAAeG,EAAWtD,OAAsBsD,EAAWC,OAAOJ,GAA/BG,CAC7C,CA7CAlD,KAAKP,WAAaA,WAClBO,KAAKX,SAAWA,SAChBW,KAAK0C,UAAYA,UACjB1C,KAAKoD,QAAUA,QAEfnE,KAAKd,UAAU6D,KAAO,SAAUA,EAAMqB,GACpC,GAAKrB,EAAL,CAEA,GAAI3C,SAAS2C,GACX,OAAIjB,UAAUnB,OAAS,EAAUF,KAAK,IAAMA,KAAK,GAAGsC,GAC7CtC,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5BA,EAAImB,GAAQqB,CACd,IAGF,IAAK,IAAIvB,KAAOE,EACdtC,KAAKsC,KAAKF,EAAKE,EAAKF,IAGtB,OAAOpC,IAbU,CAcnB,EAcAT,KAAKd,UAAUgF,OAAS,SAAUJ,GAChC,IAAKA,EAAY,OAAO/C,OACxB,IAAIsD,EAAUR,mBAAmBC,GACjC,OAAO/C,KAAKmD,OAAO5C,KAAKb,MAAM,SAAUmB,EAAKhB,GAC3C,OAAOyD,EAAQ/C,KAAKM,EAAKhB,EAAGgB,EAC9B,IACF,EAQA,IAAI0C,cAAgB,OAEpB,SAASC,eAAelC,GACtB,OAAOjC,SAASiC,IAAOA,EAAImC,MAAMF,gBAAuB,EAC1D,CAkBA,SAASG,KAAKA,EAAML,GAClB,GAAKK,EAAL,CAEA,GAAIrE,SAASqE,GAAO,CAClB,GAAI3C,UAAUnB,OAAS,EAAG,CACxB,IAAKF,KAAK,GAAI,OACd,IAAI+T,EAAU/T,KAAK,GAAGiE,aAAaD,GACnC,OAAmB,OAAZ+P,OAAmBnT,EAAYmT,CACxC,CAEA,OAAc,OAAVpQ,EAAuB3D,KAAKkE,WAAWF,GACpChE,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5BA,EAAIgD,aAAaH,EAAML,EACzB,GACF,CAEA,IAAK,IAAIvB,KAAO4B,EACdhE,KAAKgE,KAAK5B,EAAK4B,EAAK5B,IAGtB,OAAOpC,IAnBU,CAoBnB,CAqCA,SAASoE,OAAOrC,GACd,OAAOA,EAAI7B,OAAS,EAAIuD,OAAO5C,KAAKkB,GAAK,SAAUsC,EAAM1D,EAAO2D,GAC9D,OAAOC,QAAQ1D,KAAKyD,EAAMD,KAAU1D,CACtC,IAAKoB,CACP,CASA,SAASyC,aAAarD,EAAKmB,EAAMmC,GAC/B,GAAqB,IAAjBtD,EAAIlC,UAAmBqD,EAA3B,CACA,IAAIoC,EAAQtG,IAAIuG,iBAAiBxD,EAAK,MACtC,OAAOmB,EAAOmC,EAAaC,EAAME,iBAAiBtC,SAAS1B,EAAY8D,EAAMpC,GAAQoC,CAF9C,CAGzC,CAGA,SAASG,gBAAgB1D,EAAKmB,GAC5B,OAAOwC,SAASN,aAAarD,EAAKmB,GAAO,KAAO,CAClD,CAhGA/C,KAAKd,UAAUsG,SAAW,SAAUC,GAClC,OAAOA,GAAOC,KAAKpE,KAAKb,MAAM,SAAUmB,GACtC,OAAOA,EAAI+D,UAAUC,SAASH,EAChC,GACF,EAEAzF,KAAKd,UAAUyF,WAAa,SAAUF,GACpC,IAAIoB,EAAQtB,eAAeE,GAC3B,OAAKoB,EAAMlF,OACJF,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5BW,KAAKsD,GAAO,SAAUjF,EAAGkF,GACvBlE,EAAImE,gBAAgBD,EACtB,GACF,IAL0BrF,IAM5B,EAyBAT,KAAKd,UAAUuF,KAAOA,KAEtBzE,KAAKd,UAAU8G,YAAc,SAAUP,EAAKQ,GAC1C,IAAIC,EAAU3B,eAAekB,GACzBU,OAAoB9E,IAAV4E,EACd,OAAKC,EAAQvF,OACNF,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5BW,KAAK2D,GAAS,SAAUtF,EAAGwF,GACrBD,EACFF,EAAQrE,EAAI+D,UAAUU,IAAID,GAAKxE,EAAI+D,UAAUW,OAAOF,GAEpDxE,EAAI+D,UAAUY,OAAOH,EAEzB,GACF,IAT4B3F,IAU9B,EAEAT,KAAKd,UAAUsH,SAAW,SAAUf,GAClC,OAAOhF,KAAKuF,YAAYP,GAAK,EAC/B,EAEAzF,KAAKd,UAAUuH,YAAc,SAAUhB,GACrC,OAAQ3D,UAAUnB,OAAkCF,KAAKuF,YAAYP,GAAK,GAA/ChF,KAAKgE,KAAK,QAAS,GAChD,EAkBA1D,KAAK8D,OAASA,OAEd7E,KAAKd,UAAUmH,IAAM,SAAU7G,EAAUC,GACvC,OAAOsB,KAAK8D,OAAOpE,KAAKU,MAAMuF,OAAO3F,KAAKvB,EAAUC,GAAS0B,QAC/D,EAcA,IAAIwF,cAAgB,MAEpB,SAASC,cAAc7D,GACrB,OAAO4D,cAAchH,KAAKoD,EAC5B,CAOA,IAAI8D,cAAgB,CAAC,EACjB1B,MAAQpG,IAAIoG,MACZ2B,gBAAkB,CAAC,SAAU,MAAO,KAAM,KAE9C,SAASC,gBAAgBhE,EAAMmC,GAK7B,QAJmB,IAAfA,IACFA,EAAa0B,cAAc7D,IAGzBmC,EAAY,OAAOnC,EAEvB,IAAK8D,cAAc9D,GAAO,CACxB,IAAIiE,EAAS5E,UAAUW,GACnBkE,EAAS,GAAKD,EAAOE,OAAO,GAAG/E,cAAgB6E,EAAOnH,MAAM,GAEhE0C,MADayE,EAAS,IAAMF,gBAAgBK,KAAKF,EAAS,KAAOA,GAAQG,MAAM,MACnE,SAAUxG,EAAGyG,GACvB,GAAIA,KAAKlC,MAEP,OADA0B,cAAc9D,GAAQsE,GACf,CAEX,GACF,CAEA,OAAOR,cAAc9D,EACvB,CAGAhC,KAAKuG,aAAeP,gBAGpB,IAAIQ,aAAe,CACjBC,yBAAyB,EACzBC,aAAa,EACbC,UAAU,EACVC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,SAAS,EACTC,OAAO,EACPC,SAAS,EACTC,QAAQ,EACRC,QAAQ,GAGV,SAASC,iBAAiBpF,EAAMqB,EAAOc,GAKrC,YAJmB,IAAfA,IACFA,EAAa0B,cAAc7D,IAGrBmC,GAAeqC,aAAaxE,KAASU,UAAUW,GAAwBA,EAAfA,EAAQ,IAC1E,CAEA,SAASgE,IAAIrF,EAAMqB,GACjB,GAAIhE,SAAS2C,GAAO,CAClB,IAAI0R,EAAe7N,cAAc7D,GAEjC,OADAA,EAAOgE,gBAAgBhE,EAAM0R,GACzB3S,UAAUnB,OAAS,EAAUF,KAAK,IAAMwE,aAAaxE,KAAK,GAAIsC,EAAM0R,GACnE1R,GACLqB,EAAQ+D,iBAAiBpF,EAAMqB,EAAOqQ,GAC/BhU,KAAK8B,MAAK,SAAU3B,EAAGgB,GACP,IAAjBA,EAAIlC,WAEJ+U,EACF7S,EAAIuD,MAAMkD,YAAYtF,EAAMqB,GAE5BxC,EAAIuD,MAAMpC,GAAQqB,EAEtB,KAVkB3D,IAWpB,CAEA,IAAK,IAAIoC,KAAOE,EACdtC,KAAK2H,IAAIvF,EAAKE,EAAKF,IAGrB,OAAOpC,IACT,CAGAT,KAAKd,UAAUkJ,IAAMA,IAErB,IAAIE,cAAgB,aAChBC,gBAAkB,aAGtB,SAASC,QAAQ5G,GACf,OAAO0G,iBAAiB1G,CAC1B,CAIA,SAAS6G,aAAa7G,GACpB,OAAOA,EAAI0G,eAAiB1G,EAAI0G,gBAAkB,CAAC,CACrD,CAIA,SAASI,QAAQ9G,EAAKiB,GACpB,IAAI8F,EAAQF,aAAa7G,GAEzB,GAAIiB,EAAK,CACP,KAAMA,KAAO8F,GAAQ,CACnB,IAAIvE,EAAQxC,EAAIgH,QAAUhH,EAAIgH,QAAQ/F,IAAQjB,EAAIgH,QAAQxG,UAAUS,IAAQ9B,KAAKa,GAAK6C,KAAK,QAAU5B,GAErG,QAAcxB,IAAV+C,EAAqB,CACvB,IACEA,EAAQyE,KAAKC,MAAM1E,EACR,CAAX,MAAO2E,GAAI,CAEbJ,EAAM9F,GAAOuB,CACf,CACF,CAEA,OAAOuE,EAAM9F,EACf,CAEA,OAAO8F,CACT,CAIA,SAASK,WAAWpH,EAAKiB,QACXxB,IAARwB,SACKjB,EAAI0G,sBAEJG,aAAa7G,GAAKiB,EAE7B,CAGA,SAASoG,QAAQrH,EAAKiB,EAAKuB,GACzBqE,aAAa7G,GAAKiB,GAAOuB,CAC3B,CAEA,SAAS8E,KAAKC,EAAM/E,GAClB,IAAIsQ,EAAQjU,KAEZ,IAAK0I,EAAM,CACT,IAAK1I,KAAK,GAAI,OAOd,OANA8B,KAAK9B,KAAK,GAAG2I,YAAY,SAAUxI,EAAG6D,GACpC,IAAID,EAAQC,EAAK0E,KAAK3E,MAAM+D,iBACvB/D,GAELkQ,EAAMxL,KAAK1E,EAAM,GACnB,IACOkE,QAAQjI,KAAK,GACtB,CAEA,GAAIL,SAAS+I,GACX,YAAc9H,IAAV+C,EAA4B3D,KAAK,IAAMiI,QAAQjI,KAAK,GAAI0I,GACrD1I,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5B,OAAOqH,QAAQrH,EAAKuH,EAAM/E,EAC5B,IAGF,IAAK,IAAIvB,KAAOsG,EACd1I,KAAKyI,KAAKrG,EAAKsG,EAAKtG,IAGtB,OAAOpC,IACT,CAaA,SAAS4I,cAAczH,EAAK0H,GAC1B,OAAOhE,gBAAgB1D,EAAK,UAAY0H,EAAQ,OAAS,OAAS,SAAWhE,gBAAgB1D,EAAK,WAAa0H,EAAQ,OAAS,QAAUhE,gBAAgB1D,EAAK,WAAa0H,EAAQ,QAAU,WAAahE,gBAAgB1D,EAAK,UAAY0H,EAAQ,QAAU,UAAY,QAC5Q,CAtFAvI,KAAKyH,QAAUA,QAyEfxI,KAAKd,UAAUgK,KAAOA,KAEtBlJ,KAAKd,UAAU8J,WAAa,SAAUnG,GACpC,OAAOpC,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5B,OAAOoH,WAAWpH,EAAKiB,EACzB,GACF,EASAN,KAAK,CAAC,QAAS,WAAW,SAAU3B,EAAGmC,GACrC/C,KAAKd,UAAU,QAAU6D,GAAQ,WAC/B,GAAKtC,KAAK,GACV,OAAIA,KAAK,KAAO5B,IAAYA,IAAI,QAAUkE,GACnCtC,KAAK,GAAG,SAAWsC,EAC5B,CACF,IACAR,KAAK,CAAC,QAAS,WAAW,SAAUnB,EAAO2B,GACzC/C,KAAKd,UAAU6D,GAAQ,SAAUqB,GAC/B,IAAK3D,KAAK,GAAI,YAAiBY,IAAV+C,OAAsB/C,EAAYZ,KAEvD,IAAKqB,UAAUnB,OACb,OAAIF,KAAK,KAAO5B,IAAY4B,KAAK,GAAG2B,UAAU,SAAWW,IAClDtC,KAAK,GAAG8I,wBAAwBxG,GAAQsG,cAAc5I,KAAK,IAAKW,GAGzE,IAAIoI,EAAcjE,SAASnB,EAAO,IAClC,OAAO3D,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5B,GAAqB,IAAjBA,EAAIlC,SAAR,CACA,IAAI+J,EAAYxE,aAAarD,EAAK,aAClCA,EAAIuD,MAAMpC,GAAQoF,iBAAiBpF,EAAMyG,GAA6B,eAAdC,EAA6BJ,cAAczH,GAAMR,GAAS,GAFpF,CAGhC,GACF,CACF,IACAmB,KAAK,CAAC,QAAS,WAAW,SAAUnB,EAAO2B,GACzC/C,KAAKd,UAAU,QAAU6D,GAAQ,SAAU2G,GACzC,GAAKjJ,KAAK,GACV,OAAIA,KAAK,KAAO5B,IAAYA,IAAI,QAAUkE,GACnCtC,KAAK,GAAG,SAAWsC,IAAS2G,EAAiBpE,gBAAgB7E,KAAK,GAAI,UAAaW,EAAiB,MAAT,SAAmBkE,gBAAgB7E,KAAK,GAAI,UAAaW,EAAkB,SAAV,UAAuB,EAC5L,CACF,IAKA,IAAIuI,eAAiB,CAAC,EAEtB,SAASC,kBAAkBC,GACzB,GAAIF,eAAeE,GAAU,OAAOF,eAAeE,GACnD,IAAIjI,EAAMjD,IAAIK,cAAc6K,GAC5BlL,IAAImL,KAAKC,YAAYnI,GACrB,IAAIoI,EAAU/E,aAAarD,EAAK,WAEhC,OADAjD,IAAImL,KAAKG,YAAYrI,GACd+H,eAAeE,GAAuB,SAAZG,EAAqBA,EAAU,OAClE,CAGA,SAASE,SAAStI,GAChB,MAAwC,SAAjCqD,aAAarD,EAAK,UAC3B,CA6BA,SAASuI,cAAcC,EAAKC,GAC1B,OAAQA,IAAQ3E,KAAKpE,KAAK+I,GAAK,SAAUC,GACvC,OAAOF,EAAIpF,QAAQsF,GAAM,CAC3B,GACF,CA/BAtK,KAAKd,UAAUqH,OAAS,SAAUN,GAChC,OAAOxF,KAAK8B,MAAK,SAAU3B,EAAGgB,IAC5BqE,OAAkB5E,IAAV4E,EAAsBA,EAAQiE,SAAStI,KAG7CA,EAAIuD,MAAM6E,QAAU,GAEhBE,SAAStI,KACXA,EAAIuD,MAAM6E,QAAUJ,kBAAkBhI,EAAIiI,WAG5CjI,EAAIuD,MAAM6E,QAAU,MAExB,GACF,EAEAhK,KAAKd,UAAUqL,KAAO,WACpB,OAAO9J,KAAK8F,QAAO,EACrB,EAEAvG,KAAKd,UAAUsL,KAAO,WACpB,OAAO/J,KAAK8F,QAAO,EACrB,EAWA,IAAIkE,gBAAkB,eAClBC,0BAA4B,IAC5BC,YAAc,CAChBC,MAAO,UACPC,KAAM,YAEJC,YAAc,CAChBC,WAAY,YACZC,WAAY,YAEVC,cAAgB,2DAEpB,SAASC,qBAAqB/B,GAC5B,OAAO2B,YAAY3B,IAASwB,YAAYxB,IAASA,CACnD,CAGA,SAASgC,eAAevJ,GACtB,OAAOA,EAAI6I,iBAAmB7I,EAAI6I,kBAAoB,CAAC,CACzD,CAIA,SAASW,SAASxJ,EAAKuH,EAAMkC,EAAY7L,EAAUmC,GACjDA,EAAe,KAAIA,EAAe,MAAKsB,OACvC,IAAIqI,EAAaH,eAAevJ,GAChC0J,EAAWnC,GAAQmC,EAAWnC,IAAS,GACvCmC,EAAWnC,GAAM5F,KAAK,CAAC8H,EAAY7L,EAAUmC,IAC7CC,EAAI2J,iBAAiBpC,EAAMxH,EAC7B,CAGA,SAAS6J,eAAeC,GACtB,IAAIC,EAAQD,EAAUrE,MAAMsD,2BAC5B,MAAO,CAACgB,EAAM,GAAIA,EAAM7L,MAAM,GAAG8L,OACnC,CAKA,SAASC,YAAYhK,EAAKuH,EAAMkC,EAAY7L,EAAUmC,GACpD,IAAIgH,EAAQwC,eAAevJ,GAE3B,GAAKuH,EAMMR,EAAMQ,KACfR,EAAMQ,GAAQR,EAAMQ,GAAMjF,QAAO,SAAUmQ,GACzC,IAAI/J,EAAK+J,EAAG,GACRxI,EAAMwI,EAAG,GACTvI,EAAKuI,EAAG,GACZ,GAAI1S,GAAYmK,EAAS,OAAMnK,EAAe,OAAMwI,cAAcG,EAAIe,IAAe7L,GAAYA,IAAaqM,EAAK,OAAO,EAC1HjK,EAAImK,oBAAoB5C,EAAM2C,EAChC,SAbS,CACT,IAAK3C,KAAQR,EACXiD,YAAYhK,EAAKuH,EAAMkC,EAAY7L,EAAUmC,UAGxCC,EAAI6I,gBACb,CASF,CA8BA,SAASuB,GAAGC,EAAezM,EAAUmC,EAAUuK,GAC7C,IAAIwI,EAAQjU,KAEZ,IAAKL,SAAS6L,GAAgB,CAC5B,IAAK,IAAIpJ,KAAOoJ,EACdxL,KAAKuL,GAAGnJ,EAAKrD,EAAUyM,EAAcpJ,IAGvC,OAAOpC,IACT,CAwDA,OAtDID,WAAWhB,KACbmC,EAAWnC,EACXA,EAAW,IAGb+C,KAAKgC,eAAe0H,IAAgB,SAAUrL,EAAGqL,GAC/C,IAAIoI,EAAK7I,eAAeN,qBAAqBe,IACzC9C,EAAOkL,EAAG,GACVhJ,EAAagJ,EAAG,GAEpBK,EAAMnS,MAAK,SAAU3B,EAAGgB,GACtB,IAAIuK,EAAgB,SAASA,EAAcC,GACzC,IAAIA,EAAMC,WAAclC,cAAckB,EAAYe,EAAMC,UAAUjF,MAAMsD,4BAAxE,CACA,IAAI4B,EAAU1K,EAEd,GAAIpC,EAAU,CAGZ,IAFA,IAAIkD,EAAS0J,EAAM1J,QAEXQ,QAAQR,EAAQlD,IAAW,CAEjC,GAAIkD,IAAWd,EAAK,OAEpB,KADAc,EAASA,EAAO6J,YACH,MACf,CAEAD,EAAU5J,EACV0J,EAAMI,YAAa,CACrB,CAEIJ,EAAMI,YACRC,OAAOC,eAAeN,EAAO,gBAAiB,CAC5CO,cAAc,EACdxL,IAAK,WACH,OAAOmL,CACT,IAIJ,IAAIM,EAAcjL,EAASL,KAAKgL,EAASF,EAAOA,EAAMlD,MAElDgD,GACFN,YAAYhK,EAAKuH,EAAMkC,EAAY7L,EAAU2M,IAG3B,IAAhBS,IACFR,EAAMS,iBACNT,EAAMU,kBAlCmG,CAoC7G,EAEAX,EAAoB,KAAIxK,EAAe,KAAIA,EAAe,MAAKsB,OAC/DmI,SAASxJ,EAAKuH,EAAMkC,EAAY7L,EAAU2M,EAC5C,GACF,IACO1L,IACT,CAIA,SAASsM,IAAId,EAAezM,EAAUmC,GACpC,OAAOlB,KAAKuL,GAAGC,EAAezM,EAAUmC,GAAU,EACpD,CAmDA,SAASqL,SAASpL,GAChB,OAAIA,EAAIqL,SAAiB9J,MAAMe,OAAO5C,KAAKM,EAAIsL,SAAS,SAAUC,GAChE,OAAOA,EAAOC,WAAaD,EAAOE,WAAaF,EAAOZ,WAAWc,QACnE,IAAI,SACGzL,EAAIwC,OAAS,EACtB,CA5JApE,KAAKd,UAAUoO,IAAM,SAAUrB,EAAezM,EAAUmC,GACtD,IAAI+S,EAAQjU,KAwBZ,YAtBsBY,IAAlB4K,EACFxL,KAAK8B,MAAK,SAAU3B,EAAGgB,GACrB,OAAOgK,YAAYhK,EACrB,KAEIpB,WAAWhB,KACbmC,EAAWnC,EACXA,EAAW,IAGb+C,KAAKgC,eAAe0H,IAAgB,SAAUrL,EAAGqL,GAC/C,IAAIoI,EAAK7I,eAAeN,qBAAqBe,IACzC9C,EAAOkL,EAAG,GACVhJ,EAAagJ,EAAG,GAEpBK,EAAMnS,MAAK,SAAU3B,EAAGgB,GACtB,OAAOgK,YAAYhK,EAAKuH,EAAMkC,EAAY7L,EAAUmC,EACtD,GAEF,KAGKlB,IACT,EAsEAT,KAAKd,UAAU8M,GAAKA,GAOpBhM,KAAKd,UAAU6N,IAAMA,IAErB/M,KAAKd,UAAUwB,MAAQ,SAAUiB,GAC/B,IAAIwK,EAAgB,WAClB,OAAOxK,EAASZ,KAClB,EAQA,MANuB,YAAnBpC,IAAI4O,WACNC,WAAWrB,GAEXxN,IAAI4M,iBAAiB,mBAAoBY,GAGpC1L,IACT,EAEAT,KAAKd,UAAUuO,QAAU,SAAUxB,EAAe/C,GAChD,IAAIwE,EAAMzB,EAEV,GAAI7L,SAAS6L,GAAgB,CAC3B,IAAIoI,EAAK7I,eAAeS,GACpB0I,EAASN,EAAG,GACZhJ,EAAagJ,EAAG,GAChB1G,EAAO1C,cAActL,KAAKgV,GAAU,cAAgB,cAExDjH,EAAM/O,IAAIiP,YAAYD,IAClBE,UAAU8G,GAAQ,GAAM,GAC5BjH,EAAe,UAAIrC,EAAWlE,KAAKuD,0BACrC,CAEAgD,EAAU,KAAIxE,EACd,IAAI4E,EAAeJ,EAAU,QAAK/C,YAClC,OAAOlK,KAAK8B,MAAK,SAAU3B,EAAGgB,GACxBkM,GAAgBtN,WAAWoB,EAAI8L,EAAU,OAC3C9L,EAAI8L,EAAU,QAEd9L,EAAImM,cAAcL,EAEtB,GACF,EAgBA,IAAIM,mBAAqB,OAEzB,SAASC,YAAYlL,EAAMqB,GACzB,MAAO,IAAM8J,mBAAmBnL,GAAQ,IAAMmL,mBAAmB9J,GAAO9B,QAAQ0L,mBAAoB,IACtG,CAOA,IAAIG,YAAc,kCACdC,YAAc,kBAkBlB,SAAS9K,IAAIc,GACX,YAAc/C,IAAV+C,EAA4B3D,KAAK,IAAMuM,SAASvM,KAAK,IAClDA,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5B,GAAoB,WAAhBA,EAAIiI,QAAsB,CAC5B,IAAI+K,EAAazQ,QAAQC,GAASA,EAAkB,OAAVA,EAAiB,GAAK,CAACA,GACjE7B,KAAKX,EAAIsL,SAAS,SAAUtM,EAAGuM,GAC7BA,EAAOC,SAAWwH,EAAW5P,QAAQmI,EAAO/I,QAAU,CACxD,GACF,MACExC,EAAIwC,MAAkB,OAAVA,EAAiB,GAAKA,CAEtC,GACF,CA5BApE,KAAKd,UAAUoP,UAAY,WACzB,IAAIC,EAAQ,GAYZ,OAXA9N,KAAK8B,MAAK,SAAU3B,EAAGgB,GACrBW,KAAKX,EAAI4M,UAAY,CAAC5M,IAAM,SAAUhB,EAAGgB,GACvC,KAAIA,EAAIyL,WAAazL,EAAIuH,MAAwB,aAAhBvH,EAAIiI,SAA0BsE,YAAYxO,KAAKiC,EAAI+L,OAASS,YAAYzO,KAAKiC,EAAI+L,QAAU/L,EAAI6M,SAAhI,CACA,IAAIrK,EAAQ4I,SAASpL,GACrB,QAAcP,IAAV+C,EAEJ7B,KADa4B,QAAQC,GAASA,EAAQ,CAACA,IAC1B,SAAUxD,EAAGwD,GACxBmK,GAASN,YAAYrM,EAAIuH,KAAM/E,EACjC,GAN+I,CAOjJ,GACF,IACOmK,EAAMG,OAAO,EACtB,EAgBA1O,KAAKd,UAAUoE,IAAMA,IAErBtD,KAAKd,UAAUyP,MAAQ,WACrB,OAAOlO,KAAKiB,KAAI,SAAUd,EAAGgB,GAC3B,OAAOA,EAAIgN,WAAU,EACvB,GACF,EAEA5O,KAAKd,UAAU2P,OAAS,WACtB,OAAOpO,KAAK8B,MAAK,SAAU3B,EAAGgB,GACxBA,EAAI2K,YACN3K,EAAI2K,WAAWtC,YAAYrI,EAE/B,GACF,EAOA,IAAIkN,WAAa,mBACbC,YAAc,mCACdC,WAEJ,SAASC,iBACP,IAAID,WAAJ,CACA,IAAIE,EAAQvQ,IAAIK,cAAc,SAC1BmQ,EAAKxQ,IAAIK,cAAc,MAC3BgQ,WAAa,CACX,IAAKjQ,IACLoQ,GAAIxQ,IAAIK,cAAc,SACtBoQ,GAAID,EACJE,GAAIF,EACJG,MAAOJ,EACPK,MAAOL,EACPM,MAAON,EAVa,CAYxB,CAEA,SAAS3O,UAAUkP,GAEjB,GADAR,kBACK7O,SAASqP,GAAO,MAAO,GAC5B,GAAIV,YAAYpP,KAAK8P,GAAO,MAAO,CAAC9Q,IAAIK,cAAc0Q,OAAOC,KAC7D,IAAIC,EAAWd,WAAWnP,KAAK8P,IAASC,OAAOC,GAC3CE,EAAYb,WAAWY,IAAaZ,WAAW,KAEnD,OADAa,EAAUC,UAAYL,EACf1O,KAAK8O,EAAUE,YAAYlB,SAAS1N,KAC7C,CAgBA,SAASsO,KAAKA,GACZ,YAAapO,IAAToO,EAA2BhP,KAAK,IAAMA,KAAK,GAAGqP,UAC3CrP,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5BA,EAAIkO,UAAYL,CAClB,GACF,CAQA,SAASO,KAAKA,GACZ,YAAa3O,IAAT2O,EAA2BvP,KAAK,GAAKA,KAAK,GAAGwP,YAAc,GACxDxP,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5BA,EAAIqO,YAAcD,CACpB,GACF,CAhCAjP,KAAKR,UAAYA,UAEjBP,KAAKd,UAAUgR,MAAQ,WACrB,IAAItO,EAAMnB,KAAK,GAEf,GAAImB,EACF,KAAOA,EAAIuO,YACTvO,EAAIqI,YAAYrI,EAAIuO,YAIxB,OAAO1P,IACT,EASAT,KAAKd,UAAUuQ,KAAOA,KAEtBzP,KAAKd,UAAUoH,OAAS,WACtB,OAAO7F,KAAKoO,SAASvB,KACvB,EAUAtN,KAAKd,UAAU8Q,KAAOA,KAEtBhQ,KAAKd,UAAUkR,OAAS,WAKtB,OAJA3P,KAAK4P,SAAS9N,MAAK,SAAU3B,EAAGgB,GAC9B,IAAI0O,EAAOvP,KAAKa,GAChB0O,EAAKC,YAAYD,EAAKE,WACxB,IACO/P,IACT,EAIA,IAAIgQ,OAAS9R,IAAI+R,gBAEjB1Q,KAAKd,UAAUyR,OAAS,WACtB,IAAI/O,EAAMnB,KAAK,GACf,GAAKmB,EAAL,CACA,IAAIgP,EAAOhP,EAAI2H,wBACf,MAAO,CACLsH,IAAKD,EAAKC,IAAMhS,IAAIiS,YAAcL,OAAOM,UACzCC,KAAMJ,EAAKI,KAAOnS,IAAIoS,YAAcR,OAAOS,WAJ7B,CAMlB,EAEAlR,KAAKd,UAAUiS,aAAe,WAC5B,OAAOpQ,KAAKN,KAAK,IAAMA,KAAK,GAAG0Q,aACjC,EAEAnR,KAAKd,UAAUkS,SAAW,WACxB,IAAIxP,EAAMnB,KAAK,GACf,GAAKmB,EACL,MAAO,CACLoP,KAAMpP,EAAIyP,WACVR,IAAKjP,EAAI0P,UAEb,EAEAtR,KAAKd,UAAUsR,SAAW,SAAU1M,GAClC,IAAIyN,EAAS,GAIb,OAHA9Q,KAAK8B,MAAK,SAAU3B,EAAGgB,GACrB2B,KAAK1B,MAAM0P,EAAQ3P,EAAI4O,SACzB,IACOxM,SAASjD,KAAK8D,OAAO0M,IAAUzN,EACxC,EAEA9D,KAAKd,UAAUsS,SAAW,WACxB,IAAID,EAAS,GAIb,OAHA9Q,KAAK8B,MAAK,SAAU3B,EAAGgB,GACrB2B,KAAK1B,MAAM0P,EAAwB,WAAhB3P,EAAIiI,QAAuB,CAACjI,EAAI6P,iBAAmB7P,EAAImO,WAC5E,IACOhP,KAAK8D,OAAO0M,GACrB,EAEAvR,KAAKd,UAAUK,KAAO,SAAUC,GAG9B,IAFA,IAAI+R,EAAS,GAEJ3Q,EAAI,EAAGC,EAAIJ,KAAKE,OAAQC,EAAIC,EAAGD,IAAK,CAC3C,IAAI8Q,EAAQnS,KAAKC,EAAUiB,KAAKG,IAE5B8Q,EAAM/Q,QACR4C,KAAK1B,MAAM0P,EAAQG,EAEvB,CAEA,OAAO3Q,KAAK8D,OAAO0M,GACrB,EAKA,IAAII,aAAe,qCACfC,YAAc,2CAElB,SAASC,YAAYC,MACnB,IAAI7N,WAAalD,KAAK+Q,MACtB7N,WAAWC,OAAO,UAAUmC,IAAIpC,WAAW1E,KAAK,WAAWgD,MAAK,SAAU3B,EAAGgB,MACtEA,IAAImQ,KAAOJ,aAAahS,KAAKiC,IAAI+L,OAEhC/L,IAAIoQ,cAActB,gBAAgB9K,SAAShE,MAE7CqQ,KAAKrQ,IAAIqO,YAAY3N,QAAQsP,YAAa,IAGhD,GACF,CAGA,SAASM,cAAcC,EAAQC,EAAOC,EAASC,GACzCD,EACFF,EAAOI,aAAaH,EAAOE,GAE3BH,EAAOpI,YAAYqI,GAGrBP,YAAYO,EACd,CAKA,SAASI,cAAcnC,EAAQ+B,EAAOC,GACpC9P,KAAK8N,GAAQ,SAAUjP,EAAOqR,GAC5BlQ,KAAK6P,GAAO,SAAUxR,EAAG8R,GACvBR,cAAcO,EAAYrR,EAAmBsR,EAAS9D,WAAU,GAA9B8D,EAAqCL,EAASA,GAAWI,EAAUtC,WACvG,GACF,GACF,CAEAnQ,KAAKd,UAAUyT,OAAS,WACtB,IAAI+B,EAAQjU,KAKZ,OAHA8B,KAAKT,WAAW,SAAUlB,EAAGpB,GAC3BgT,cAAckC,EAAO3T,KAAKvB,GAC5B,IACOiB,IACT,EAEAT,KAAKd,UAAU0T,SAAW,SAAUpT,GAElC,OADAgT,cAAczR,KAAKvB,GAAWiB,MACvBA,IACT,EAEAT,KAAKd,UAAU2T,YAAc,SAAUrT,GACrC,IAAIkV,EAAQjU,KAWZ,OATAM,KAAKvB,GAAU+C,MAAK,SAAUnB,EAAOQ,GACnC,IAAIyO,EAASzO,EAAI2K,WAEb8D,GACFqE,EAAMnS,MAAK,SAAU3B,EAAGmI,GACtBmJ,cAAc7B,EAASjP,EAAY2H,EAAE6F,WAAU,GAAhB7F,GAAuB,EAAMnH,EAAIkR,YAClE,GAEJ,IACOrS,IACT,EAEAT,KAAKd,UAAU6T,MAAQ,WACrB,IAAI2B,EAAQjU,KAKZ,OAHA8B,KAAKyQ,QAAQnR,MAAMC,YAAY,SAAUlB,EAAGpB,GAC1CwT,QAAQnR,MAAMd,KAAKvB,GAAUK,SAASgT,YAAY6B,EACpD,IACOjU,IACT,EAEAT,KAAKd,UAAUqT,aAAe,SAAU/S,GACtC,IAAIkV,EAAQjU,KAWZ,OATAM,KAAKvB,GAAU+C,MAAK,SAAUnB,EAAOQ,GACnC,IAAIyO,EAASzO,EAAI2K,WAEb8D,GACFqE,EAAMnS,MAAK,SAAU3B,EAAGmI,GACtBmJ,cAAc7B,EAASjP,EAAY2H,EAAE6F,WAAU,GAAhB7F,GAAuB,EAAMnH,EAC9D,GAEJ,IACOnB,IACT,EAEAT,KAAKd,UAAU+T,OAAS,WACtB,IAAIyB,EAAQjU,KAKZ,OAHA8B,KAAKT,WAAW,SAAUlB,EAAGpB,GAC3BuB,KAAKvB,GAAU+S,aAAamC,EAC9B,IACOjU,IACT,EAEAT,KAAKd,UAAUmT,QAAU,WACvB,IAAIqC,EAAQjU,KAKZ,OAHA8B,KAAKT,WAAW,SAAUlB,EAAGpB,GAC3BgT,cAAckC,EAAO3T,KAAKvB,IAAW,EACvC,IACOiB,IACT,EAEAT,KAAKd,UAAUgU,UAAY,SAAU1T,GAEnC,OADAgT,cAAczR,KAAKvB,GAAWwT,QAAQnR,MAAMpB,KAAKZ,UAAU,GACpDY,IACT,EAEAT,KAAKd,UAAUqR,YAAc,SAAU/Q,GACrC,OAAOiB,KAAKwS,OAAOzT,GAAU8G,QAC/B,EAEAtG,KAAKd,UAAUiU,WAAa,SAAU3T,GAEpC,OADAuB,KAAKvB,GAAU+Q,YAAY9P,MACpBA,IACT,EAEAT,KAAKd,UAAUkU,QAAU,SAAU5T,GACjC,GAAIiB,KAAK,GAAI,CACX,IAAI4S,EAAYtS,KAAKvB,GACrBiB,KAAKe,QAAQyR,OAAOI,GAGpB,IAFA,IAAIC,EAAUD,EAAU,GAEjBC,EAAQ9C,SAAS7P,QACtB2S,EAAUA,EAAQC,kBAGpB9S,KAAKmS,SAASU,EAChB,CAEA,OAAO7S,IACT,EAEAT,KAAKd,UAAUsU,KAAO,SAAUhU,GAC9B,OAAOiB,KAAK8B,MAAK,SAAUnB,EAAOQ,GAChC,IAAI0R,EAAUvS,KAAKvB,GAAU,GAC7BuB,KAAKa,GAAKwR,QAAShS,EAAkBkS,EAAQ1E,WAAU,GAA5B0E,EAC7B,GACF,EAEAtT,KAAKd,UAAUuU,UAAY,SAAUjU,GACnC,OAAOiB,KAAK8B,MAAK,SAAU3B,EAAGgB,GAC5B,IAAI0O,EAAOvP,KAAKa,GACZ4P,EAAWlB,EAAKkB,WACpBA,EAAS7Q,OAAS6Q,EAAS4B,QAAQ5T,GAAY8Q,EAAKqC,OAAOnT,EAC7D,GACF,EAEAQ,KAAKd,UAAUwU,IAAM,SAAUlU,GAC7B,IAAIsE,EAAa1D,SAASZ,GAAY,SAAUoB,EAAGgB,GACjD,QAASrC,KAAKC,EAAUoC,GAAKjB,MAC/B,EAAI,SAAUC,EAAGgB,GACf,OAAOA,EAAIgE,SAASpG,EACtB,EACA,OAAOiB,KAAKyD,OAAOJ,EACrB,EAEA9D,KAAKd,UAAU6E,GAAK,SAAUD,GAC5B,IAAKA,IAAerD,KAAK,GAAI,OAAO,EACpC,IAAI4D,EAAUR,mBAAmBC,GAC7B6P,GAAQ,EAKZ,OAJAlT,KAAK8B,MAAK,SAAU3B,EAAGgB,GAErB,QADA+R,EAAQtP,EAAQ/C,KAAKM,EAAKhB,EAAGgB,GAE/B,IACO+R,CACT,EAEA3T,KAAKd,UAAU0U,KAAO,SAAU9P,EAAY+P,GAC1C,OAAO7P,SAASjD,KAAK8D,OAAO1B,MAAM1C,KAAM,qBAAsBoT,KAAS/P,EACzE,EAEA9D,KAAKd,UAAU4U,QAAU,SAAUhQ,GACjC,OAAOrD,KAAKmT,KAAK9P,GAAY,EAC/B,EAEA9D,KAAKd,UAAU6U,IAAM,SAAUjQ,GAC7B,IAAKA,IAAerD,KAAK,GAAI,OAAOA,KACpC,IAAI4D,EAAUR,mBAAmBC,GACjC,OAAOrD,KAAKyD,QAAO,SAAUtD,EAAGgB,GAC9B,OAAQyC,EAAQ/C,KAAKM,EAAKhB,EAAGgB,EAC/B,GACF,EAEA5B,KAAKd,UAAUmR,OAAS,SAAUvM,GAChC,OAAOE,SAASjD,KAAK8D,OAAO1B,MAAM1C,KAAM,gBAAiBqD,EAC3D,EAEA9D,KAAKd,UAAUkC,MAAQ,SAAU5B,GAC/B,IAAI4S,EAAQ5S,EAAWuB,KAAKvB,GAAU,GAAKiB,KAAK,GAC5CwD,EAAazE,EAAWiB,KAAOM,KAAKqR,GAAO/B,SAASG,WACxD,OAAOxL,QAAQ1D,KAAK2C,EAAYmO,EAClC,EAEApS,KAAKd,UAAU8U,QAAU,SAAUlQ,GACjC,IAAKA,IAAerD,KAAK,GAAI,OAAOM,OACpC,IAAIiD,EAAWvD,KAAKyD,OAAOJ,GAC3B,OAAIE,EAASrD,OAAeqD,EACrBvD,KAAK4P,SAAS2D,QAAQlQ,EAC/B,EAEA9D,KAAKd,UAAU+U,QAAU,SAAUnQ,GACjC,OAAOE,SAASjD,KAAK8D,OAAO1B,MAAM1C,KAAM,iBAAiB,KAASqD,EACpE,EAEA9D,KAAKd,UAAUgV,KAAO,SAAUpQ,EAAY+P,GAC1C,OAAO7P,SAASjD,KAAK8D,OAAO1B,MAAM1C,KAAM,yBAA0BoT,KAAS/P,EAC7E,EAEA9D,KAAKd,UAAUiV,QAAU,SAAUrQ,GACjC,OAAOrD,KAAKyT,KAAKpQ,GAAY,EAC/B,EAEA9D,KAAKd,UAAUkV,SAAW,SAAUtQ,GAClC,IAAIlC,EAAMnB,KAAK,GACf,OAAOuD,SAASvD,KAAK4P,SAASG,WAAWtM,QAAO,SAAUtD,EAAGwR,GAC3D,OAAOA,IAAUxQ,CACnB,IAAIkC,EACN,EA+BE+Q,OAAOC,QAAU/T,IAKlB,EAxxCD,wBCDA,QAUQgU,EAMA,WAMJ,IAAIC,EAAkBC,IAClBC,GAAS,EAEb,SAASC,EAAMjI,GACX,IAAIkI,EAAW,CACXC,QAAS,KACTC,OAAQ,KACRC,WAAY,KACZC,YAAa,KACbC,cAAc,EACdC,QAAQ,EACRC,SAAU,GACVC,WAAY,QACZC,aAAc,CAAC,UAAW,SAAU,WAIxCpV,KAAKqV,KAAOrT,EAAO,CAAC,EAAG2S,EAAUlI,GAGjCzM,KAAKK,MACT,CAyRA,SAASiV,IACAtV,KAAKuV,iBAGVvV,KAAKuV,eAAe7Q,MAAM8Q,MAAQxV,KAAKyV,SAASC,YAAc,KAC9D1V,KAAKuV,eAAe7Q,MAAM6L,KAAOvQ,KAAKyV,SAAS7E,WAAa,KAChE,CAEA,SAAS+E,IAGL3V,KAAK4V,MAAQzX,SAASI,cAAc,OACpCyB,KAAK4V,MAAM1Q,UAAUU,IAAI,gBAGa,IAAlC5F,KAAKqV,KAAKD,aAAalV,SAA+D,IAA/CF,KAAKqV,KAAKD,aAAa7Q,QAAQ,YACtEvE,KAAK4V,MAAM1Q,UAAUU,IAAI,gCAG7B5F,KAAK4V,MAAMlR,MAAM6E,QAAU,OAG3BvJ,KAAKqV,KAAKH,SAASW,SAAQ,SAASxR,GACZ,iBAATA,GACPrE,KAAK4V,MAAM1Q,UAAUU,IAAIvB,EAEjC,GAAGrE,OAG+C,IAA9CA,KAAKqV,KAAKD,aAAa7Q,QAAQ,YAC/BvE,KAAK8V,cAAgB3X,SAASI,cAAc,UAC5CyB,KAAK8V,cAAc5I,KAAO,SAC1BlN,KAAK8V,cAAc5Q,UAAUU,IAAI,uBAEjC5F,KAAK+V,kBAAoB5X,SAASI,cAAc,QAChDyB,KAAK+V,kBAAkB7Q,UAAUU,IAAI,2BACrC5F,KAAK+V,kBAAkB1G,UAAY,IAEnCrP,KAAKgW,mBAAqB7X,SAASI,cAAc,QACjDyB,KAAKgW,mBAAmB9Q,UAAUU,IAAI,4BACtC5F,KAAKgW,mBAAmB3G,UAAYrP,KAAKqV,KAAKF,WAE9CnV,KAAK8V,cAAcxM,YAAYtJ,KAAK+V,mBACpC/V,KAAK8V,cAAcxM,YAAYtJ,KAAKgW,qBAIxChW,KAAKyV,SAAWtX,SAASI,cAAc,OACvCyB,KAAKyV,SAASvQ,UAAUU,IAAI,oBAG5B5F,KAAKiW,gBAAkB9X,SAASI,cAAc,OAC9CyB,KAAKiW,gBAAgB/Q,UAAUU,IAAI,6BAEnC5F,KAAKyV,SAASnM,YAAYtJ,KAAKiW,kBAEmB,IAA9CjW,KAAKqV,KAAKD,aAAa7Q,QAAQ,WAC/BvE,KAAK4V,MAAMtM,YAAYtJ,KAAK8V,eAGhC9V,KAAK4V,MAAMtM,YAAYtJ,KAAKyV,SAEhC,CAEA,SAASS,IACLlW,KAAKuV,eAAiBpX,SAASI,cAAc,OAC7CyB,KAAKuV,eAAerQ,UAAUU,IAAI,4BAClC5F,KAAKyV,SAASnM,YAAYtJ,KAAKuV,eACnC,CAEA,SAASY,IAELnW,KAAKoW,QAAU,CACXC,cAAerW,KAAKsW,MAAMC,KAAKvW,MAC/BwW,aAAcC,EAAoBF,KAAKvW,MACvC0W,OAAQ1W,KAAK2W,cAAcJ,KAAKvW,MAChC4W,YAAaC,EAAmBN,KAAKvW,QAGS,IAA9CA,KAAKqV,KAAKD,aAAa7Q,QAAQ,WAC/BvE,KAAK8V,cAAchL,iBAAiB,QAAS9K,KAAKoW,QAAQC,eAG9DrW,KAAK4V,MAAM9K,iBAAiB,YAAa9K,KAAKoW,QAAQI,cACtDnY,OAAOyM,iBAAiB,SAAU9K,KAAKoW,QAAQM,QAC/CvY,SAAS2M,iBAAiB,UAAW9K,KAAKoW,QAAQQ,YACtD,CAEA,SAASC,EAAmBlL,IAE0B,IAA9C3L,KAAKqV,KAAKD,aAAa7Q,QAAQ,WAAoC,KAAhBoH,EAAMmL,OAAgB9W,KAAK+W,UAC9E/W,KAAKsW,OAEb,CAEA,SAASG,EAAoB9K,IAE0B,IAA/C3L,KAAKqV,KAAKD,aAAa7Q,QAAQ,aAAsByS,EAAcrL,EAAM1J,OAAQ,iBACrF0J,EAAMsL,QAAUjX,KAAK4V,MAAMF,aACvB1V,KAAKsW,OAEb,CAEA,SAASU,EAAcE,EAAIlS,GACvB,MAAQkS,EAAKA,EAAGC,iBAAmBD,EAAGhS,UAAUC,SAASH,KACzD,OAAOkS,CACX,CAEA,SAASE,KAC6C,IAA9CpX,KAAKqV,KAAKD,aAAa7Q,QAAQ,WAC/BvE,KAAK8V,cAAcxK,oBAAoB,QAAStL,KAAKoW,QAAQC,eAEjErW,KAAK4V,MAAMtK,oBAAoB,YAAatL,KAAKoW,QAAQI,cACzDnY,OAAOiN,oBAAoB,SAAUtL,KAAKoW,QAAQM,QAClDvY,SAASmN,oBAAoB,UAAWtL,KAAKoW,QAAQQ,YACzD,CAkBA,SAAS5U,IACL,IAAK,IAAI7B,EAAI,EAAGA,EAAIkB,UAAUnB,OAAQC,IAClC,IAAK,IAAIiC,KAAOf,UAAUlB,GAClBkB,UAAUlB,GAAGkX,eAAejV,KAC5Bf,UAAU,GAAGe,GAAOf,UAAUlB,GAAGiC,IAI7C,OAAOf,UAAU,EACrB,CAEA,SAASmT,IACL,IAAI8C,EACAJ,EAAK/Y,SAASI,cAAc,0BAC5BgZ,EAAc,CACd,WAAc,gBACd,YAAe,iBACf,cAAiB,gBACjB,iBAAoB,uBAGxB,IAAKD,KAAKC,EACN,QAAoB3W,IAAhBsW,EAAGxS,MAAM4S,GACT,OAAOC,EAAYD,EAG/B,CAMA,OA5bA5C,EAAMjW,UAAU4B,KAAO,WACnB,IAAIL,KAAK4V,MAcT,OAVAD,EAAO9U,KAAKb,MACZmW,EAAYtV,KAAKb,MAGjB7B,SAASkL,KAAKyI,aAAa9R,KAAK4V,MAAOzX,SAASkL,KAAKqG,YAEjD1P,KAAKqV,KAAKJ,QACVjV,KAAKwX,YAGFxX,IACX,EAEA0U,EAAMjW,UAAUgZ,MAAQ,SAASC,GAC7BjD,EAASiD,CACb,EAEAhD,EAAMjW,UAAUkZ,QAAU,WACtB,OAAOlD,CACX,EAEAC,EAAMjW,UAAUmZ,QAAU,WACH,OAAf5X,KAAK4V,QAKL5V,KAAK+W,UACL/W,KAAKsW,OAAM,GAIfc,EAAcvW,KAAKb,MAGnBA,KAAK4V,MAAM9J,WAAWtC,YAAYxJ,KAAK4V,OAEvC5V,KAAK4V,MAAQ,KACjB,EAEAlB,EAAMjW,UAAUsY,OAAS,WACrB,QAAS/W,KAAK4V,MAAM1Q,UAAUC,SAAS,wBAC3C,EAEAuP,EAAMjW,UAAUoZ,KAAO,WACnB,IAAG7X,KAAK2X,UAAR,CACA3X,KAAKyX,OAAM,GAEX,IAAInT,EAAOtE,KA4CX,MAzCoC,mBAAzBsE,EAAK+Q,KAAKP,YACjBxQ,EAAK+Q,KAAKP,aAGV9U,KAAK4V,MAAMlR,MAAMoT,eACjB9X,KAAK4V,MAAMlR,MAAMoT,eAAe,WAEhC9X,KAAK4V,MAAMlR,MAAMY,gBAAgB,WAIrCtF,KAAK+X,gBAAkB1Z,OAAOgS,YAC9BlS,SAASkL,KAAKnE,UAAUU,IAAI,kBAC5BzH,SAASkL,KAAK3E,MAAM0L,KAAOpQ,KAAK+X,gBAAkB,KAGlD/X,KAAKgY,gBAAgBhY,KAAKqV,KAAKL,cAG/BhV,KAAK4V,MAAM1Q,UAAUU,IAAI,yBAErB2O,EACAvU,KAAK4V,MAAM9K,iBAAiByJ,GAAiB,SAAS0D,IAClB,mBAArB3T,EAAK+Q,KAAKR,QACjBvQ,EAAK+Q,KAAKR,OAAOhU,KAAKyD,GAI1BA,EAAKsR,MAAMtK,oBAAoBiJ,EAAiB0D,GAAS,GACzD3T,EAAKmT,OAAM,EACf,IAAG,IAE6B,mBAArBnT,EAAK+Q,KAAKR,QACjBvQ,EAAK+Q,KAAKR,OAAOhU,KAAKyD,GAE1BA,EAAKmT,OAAM,IAIfzX,KAAK2W,gBAEE3W,IA/CkB,CAgD7B,EAEA0U,EAAMjW,UAAU6X,MAAQ,SAAS9Q,GAC7B,IAAGxF,KAAK2X,UAAR,CAKA,GAJA3X,KAAKyX,OAAM,GACXjS,EAAQA,IAAS,EAGoB,mBAA1BxF,KAAKqV,KAAKN,cACL/U,KAAKqV,KAAKN,YAAYlU,KAAKb,MAC3B,OAGhB7B,SAASkL,KAAKnE,UAAUW,OAAO,kBAC/BxH,OAAO6Z,SAAS,EAAGlY,KAAK+X,iBACxB5Z,SAASkL,KAAK3E,MAAM0L,IAAM,KAE1BpQ,KAAK4V,MAAM1Q,UAAUW,OAAO,yBAI5B,IAAIvB,EAAOtE,KAEPwF,GACAlB,EAAKsR,MAAMlR,MAAM6E,QAAU,OACM,mBAAtBjF,EAAK+Q,KAAKT,SACjBtQ,EAAK+Q,KAAKT,QAAQ/T,KAAKb,MAE3BsE,EAAKmT,OAAM,IACJlD,EAEPvU,KAAK4V,MAAM9K,iBAAiByJ,GAAiB,SAAS0D,IAElD3T,EAAKsR,MAAMtK,oBAAoBiJ,EAAiB0D,GAAS,GAEzD3T,EAAKsR,MAAMlR,MAAM6E,QAAU,OAGM,mBAAtBjF,EAAK+Q,KAAKT,SACjBtQ,EAAK+Q,KAAKT,QAAQ/T,KAAKb,MAG3BsE,EAAKmT,OAAM,EAEf,IAAG,IAEHnT,EAAKsR,MAAMlR,MAAM6E,QAAU,OAEM,mBAAtBjF,EAAK+Q,KAAKT,SACjBtQ,EAAK+Q,KAAKT,QAAQ/T,KAAKb,MAE3BsE,EAAKmT,OAAM,GAhDU,CAkD7B,EAEA/C,EAAMjW,UAAU0Z,WAAa,SAASC,GAclC,MAZuB,iBAAZA,EACPpY,KAAKiW,gBAAgB5G,UAAY+I,GAEjCpY,KAAKiW,gBAAgB5G,UAAY,GACjCrP,KAAKiW,gBAAgB3M,YAAY8O,IAGjCpY,KAAK+W,UAEL/W,KAAK2W,gBAGF3W,IACX,EAEA0U,EAAMjW,UAAU4Z,WAAa,WACzB,OAAOrY,KAAKiW,eAChB,EAEAvB,EAAMjW,UAAU+Y,UAAY,WAIxB,OAFAtB,EAAarV,KAAKb,MAEXA,IACX,EAEA0U,EAAMjW,UAAU6Z,iBAAmB,SAASF,GAIxC,OAFApY,KAAKuV,eAAelG,UAAY+I,EAEzBpY,IACX,EAEA0U,EAAMjW,UAAU8Z,iBAAmB,WAC/B,OAAOvY,KAAKuV,cAChB,EAEAb,EAAMjW,UAAUuZ,gBAAkB,SAASQ,GAyBvC,OAvBKxY,KAAKyY,eACND,GAAW,GAGXA,EACIxY,KAAKyV,SAAStQ,SAASnF,KAAKuV,kBAC5BvV,KAAKyV,SAASjM,YAAYxJ,KAAKuV,gBAC/BvV,KAAK4V,MAAMtM,YAAYtJ,KAAKuV,gBAC5BvV,KAAKuV,eAAerQ,UAAUU,IAAI,oCAClC0P,EAA2BzU,KAAKb,MAChCA,KAAKiW,gBAAgBvR,MAAM,kBAAoB1E,KAAKuV,eAAemD,aAAe,GAAK,MAEpF1Y,KAAKuV,iBACPvV,KAAKyV,SAAStQ,SAASnF,KAAKuV,kBAC7BvV,KAAK4V,MAAMpM,YAAYxJ,KAAKuV,gBAC5BvV,KAAKyV,SAASnM,YAAYtJ,KAAKuV,gBAC/BvV,KAAKuV,eAAe7Q,MAAM8Q,MAAQ,OAClCxV,KAAKuV,eAAe7Q,MAAM6L,KAAO,GACjCvQ,KAAKiW,gBAAgBvR,MAAM,kBAAoB,GAC/C1E,KAAKuV,eAAerQ,UAAUW,OAAO,sCAItC7F,IACX,EAGA0U,EAAMjW,UAAUka,aAAe,SAASC,EAAO1D,EAAUhU,GACrD,IAAI2X,EAAM1a,SAASI,cAAc,UAiBjC,OAdAsa,EAAIxJ,UAAYuJ,EAGhBC,EAAI/N,iBAAiB,QAAS5J,GAEN,iBAAbgU,GAAyBA,EAAShV,QAEzCgV,EAASvO,MAAM,KAAKkP,SAAQ,SAASxR,GACjCwU,EAAI3T,UAAUU,IAAIvB,EACtB,IAGJrE,KAAKuV,eAAejM,YAAYuP,GAEzBA,CACX,EAEAnE,EAAMjW,UAAUiY,OAAS,WAErBoC,QAAQC,KAAK,0DACjB,EAEArE,EAAMjW,UAAUga,WAAa,WACzB,IAAIO,EAAiB3a,OAAO4a,YAG5B,OAFkBjZ,KAAKyV,SAASiD,cAEVM,CAC1B,EAEAtE,EAAMjW,UAAUkY,cAAgB,WAExB3W,KAAK4V,MAAM1Q,UAAUC,SAAS,2BAC1BnF,KAAKyY,aACLzY,KAAK4V,MAAM1Q,UAAUU,IAAI,0BAEzB5F,KAAK4V,MAAM1Q,UAAUW,OAAO,2BAK3B7F,KAAKyY,cAAgBzY,KAAKqV,KAAKL,aAChChV,KAAKgY,iBAAgB,GACdhY,KAAKyY,cAAgBzY,KAAKqV,KAAKL,eACtCM,EAA2BzU,KAAKb,MAChCA,KAAKgY,iBAAgB,IAGjC,EA4KO,CACHpC,MAAOlB,EAGf,OAnesB,+FCRtB,IAAIwE,EAAc,GAElB,SAASC,EAAqBC,GAG5B,IAFA,IAAItI,GAAU,EAEL3Q,EAAI,EAAGA,EAAI+Y,EAAYhZ,OAAQC,IACtC,GAAI+Y,EAAY/Y,GAAGiZ,aAAeA,EAAY,CAC5CtI,EAAS3Q,EACT,KACF,CAGF,OAAO2Q,CACT,CAEA,SAASuI,EAAaC,EAAM7M,GAI1B,IAHA,IAAI8M,EAAa,CAAC,EACdC,EAAc,GAETrZ,EAAI,EAAGA,EAAImZ,EAAKpZ,OAAQC,IAAK,CACpC,IAAIkE,EAAOiV,EAAKnZ,GACZsZ,EAAKhN,EAAQiN,KAAOrV,EAAK,GAAKoI,EAAQiN,KAAOrV,EAAK,GAClDsV,EAAQJ,EAAWE,IAAO,EAC1BL,EAAa,GAAGnT,OAAOwT,EAAI,KAAKxT,OAAO0T,GAC3CJ,EAAWE,GAAME,EAAQ,EACzB,IAAIC,EAAoBT,EAAqBC,GACzCS,EAAM,CACRlS,IAAKtD,EAAK,GACVyV,MAAOzV,EAAK,GACZ0V,UAAW1V,EAAK,GAChB2V,SAAU3V,EAAK,GACf4V,MAAO5V,EAAK,IAGd,IAA2B,IAAvBuV,EACFV,EAAYU,GAAmBM,aAC/BhB,EAAYU,GAAmBO,QAAQN,OAClC,CACL,IAAIM,EAAUC,EAAgBP,EAAKpN,GACnCA,EAAQ4N,QAAUla,EAClB+Y,EAAY1Y,OAAOL,EAAG,EAAG,CACvBiZ,WAAYA,EACZe,QAASA,EACTD,WAAY,GAEhB,CAEAV,EAAY1W,KAAKsW,EACnB,CAEA,OAAOI,CACT,CAEA,SAASY,EAAgBP,EAAKpN,GAC5B,IAAI6N,EAAM7N,EAAQ8N,OAAO9N,GACzB6N,EAAIE,OAAOX,GAcX,OAZc,SAAiBY,GAC7B,GAAIA,EAAQ,CACV,GAAIA,EAAO9S,MAAQkS,EAAIlS,KAAO8S,EAAOX,QAAUD,EAAIC,OAASW,EAAOV,YAAcF,EAAIE,WAAaU,EAAOT,WAAaH,EAAIG,UAAYS,EAAOR,QAAUJ,EAAII,MACzJ,OAGFK,EAAIE,OAAOX,EAAMY,EACnB,MACEH,EAAIzU,QAER,CAGF,CAEAuO,EAAOC,QAAU,SAAUiF,EAAM7M,GAG/B,IAAIiO,EAAkBrB,EADtBC,EAAOA,GAAQ,GADf7M,EAAUA,GAAW,CAAC,GAGtB,OAAO,SAAgBkO,GACrBA,EAAUA,GAAW,GAErB,IAAK,IAAIxa,EAAI,EAAGA,EAAIua,EAAgBxa,OAAQC,IAAK,CAC/C,IACIQ,EAAQwY,EADKuB,EAAgBva,IAEjC+Y,EAAYvY,GAAOuZ,YACrB,CAIA,IAFA,IAAIU,EAAqBvB,EAAasB,EAASlO,GAEtCoH,EAAK,EAAGA,EAAK6G,EAAgBxa,OAAQ2T,IAAM,CAClD,IAEIgH,EAAS1B,EAFKuB,EAAgB7G,IAIK,IAAnCqF,EAAY2B,GAAQX,aACtBhB,EAAY2B,GAAQV,UAEpBjB,EAAY1Y,OAAOqa,EAAQ,GAE/B,CAEAH,EAAkBE,CACpB,CACF,wBCrGA,IAAIE,EAAO,CAAC,EAoCZ1G,EAAOC,QAVP,SAA0B0G,EAAQrW,GAChC,IAAIzC,EAxBN,SAAmBA,GACjB,QAA4B,IAAjB6Y,EAAK7Y,GAAyB,CACvC,IAAI+Y,EAAc7c,SAAS8c,cAAchZ,GAEzC,GAAI5D,OAAO6c,mBAAqBF,aAAuB3c,OAAO6c,kBAC5D,IAGEF,EAAcA,EAAYhK,gBAAgBmK,IAI5C,CAHE,MAAO7S,GAEP0S,EAAc,IAChB,CAGFF,EAAK7Y,GAAU+Y,CACjB,CAEA,OAAOF,EAAK7Y,EACd,CAKemZ,CAAUL,GAEvB,IAAK9Y,EACH,MAAM,IAAIoZ,MAAM,2GAGlBpZ,EAAOqH,YAAY5E,EACrB,wBC1BA0P,EAAOC,QAPP,SAA4B5H,GAC1B,IAAI6O,EAAUnd,SAASI,cAAc,SAGrC,OAFAkO,EAAQ8O,cAAcD,EAAS7O,EAAQ9D,YACvC8D,EAAQsO,OAAOO,EAAS7O,EAAQA,SACzB6O,CACT,8BCGAlH,EAAOC,QARP,SAAwCmH,GACtC,IAAIC,EAAmD,KAEnDA,GACFD,EAAarX,aAAa,QAASsX,EAEvC,wBC4DArH,EAAOC,QAZP,SAAgB5H,GACd,IAAI+O,EAAe/O,EAAQiP,mBAAmBjP,GAC9C,MAAO,CACL+N,OAAQ,SAAgBX,IAzD5B,SAAe2B,EAAc/O,EAASoN,GACpC,IAAIlS,EAAM,GAENkS,EAAIG,WACNrS,GAAO,cAAc1B,OAAO4T,EAAIG,SAAU,QAGxCH,EAAIC,QACNnS,GAAO,UAAU1B,OAAO4T,EAAIC,MAAO,OAGrC,IAAI6B,OAAiC,IAAd9B,EAAII,MAEvB0B,IACFhU,GAAO,SAAS1B,OAAO4T,EAAII,MAAM/Z,OAAS,EAAI,IAAI+F,OAAO4T,EAAII,OAAS,GAAI,OAG5EtS,GAAOkS,EAAIlS,IAEPgU,IACFhU,GAAO,KAGLkS,EAAIC,QACNnS,GAAO,KAGLkS,EAAIG,WACNrS,GAAO,KAGT,IAAIoS,EAAYF,EAAIE,UAEhBA,GAA6B,oBAAT6B,OACtBjU,GAAO,uDAAuD1B,OAAO2V,KAAKC,SAASpO,mBAAmBrF,KAAK0T,UAAU/B,MAAe,QAMtItN,EAAQsP,kBAAkBpU,EAAK6T,EAAc/O,EAAQA,QACvD,CAiBMrL,CAAMoa,EAAc/O,EAASoN,EAC/B,EACAhU,OAAQ,YAjBZ,SAA4B2V,GAE1B,GAAgC,OAA5BA,EAAa1P,WACf,OAAO,EAGT0P,EAAa1P,WAAWtC,YAAYgS,EACtC,CAWMQ,CAAmBR,EACrB,EAEJ,wBCpDApH,EAAOC,QAZP,SAA2B1M,EAAK6T,GAC9B,GAAIA,EAAaS,WACfT,EAAaS,WAAWC,QAAUvU,MAC7B,CACL,KAAO6T,EAAa9L,YAClB8L,EAAahS,YAAYgS,EAAa9L,YAGxC8L,EAAalS,YAAYnL,SAASge,eAAexU,GACnD,CACF,ICZIyU,yBAA2B,CAAC,EAGhC,SAASC,oBAAoBC,GAE5B,IAAIC,EAAeH,yBAAyBE,GAC5C,QAAqB1b,IAAjB2b,EACH,OAAOA,EAAalI,QAGrB,IAAID,EAASgI,yBAAyBE,GAAY,CAGjDjI,QAAS,CAAC,GAOX,OAHAmI,oBAAoBF,GAAUzb,KAAKuT,EAAOC,QAASD,EAAQA,EAAOC,QAASgI,qBAGpEjI,EAAOC,OACf,CCrBAgI,oBAAoBI,EAAKrI,IACxB,IAAIsI,EAAStI,GAAUA,EAAOuI,WAC7B,IAAOvI,EAAiB,QACxB,IAAM,EAEP,OADAiI,oBAAoBO,EAAEF,EAAQ,CAAErX,EAAGqX,IAC5BA,CAAM,ECLdL,oBAAoBO,EAAI,CAACvI,EAASwI,KACjC,IAAI,IAAIza,KAAOya,EACXR,oBAAoBS,EAAED,EAAYza,KAASia,oBAAoBS,EAAEzI,EAASjS,IAC5E4J,OAAOC,eAAeoI,EAASjS,EAAK,CAAE2a,YAAY,EAAMrc,IAAKmc,EAAWza,IAE1E,ECNDia,oBAAoBS,EAAI,CAACjD,EAAKvX,IAAU0J,OAAOvN,UAAU4Y,eAAexW,KAAKgZ,EAAKvX,GCAlF+Z,oBAAoBW,QAAKpc,2LCElB,SAASqc,IACZtR,MAAMS,iBACNT,MAAMuR,2BAENC,GAAGC,OAAM,SAAUC,GACXA,EAASC,aACTC,EAAAA,EAAAA,KAAOC,UAAU,SAAUrd,EAAG2c,GAC1BA,GACJ,IAEAhE,QAAQ2E,IAAI,mDAEpB,GAAG,CAAC,GA+BJ,OA3BIN,GAAG7C,IAAI,mDAAmD,SAAU+C,GAIhEE,EAAAA,EAAAA,KAAOF,EAAS5U,MAAM,SAAUtI,EAAGud,GACfA,EAAKC,UAArB,IAEI3O,GAAOuO,EAAAA,EAAAA,GAAE,gGACyDG,EAAKjE,GAD9D,oKAG+DiE,EAAKhV,KAHpE,4FAIsEkV,SAAW,MAAQ,IAAM,qBAAuBF,EAAKjE,GAJ3H,mDAOb8D,EAAAA,EAAAA,GAAE,iCAAiCrL,OAAOlD,EAO9C,GACJ,KAKG,CACX,CAEO,SAAS6O,EAAgBpE,GAC5B9N,MAAMS,iBACNT,MAAMuR,2BAEN,IAAIY,EAAkB,SAAUT,GAC5B,IAAIU,EAAYV,EAASW,QAGzBC,SAASC,MAAQN,SAAW,MAAQ,IAAM,+BAAiCnE,EAAK,YAAcsE,CAClG,EAcA,OAZAZ,GAAGC,OAAM,SAAUC,GACXA,EAASC,aACTH,GAAGgB,GAAG,CACFC,OAAQ,cACRC,QAAS,uBACTC,GAAI7E,GACLqE,GAEHhF,QAAQ2E,IAAI,mDAEpB,KAEO,CACX,+XC7DIhR,EAAU,CAAC,EAEfA,EAAQsP,kBAAoB,IAC5BtP,EAAQ8O,cAAgB,IAElB9O,EAAQsO,OAAS,SAAc,KAAM,QAE3CtO,EAAQ8N,OAAS,IACjB9N,EAAQiP,mBAAqB,IAEhB,IAAI,IAASjP,GAKJ,KAAW,YAAiB,WCrBlD,IAAIrO,EAAMC,OACVD,EAAImgB,OAASngB,EAAImf,EAAIhe,IACrBge,EAAEpf,UAAU8B,OAAM,WACdsd,EAAE,eAAezb,MAAK,SAAUnB,EAAO2a,GACnCiC,EAAEjC,GAAS/P,GAAG,SAAS,WACnB,IAAI6M,EAAUmF,EAAE,IAAMA,EAAEvd,MAAMgE,KAAK,cAActD,IAAI,GACjDkV,EAAQ,IAAI4I,IAAAA,OAChB1F,QAAQ2E,IAAIrF,GACZxC,EAAMuC,WAAWC,GACjBxC,EAAMiC,MACV,GACJ,IACA0F,EAAE,kBAAkBhS,GAAG,QAASkT,GAChClB,EAAE,oBAAoBhS,GAAG,QAASkT,EACtC","sources":["webpack://kapok.ccx.game/./node_modules/cash-dom/dist/cash.esm.js","webpack://kapok.ccx.game/./node_modules/cash-dom/dist/cash.js","webpack://kapok.ccx.game/./node_modules/tingle.js/dist/tingle.js","webpack://kapok.ccx.game/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://kapok.ccx.game/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://kapok.ccx.game/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://kapok.ccx.game/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://kapok.ccx.game/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://kapok.ccx.game/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://kapok.ccx.game/webpack/bootstrap","webpack://kapok.ccx.game/webpack/runtime/compat get default export","webpack://kapok.ccx.game/webpack/runtime/define property getters","webpack://kapok.ccx.game/webpack/runtime/hasOwnProperty shorthand","webpack://kapok.ccx.game/webpack/runtime/nonce","webpack://kapok.ccx.game/./src/js/csfb.js","webpack://kapok.ccx.game/./src/sass/index.scss","webpack://kapok.ccx.game/./src/js/index.js"],"sourcesContent":["/* MIT https://github.com/kenwheeler/cash */\nconst doc = document, win = window, div = doc.createElement('div'), { filter, indexOf, map, push, reverse, slice, some, splice } = Array.prototype;\nconst idRe = /^#[\\w-]*$/, classRe = /^\\.[\\w-]*$/, htmlRe = /<.+>/, tagRe = /^\\w+$/;\n// @require ./variables.ts\nfunction find(selector, context = doc) {\n return context !== doc && context.nodeType !== 1 && context.nodeType !== 9\n ? []\n : classRe.test(selector)\n ? context.getElementsByClassName(selector.slice(1))\n : tagRe.test(selector)\n ? context.getElementsByTagName(selector)\n : context.querySelectorAll(selector);\n}\n// @require ./find.ts\n// @require ./variables.ts\nclass Cash {\n constructor(selector, context = doc) {\n if (!selector)\n return;\n if (isCash(selector))\n return selector;\n let eles = selector;\n if (isString(selector)) {\n const ctx = isCash(context) ? context[0] : context;\n eles = idRe.test(selector)\n ? ctx.getElementById(selector.slice(1))\n : htmlRe.test(selector)\n ? parseHTML(selector)\n : find(selector, ctx);\n if (!eles)\n return;\n }\n else if (isFunction(selector)) {\n return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality\n }\n if (eles.nodeType || eles === win)\n eles = [eles];\n this.length = eles.length;\n for (let i = 0, l = this.length; i < l; i++) {\n this[i] = eles[i];\n }\n }\n init(selector, context) {\n return new Cash(selector, context);\n }\n}\nconst cash = Cash.prototype.init;\ncash.fn = cash.prototype = Cash.prototype; // Ensuring that `cash () instanceof cash`\nCash.prototype.length = 0;\nCash.prototype.splice = splice; // Ensuring a cash collection gets printed as array-like in Chrome\nif (typeof Symbol === 'function') {\n Cash.prototype[Symbol['iterator']] = Array.prototype[Symbol['iterator']];\n}\nCash.prototype.get = function (index) {\n if (index === undefined)\n return slice.call(this);\n return this[index < 0 ? index + this.length : index];\n};\nCash.prototype.eq = function (index) {\n return cash(this.get(index));\n};\nCash.prototype.first = function () {\n return this.eq(0);\n};\nCash.prototype.last = function () {\n return this.eq(-1);\n};\nCash.prototype.map = function (callback) {\n return cash(map.call(this, (ele, i) => callback.call(ele, i, ele)));\n};\nCash.prototype.slice = function () {\n return cash(slice.apply(this, arguments));\n};\n// @require ./cash.ts\nconst dashAlphaRe = /-([a-z])/g;\nfunction camelCaseReplace(all, letter) {\n return letter.toUpperCase();\n}\nfunction camelCase(str) {\n return str.replace(dashAlphaRe, camelCaseReplace);\n}\ncash.camelCase = camelCase;\n// @require ./cash.ts\nfunction each(arr, callback) {\n for (let i = 0, l = arr.length; i < l; i++) {\n if (callback.call(arr[i], i, arr[i]) === false)\n break;\n }\n}\ncash.each = each;\nCash.prototype.each = function (callback) {\n each(this, callback);\n return this;\n};\nCash.prototype.removeProp = function (prop) {\n return this.each((i, ele) => { delete ele[prop]; });\n};\n// @require ./cash.ts\nfunction extend(target, ...objs) {\n let args = arguments, length = args.length;\n for (let i = (length < 2 ? 0 : 1); i < length; i++) {\n for (let key in args[i]) {\n target[key] = args[i][key];\n }\n }\n return target;\n}\nCash.prototype.extend = function (plugins) {\n return extend(cash.fn, plugins);\n};\ncash.extend = extend;\n// @require ./cash.ts\nlet guid = 1;\ncash.guid = guid;\n// @require ./cash.ts\nfunction matches(ele, selector) {\n const matches = ele && (ele.matches || ele['webkitMatchesSelector'] || ele['mozMatchesSelector'] || ele['msMatchesSelector'] || ele['oMatchesSelector']);\n return !!matches && matches.call(ele, selector);\n}\ncash.matches = matches;\n// @require ./variables.ts\nfunction pluck(arr, prop, deep) {\n const plucked = [];\n for (let i = 0, l = arr.length; i < l; i++) {\n let val = arr[i][prop];\n while (val != null) {\n plucked.push(val);\n if (!deep)\n break;\n val = val[prop];\n }\n }\n return plucked;\n}\n// @require ./cash.ts\nfunction isCash(x) {\n return x instanceof Cash;\n}\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nfunction isString(x) {\n return typeof x === 'string';\n}\nfunction isNumeric(x) {\n return !isNaN(parseFloat(x)) && isFinite(x);\n}\nconst { isArray } = Array;\ncash.isFunction = isFunction;\ncash.isString = isString;\ncash.isNumeric = isNumeric;\ncash.isArray = isArray;\nCash.prototype.prop = function (prop, value) {\n if (!prop)\n return;\n if (isString(prop)) {\n if (arguments.length < 2)\n return this[0] && this[0][prop];\n return this.each((i, ele) => { ele[prop] = value; });\n }\n for (let key in prop) {\n this.prop(key, prop[key]);\n }\n return this;\n};\n// @require ./matches.ts\n// @require ./type_checking.ts\nfunction getCompareFunction(comparator) {\n return isString(comparator)\n ? (i, ele) => matches(ele, comparator)\n : isFunction(comparator)\n ? comparator\n : isCash(comparator)\n ? (i, ele) => comparator.is(ele)\n : (i, ele) => ele === comparator;\n}\nCash.prototype.filter = function (comparator) {\n if (!comparator)\n return cash();\n const compare = getCompareFunction(comparator);\n return cash(filter.call(this, (ele, i) => compare.call(ele, i, ele)));\n};\n// @require collection/filter.ts\nfunction filtered(collection, comparator) {\n return !comparator || !collection.length ? collection : collection.filter(comparator);\n}\n// @require ./type_checking.ts\nconst splitValuesRe = /\\S+/g;\nfunction getSplitValues(str) {\n return isString(str) ? str.match(splitValuesRe) || [] : [];\n}\nCash.prototype.hasClass = function (cls) {\n return cls && some.call(this, ele => ele.classList.contains(cls));\n};\nCash.prototype.removeAttr = function (attr) {\n const attrs = getSplitValues(attr);\n if (!attrs.length)\n return this;\n return this.each((i, ele) => {\n each(attrs, (i, a) => {\n ele.removeAttribute(a);\n });\n });\n};\nfunction attr(attr, value) {\n if (!attr)\n return;\n if (isString(attr)) {\n if (arguments.length < 2) {\n if (!this[0])\n return;\n const value = this[0].getAttribute(attr);\n return value === null ? undefined : value;\n }\n if (value === null)\n return this.removeAttr(attr);\n return this.each((i, ele) => { ele.setAttribute(attr, value); });\n }\n for (let key in attr) {\n this.attr(key, attr[key]);\n }\n return this;\n}\nCash.prototype.attr = attr;\nCash.prototype.toggleClass = function (cls, force) {\n const classes = getSplitValues(cls), isForce = (force !== undefined);\n if (!classes.length)\n return this;\n return this.each((i, ele) => {\n each(classes, (i, c) => {\n if (isForce) {\n force ? ele.classList.add(c) : ele.classList.remove(c);\n }\n else {\n ele.classList.toggle(c);\n }\n });\n });\n};\nCash.prototype.addClass = function (cls) {\n return this.toggleClass(cls, true);\n};\nCash.prototype.removeClass = function (cls) {\n return !arguments.length ? this.attr('class', '') : this.toggleClass(cls, false);\n};\n// @optional ./add_class.ts\n// @optional ./attr.ts\n// @optional ./has_class.ts\n// @optional ./prop.ts\n// @optional ./remove_attr.ts\n// @optional ./remove_class.ts\n// @optional ./remove_prop.ts\n// @optional ./toggle_class.ts\n// @require ./cash.ts\n// @require ./variables\nfunction unique(arr) {\n return arr.length > 1 ? filter.call(arr, (item, index, self) => indexOf.call(self, item) === index) : arr;\n}\ncash.unique = unique;\nCash.prototype.add = function (selector, context) {\n return cash(unique(this.get().concat(cash(selector, context).get())));\n};\n// @require core/variables.ts\nfunction computeStyle(ele, prop, isVariable) {\n if (ele.nodeType !== 1 || !prop)\n return;\n const style = win.getComputedStyle(ele, null);\n return prop ? (isVariable ? style.getPropertyValue(prop) || undefined : style[prop]) : style;\n}\n// @require ./compute_style.ts\nfunction computeStyleInt(ele, prop) {\n return parseInt(computeStyle(ele, prop), 10) || 0;\n}\nconst cssVariableRe = /^--/;\n// @require ./variables.ts\nfunction isCSSVariable(prop) {\n return cssVariableRe.test(prop);\n}\n// @require core/camel_case.ts\n// @require core/cash.ts\n// @require core/each.ts\n// @require core/variables.ts\n// @require ./is_css_variable.ts\nconst prefixedProps = {}, { style } = div, vendorsPrefixes = ['webkit', 'moz', 'ms', 'o'];\nfunction getPrefixedProp(prop, isVariable = isCSSVariable(prop)) {\n if (isVariable)\n return prop;\n if (!prefixedProps[prop]) {\n const propCC = camelCase(prop), propUC = `${propCC.charAt(0).toUpperCase()}${propCC.slice(1)}`, props = (`${propCC} ${vendorsPrefixes.join(`${propUC} `)}${propUC}`).split(' ');\n each(props, (i, p) => {\n if (p in style) {\n prefixedProps[prop] = p;\n return false;\n }\n });\n }\n return prefixedProps[prop];\n}\n;\ncash.prefixedProp = getPrefixedProp;\n// @require core/type_checking.ts\n// @require ./is_css_variable.ts\nconst numericProps = {\n animationIterationCount: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true\n};\nfunction getSuffixedValue(prop, value, isVariable = isCSSVariable(prop)) {\n return !isVariable && !numericProps[prop] && isNumeric(value) ? `${value}px` : value;\n}\nfunction css(prop, value) {\n if (isString(prop)) {\n const isVariable = isCSSVariable(prop);\n prop = getPrefixedProp(prop, isVariable);\n if (arguments.length < 2)\n return this[0] && computeStyle(this[0], prop, isVariable);\n if (!prop)\n return this;\n value = getSuffixedValue(prop, value, isVariable);\n return this.each((i, ele) => {\n if (ele.nodeType !== 1)\n return;\n if (isVariable) {\n ele.style.setProperty(prop, value);\n }\n else {\n ele.style[prop] = value; //TSC\n }\n });\n }\n for (let key in prop) {\n this.css(key, prop[key]);\n }\n return this;\n}\n;\nCash.prototype.css = css;\n// @optional ./css.ts\nconst dataNamespace = '__cashData', dataAttributeRe = /^data-(.*)/;\n// @require core/cash.ts\n// @require ./helpers/variables.ts\nfunction hasData(ele) {\n return dataNamespace in ele;\n}\ncash.hasData = hasData;\n// @require ./variables.ts\nfunction getDataCache(ele) {\n return ele[dataNamespace] = (ele[dataNamespace] || {});\n}\n// @require attributes/attr.ts\n// @require ./get_data_cache.ts\nfunction getData(ele, key) {\n const cache = getDataCache(ele);\n if (key) {\n if (!(key in cache)) {\n let value = ele.dataset ? ele.dataset[key] || ele.dataset[camelCase(key)] : cash(ele).attr(`data-${key}`);\n if (value !== undefined) {\n try {\n value = JSON.parse(value);\n }\n catch (e) { }\n cache[key] = value;\n }\n }\n return cache[key];\n }\n return cache;\n}\n// @require ./variables.ts\n// @require ./get_data_cache.ts\nfunction removeData(ele, key) {\n if (key === undefined) {\n delete ele[dataNamespace];\n }\n else {\n delete getDataCache(ele)[key];\n }\n}\n// @require ./get_data_cache.ts\nfunction setData(ele, key, value) {\n getDataCache(ele)[key] = value;\n}\nfunction data(name, value) {\n if (!name) {\n if (!this[0])\n return;\n each(this[0].attributes, (i, attr) => {\n const match = attr.name.match(dataAttributeRe);\n if (!match)\n return;\n this.data(match[1]);\n });\n return getData(this[0]);\n }\n if (isString(name)) {\n if (value === undefined)\n return this[0] && getData(this[0], name);\n return this.each((i, ele) => setData(ele, name, value));\n }\n for (let key in name) {\n this.data(key, name[key]);\n }\n return this;\n}\nCash.prototype.data = data;\nCash.prototype.removeData = function (key) {\n return this.each((i, ele) => removeData(ele, key));\n};\n// @optional ./data.ts\n// @optional ./remove_data.ts\n// @require css/helpers/compute_style_int.ts\nfunction getExtraSpace(ele, xAxis) {\n return computeStyleInt(ele, `border${xAxis ? 'Left' : 'Top'}Width`) + computeStyleInt(ele, `padding${xAxis ? 'Left' : 'Top'}`) + computeStyleInt(ele, `padding${xAxis ? 'Right' : 'Bottom'}`) + computeStyleInt(ele, `border${xAxis ? 'Right' : 'Bottom'}Width`);\n}\neach(['Width', 'Height'], (i, prop) => {\n Cash.prototype[`inner${prop}`] = function () {\n if (!this[0])\n return;\n if (this[0] === win)\n return win[`inner${prop}`];\n return this[0][`client${prop}`];\n };\n});\neach(['width', 'height'], (index, prop) => {\n Cash.prototype[prop] = function (value) {\n if (!this[0])\n return value === undefined ? undefined : this;\n if (!arguments.length) {\n if (this[0] === win)\n return this[0][camelCase(`outer-${prop}`)];\n return this[0].getBoundingClientRect()[prop] - getExtraSpace(this[0], !index);\n }\n const valueNumber = parseInt(value, 10);\n return this.each((i, ele) => {\n if (ele.nodeType !== 1)\n return;\n const boxSizing = computeStyle(ele, 'boxSizing');\n ele.style[prop] = getSuffixedValue(prop, valueNumber + (boxSizing === 'border-box' ? getExtraSpace(ele, !index) : 0));\n });\n };\n});\neach(['Width', 'Height'], (index, prop) => {\n Cash.prototype[`outer${prop}`] = function (includeMargins) {\n if (!this[0])\n return;\n if (this[0] === win)\n return win[`outer${prop}`];\n return this[0][`offset${prop}`] + (includeMargins ? computeStyleInt(this[0], `margin${!index ? 'Left' : 'Top'}`) + computeStyleInt(this[0], `margin${!index ? 'Right' : 'Bottom'}`) : 0);\n };\n});\n// @optional ./inner.ts\n// @optional ./normal.ts\n// @optional ./outer.ts\n// @require css/helpers/compute_style.ts\nconst defaultDisplay = {};\nfunction getDefaultDisplay(tagName) {\n if (defaultDisplay[tagName])\n return defaultDisplay[tagName];\n const ele = doc.createElement(tagName);\n doc.body.appendChild(ele);\n const display = computeStyle(ele, 'display');\n doc.body.removeChild(ele);\n return defaultDisplay[tagName] = display !== 'none' ? display : 'block';\n}\n// @require css/helpers/compute_style.ts\nfunction isHidden(ele) {\n return computeStyle(ele, 'display') === 'none';\n}\nCash.prototype.toggle = function (force) {\n return this.each((i, ele) => {\n force = force !== undefined ? force : isHidden(ele);\n if (force) {\n ele.style.display = '';\n if (isHidden(ele)) {\n ele.style.display = getDefaultDisplay(ele.tagName);\n }\n }\n else {\n ele.style.display = 'none';\n }\n });\n};\nCash.prototype.hide = function () {\n return this.toggle(false);\n};\nCash.prototype.show = function () {\n return this.toggle(true);\n};\n// @optional ./hide.ts\n// @optional ./show.ts\n// @optional ./toggle.ts\nfunction hasNamespaces(ns1, ns2) {\n return !ns2 || !some.call(ns2, ns => ns1.indexOf(ns) < 0);\n}\nconst eventsNamespace = '__cashEvents', eventsNamespacesSeparator = '.', eventsFocus = { focus: 'focusin', blur: 'focusout' }, eventsHover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }, eventsMouseRe = /^(?:mouse|pointer|contextmenu|drag|drop|click|dblclick)/i;\n// @require ./variables.ts\nfunction getEventNameBubbling(name) {\n return eventsHover[name] || eventsFocus[name] || name;\n}\n// @require ./variables.ts\nfunction getEventsCache(ele) {\n return ele[eventsNamespace] = (ele[eventsNamespace] || {});\n}\n// @require core/guid.ts\n// @require events/helpers/get_events_cache.ts\nfunction addEvent(ele, name, namespaces, selector, callback) {\n callback['guid'] = (callback['guid'] || guid++);\n const eventCache = getEventsCache(ele);\n eventCache[name] = (eventCache[name] || []);\n eventCache[name].push([namespaces, selector, callback]);\n ele.addEventListener(name, callback); //TSC\n}\n// @require ./variables.ts\nfunction parseEventName(eventName) {\n const parts = eventName.split(eventsNamespacesSeparator);\n return [parts[0], parts.slice(1).sort()]; // [name, namespace[]]\n}\n// @require ./get_events_cache.ts\n// @require ./has_namespaces.ts\n// @require ./parse_event_name.ts\nfunction removeEvent(ele, name, namespaces, selector, callback) {\n const cache = getEventsCache(ele);\n if (!name) {\n for (name in cache) {\n removeEvent(ele, name, namespaces, selector, callback);\n }\n delete ele[eventsNamespace];\n }\n else if (cache[name]) {\n cache[name] = cache[name].filter(([ns, sel, cb]) => {\n if ((callback && cb['guid'] !== callback['guid']) || !hasNamespaces(ns, namespaces) || (selector && selector !== sel))\n return true;\n ele.removeEventListener(name, cb);\n });\n }\n}\nCash.prototype.off = function (eventFullName, selector, callback) {\n if (eventFullName === undefined) {\n this.each((i, ele) => removeEvent(ele));\n }\n else {\n if (isFunction(selector)) {\n callback = selector;\n selector = '';\n }\n each(getSplitValues(eventFullName), (i, eventFullName) => {\n const [name, namespaces] = parseEventName(getEventNameBubbling(eventFullName));\n this.each((i, ele) => removeEvent(ele, name, namespaces, selector, callback)); //TSC\n });\n }\n return this;\n};\nfunction on(eventFullName, selector, callback, _one) {\n if (!isString(eventFullName)) {\n for (let key in eventFullName) {\n this.on(key, selector, eventFullName[key]);\n }\n return this;\n }\n if (isFunction(selector)) {\n callback = selector;\n selector = '';\n }\n each(getSplitValues(eventFullName), (i, eventFullName) => {\n const [name, namespaces] = parseEventName(getEventNameBubbling(eventFullName));\n this.each((i, ele) => {\n const finalCallback = function (event) {\n if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator)))\n return;\n let thisArg = ele;\n if (selector) {\n let target = event.target;\n while (!matches(target, selector)) { //TSC\n if (target === ele)\n return;\n target = target.parentNode;\n if (!target)\n return;\n }\n thisArg = target;\n event.__delegate = true;\n }\n if (event.__delegate) {\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n get() {\n return thisArg;\n }\n });\n }\n const returnValue = callback.call(thisArg, event, event.data); //TSC\n if (_one) {\n removeEvent(ele, name, namespaces, selector, finalCallback); //TSC\n }\n if (returnValue === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n finalCallback['guid'] = callback['guid'] = (callback['guid'] || guid++);\n addEvent(ele, name, namespaces, selector, finalCallback); //TSC\n });\n });\n return this;\n}\nCash.prototype.on = on;\nfunction one(eventFullName, selector, callback) {\n return this.on(eventFullName, selector, callback, true); //TSC\n}\n;\nCash.prototype.one = one;\nCash.prototype.ready = function (callback) {\n const finalCallback = () => callback(cash);\n if (doc.readyState !== 'loading') {\n setTimeout(finalCallback);\n }\n else {\n doc.addEventListener('DOMContentLoaded', finalCallback);\n }\n return this;\n};\nCash.prototype.trigger = function (eventFullName, data) {\n let evt = eventFullName;\n if (isString(eventFullName)) {\n const [name, namespaces] = parseEventName(eventFullName), type = eventsMouseRe.test(name) ? 'MouseEvents' : 'HTMLEvents';\n evt = doc.createEvent(type);\n evt.initEvent(name, true, true);\n evt['namespace'] = namespaces.join(eventsNamespacesSeparator);\n }\n evt['data'] = data;\n const isEventFocus = (evt['type'] in eventsFocus);\n return this.each((i, ele) => {\n if (isEventFocus && isFunction(ele[evt['type']])) {\n ele[evt['type']]();\n }\n else {\n ele.dispatchEvent(evt);\n }\n });\n};\n// @optional ./off.ts\n// @optional ./on.ts\n// @optional ./one.ts\n// @optional ./ready.ts\n// @optional ./trigger.ts\n// @require core/pluck.ts\n// @require core/variables.ts\nfunction getValue(ele) {\n if (ele.multiple)\n return pluck(filter.call(ele.options, option => option.selected && !option.disabled && !option.parentNode.disabled), 'value');\n return ele.value || '';\n}\nconst queryEncodeSpaceRe = /%20/g;\nfunction queryEncode(prop, value) {\n return `&${encodeURIComponent(prop)}=${encodeURIComponent(value).replace(queryEncodeSpaceRe, '+')}`;\n}\n// @require core/cash.ts\n// @require core/each.ts\n// @require core/type_checking.ts\n// @require ./helpers/get_value.ts\n// @require ./helpers/query_encode.ts\nconst skippableRe = /file|reset|submit|button|image/i, checkableRe = /radio|checkbox/i;\nCash.prototype.serialize = function () {\n let query = '';\n this.each((i, ele) => {\n each(ele.elements || [ele], (i, ele) => {\n if (ele.disabled || !ele.name || ele.tagName === 'FIELDSET' || skippableRe.test(ele.type) || (checkableRe.test(ele.type) && !ele.checked))\n return;\n const value = getValue(ele);\n if (value === undefined)\n return;\n const values = isArray(value) ? value : [value];\n each(values, (i, value) => {\n query += queryEncode(ele.name, value);\n });\n });\n });\n return query.substr(1);\n};\nfunction val(value) {\n if (value === undefined)\n return this[0] && getValue(this[0]);\n return this.each((i, ele) => {\n if (ele.tagName === 'SELECT') {\n const eleValue = isArray(value) ? value : (value === null ? [] : [value]);\n each(ele.options, (i, option) => {\n option.selected = eleValue.indexOf(option.value) >= 0;\n });\n }\n else {\n ele.value = value === null ? '' : value;\n }\n });\n}\nCash.prototype.val = val;\nCash.prototype.clone = function () {\n return this.map((i, ele) => ele.cloneNode(true));\n};\nCash.prototype.detach = function () {\n return this.each((i, ele) => {\n if (ele.parentNode) {\n ele.parentNode.removeChild(ele);\n }\n });\n};\n// @require ./cash.ts\n// @require ./variables.ts\n// @require ./type_checking.ts\n// @require collection/get.ts\n// @require manipulation/detach.ts\nconst fragmentRe = /^\\s*<(\\w+)[^>]*>/, singleTagRe = /^\\s*<(\\w+)\\s*\\/?>(?:<\\/\\1>)?\\s*$/;\nlet containers;\nfunction initContainers() {\n if (containers)\n return;\n const table = doc.createElement('table'), tr = doc.createElement('tr');\n containers = {\n '*': div,\n tr: doc.createElement('tbody'),\n td: tr,\n th: tr,\n thead: table,\n tbody: table,\n tfoot: table,\n };\n}\nfunction parseHTML(html) {\n initContainers();\n if (!isString(html))\n return [];\n if (singleTagRe.test(html))\n return [doc.createElement(RegExp.$1)];\n const fragment = fragmentRe.test(html) && RegExp.$1, container = containers[fragment] || containers['*'];\n container.innerHTML = html;\n return cash(container.childNodes).detach().get();\n}\ncash.parseHTML = parseHTML;\nCash.prototype.empty = function () {\n const ele = this[0];\n if (ele) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n return this;\n};\nfunction html(html) {\n if (html === undefined)\n return this[0] && this[0].innerHTML;\n return this.each((i, ele) => { ele.innerHTML = html; });\n}\nCash.prototype.html = html;\nCash.prototype.remove = function () {\n return this.detach().off();\n};\nfunction text(text) {\n if (text === undefined)\n return this[0] ? this[0].textContent : '';\n return this.each((i, ele) => { ele.textContent = text; });\n}\n;\nCash.prototype.text = text;\nCash.prototype.unwrap = function () {\n this.parent().each((i, ele) => {\n const $ele = cash(ele);\n $ele.replaceWith($ele.children());\n });\n return this;\n};\n// @require core/cash.ts\n// @require core/variables.ts\nconst docEle = doc.documentElement;\nCash.prototype.offset = function () {\n const ele = this[0];\n if (!ele)\n return;\n const rect = ele.getBoundingClientRect();\n return {\n top: rect.top + win.pageYOffset - docEle.clientTop,\n left: rect.left + win.pageXOffset - docEle.clientLeft\n };\n};\nCash.prototype.offsetParent = function () {\n return cash(this[0] && this[0].offsetParent);\n};\nCash.prototype.position = function () {\n const ele = this[0];\n if (!ele)\n return;\n return {\n left: ele.offsetLeft,\n top: ele.offsetTop\n };\n};\nCash.prototype.children = function (comparator) {\n let result = [];\n this.each((i, ele) => { push.apply(result, ele.children); });\n return filtered(cash(unique(result)), comparator);\n};\nCash.prototype.contents = function () {\n let result = [];\n this.each((i, ele) => {\n push.apply(result, ele.tagName === 'IFRAME' ? [ele.contentDocument] : ele.childNodes);\n });\n return cash(unique(result));\n};\nCash.prototype.find = function (selector) {\n const result = [];\n for (let i = 0, l = this.length; i < l; i++) {\n const found = find(selector, this[i]);\n if (found.length) {\n push.apply(result, found);\n }\n }\n return cash(unique(result));\n};\n// @require collection/filter.ts\n// @require collection/filter.ts\n// @require traversal/find.ts\nconst scriptTypeRe = /^$|^module$|\\/(?:java|ecma)script/i, HTMLCDATARe = /^\\s*\\s*$/g;\nfunction evalScripts(node) {\n const collection = cash(node);\n collection.filter('script').add(collection.find('script')).each((i, ele) => {\n if (!ele.src && scriptTypeRe.test(ele.type)) { // The script type is supported\n if (ele.ownerDocument.documentElement.contains(ele)) { // The element is attached to the DOM // Using `documentElement` for broader browser support\n eval(ele.textContent.replace(HTMLCDATARe, ''));\n }\n }\n });\n}\n// @require ./eval_scripts.ts\nfunction insertElement(anchor, child, prepend, prependTarget) {\n if (prepend) {\n anchor.insertBefore(child, prependTarget);\n }\n else {\n anchor.appendChild(child);\n }\n evalScripts(child);\n}\n// @require core/each.ts\n// @require core/type_checking.ts\n// @require ./insert_element.ts\nfunction insertContent(parent, child, prepend) {\n each(parent, (index, parentEle) => {\n each(child, (i, childEle) => {\n insertElement(parentEle, !index ? childEle : childEle.cloneNode(true), prepend, prepend && parentEle.firstChild);\n });\n });\n}\nCash.prototype.append = function () {\n each(arguments, (i, selector) => {\n insertContent(this, cash(selector));\n });\n return this;\n};\nCash.prototype.appendTo = function (selector) {\n insertContent(cash(selector), this);\n return this;\n};\nCash.prototype.insertAfter = function (selector) {\n cash(selector).each((index, ele) => {\n const parent = ele.parentNode;\n if (parent) {\n this.each((i, e) => {\n insertElement(parent, !index ? e : e.cloneNode(true), true, ele.nextSibling);\n });\n }\n });\n return this;\n};\nCash.prototype.after = function () {\n each(reverse.apply(arguments), (i, selector) => {\n reverse.apply(cash(selector).slice()).insertAfter(this);\n });\n return this;\n};\nCash.prototype.insertBefore = function (selector) {\n cash(selector).each((index, ele) => {\n const parent = ele.parentNode;\n if (parent) {\n this.each((i, e) => {\n insertElement(parent, !index ? e : e.cloneNode(true), true, ele);\n });\n }\n });\n return this;\n};\nCash.prototype.before = function () {\n each(arguments, (i, selector) => {\n cash(selector).insertBefore(this);\n });\n return this;\n};\nCash.prototype.prepend = function () {\n each(arguments, (i, selector) => {\n insertContent(this, cash(selector), true);\n });\n return this;\n};\nCash.prototype.prependTo = function (selector) {\n insertContent(cash(selector), reverse.apply(this.slice()), true);\n return this;\n};\nCash.prototype.replaceWith = function (selector) {\n return this.before(selector).remove();\n};\nCash.prototype.replaceAll = function (selector) {\n cash(selector).replaceWith(this);\n return this;\n};\nCash.prototype.wrapAll = function (selector) {\n if (this[0]) {\n const structure = cash(selector);\n this.first().before(structure);\n let wrapper = structure[0];\n while (wrapper.children.length)\n wrapper = wrapper.firstElementChild;\n this.appendTo(wrapper);\n }\n return this;\n};\nCash.prototype.wrap = function (selector) {\n return this.each((index, ele) => {\n const wrapper = cash(selector)[0];\n cash(ele).wrapAll(!index ? wrapper : wrapper.cloneNode(true));\n });\n};\nCash.prototype.wrapInner = function (selector) {\n return this.each((i, ele) => {\n const $ele = cash(ele), contents = $ele.contents();\n contents.length ? contents.wrapAll(selector) : $ele.append(selector);\n });\n};\nCash.prototype.has = function (selector) {\n const comparator = isString(selector)\n ? (i, ele) => !!find(selector, ele).length\n : (i, ele) => ele.contains(selector);\n return this.filter(comparator);\n};\nCash.prototype.is = function (comparator) {\n if (!comparator || !this[0])\n return false;\n const compare = getCompareFunction(comparator);\n let check = false;\n this.each((i, ele) => {\n check = compare.call(ele, i, ele);\n return !check;\n });\n return check;\n};\nCash.prototype.next = function (comparator, _all) {\n return filtered(cash(unique(pluck(this, 'nextElementSibling', _all))), comparator);\n};\nCash.prototype.nextAll = function (comparator) {\n return this.next(comparator, true);\n};\nCash.prototype.not = function (comparator) {\n if (!comparator || !this[0])\n return this;\n const compare = getCompareFunction(comparator);\n return this.filter((i, ele) => !compare.call(ele, i, ele));\n};\nCash.prototype.parent = function (comparator) {\n return filtered(cash(unique(pluck(this, 'parentNode'))), comparator);\n};\nCash.prototype.index = function (selector) {\n const child = selector ? cash(selector)[0] : this[0], collection = selector ? this : cash(child).parent().children();\n return indexOf.call(collection, child);\n};\nCash.prototype.closest = function (comparator) {\n if (!comparator || !this[0])\n return cash();\n const filtered = this.filter(comparator);\n if (filtered.length)\n return filtered;\n return this.parent().closest(comparator);\n};\nCash.prototype.parents = function (comparator) {\n return filtered(cash(unique(pluck(this, 'parentElement', true))), comparator);\n};\nCash.prototype.prev = function (comparator, _all) {\n return filtered(cash(unique(pluck(this, 'previousElementSibling', _all))), comparator);\n};\nCash.prototype.prevAll = function (comparator) {\n return this.prev(comparator, true);\n};\nCash.prototype.siblings = function (comparator) {\n const ele = this[0];\n return filtered(this.parent().children().filter((i, child) => child !== ele), comparator);\n};\n// @optional ./children.ts\n// @optional ./closest.ts\n// @optional ./contents.ts\n// @optional ./find.ts\n// @optional ./has.ts\n// @optional ./is.ts\n// @optional ./next.ts\n// @optional ./not.ts\n// @optional ./parent.ts\n// @optional ./parents.ts\n// @optional ./prev.ts\n// @optional ./siblings.ts\n// @optional attributes/index.ts\n// @optional collection/index.ts\n// @optional css/index.ts\n// @optional data/index.ts\n// @optional dimensions/index.ts\n// @optional effects/index.ts\n// @optional events/index.ts\n// @optional forms/index.ts\n// @optional manipulation/index.ts\n// @optional offset/index.ts\n// @optional traversal/index.ts\n// @require core/index.ts\n// @priority -100\n// @require ./cash.ts\nexport default cash;\n\n","/* MIT https://github.com/kenwheeler/cash */\n(function(){\n\"use strict\";\n\nvar doc = document,\n win = window,\n div = doc.createElement('div'),\n _a = Array.prototype,\n filter = _a.filter,\n indexOf = _a.indexOf,\n map = _a.map,\n push = _a.push,\n reverse = _a.reverse,\n slice = _a.slice,\n some = _a.some,\n splice = _a.splice;\nvar idRe = /^#[\\w-]*$/,\n classRe = /^\\.[\\w-]*$/,\n htmlRe = /<.+>/,\n tagRe = /^\\w+$/; // @require ./variables.ts\n\nfunction find(selector, context) {\n if (context === void 0) {\n context = doc;\n }\n\n return context !== doc && context.nodeType !== 1 && context.nodeType !== 9 ? [] : classRe.test(selector) ? context.getElementsByClassName(selector.slice(1)) : tagRe.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector);\n} // @require ./find.ts\n// @require ./variables.ts\n\n\nvar Cash =\n/** @class */\nfunction () {\n function Cash(selector, context) {\n if (context === void 0) {\n context = doc;\n }\n\n if (!selector) return;\n if (isCash(selector)) return selector;\n var eles = selector;\n\n if (isString(selector)) {\n var ctx = isCash(context) ? context[0] : context;\n eles = idRe.test(selector) ? ctx.getElementById(selector.slice(1)) : htmlRe.test(selector) ? parseHTML(selector) : find(selector, ctx);\n if (!eles) return;\n } else if (isFunction(selector)) {\n return this.ready(selector); //FIXME: `fn.ready` is not included in `core`, but it's actually a core functionality\n }\n\n if (eles.nodeType || eles === win) eles = [eles];\n this.length = eles.length;\n\n for (var i = 0, l = this.length; i < l; i++) {\n this[i] = eles[i];\n }\n }\n\n Cash.prototype.init = function (selector, context) {\n return new Cash(selector, context);\n };\n\n return Cash;\n}();\n\nvar cash = Cash.prototype.init;\ncash.fn = cash.prototype = Cash.prototype; // Ensuring that `cash () instanceof cash`\n\nCash.prototype.length = 0;\nCash.prototype.splice = splice; // Ensuring a cash collection gets printed as array-like in Chrome\n\nif (typeof Symbol === 'function') {\n Cash.prototype[Symbol['iterator']] = Array.prototype[Symbol['iterator']];\n}\n\nCash.prototype.get = function (index) {\n if (index === undefined) return slice.call(this);\n return this[index < 0 ? index + this.length : index];\n};\n\nCash.prototype.eq = function (index) {\n return cash(this.get(index));\n};\n\nCash.prototype.first = function () {\n return this.eq(0);\n};\n\nCash.prototype.last = function () {\n return this.eq(-1);\n};\n\nCash.prototype.map = function (callback) {\n return cash(map.call(this, function (ele, i) {\n return callback.call(ele, i, ele);\n }));\n};\n\nCash.prototype.slice = function () {\n return cash(slice.apply(this, arguments));\n}; // @require ./cash.ts\n\n\nvar dashAlphaRe = /-([a-z])/g;\n\nfunction camelCaseReplace(all, letter) {\n return letter.toUpperCase();\n}\n\nfunction camelCase(str) {\n return str.replace(dashAlphaRe, camelCaseReplace);\n}\n\ncash.camelCase = camelCase; // @require ./cash.ts\n\nfunction each(arr, callback) {\n for (var i = 0, l = arr.length; i < l; i++) {\n if (callback.call(arr[i], i, arr[i]) === false) break;\n }\n}\n\ncash.each = each;\n\nCash.prototype.each = function (callback) {\n each(this, callback);\n return this;\n};\n\nCash.prototype.removeProp = function (prop) {\n return this.each(function (i, ele) {\n delete ele[prop];\n });\n}; // @require ./cash.ts\n\n\nfunction extend(target) {\n var objs = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n objs[_i - 1] = arguments[_i];\n }\n\n var args = arguments,\n length = args.length;\n\n for (var i = length < 2 ? 0 : 1; i < length; i++) {\n for (var key in args[i]) {\n target[key] = args[i][key];\n }\n }\n\n return target;\n}\n\nCash.prototype.extend = function (plugins) {\n return extend(cash.fn, plugins);\n};\n\ncash.extend = extend; // @require ./cash.ts\n\nvar guid = 1;\ncash.guid = guid; // @require ./cash.ts\n\nfunction matches(ele, selector) {\n var matches = ele && (ele.matches || ele['webkitMatchesSelector'] || ele['mozMatchesSelector'] || ele['msMatchesSelector'] || ele['oMatchesSelector']);\n return !!matches && matches.call(ele, selector);\n}\n\ncash.matches = matches; // @require ./variables.ts\n\nfunction pluck(arr, prop, deep) {\n var plucked = [];\n\n for (var i = 0, l = arr.length; i < l; i++) {\n var val_1 = arr[i][prop];\n\n while (val_1 != null) {\n plucked.push(val_1);\n if (!deep) break;\n val_1 = val_1[prop];\n }\n }\n\n return plucked;\n} // @require ./cash.ts\n\n\nfunction isCash(x) {\n return x instanceof Cash;\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nfunction isString(x) {\n return typeof x === 'string';\n}\n\nfunction isNumeric(x) {\n return !isNaN(parseFloat(x)) && isFinite(x);\n}\n\nvar isArray = Array.isArray;\ncash.isFunction = isFunction;\ncash.isString = isString;\ncash.isNumeric = isNumeric;\ncash.isArray = isArray;\n\nCash.prototype.prop = function (prop, value) {\n if (!prop) return;\n\n if (isString(prop)) {\n if (arguments.length < 2) return this[0] && this[0][prop];\n return this.each(function (i, ele) {\n ele[prop] = value;\n });\n }\n\n for (var key in prop) {\n this.prop(key, prop[key]);\n }\n\n return this;\n}; // @require ./matches.ts\n// @require ./type_checking.ts\n\n\nfunction getCompareFunction(comparator) {\n return isString(comparator) ? function (i, ele) {\n return matches(ele, comparator);\n } : isFunction(comparator) ? comparator : isCash(comparator) ? function (i, ele) {\n return comparator.is(ele);\n } : function (i, ele) {\n return ele === comparator;\n };\n}\n\nCash.prototype.filter = function (comparator) {\n if (!comparator) return cash();\n var compare = getCompareFunction(comparator);\n return cash(filter.call(this, function (ele, i) {\n return compare.call(ele, i, ele);\n }));\n}; // @require collection/filter.ts\n\n\nfunction filtered(collection, comparator) {\n return !comparator || !collection.length ? collection : collection.filter(comparator);\n} // @require ./type_checking.ts\n\n\nvar splitValuesRe = /\\S+/g;\n\nfunction getSplitValues(str) {\n return isString(str) ? str.match(splitValuesRe) || [] : [];\n}\n\nCash.prototype.hasClass = function (cls) {\n return cls && some.call(this, function (ele) {\n return ele.classList.contains(cls);\n });\n};\n\nCash.prototype.removeAttr = function (attr) {\n var attrs = getSplitValues(attr);\n if (!attrs.length) return this;\n return this.each(function (i, ele) {\n each(attrs, function (i, a) {\n ele.removeAttribute(a);\n });\n });\n};\n\nfunction attr(attr, value) {\n if (!attr) return;\n\n if (isString(attr)) {\n if (arguments.length < 2) {\n if (!this[0]) return;\n var value_1 = this[0].getAttribute(attr);\n return value_1 === null ? undefined : value_1;\n }\n\n if (value === null) return this.removeAttr(attr);\n return this.each(function (i, ele) {\n ele.setAttribute(attr, value);\n });\n }\n\n for (var key in attr) {\n this.attr(key, attr[key]);\n }\n\n return this;\n}\n\nCash.prototype.attr = attr;\n\nCash.prototype.toggleClass = function (cls, force) {\n var classes = getSplitValues(cls),\n isForce = force !== undefined;\n if (!classes.length) return this;\n return this.each(function (i, ele) {\n each(classes, function (i, c) {\n if (isForce) {\n force ? ele.classList.add(c) : ele.classList.remove(c);\n } else {\n ele.classList.toggle(c);\n }\n });\n });\n};\n\nCash.prototype.addClass = function (cls) {\n return this.toggleClass(cls, true);\n};\n\nCash.prototype.removeClass = function (cls) {\n return !arguments.length ? this.attr('class', '') : this.toggleClass(cls, false);\n}; // @optional ./add_class.ts\n// @optional ./attr.ts\n// @optional ./has_class.ts\n// @optional ./prop.ts\n// @optional ./remove_attr.ts\n// @optional ./remove_class.ts\n// @optional ./remove_prop.ts\n// @optional ./toggle_class.ts\n// @require ./cash.ts\n// @require ./variables\n\n\nfunction unique(arr) {\n return arr.length > 1 ? filter.call(arr, function (item, index, self) {\n return indexOf.call(self, item) === index;\n }) : arr;\n}\n\ncash.unique = unique;\n\nCash.prototype.add = function (selector, context) {\n return cash(unique(this.get().concat(cash(selector, context).get())));\n}; // @require core/variables.ts\n\n\nfunction computeStyle(ele, prop, isVariable) {\n if (ele.nodeType !== 1 || !prop) return;\n var style = win.getComputedStyle(ele, null);\n return prop ? isVariable ? style.getPropertyValue(prop) || undefined : style[prop] : style;\n} // @require ./compute_style.ts\n\n\nfunction computeStyleInt(ele, prop) {\n return parseInt(computeStyle(ele, prop), 10) || 0;\n}\n\nvar cssVariableRe = /^--/; // @require ./variables.ts\n\nfunction isCSSVariable(prop) {\n return cssVariableRe.test(prop);\n} // @require core/camel_case.ts\n// @require core/cash.ts\n// @require core/each.ts\n// @require core/variables.ts\n// @require ./is_css_variable.ts\n\n\nvar prefixedProps = {},\n style = div.style,\n vendorsPrefixes = ['webkit', 'moz', 'ms', 'o'];\n\nfunction getPrefixedProp(prop, isVariable) {\n if (isVariable === void 0) {\n isVariable = isCSSVariable(prop);\n }\n\n if (isVariable) return prop;\n\n if (!prefixedProps[prop]) {\n var propCC = camelCase(prop),\n propUC = \"\" + propCC.charAt(0).toUpperCase() + propCC.slice(1),\n props = (propCC + \" \" + vendorsPrefixes.join(propUC + \" \") + propUC).split(' ');\n each(props, function (i, p) {\n if (p in style) {\n prefixedProps[prop] = p;\n return false;\n }\n });\n }\n\n return prefixedProps[prop];\n}\n\n;\ncash.prefixedProp = getPrefixedProp; // @require core/type_checking.ts\n// @require ./is_css_variable.ts\n\nvar numericProps = {\n animationIterationCount: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true\n};\n\nfunction getSuffixedValue(prop, value, isVariable) {\n if (isVariable === void 0) {\n isVariable = isCSSVariable(prop);\n }\n\n return !isVariable && !numericProps[prop] && isNumeric(value) ? value + \"px\" : value;\n}\n\nfunction css(prop, value) {\n if (isString(prop)) {\n var isVariable_1 = isCSSVariable(prop);\n prop = getPrefixedProp(prop, isVariable_1);\n if (arguments.length < 2) return this[0] && computeStyle(this[0], prop, isVariable_1);\n if (!prop) return this;\n value = getSuffixedValue(prop, value, isVariable_1);\n return this.each(function (i, ele) {\n if (ele.nodeType !== 1) return;\n\n if (isVariable_1) {\n ele.style.setProperty(prop, value);\n } else {\n ele.style[prop] = value; //TSC\n }\n });\n }\n\n for (var key in prop) {\n this.css(key, prop[key]);\n }\n\n return this;\n}\n\n;\nCash.prototype.css = css; // @optional ./css.ts\n\nvar dataNamespace = '__cashData',\n dataAttributeRe = /^data-(.*)/; // @require core/cash.ts\n// @require ./helpers/variables.ts\n\nfunction hasData(ele) {\n return dataNamespace in ele;\n}\n\ncash.hasData = hasData; // @require ./variables.ts\n\nfunction getDataCache(ele) {\n return ele[dataNamespace] = ele[dataNamespace] || {};\n} // @require attributes/attr.ts\n// @require ./get_data_cache.ts\n\n\nfunction getData(ele, key) {\n var cache = getDataCache(ele);\n\n if (key) {\n if (!(key in cache)) {\n var value = ele.dataset ? ele.dataset[key] || ele.dataset[camelCase(key)] : cash(ele).attr(\"data-\" + key);\n\n if (value !== undefined) {\n try {\n value = JSON.parse(value);\n } catch (e) {}\n\n cache[key] = value;\n }\n }\n\n return cache[key];\n }\n\n return cache;\n} // @require ./variables.ts\n// @require ./get_data_cache.ts\n\n\nfunction removeData(ele, key) {\n if (key === undefined) {\n delete ele[dataNamespace];\n } else {\n delete getDataCache(ele)[key];\n }\n} // @require ./get_data_cache.ts\n\n\nfunction setData(ele, key, value) {\n getDataCache(ele)[key] = value;\n}\n\nfunction data(name, value) {\n var _this = this;\n\n if (!name) {\n if (!this[0]) return;\n each(this[0].attributes, function (i, attr) {\n var match = attr.name.match(dataAttributeRe);\n if (!match) return;\n\n _this.data(match[1]);\n });\n return getData(this[0]);\n }\n\n if (isString(name)) {\n if (value === undefined) return this[0] && getData(this[0], name);\n return this.each(function (i, ele) {\n return setData(ele, name, value);\n });\n }\n\n for (var key in name) {\n this.data(key, name[key]);\n }\n\n return this;\n}\n\nCash.prototype.data = data;\n\nCash.prototype.removeData = function (key) {\n return this.each(function (i, ele) {\n return removeData(ele, key);\n });\n}; // @optional ./data.ts\n// @optional ./remove_data.ts\n// @require css/helpers/compute_style_int.ts\n\n\nfunction getExtraSpace(ele, xAxis) {\n return computeStyleInt(ele, \"border\" + (xAxis ? 'Left' : 'Top') + \"Width\") + computeStyleInt(ele, \"padding\" + (xAxis ? 'Left' : 'Top')) + computeStyleInt(ele, \"padding\" + (xAxis ? 'Right' : 'Bottom')) + computeStyleInt(ele, \"border\" + (xAxis ? 'Right' : 'Bottom') + \"Width\");\n}\n\neach(['Width', 'Height'], function (i, prop) {\n Cash.prototype[\"inner\" + prop] = function () {\n if (!this[0]) return;\n if (this[0] === win) return win[\"inner\" + prop];\n return this[0][\"client\" + prop];\n };\n});\neach(['width', 'height'], function (index, prop) {\n Cash.prototype[prop] = function (value) {\n if (!this[0]) return value === undefined ? undefined : this;\n\n if (!arguments.length) {\n if (this[0] === win) return this[0][camelCase(\"outer-\" + prop)];\n return this[0].getBoundingClientRect()[prop] - getExtraSpace(this[0], !index);\n }\n\n var valueNumber = parseInt(value, 10);\n return this.each(function (i, ele) {\n if (ele.nodeType !== 1) return;\n var boxSizing = computeStyle(ele, 'boxSizing');\n ele.style[prop] = getSuffixedValue(prop, valueNumber + (boxSizing === 'border-box' ? getExtraSpace(ele, !index) : 0));\n });\n };\n});\neach(['Width', 'Height'], function (index, prop) {\n Cash.prototype[\"outer\" + prop] = function (includeMargins) {\n if (!this[0]) return;\n if (this[0] === win) return win[\"outer\" + prop];\n return this[0][\"offset\" + prop] + (includeMargins ? computeStyleInt(this[0], \"margin\" + (!index ? 'Left' : 'Top')) + computeStyleInt(this[0], \"margin\" + (!index ? 'Right' : 'Bottom')) : 0);\n };\n}); // @optional ./inner.ts\n// @optional ./normal.ts\n// @optional ./outer.ts\n// @require css/helpers/compute_style.ts\n\nvar defaultDisplay = {};\n\nfunction getDefaultDisplay(tagName) {\n if (defaultDisplay[tagName]) return defaultDisplay[tagName];\n var ele = doc.createElement(tagName);\n doc.body.appendChild(ele);\n var display = computeStyle(ele, 'display');\n doc.body.removeChild(ele);\n return defaultDisplay[tagName] = display !== 'none' ? display : 'block';\n} // @require css/helpers/compute_style.ts\n\n\nfunction isHidden(ele) {\n return computeStyle(ele, 'display') === 'none';\n}\n\nCash.prototype.toggle = function (force) {\n return this.each(function (i, ele) {\n force = force !== undefined ? force : isHidden(ele);\n\n if (force) {\n ele.style.display = '';\n\n if (isHidden(ele)) {\n ele.style.display = getDefaultDisplay(ele.tagName);\n }\n } else {\n ele.style.display = 'none';\n }\n });\n};\n\nCash.prototype.hide = function () {\n return this.toggle(false);\n};\n\nCash.prototype.show = function () {\n return this.toggle(true);\n}; // @optional ./hide.ts\n// @optional ./show.ts\n// @optional ./toggle.ts\n\n\nfunction hasNamespaces(ns1, ns2) {\n return !ns2 || !some.call(ns2, function (ns) {\n return ns1.indexOf(ns) < 0;\n });\n}\n\nvar eventsNamespace = '__cashEvents',\n eventsNamespacesSeparator = '.',\n eventsFocus = {\n focus: 'focusin',\n blur: 'focusout'\n},\n eventsHover = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n},\n eventsMouseRe = /^(?:mouse|pointer|contextmenu|drag|drop|click|dblclick)/i; // @require ./variables.ts\n\nfunction getEventNameBubbling(name) {\n return eventsHover[name] || eventsFocus[name] || name;\n} // @require ./variables.ts\n\n\nfunction getEventsCache(ele) {\n return ele[eventsNamespace] = ele[eventsNamespace] || {};\n} // @require core/guid.ts\n// @require events/helpers/get_events_cache.ts\n\n\nfunction addEvent(ele, name, namespaces, selector, callback) {\n callback['guid'] = callback['guid'] || guid++;\n var eventCache = getEventsCache(ele);\n eventCache[name] = eventCache[name] || [];\n eventCache[name].push([namespaces, selector, callback]);\n ele.addEventListener(name, callback); //TSC\n} // @require ./variables.ts\n\n\nfunction parseEventName(eventName) {\n var parts = eventName.split(eventsNamespacesSeparator);\n return [parts[0], parts.slice(1).sort()]; // [name, namespace[]]\n} // @require ./get_events_cache.ts\n// @require ./has_namespaces.ts\n// @require ./parse_event_name.ts\n\n\nfunction removeEvent(ele, name, namespaces, selector, callback) {\n var cache = getEventsCache(ele);\n\n if (!name) {\n for (name in cache) {\n removeEvent(ele, name, namespaces, selector, callback);\n }\n\n delete ele[eventsNamespace];\n } else if (cache[name]) {\n cache[name] = cache[name].filter(function (_a) {\n var ns = _a[0],\n sel = _a[1],\n cb = _a[2];\n if (callback && cb['guid'] !== callback['guid'] || !hasNamespaces(ns, namespaces) || selector && selector !== sel) return true;\n ele.removeEventListener(name, cb);\n });\n }\n}\n\nCash.prototype.off = function (eventFullName, selector, callback) {\n var _this = this;\n\n if (eventFullName === undefined) {\n this.each(function (i, ele) {\n return removeEvent(ele);\n });\n } else {\n if (isFunction(selector)) {\n callback = selector;\n selector = '';\n }\n\n each(getSplitValues(eventFullName), function (i, eventFullName) {\n var _a = parseEventName(getEventNameBubbling(eventFullName)),\n name = _a[0],\n namespaces = _a[1];\n\n _this.each(function (i, ele) {\n return removeEvent(ele, name, namespaces, selector, callback);\n }); //TSC\n\n });\n }\n\n return this;\n};\n\nfunction on(eventFullName, selector, callback, _one) {\n var _this = this;\n\n if (!isString(eventFullName)) {\n for (var key in eventFullName) {\n this.on(key, selector, eventFullName[key]);\n }\n\n return this;\n }\n\n if (isFunction(selector)) {\n callback = selector;\n selector = '';\n }\n\n each(getSplitValues(eventFullName), function (i, eventFullName) {\n var _a = parseEventName(getEventNameBubbling(eventFullName)),\n name = _a[0],\n namespaces = _a[1];\n\n _this.each(function (i, ele) {\n var finalCallback = function finalCallback(event) {\n if (event.namespace && !hasNamespaces(namespaces, event.namespace.split(eventsNamespacesSeparator))) return;\n var thisArg = ele;\n\n if (selector) {\n var target = event.target;\n\n while (!matches(target, selector)) {\n //TSC\n if (target === ele) return;\n target = target.parentNode;\n if (!target) return;\n }\n\n thisArg = target;\n event.__delegate = true;\n }\n\n if (event.__delegate) {\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n get: function get() {\n return thisArg;\n }\n });\n }\n\n var returnValue = callback.call(thisArg, event, event.data); //TSC\n\n if (_one) {\n removeEvent(ele, name, namespaces, selector, finalCallback); //TSC\n }\n\n if (returnValue === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n finalCallback['guid'] = callback['guid'] = callback['guid'] || guid++;\n addEvent(ele, name, namespaces, selector, finalCallback); //TSC\n });\n });\n return this;\n}\n\nCash.prototype.on = on;\n\nfunction one(eventFullName, selector, callback) {\n return this.on(eventFullName, selector, callback, true); //TSC\n}\n\n;\nCash.prototype.one = one;\n\nCash.prototype.ready = function (callback) {\n var finalCallback = function finalCallback() {\n return callback(cash);\n };\n\n if (doc.readyState !== 'loading') {\n setTimeout(finalCallback);\n } else {\n doc.addEventListener('DOMContentLoaded', finalCallback);\n }\n\n return this;\n};\n\nCash.prototype.trigger = function (eventFullName, data) {\n var evt = eventFullName;\n\n if (isString(eventFullName)) {\n var _a = parseEventName(eventFullName),\n name_1 = _a[0],\n namespaces = _a[1],\n type = eventsMouseRe.test(name_1) ? 'MouseEvents' : 'HTMLEvents';\n\n evt = doc.createEvent(type);\n evt.initEvent(name_1, true, true);\n evt['namespace'] = namespaces.join(eventsNamespacesSeparator);\n }\n\n evt['data'] = data;\n var isEventFocus = evt['type'] in eventsFocus;\n return this.each(function (i, ele) {\n if (isEventFocus && isFunction(ele[evt['type']])) {\n ele[evt['type']]();\n } else {\n ele.dispatchEvent(evt);\n }\n });\n}; // @optional ./off.ts\n// @optional ./on.ts\n// @optional ./one.ts\n// @optional ./ready.ts\n// @optional ./trigger.ts\n// @require core/pluck.ts\n// @require core/variables.ts\n\n\nfunction getValue(ele) {\n if (ele.multiple) return pluck(filter.call(ele.options, function (option) {\n return option.selected && !option.disabled && !option.parentNode.disabled;\n }), 'value');\n return ele.value || '';\n}\n\nvar queryEncodeSpaceRe = /%20/g;\n\nfunction queryEncode(prop, value) {\n return \"&\" + encodeURIComponent(prop) + \"=\" + encodeURIComponent(value).replace(queryEncodeSpaceRe, '+');\n} // @require core/cash.ts\n// @require core/each.ts\n// @require core/type_checking.ts\n// @require ./helpers/get_value.ts\n// @require ./helpers/query_encode.ts\n\n\nvar skippableRe = /file|reset|submit|button|image/i,\n checkableRe = /radio|checkbox/i;\n\nCash.prototype.serialize = function () {\n var query = '';\n this.each(function (i, ele) {\n each(ele.elements || [ele], function (i, ele) {\n if (ele.disabled || !ele.name || ele.tagName === 'FIELDSET' || skippableRe.test(ele.type) || checkableRe.test(ele.type) && !ele.checked) return;\n var value = getValue(ele);\n if (value === undefined) return;\n var values = isArray(value) ? value : [value];\n each(values, function (i, value) {\n query += queryEncode(ele.name, value);\n });\n });\n });\n return query.substr(1);\n};\n\nfunction val(value) {\n if (value === undefined) return this[0] && getValue(this[0]);\n return this.each(function (i, ele) {\n if (ele.tagName === 'SELECT') {\n var eleValue_1 = isArray(value) ? value : value === null ? [] : [value];\n each(ele.options, function (i, option) {\n option.selected = eleValue_1.indexOf(option.value) >= 0;\n });\n } else {\n ele.value = value === null ? '' : value;\n }\n });\n}\n\nCash.prototype.val = val;\n\nCash.prototype.clone = function () {\n return this.map(function (i, ele) {\n return ele.cloneNode(true);\n });\n};\n\nCash.prototype.detach = function () {\n return this.each(function (i, ele) {\n if (ele.parentNode) {\n ele.parentNode.removeChild(ele);\n }\n });\n}; // @require ./cash.ts\n// @require ./variables.ts\n// @require ./type_checking.ts\n// @require collection/get.ts\n// @require manipulation/detach.ts\n\n\nvar fragmentRe = /^\\s*<(\\w+)[^>]*>/,\n singleTagRe = /^\\s*<(\\w+)\\s*\\/?>(?:<\\/\\1>)?\\s*$/;\nvar containers;\n\nfunction initContainers() {\n if (containers) return;\n var table = doc.createElement('table'),\n tr = doc.createElement('tr');\n containers = {\n '*': div,\n tr: doc.createElement('tbody'),\n td: tr,\n th: tr,\n thead: table,\n tbody: table,\n tfoot: table\n };\n}\n\nfunction parseHTML(html) {\n initContainers();\n if (!isString(html)) return [];\n if (singleTagRe.test(html)) return [doc.createElement(RegExp.$1)];\n var fragment = fragmentRe.test(html) && RegExp.$1,\n container = containers[fragment] || containers['*'];\n container.innerHTML = html;\n return cash(container.childNodes).detach().get();\n}\n\ncash.parseHTML = parseHTML;\n\nCash.prototype.empty = function () {\n var ele = this[0];\n\n if (ele) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n\n return this;\n};\n\nfunction html(html) {\n if (html === undefined) return this[0] && this[0].innerHTML;\n return this.each(function (i, ele) {\n ele.innerHTML = html;\n });\n}\n\nCash.prototype.html = html;\n\nCash.prototype.remove = function () {\n return this.detach().off();\n};\n\nfunction text(text) {\n if (text === undefined) return this[0] ? this[0].textContent : '';\n return this.each(function (i, ele) {\n ele.textContent = text;\n });\n}\n\n;\nCash.prototype.text = text;\n\nCash.prototype.unwrap = function () {\n this.parent().each(function (i, ele) {\n var $ele = cash(ele);\n $ele.replaceWith($ele.children());\n });\n return this;\n}; // @require core/cash.ts\n// @require core/variables.ts\n\n\nvar docEle = doc.documentElement;\n\nCash.prototype.offset = function () {\n var ele = this[0];\n if (!ele) return;\n var rect = ele.getBoundingClientRect();\n return {\n top: rect.top + win.pageYOffset - docEle.clientTop,\n left: rect.left + win.pageXOffset - docEle.clientLeft\n };\n};\n\nCash.prototype.offsetParent = function () {\n return cash(this[0] && this[0].offsetParent);\n};\n\nCash.prototype.position = function () {\n var ele = this[0];\n if (!ele) return;\n return {\n left: ele.offsetLeft,\n top: ele.offsetTop\n };\n};\n\nCash.prototype.children = function (comparator) {\n var result = [];\n this.each(function (i, ele) {\n push.apply(result, ele.children);\n });\n return filtered(cash(unique(result)), comparator);\n};\n\nCash.prototype.contents = function () {\n var result = [];\n this.each(function (i, ele) {\n push.apply(result, ele.tagName === 'IFRAME' ? [ele.contentDocument] : ele.childNodes);\n });\n return cash(unique(result));\n};\n\nCash.prototype.find = function (selector) {\n var result = [];\n\n for (var i = 0, l = this.length; i < l; i++) {\n var found = find(selector, this[i]);\n\n if (found.length) {\n push.apply(result, found);\n }\n }\n\n return cash(unique(result));\n}; // @require collection/filter.ts\n// @require collection/filter.ts\n// @require traversal/find.ts\n\n\nvar scriptTypeRe = /^$|^module$|\\/(?:java|ecma)script/i,\n HTMLCDATARe = /^\\s*\\s*$/g;\n\nfunction evalScripts(node) {\n var collection = cash(node);\n collection.filter('script').add(collection.find('script')).each(function (i, ele) {\n if (!ele.src && scriptTypeRe.test(ele.type)) {\n // The script type is supported\n if (ele.ownerDocument.documentElement.contains(ele)) {\n // The element is attached to the DOM // Using `documentElement` for broader browser support\n eval(ele.textContent.replace(HTMLCDATARe, ''));\n }\n }\n });\n} // @require ./eval_scripts.ts\n\n\nfunction insertElement(anchor, child, prepend, prependTarget) {\n if (prepend) {\n anchor.insertBefore(child, prependTarget);\n } else {\n anchor.appendChild(child);\n }\n\n evalScripts(child);\n} // @require core/each.ts\n// @require core/type_checking.ts\n// @require ./insert_element.ts\n\n\nfunction insertContent(parent, child, prepend) {\n each(parent, function (index, parentEle) {\n each(child, function (i, childEle) {\n insertElement(parentEle, !index ? childEle : childEle.cloneNode(true), prepend, prepend && parentEle.firstChild);\n });\n });\n}\n\nCash.prototype.append = function () {\n var _this = this;\n\n each(arguments, function (i, selector) {\n insertContent(_this, cash(selector));\n });\n return this;\n};\n\nCash.prototype.appendTo = function (selector) {\n insertContent(cash(selector), this);\n return this;\n};\n\nCash.prototype.insertAfter = function (selector) {\n var _this = this;\n\n cash(selector).each(function (index, ele) {\n var parent = ele.parentNode;\n\n if (parent) {\n _this.each(function (i, e) {\n insertElement(parent, !index ? e : e.cloneNode(true), true, ele.nextSibling);\n });\n }\n });\n return this;\n};\n\nCash.prototype.after = function () {\n var _this = this;\n\n each(reverse.apply(arguments), function (i, selector) {\n reverse.apply(cash(selector).slice()).insertAfter(_this);\n });\n return this;\n};\n\nCash.prototype.insertBefore = function (selector) {\n var _this = this;\n\n cash(selector).each(function (index, ele) {\n var parent = ele.parentNode;\n\n if (parent) {\n _this.each(function (i, e) {\n insertElement(parent, !index ? e : e.cloneNode(true), true, ele);\n });\n }\n });\n return this;\n};\n\nCash.prototype.before = function () {\n var _this = this;\n\n each(arguments, function (i, selector) {\n cash(selector).insertBefore(_this);\n });\n return this;\n};\n\nCash.prototype.prepend = function () {\n var _this = this;\n\n each(arguments, function (i, selector) {\n insertContent(_this, cash(selector), true);\n });\n return this;\n};\n\nCash.prototype.prependTo = function (selector) {\n insertContent(cash(selector), reverse.apply(this.slice()), true);\n return this;\n};\n\nCash.prototype.replaceWith = function (selector) {\n return this.before(selector).remove();\n};\n\nCash.prototype.replaceAll = function (selector) {\n cash(selector).replaceWith(this);\n return this;\n};\n\nCash.prototype.wrapAll = function (selector) {\n if (this[0]) {\n var structure = cash(selector);\n this.first().before(structure);\n var wrapper = structure[0];\n\n while (wrapper.children.length) {\n wrapper = wrapper.firstElementChild;\n }\n\n this.appendTo(wrapper);\n }\n\n return this;\n};\n\nCash.prototype.wrap = function (selector) {\n return this.each(function (index, ele) {\n var wrapper = cash(selector)[0];\n cash(ele).wrapAll(!index ? wrapper : wrapper.cloneNode(true));\n });\n};\n\nCash.prototype.wrapInner = function (selector) {\n return this.each(function (i, ele) {\n var $ele = cash(ele),\n contents = $ele.contents();\n contents.length ? contents.wrapAll(selector) : $ele.append(selector);\n });\n};\n\nCash.prototype.has = function (selector) {\n var comparator = isString(selector) ? function (i, ele) {\n return !!find(selector, ele).length;\n } : function (i, ele) {\n return ele.contains(selector);\n };\n return this.filter(comparator);\n};\n\nCash.prototype.is = function (comparator) {\n if (!comparator || !this[0]) return false;\n var compare = getCompareFunction(comparator);\n var check = false;\n this.each(function (i, ele) {\n check = compare.call(ele, i, ele);\n return !check;\n });\n return check;\n};\n\nCash.prototype.next = function (comparator, _all) {\n return filtered(cash(unique(pluck(this, 'nextElementSibling', _all))), comparator);\n};\n\nCash.prototype.nextAll = function (comparator) {\n return this.next(comparator, true);\n};\n\nCash.prototype.not = function (comparator) {\n if (!comparator || !this[0]) return this;\n var compare = getCompareFunction(comparator);\n return this.filter(function (i, ele) {\n return !compare.call(ele, i, ele);\n });\n};\n\nCash.prototype.parent = function (comparator) {\n return filtered(cash(unique(pluck(this, 'parentNode'))), comparator);\n};\n\nCash.prototype.index = function (selector) {\n var child = selector ? cash(selector)[0] : this[0],\n collection = selector ? this : cash(child).parent().children();\n return indexOf.call(collection, child);\n};\n\nCash.prototype.closest = function (comparator) {\n if (!comparator || !this[0]) return cash();\n var filtered = this.filter(comparator);\n if (filtered.length) return filtered;\n return this.parent().closest(comparator);\n};\n\nCash.prototype.parents = function (comparator) {\n return filtered(cash(unique(pluck(this, 'parentElement', true))), comparator);\n};\n\nCash.prototype.prev = function (comparator, _all) {\n return filtered(cash(unique(pluck(this, 'previousElementSibling', _all))), comparator);\n};\n\nCash.prototype.prevAll = function (comparator) {\n return this.prev(comparator, true);\n};\n\nCash.prototype.siblings = function (comparator) {\n var ele = this[0];\n return filtered(this.parent().children().filter(function (i, child) {\n return child !== ele;\n }), comparator);\n}; // @optional ./children.ts\n// @optional ./closest.ts\n// @optional ./contents.ts\n// @optional ./find.ts\n// @optional ./has.ts\n// @optional ./is.ts\n// @optional ./next.ts\n// @optional ./not.ts\n// @optional ./parent.ts\n// @optional ./parents.ts\n// @optional ./prev.ts\n// @optional ./siblings.ts\n// @optional attributes/index.ts\n// @optional collection/index.ts\n// @optional css/index.ts\n// @optional data/index.ts\n// @optional dimensions/index.ts\n// @optional effects/index.ts\n// @optional events/index.ts\n// @optional forms/index.ts\n// @optional manipulation/index.ts\n// @optional offset/index.ts\n// @optional traversal/index.ts\n// @require core/index.ts\n// @priority -100\n// @require ./cash.ts\n// @require ./variables.ts\n\n\nif (typeof exports !== 'undefined') {\n // Node.js\n module.exports = cash;\n} else {\n // Browser\n win['cash'] = win['$'] = cash;\n}\n})();","/*!\n* tingle.js\n* @author robin_parisi\n* @version 0.14.0\n* @url\n*/\n\n/*global define,module*/\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory)\n } else if (typeof exports === 'object') {\n module.exports = factory()\n } else {\n root.tingle = factory()\n }\n}(this, function() {\n\n /* ----------------------------------------------------------- */\n /* == modal */\n /* ----------------------------------------------------------- */\n\n var transitionEvent = whichTransitionEvent()\n var isBusy = false\n\n function Modal(options) {\n var defaults = {\n onClose: null,\n onOpen: null,\n beforeOpen: null,\n beforeClose: null,\n stickyFooter: false,\n footer: false,\n cssClass: [],\n closeLabel: 'Close',\n closeMethods: ['overlay', 'button', 'escape']\n }\n\n // extends config\n this.opts = extend({}, defaults, options)\n \n // init modal\n this.init()\n }\n\n Modal.prototype.init = function() {\n if (this.modal) {\n return\n }\n\n _build.call(this)\n _bindEvents.call(this)\n\n // insert modal in dom\n document.body.insertBefore(this.modal, document.body.firstChild)\n\n if (this.opts.footer) {\n this.addFooter()\n }\n\n return this\n }\n\n Modal.prototype._busy = function(state) {\n isBusy = state\n }\n\n Modal.prototype._isBusy = function() {\n return isBusy\n }\n\n Modal.prototype.destroy = function() {\n if (this.modal === null) {\n return\n }\n\n // restore scrolling\n if (this.isOpen()) {\n this.close(true)\n }\n\n // unbind all events\n _unbindEvents.call(this)\n\n // remove modal from dom\n this.modal.parentNode.removeChild(this.modal)\n\n this.modal = null\n }\n\n Modal.prototype.isOpen = function() {\n return !!this.modal.classList.contains('tingle-modal--visible')\n }\n\n Modal.prototype.open = function() {\n if(this._isBusy()) return\n this._busy(true)\n\n var self = this\n\n // before open callback\n if (typeof self.opts.beforeOpen === 'function') {\n self.opts.beforeOpen()\n }\n\n if (this.modal.style.removeProperty) {\n this.modal.style.removeProperty('display')\n } else {\n this.modal.style.removeAttribute('display')\n }\n\n // prevent double scroll\n this._scrollPosition = window.pageYOffset\n document.body.classList.add('tingle-enabled')\n document.body.style.top = -this._scrollPosition + 'px'\n\n // sticky footer\n this.setStickyFooter(this.opts.stickyFooter)\n\n // show modal\n this.modal.classList.add('tingle-modal--visible')\n\n if (transitionEvent) {\n this.modal.addEventListener(transitionEvent, function handler() {\n if (typeof self.opts.onOpen === 'function') {\n self.opts.onOpen.call(self)\n }\n\n // detach event after transition end (so it doesn't fire multiple onOpen)\n self.modal.removeEventListener(transitionEvent, handler, false)\n self._busy(false)\n }, false)\n } else {\n if (typeof self.opts.onOpen === 'function') {\n self.opts.onOpen.call(self)\n }\n self._busy(false)\n }\n\n // check if modal is bigger than screen height\n this.checkOverflow()\n\n return this\n }\n\n Modal.prototype.close = function(force) {\n if(this._isBusy()) return\n this._busy(true)\n force = force || false\n\n // before close\n if (typeof this.opts.beforeClose === 'function') {\n var close = this.opts.beforeClose.call(this)\n if (!close) return\n }\n\n document.body.classList.remove('tingle-enabled')\n window.scrollTo(0, this._scrollPosition)\n document.body.style.top = null\n\n this.modal.classList.remove('tingle-modal--visible')\n\n //Using similar setup as onOpen\n //Reference to the Modal that's created\n var self = this\n\n if (force) {\n self.modal.style.display = 'none'\n if (typeof self.opts.onClose === 'function') {\n self.opts.onClose.call(this)\n }\n self._busy(false)\n } else if (transitionEvent) {\n //Track when transition is happening then run onClose on complete\n this.modal.addEventListener(transitionEvent, function handler() {\n // detach event after transition end (so it doesn't fire multiple onClose)\n self.modal.removeEventListener(transitionEvent, handler, false)\n\n self.modal.style.display = 'none'\n\n // on close callback\n if (typeof self.opts.onClose === 'function') {\n self.opts.onClose.call(this)\n }\n\n self._busy(false)\n\n }, false)\n } else {\n self.modal.style.display = 'none'\n // on close callback\n if (typeof self.opts.onClose === 'function') {\n self.opts.onClose.call(this)\n }\n self._busy(false)\n }\n }\n\n Modal.prototype.setContent = function(content) {\n // check type of content : String or Node\n if (typeof content === 'string') {\n this.modalBoxContent.innerHTML = content\n } else {\n this.modalBoxContent.innerHTML = ''\n this.modalBoxContent.appendChild(content)\n }\n\n if (this.isOpen()) {\n // check if modal is bigger than screen height\n this.checkOverflow()\n }\n \n return this\n }\n\n Modal.prototype.getContent = function() {\n return this.modalBoxContent\n }\n\n Modal.prototype.addFooter = function() {\n // add footer to modal\n _buildFooter.call(this)\n\n return this\n }\n\n Modal.prototype.setFooterContent = function(content) {\n // set footer content\n this.modalBoxFooter.innerHTML = content\n\n return this\n }\n\n Modal.prototype.getFooterContent = function() {\n return this.modalBoxFooter\n }\n\n Modal.prototype.setStickyFooter = function(isSticky) {\n // if the modal is smaller than the viewport height, we don't need sticky\n if (!this.isOverflow()) {\n isSticky = false\n }\n\n if (isSticky) {\n if (this.modalBox.contains(this.modalBoxFooter)) {\n this.modalBox.removeChild(this.modalBoxFooter)\n this.modal.appendChild(this.modalBoxFooter)\n this.modalBoxFooter.classList.add('tingle-modal-box__footer--sticky')\n _recalculateFooterPosition.call(this)\n this.modalBoxContent.style['padding-bottom'] = this.modalBoxFooter.clientHeight + 20 + 'px'\n }\n } else if (this.modalBoxFooter) {\n if (!this.modalBox.contains(this.modalBoxFooter)) {\n this.modal.removeChild(this.modalBoxFooter)\n this.modalBox.appendChild(this.modalBoxFooter)\n this.modalBoxFooter.style.width = 'auto'\n this.modalBoxFooter.style.left = ''\n this.modalBoxContent.style['padding-bottom'] = ''\n this.modalBoxFooter.classList.remove('tingle-modal-box__footer--sticky')\n }\n }\n\n return this\n }\n\n\n Modal.prototype.addFooterBtn = function(label, cssClass, callback) {\n var btn = document.createElement('button')\n \n // set label\n btn.innerHTML = label\n\n // bind callback\n btn.addEventListener('click', callback)\n\n if (typeof cssClass === 'string' && cssClass.length) {\n // add classes to btn\n cssClass.split(' ').forEach(function(item) {\n btn.classList.add(item)\n })\n }\n\n this.modalBoxFooter.appendChild(btn)\n\n return btn\n }\n\n Modal.prototype.resize = function() {\n // eslint-disable-next-line no-console\n console.warn('Resize is deprecated and will be removed in version 1.0')\n }\n\n Modal.prototype.isOverflow = function() {\n var viewportHeight = window.innerHeight\n var modalHeight = this.modalBox.clientHeight\n\n return modalHeight >= viewportHeight\n }\n\n Modal.prototype.checkOverflow = function() {\n // only if the modal is currently shown\n if (this.modal.classList.contains('tingle-modal--visible')) {\n if (this.isOverflow()) {\n this.modal.classList.add('tingle-modal--overflow')\n } else {\n this.modal.classList.remove('tingle-modal--overflow')\n }\n\n // TODO: remove offset\n //_offset.call(this);\n if (!this.isOverflow() && this.opts.stickyFooter) {\n this.setStickyFooter(false)\n } else if (this.isOverflow() && this.opts.stickyFooter) {\n _recalculateFooterPosition.call(this)\n this.setStickyFooter(true)\n }\n }\n }\n\n\n /* ----------------------------------------------------------- */\n /* == private methods */\n /* ----------------------------------------------------------- */\n\n function _recalculateFooterPosition() {\n if (!this.modalBoxFooter) {\n return\n }\n this.modalBoxFooter.style.width = this.modalBox.clientWidth + 'px'\n this.modalBoxFooter.style.left = this.modalBox.offsetLeft + 'px'\n }\n\n function _build() {\n\n // wrapper\n this.modal = document.createElement('div')\n this.modal.classList.add('tingle-modal')\n\n // remove cusor if no overlay close method\n if (this.opts.closeMethods.length === 0 || this.opts.closeMethods.indexOf('overlay') === -1) {\n this.modal.classList.add('tingle-modal--noOverlayClose')\n }\n\n this.modal.style.display = 'none'\n\n // custom class\n this.opts.cssClass.forEach(function(item) {\n if (typeof item === 'string') {\n this.modal.classList.add(item)\n }\n }, this)\n\n // close btn\n if (this.opts.closeMethods.indexOf('button') !== -1) {\n this.modalCloseBtn = document.createElement('button')\n this.modalCloseBtn.type = 'button'\n this.modalCloseBtn.classList.add('tingle-modal__close')\n\n this.modalCloseBtnIcon = document.createElement('span')\n this.modalCloseBtnIcon.classList.add('tingle-modal__closeIcon')\n this.modalCloseBtnIcon.innerHTML = '×'\n\n this.modalCloseBtnLabel = document.createElement('span')\n this.modalCloseBtnLabel.classList.add('tingle-modal__closeLabel')\n this.modalCloseBtnLabel.innerHTML = this.opts.closeLabel\n\n this.modalCloseBtn.appendChild(this.modalCloseBtnIcon)\n this.modalCloseBtn.appendChild(this.modalCloseBtnLabel)\n }\n\n // modal\n this.modalBox = document.createElement('div')\n this.modalBox.classList.add('tingle-modal-box')\n\n // modal box content\n this.modalBoxContent = document.createElement('div')\n this.modalBoxContent.classList.add('tingle-modal-box__content')\n\n this.modalBox.appendChild(this.modalBoxContent)\n\n if (this.opts.closeMethods.indexOf('button') !== -1) {\n this.modal.appendChild(this.modalCloseBtn)\n }\n\n this.modal.appendChild(this.modalBox)\n\n }\n\n function _buildFooter() {\n this.modalBoxFooter = document.createElement('div')\n this.modalBoxFooter.classList.add('tingle-modal-box__footer')\n this.modalBox.appendChild(this.modalBoxFooter)\n }\n\n function _bindEvents() {\n\n this._events = {\n clickCloseBtn: this.close.bind(this),\n clickOverlay: _handleClickOutside.bind(this),\n resize: this.checkOverflow.bind(this),\n keyboardNav: _handleKeyboardNav.bind(this)\n }\n\n if (this.opts.closeMethods.indexOf('button') !== -1) {\n this.modalCloseBtn.addEventListener('click', this._events.clickCloseBtn)\n }\n\n this.modal.addEventListener('mousedown', this._events.clickOverlay)\n window.addEventListener('resize', this._events.resize)\n document.addEventListener('keydown', this._events.keyboardNav)\n }\n\n function _handleKeyboardNav(event) {\n // escape key\n if (this.opts.closeMethods.indexOf('escape') !== -1 && event.which === 27 && this.isOpen()) {\n this.close()\n }\n }\n\n function _handleClickOutside(event) {\n // if click is outside the modal\n if (this.opts.closeMethods.indexOf('overlay') !== -1 && !_findAncestor(event.target, 'tingle-modal') &&\n event.clientX < this.modal.clientWidth) {\n this.close()\n }\n }\n\n function _findAncestor(el, cls) {\n while ((el = el.parentElement) && !el.classList.contains(cls));\n return el\n }\n\n function _unbindEvents() {\n if (this.opts.closeMethods.indexOf('button') !== -1) {\n this.modalCloseBtn.removeEventListener('click', this._events.clickCloseBtn)\n }\n this.modal.removeEventListener('mousedown', this._events.clickOverlay)\n window.removeEventListener('resize', this._events.resize)\n document.removeEventListener('keydown', this._events.keyboardNav)\n }\n\n /* ----------------------------------------------------------- */\n /* == confirm */\n /* ----------------------------------------------------------- */\n\n // coming soon\n\n /* ----------------------------------------------------------- */\n /* == alert */\n /* ----------------------------------------------------------- */\n\n // coming soon\n\n /* ----------------------------------------------------------- */\n /* == helpers */\n /* ----------------------------------------------------------- */\n\n function extend() {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (arguments[i].hasOwnProperty(key)) {\n arguments[0][key] = arguments[i][key]\n }\n }\n }\n return arguments[0]\n }\n\n function whichTransitionEvent() {\n var t\n var el = document.createElement('tingle-test-transition')\n var transitions = {\n 'transition': 'transitionend',\n 'OTransition': 'oTransitionEnd',\n 'MozTransition': 'transitionend',\n 'WebkitTransition': 'webkitTransitionEnd'\n }\n\n for (t in transitions) {\n if (el.style[t] !== undefined) {\n return transitions[t]\n }\n }\n }\n\n /* ----------------------------------------------------------- */\n /* == return */\n /* ----------------------------------------------------------- */\n\n return {\n modal: Modal\n }\n\n}))\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nc = undefined;","import $ from 'cash-dom';\n\nexport function NewGameFb() {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n FB.login(function (response) {\n if (response.authResponse) {\n $.each(onFbLoad, function (i, o) {\n o();\n });\n } else {\n console.log('User cancelled login or did not fully authorize.');\n }\n }, {});\n\n var addFriends = function () {\n\n FB.api('/me/friends?fields=name,id,installed&limit=1000', function (response) {\n\n //$('#fb-friends').append('
' + user.name + '' + addText + '